From 392123ef5432643d1047d1e1dd71512ec39d382d Mon Sep 17 00:00:00 2001
From: Kim Motoyoshi Kalland <kim.kalland@nokia.com>
Date: Wed, 3 Feb 2010 13:27:43 +0100
Subject: Fixed bug where GL widget was not fully updated on Vista.

There were cases where the QGLWidget would not be fully
updated on screen on Windows Vista and Windows 7 with Aero
disabled.

Task-number: QTBUG-7865
Reviewed-by: Prasanth
---
 src/gui/kernel/qapplication_win.cpp | 28 +++++++++++++++++++---------
 src/gui/kernel/qwidget.cpp          |  2 +-
 src/gui/kernel/qwidget_p.h          |  2 +-
 src/opengl/qgl_mac.mm               |  2 --
 src/opengl/qgl_p.h                  |  4 +++-
 5 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 5a4f4e6..d0c986d 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -927,7 +927,11 @@ const QString qt_reg_winclass(QWidget *w)        // register window class
     uint style;
     bool icon;
     QString cname;
-    if (flags & Qt::MSWindowsOwnDC) {
+    if (qt_widget_private(w)->isGLWidget) {
+        cname = QLatin1String("QGLWidget");
+        style = CS_DBLCLKS;
+        icon  = true;
+    } else if (flags & Qt::MSWindowsOwnDC) {
         cname = QLatin1String("QWidgetOwnDC");
         style = CS_DBLCLKS;
 #ifndef Q_OS_WINCE
@@ -1011,7 +1015,7 @@ const QString qt_reg_winclass(QWidget *w)        // register window class
 
     ATOM atom;
 #ifndef Q_OS_WINCE
-    HBRUSH bgBrush = (HBRUSH)GetSysColorBrush(COLOR_WINDOW);
+    HBRUSH bgBrush = qt_widget_private(w)->isGLWidget ? 0 : (HBRUSH)GetSysColorBrush(COLOR_WINDOW);
     QT_WA({
         WNDCLASS wc;
         wc.style        = style;
@@ -3626,13 +3630,19 @@ bool QETWidget::translatePaintEvent(const MSG &msg)
         return true;
 
     setAttribute(Qt::WA_PendingUpdate, false);
-    const QRegion dirtyInBackingStore(qt_dirtyRegion(this));
-    // Make sure the invalidated region contains the region we're about to repaint.
-    // BeginPaint will set the clip to the invalidated region and it is impossible
-    // to enlarge it afterwards (only shrink it). Using GetDCEx is not suffient
-    // as it may return an invalid context (especially on Windows Vista).
-    if (!dirtyInBackingStore.isEmpty())
-        InvalidateRgn(internalWinId(), dirtyInBackingStore.handle(), false);
+
+    if (d_func()->isGLWidget) {
+        if (d_func()->usesDoubleBufferedGLContext)
+            InvalidateRect(internalWinId(), 0, false);
+    } else {
+        const QRegion dirtyInBackingStore(qt_dirtyRegion(this));
+        // Make sure the invalidated region contains the region we're about to repaint.
+        // BeginPaint will set the clip to the invalidated region and it is impossible
+        // to enlarge it afterwards (only shrink it). Using GetDCEx is not suffient
+        // as it may return an invalid context (especially on Windows Vista).
+        if (!dirtyInBackingStore.isEmpty())
+            InvalidateRgn(internalWinId(), dirtyInBackingStore.handle(), false);
+    }
     PAINTSTRUCT ps;
     d_func()->hd = BeginPaint(internalWinId(), &ps);
 
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 91e43ce..e8ec3a5 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -183,6 +183,7 @@ QWidgetPrivate::QWidgetPrivate(int version) :
         ,inDirtyList(0)
         ,isScrolled(0)
         ,isMoved(0)
+        , isGLWidget(0)
         ,usesDoubleBufferedGLContext(0)
 #ifdef Q_WS_WIN
         ,noPaintOnScreen(0)
@@ -194,7 +195,6 @@ QWidgetPrivate::QWidgetPrivate(int version) :
 #endif
 #ifdef Q_WS_MAC
         ,needWindowChange(0)
-        ,isGLWidget(0)
 #endif
         ,polished(0)
 
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index 2b09220..ee56bb2 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -537,6 +537,7 @@ public:
     uint inDirtyList : 1;
     uint isScrolled : 1;
     uint isMoved : 1;
+    uint isGLWidget : 1;
     uint usesDoubleBufferedGLContext : 1;
 
 #ifdef Q_WS_WIN
@@ -593,7 +594,6 @@ public:
 
     // This is new stuff
     uint needWindowChange : 1;
-    uint isGLWidget : 1;
 #endif
 
 #if defined(Q_WS_X11) || defined (Q_WS_WIN) || defined(Q_WS_MAC)
diff --git a/src/opengl/qgl_mac.mm b/src/opengl/qgl_mac.mm
index dd9d9ff..3329ff9 100644
--- a/src/opengl/qgl_mac.mm
+++ b/src/opengl/qgl_mac.mm
@@ -882,8 +882,6 @@ void QGLWidgetPrivate::init(QGLContext *context, const QGLWidget *shareWidget)
             break;
         current = current->parentWidget();
     }
-
-    isGLWidget = 1;
 }
 
 bool QGLWidgetPrivate::renderCxPm(QPixmap*)
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 793c4d7..56fe11f 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -160,7 +160,9 @@ public:
 #if defined(Q_WS_X11) && defined(QT_OPENGL_ES)
                        , eglSurfaceWindowId(0)
 #endif
-        {}
+    {
+        isGLWidget = 1;
+    }
 
     ~QGLWidgetPrivate() {}
 
-- 
cgit v0.12


From a8d09369fea1574b24309d7b7b2bb373021bf387 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Mon, 18 Jan 2010 14:16:16 +0100
Subject: Make QTextCodec reentrant.

QTextCodec::codecForName and codedForMib were not reentrant

Reviewed-by: Brad
Reviewed-by: Denis
---
 src/corelib/codecs/qsimplecodec.cpp      |  2 +-
 src/corelib/codecs/qtextcodec.cpp        | 46 ++++++++++++++++++++++++++------
 tests/auto/qtextcodec/tst_qtextcodec.cpp | 46 ++++++++++++++++++++++++++++++++
 3 files changed, 85 insertions(+), 9 deletions(-)

diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp
index 445565a..4cc7912 100644
--- a/src/corelib/codecs/qsimplecodec.cpp
+++ b/src/corelib/codecs/qsimplecodec.cpp
@@ -681,7 +681,7 @@ QByteArray QSimpleTextCodec::convertFromUnicode(const QChar *in, int length, Con
     int u;
     const QChar* ucp = in;
     unsigned char* rp = (unsigned char *)r.data();
-    const unsigned char* rmp = (const unsigned char *)reverseMap->data();
+    const unsigned char* rmp = (const unsigned char *)reverseMap->constData();
     int rmsize = (int) reverseMap->size();
     while(i--)
     {
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index 698ca9e..e9c1803 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -79,7 +79,7 @@
 #  endif
 #endif // QT_NO_CODECS
 #include "qlocale.h"
-#include "private/qmutexpool_p.h"
+#include "qmutex.h"
 
 #include <stdlib.h>
 #include <ctype.h>
@@ -659,13 +659,13 @@ static void setupLocaleMapper()
 #endif
 }
 
-
-static void setup()
-{
 #ifndef QT_NO_THREAD
-    QMutexLocker locker(QMutexPool::globalInstanceGet(&all));
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, textCodecsMutex, (QMutex::Recursive));
 #endif
 
+// textCodecsMutex need to be locked to enter this function
+static void setup()
+{
     if (all)
         return;
 
@@ -903,8 +903,6 @@ QTextCodec::ConverterState::~ConverterState()
 */
 
 /*!
-    \nonreentrant
-
     Constructs a QTextCodec, and gives it the highest precedence. The
     QTextCodec should always be constructed on the heap (i.e. with \c
     new). Qt takes ownership and will delete it when the application
@@ -912,6 +910,9 @@ QTextCodec::ConverterState::~ConverterState()
 */
 QTextCodec::QTextCodec()
 {
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
     all->prepend(this);
 }
@@ -929,8 +930,12 @@ QTextCodec::~QTextCodec()
     if (!destroying_is_ok)
         qWarning("QTextCodec::~QTextCodec: Called by application");
 #endif
-    if (all)
+    if (all) {
+#ifndef QT_NO_THREAD
+        QMutexLocker locker(textCodecsMutex());
+#endif
         all->removeAll(this);
+    }
 }
 
 /*!
@@ -951,6 +956,9 @@ QTextCodec *QTextCodec::codecForName(const QByteArray &name)
     if (name.isEmpty())
         return 0;
 
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
 
     for (int i = 0; i < all->size(); ++i) {
@@ -973,6 +981,9 @@ QTextCodec *QTextCodec::codecForName(const QByteArray &name)
 */
 QTextCodec* QTextCodec::codecForMib(int mib)
 {
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
 
     // Qt 3 used 1000 (mib for UCS2) as its identifier for the utf16 codec. Map
@@ -1001,6 +1012,9 @@ QTextCodec* QTextCodec::codecForMib(int mib)
 */
 QList<QByteArray> QTextCodec::availableCodecs()
 {
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
 
     QList<QByteArray> codecs;
@@ -1008,6 +1022,11 @@ QList<QByteArray> QTextCodec::availableCodecs()
         codecs += all->at(i)->name();
         codecs += all->at(i)->aliases();
     }
+
+#ifndef QT_NO_THREAD
+    locker.unlock();
+#endif
+
 #ifndef QT_NO_TEXTCODECPLUGIN
     QFactoryLoader *l = loader();
     QStringList keys = l->keys();
@@ -1031,11 +1050,19 @@ QList<QByteArray> QTextCodec::availableCodecs()
 */
 QList<int> QTextCodec::availableMibs()
 {
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
 
     QList<int> codecs;
     for (int i = 0; i < all->size(); ++i)
         codecs += all->at(i)->mibEnum();
+
+#ifndef QT_NO_THREAD
+    locker.unlock();
+#endif
+
 #ifndef QT_NO_TEXTCODECPLUGIN
     QFactoryLoader *l = loader();
     QStringList keys = l->keys();
@@ -1082,6 +1109,9 @@ QTextCodec* QTextCodec::codecForLocale()
     if (localeMapper)
         return localeMapper;
 
+#ifndef QT_NO_THREAD
+    QMutexLocker locker(textCodecsMutex());
+#endif
     setup();
 
     return localeMapper;
diff --git a/tests/auto/qtextcodec/tst_qtextcodec.cpp b/tests/auto/qtextcodec/tst_qtextcodec.cpp
index eb348fb..65b0448 100644
--- a/tests/auto/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/qtextcodec/tst_qtextcodec.cpp
@@ -47,6 +47,8 @@
 #include <qtextdocument.h>
 #include <time.h>
 #include <qprocess.h>
+#include <QtConcurrentMap>
+#include <QThreadPool>
 
 #ifdef Q_OS_SYMBIAN
 #define SRCDIR ""
@@ -58,6 +60,9 @@ class tst_QTextCodec : public QObject
     Q_OBJECT
 
 private slots:
+
+    void threadSafety();
+
     void toUnicode_data();
     void toUnicode();
     void codecForName_data();
@@ -1904,5 +1909,46 @@ void tst_QTextCodec::toLocal8Bit()
 }
 #endif
 
+static QByteArray loadAndConvert(const QByteArray &codecName)
+{
+    QTextCodec *c = QTextCodec::codecForName(codecName);
+    if (!c) {
+        qDebug() << "WARNING " << codecName << " not found? ";
+        return QByteArray();
+    }
+    QString str = QString::fromLatin1(codecName);
+    QByteArray b = c->fromUnicode(str);
+    c->toUnicode(b);
+    return codecName;
+}
+
+static int loadAndConvertMIB(int mib)
+{
+    QTextCodec *c = QTextCodec::codecForMib(mib);
+    if (!c) {
+        qDebug() << "WARNING " << mib << " not found? ";
+        return 0;
+    }
+    QString str = QString::number(mib);
+    QByteArray b = c->fromUnicode(str);
+    c->toUnicode(b);
+    return mib;
+}
+
+
+void tst_QTextCodec::threadSafety()
+{
+    QThreadPool::globalInstance()->setMaxThreadCount(12);
+    
+    QList<QByteArray> codecList = QTextCodec::availableCodecs();
+    QFuture<QByteArray> res = QtConcurrent::mapped(codecList, loadAndConvert);
+
+    QList<int> mibList = QTextCodec::availableMibs();
+    QFuture<int> res2 = QtConcurrent::mapped(mibList, loadAndConvertMIB);
+
+    QCOMPARE(res.results(), codecList);
+    QCOMPARE(res2.results(), mibList);
+}
+
 QTEST_MAIN(tst_QTextCodec)
 #include "tst_qtextcodec.moc"
-- 
cgit v0.12


From 7724c474a941ea3516da6102a16b30ca254afe53 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Mon, 8 Feb 2010 12:25:10 +0100
Subject: QGraphicsItem: Do not crash at exit if there is static QGraphicsItem.

The DataStore could have been destroyed before.

Even if having static QGraphicsItem is not really supported, it is
better not to crash

Task-number:  QTBUG-7629
Reviewed-by: bnilsen
---
 src/gui/graphicsview/qgraphicsitem.cpp         | 3 ++-
 tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index b4e19d1..39c41c4 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -1392,7 +1392,8 @@ QGraphicsItem::~QGraphicsItem()
     }
     delete d_ptr->transformData;
 
-    qt_dataStore()->data.remove(this);
+    if (QGraphicsItemCustomDataStore *dataStore = qt_dataStore())
+        dataStore->data.remove(this);
 }
 
 /*!
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index 7b54a3b..7c1b97e 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -90,6 +90,8 @@ Q_DECLARE_METATYPE(QRectF)
 #define COMPARE_REGIONS QTRY_COMPARE
 #endif
 
+static QGraphicsRectItem staticItem; //QTBUG-7629, we should not crash at exit.
+
 static void sendMousePress(QGraphicsScene *scene, const QPointF &point, Qt::MouseButton button = Qt::LeftButton)
 {
     QGraphicsSceneMouseEvent event(QEvent::GraphicsSceneMousePress);
-- 
cgit v0.12


From 8d9c9386be6e45fdf919a3ac5bf79f5cde315142 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Fri, 5 Feb 2010 18:21:47 +0100
Subject: drastically improve load time of TS files

it isn't such a good idea to insert rows one by one into the model.
so instead batch the "announcement" of new data.

unloading single models is still slow, but that's a corner use case, so
don't bother fixing it now, especially as it is harder to do it.
---
 tools/linguist/linguist/messagemodel.cpp | 48 +++++++++++++++++++++-----------
 tools/linguist/linguist/messagemodel.h   |  2 +-
 2 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/tools/linguist/linguist/messagemodel.cpp b/tools/linguist/linguist/messagemodel.cpp
index 6572059..4e2b473 100644
--- a/tools/linguist/linguist/messagemodel.cpp
+++ b/tools/linguist/linguist/messagemodel.cpp
@@ -584,12 +584,16 @@ void MultiContextItem::putMessageItem(int pos, MessageItem *m)
     m_messageLists.last()[pos] = m;
 }
 
-void MultiContextItem::appendMessageItem(MessageItem *m)
+void MultiContextItem::appendMessageItems(const QList<MessageItem *> &m)
 {
+    QList<MessageItem *> nullItems = m; // Basically, just a reservation
+    for (int i = 0; i < nullItems.count(); ++i)
+        nullItems[i] = 0;
     for (int i = 0; i < m_messageLists.count() - 1; ++i)
-        m_messageLists[i].append(0);
-    m_messageLists.last().append(m);
-    m_multiMessageList.append(MultiMessageItem(m));
+        m_messageLists[i] += nullItems;
+    m_messageLists.last() += m;
+    foreach (MessageItem *mi, m)
+        m_multiMessageList.append(MultiMessageItem(mi));
 }
 
 void MultiContextItem::removeMultiMessageItem(int pos)
@@ -710,33 +714,43 @@ void MultiDataModel::append(DataModel *dm, bool readWrite)
         m_msgModel->endInsertColumns();
     }
     m_msgModel->endInsertColumns();
+    int appendedContexts = 0;
     for (int i = 0; i < dm->contextCount(); ++i) {
         ContextItem *c = dm->contextItem(i);
         int mcx = findContextIndex(c->context());
         if (mcx >= 0) {
             MultiContextItem *mc = multiContextItem(mcx);
             mc->assignLastModel(c, readWrite);
+            QList<MessageItem *> appendItems;
             for (int j = 0; j < c->messageCount(); ++j) {
                 MessageItem *m = c->messageItem(j);
                 int msgIdx = mc->findMessage(m->text(), m->comment());
-                if (msgIdx >= 0) {
+                if (msgIdx >= 0)
                     mc->putMessageItem(msgIdx, m);
-                } else {
-                    int msgCnt = mc->messageCount();
-                    m_msgModel->beginInsertRows(m_msgModel->createIndex(mcx, 0, 0), msgCnt, msgCnt);
-                    mc->appendMessageItem(m);
-                    m_msgModel->endInsertRows();
-                    ++m_numMessages;
-                }
+                else
+                    appendItems << m;
+            }
+            if (!appendItems.isEmpty()) {
+                int msgCnt = mc->messageCount();
+                m_msgModel->beginInsertRows(m_msgModel->createIndex(mcx, 0, 0),
+                                            msgCnt, msgCnt + appendItems.size() - 1);
+                mc->appendMessageItems(appendItems);
+                m_msgModel->endInsertRows();
+                m_numMessages += appendItems.size();
             }
         } else {
-            MultiContextItem item(modelCount() - 1, c, readWrite);
-            m_msgModel->beginInsertRows(QModelIndex(), contextCount(), contextCount());
-            m_multiContextList.append(item);
-            m_msgModel->endInsertRows();
-            m_numMessages += item.messageCount();
+            m_multiContextList << MultiContextItem(modelCount() - 1, c, readWrite);
+            m_numMessages += c->messageCount();
+            ++appendedContexts;
         }
     }
+    if (appendedContexts) {
+        // Do that en block to avoid itemview inefficiency. It doesn't hurt that we
+        // announce the availability of the data "long" after it was actually added.
+        m_msgModel->beginInsertRows(QModelIndex(),
+                                    contextCount() - appendedContexts, contextCount() - 1);
+        m_msgModel->endInsertRows();
+    }
     dm->setWritable(readWrite);
     updateCountsOnAdd(modelCount() - 1, readWrite);
     connect(dm, SIGNAL(modifiedChanged()), SLOT(onModifiedChanged()));
diff --git a/tools/linguist/linguist/messagemodel.h b/tools/linguist/linguist/messagemodel.h
index 3e0107e..7d98873 100644
--- a/tools/linguist/linguist/messagemodel.h
+++ b/tools/linguist/linguist/messagemodel.h
@@ -332,7 +332,7 @@ private:
     void removeModel(int pos);
     void moveModel(int oldPos, int newPos); // newPos is *before* removing at oldPos
     void putMessageItem(int pos, MessageItem *m);
-    void appendMessageItem(MessageItem *m);
+    void appendMessageItems(const QList<MessageItem *> &m);
     void removeMultiMessageItem(int pos);
     void incrementFinishedCount() { ++m_finishedCount; }
     void decrementFinishedCount() { --m_finishedCount; }
-- 
cgit v0.12


From e49fa5d9ab3c15918fe5fe92d30d7640e23a1307 Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Mon, 8 Feb 2010 12:54:35 +0100
Subject: generate code which does not break QT_USE_FAST_CONCATENATION with old
 gcc

---
 util/qlalr/cppgenerator.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/util/qlalr/cppgenerator.cpp b/util/qlalr/cppgenerator.cpp
index a95f5e4..f52a86f 100644
--- a/util/qlalr/cppgenerator.cpp
+++ b/util/qlalr/cppgenerator.cpp
@@ -457,7 +457,7 @@ void CppGenerator::generateDecl (QTextStream &out)
   out << "class " << grammar.table_name << endl
       << "{" << endl
       << "public:" << endl
-      << "  enum {" << endl;
+      << "  enum VariousConstants {" << endl;
 
   foreach (Name t, grammar.terminals)
     {
-- 
cgit v0.12


From 95f8f814f2f77654d846660644f0e8a5c48eeb26 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Mon, 8 Feb 2010 14:08:29 +0100
Subject: QLineEdit: regression: read-only line edits would eat shortcuts.

Restore Qt 4.5 behaviour.

Task-number: QTBUG-7395
Reviewed-by: Thierry
---
 src/gui/widgets/qlinecontrol.cpp       |  2 ++
 tests/auto/qlineedit/tst_qlineedit.cpp | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/src/gui/widgets/qlinecontrol.cpp b/src/gui/widgets/qlinecontrol.cpp
index b0a64ea..db099e8 100644
--- a/src/gui/widgets/qlinecontrol.cpp
+++ b/src/gui/widgets/qlinecontrol.cpp
@@ -1371,6 +1371,8 @@ bool QLineControl::processEvent(QEvent* ev)
             processInputMethodEvent(static_cast<QInputMethodEvent*>(ev)); break;
 #ifndef QT_NO_SHORTCUT
         case QEvent::ShortcutOverride:{
+            if (isReadOnly())
+                return false;
             QKeyEvent* ke = static_cast<QKeyEvent*>(ev);
             if (ke == QKeySequence::Copy
                 || ke == QKeySequence::Paste
diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index 7283916..69e7699 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -271,6 +271,7 @@ private slots:
     void taskQTBUG_4401_enterKeyClearsPassword();
     void taskQTBUG_4679_moveToStartEndOfBlock();
     void taskQTBUG_4679_selectToStartEndOfBlock();
+    void taskQTBUG_7395_readOnlyShortcut();
 
 protected slots:
 #ifdef QT3_SUPPORT
@@ -3638,5 +3639,25 @@ void tst_QLineEdit::taskQTBUG_4679_selectToStartEndOfBlock()
 #endif // Q_OS_MAC
 }
 
+void tst_QLineEdit::taskQTBUG_7395_readOnlyShortcut()
+{
+    //ReadOnly QLineEdit should not intercept shortcut.
+    QLineEdit le;
+    le.setReadOnly(true);
+
+    QAction action(QString::fromLatin1("hello"), &le);
+    action.setShortcut(QString::fromLatin1("p"));
+    QSignalSpy spy(&action, SIGNAL(triggered()));
+    le.addAction(&action);
+
+    le.show();
+    QApplication::setActiveWindow(&le);
+    QTest::qWaitForWindowShown(&le);
+    le.setFocus();
+    QTRY_VERIFY(le.hasFocus());
+    QTest::keyClick(0, Qt::Key_P);
+    QCOMPARE(spy.count(), 1);
+}
+
 QTEST_MAIN(tst_QLineEdit)
 #include "tst_qlineedit.moc"
-- 
cgit v0.12


From 43a9c48554579d76e1f1267fbd70f488f22fd408 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Mon, 8 Feb 2010 14:55:40 +0100
Subject: Fixed QImagReader::setAutoDetectImageFormat() to work with plugins.

Only the compiled in formats where checked when
setAutoDetectImageFormat(false) was set on a QImageReader object.

Task-number: QTBUG-7980
Reviewed-by: aavit
---
 src/gui/image/qimagereader.cpp               | 28 +++++++++++++++++++--------
 tests/auto/qimagereader/tst_qimagereader.cpp | 29 ++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 8 deletions(-)

diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index c9e015c..9320cfc 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -263,25 +263,37 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device,
             device->seek(pos);
     }
 
-    if (!handler && !testFormat.isEmpty() && autoDetectImageFormat && !ignoresFormatAndExtension) {
+    if (!handler && !testFormat.isEmpty() && !ignoresFormatAndExtension) {
         // check if any plugin supports the format (they are not allowed to
         // read from the device yet).
         const qint64 pos = device ? device->pos() : 0;
-        for (int i = 0; i < keys.size(); ++i) {
-            if (i != suffixPluginIndex) {
-                QImageIOPlugin *plugin = qobject_cast<QImageIOPlugin *>(l->instance(keys.at(i)));
-                if (plugin && plugin->capabilities(device, testFormat) & QImageIOPlugin::CanRead) {
+
+        if (autoDetectImageFormat) {
+            for (int i = 0; i < keys.size(); ++i) {
+                if (i != suffixPluginIndex) {
+                    QImageIOPlugin *plugin = qobject_cast<QImageIOPlugin *>(l->instance(keys.at(i)));
+                    if (plugin && plugin->capabilities(device, testFormat) & QImageIOPlugin::CanRead) {
 #ifdef QIMAGEREADER_DEBUG
-                    qDebug() << "QImageReader::createReadHandler: the" << keys.at(i) << "plugin can read this format";
+                        qDebug() << "QImageReader::createReadHandler: the" << keys.at(i) << "plugin can read this format";
 #endif
-                    handler = plugin->create(device, testFormat);
-                    break;
+                        handler = plugin->create(device, testFormat);
+                        break;
+                    }
                 }
             }
+        } else {
+            QImageIOPlugin *plugin = qobject_cast<QImageIOPlugin *>(l->instance(QLatin1String(testFormat)));
+            if (plugin && plugin->capabilities(device, testFormat) & QImageIOPlugin::CanRead) {
+#ifdef QIMAGEREADER_DEBUG
+                qDebug() << "QImageReader::createReadHandler: the" << testFormat << "plugin can read this format";
+#endif
+                handler = plugin->create(device, testFormat);
+            }
         }
         if (device && !device->isSequential())
             device->seek(pos);
     }
+
 #endif // QT_NO_LIBRARY
 
     // if we don't have a handler yet, check if we have built-in support for
diff --git a/tests/auto/qimagereader/tst_qimagereader.cpp b/tests/auto/qimagereader/tst_qimagereader.cpp
index 121a8fa..99244c2 100644
--- a/tests/auto/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/qimagereader/tst_qimagereader.cpp
@@ -1633,6 +1633,35 @@ void tst_QImageReader::autoDetectImageFormat()
         QVERIFY(reader.canRead());
         QVERIFY(!reader.read().isNull());
     }
+
+#ifdef QTEST_HAVE_JPEG
+    {
+        QImageReader io(prefix + "YCbCr_rgb.jpg");
+        io.setAutoDetectImageFormat(false);
+        // This should fail since no format string is given
+        QImage image;
+        QVERIFY(!io.read(&image));
+    }
+    {
+        QImageReader io(prefix + "YCbCr_rgb.jpg", "jpg");
+        io.setAutoDetectImageFormat(false);
+        QImage image;
+        QVERIFY(io.read(&image));
+    }
+#endif
+    {
+        QImageReader io(prefix + "tst7.png");
+        io.setAutoDetectImageFormat(false);
+        // This should fail since no format string is given
+        QImage image;
+        QVERIFY(!io.read(&image));
+    }
+    {
+        QImageReader io(prefix + "tst7.png", "png");
+        io.setAutoDetectImageFormat(false);
+        QImage image;
+        QVERIFY(io.read(&image));
+    }
 }
 
 void tst_QImageReader::fileNameProbing()
-- 
cgit v0.12


From 020830966e08239854ac207ec28663a80c6e0647 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?= <bjorn.nilsen@nokia.com>
Date: Mon, 8 Feb 2010 14:01:08 +0100
Subject: Restructure tests/benchmarks directory.

We follow the same structure as used in the src directory. This makes it
easier to navigate through the jungel, especially now that we are going
to add functional tests etc.
---
 tests/benchmarks/benchmarks.pro                    |   52 +-
 tests/benchmarks/blendbench/blendbench.pro         |    8 -
 tests/benchmarks/blendbench/main.cpp               |  152 --
 .../containers-associative.pro                     |    8 -
 tests/benchmarks/containers-associative/main.cpp   |  143 --
 .../containers-sequential.pro                      |    8 -
 tests/benchmarks/containers-sequential/main.cpp    |  265 ----
 tests/benchmarks/corelib/corelib.pro               |    6 +
 tests/benchmarks/corelib/io/io.pro                 |    9 +
 tests/benchmarks/corelib/io/qdir/qdir.pro          |    8 +
 tests/benchmarks/corelib/io/qdir/tst_qdir.cpp      |  198 +++
 tests/benchmarks/corelib/io/qdiriterator/main.cpp  |  251 +++
 .../corelib/io/qdiriterator/qdiriterator.pro       |   23 +
 .../io/qdiriterator/qfilesystemiterator.cpp        |  678 ++++++++
 .../corelib/io/qdiriterator/qfilesystemiterator.h  |   99 ++
 tests/benchmarks/corelib/io/qfile/main.cpp         |  675 ++++++++
 tests/benchmarks/corelib/io/qfile/qfile.pro        |    7 +
 tests/benchmarks/corelib/io/qfileinfo/main.cpp     |   83 +
 .../benchmarks/corelib/io/qfileinfo/qfileinfo.pro  |   12 +
 tests/benchmarks/corelib/io/qiodevice/main.cpp     |  107 ++
 .../benchmarks/corelib/io/qiodevice/qiodevice.pro  |   13 +
 .../benchmarks/corelib/io/qtemporaryfile/main.cpp  |  103 ++
 .../corelib/io/qtemporaryfile/qtemporaryfile.pro   |   12 +
 tests/benchmarks/corelib/kernel/events/events.pro  |    7 +
 tests/benchmarks/corelib/kernel/events/main.cpp    |  187 +++
 tests/benchmarks/corelib/kernel/kernel.pro         |    6 +
 .../benchmarks/corelib/kernel/qmetaobject/main.cpp |  159 ++
 .../corelib/kernel/qmetaobject/qmetaobject.pro     |    5 +
 tests/benchmarks/corelib/kernel/qobject/main.cpp   |  180 +++
 tests/benchmarks/corelib/kernel/qobject/object.cpp |   65 +
 tests/benchmarks/corelib/kernel/qobject/object.h   |   75 +
 .../benchmarks/corelib/kernel/qobject/qobject.pro  |    9 +
 .../corelib/kernel/qvariant/qvariant.pro           |   11 +
 .../corelib/kernel/qvariant/tst_qvariant.cpp       |  180 +++
 .../thread/qthreadstorage/qthreadstorage.pro       |    6 +
 .../thread/qthreadstorage/tst_qthreadstorage.cpp   |  124 ++
 tests/benchmarks/corelib/thread/thread.pro         |    3 +
 .../containers-associative.pro                     |    8 +
 .../corelib/tools/containers-associative/main.cpp  |  143 ++
 .../containers-sequential.pro                      |    8 +
 .../corelib/tools/containers-sequential/main.cpp   |  265 ++++
 tests/benchmarks/corelib/tools/qbytearray/main.cpp |   92 ++
 .../corelib/tools/qbytearray/qbytearray.pro        |   12 +
 tests/benchmarks/corelib/tools/qrect/main.cpp      |  329 ++++
 tests/benchmarks/corelib/tools/qrect/qrect.pro     |   12 +
 tests/benchmarks/corelib/tools/qregexp/main.cpp    |  290 ++++
 tests/benchmarks/corelib/tools/qregexp/qregexp.pro |   12 +
 tests/benchmarks/corelib/tools/qstring/main.cpp    |  147 ++
 tests/benchmarks/corelib/tools/qstring/qstring.pro |   16 +
 tests/benchmarks/corelib/tools/qstring/utf-8.txt   |   72 +
 .../corelib/tools/qstringbuilder/main.cpp          |  464 ++++++
 .../tools/qstringbuilder/qstringbuilder.pro        |   12 +
 .../corelib/tools/qstringlist/.gitignore           |    1 +
 .../benchmarks/corelib/tools/qstringlist/main.cpp  |  193 +++
 .../corelib/tools/qstringlist/qstringlist.pro      |    6 +
 tests/benchmarks/corelib/tools/tools.pro           |   10 +
 tests/benchmarks/events/events.pro                 |    7 -
 tests/benchmarks/events/main.cpp                   |  187 ---
 tests/benchmarks/gui/animation/animation.pro       |    2 +
 .../gui/animation/qanimation/dummyanimation.cpp    |   61 +
 .../gui/animation/qanimation/dummyanimation.h      |   60 +
 .../gui/animation/qanimation/dummyobject.cpp       |   66 +
 .../gui/animation/qanimation/dummyobject.h         |   64 +
 tests/benchmarks/gui/animation/qanimation/main.cpp |  191 +++
 .../gui/animation/qanimation/qanimation.pro        |   18 +
 .../gui/animation/qanimation/rectanimation.cpp     |   94 ++
 .../gui/animation/qanimation/rectanimation.h       |   70 +
 tests/benchmarks/gui/graphicsview/graphicsview.pro |    7 +
 .../qgraphicsanchorlayout.pro                      |    6 +
 .../tst_qgraphicsanchorlayout.cpp                  |  433 ++++++
 .../graphicsview/qgraphicsitem/qgraphicsitem.pro   |    5 +
 .../qgraphicsitem/tst_qgraphicsitem.cpp            |  243 +++
 .../graphicsview/qgraphicsscene/qgraphicsscene.pro |    6 +
 .../qgraphicsscene/tst_qgraphicsscene.cpp          |  248 +++
 .../qgraphicsview/benchapps/chipTest/chip.cpp      |  176 +++
 .../qgraphicsview/benchapps/chipTest/chip.debug    |  Bin 0 -> 863805 bytes
 .../qgraphicsview/benchapps/chipTest/chip.h        |   68 +
 .../qgraphicsview/benchapps/chipTest/chip.pro      |   19 +
 .../qgraphicsview/benchapps/chipTest/fileprint.png |  Bin 0 -> 1456 bytes
 .../qgraphicsview/benchapps/chipTest/images.qrc    |   10 +
 .../qgraphicsview/benchapps/chipTest/main.cpp      |   57 +
 .../benchapps/chipTest/mainwindow.cpp              |   87 ++
 .../qgraphicsview/benchapps/chipTest/mainwindow.h  |   66 +
 .../qgraphicsview/benchapps/chipTest/qt4logo.png   |  Bin 0 -> 48333 bytes
 .../benchapps/chipTest/rotateleft.png              |  Bin 0 -> 1754 bytes
 .../benchapps/chipTest/rotateright.png             |  Bin 0 -> 1732 bytes
 .../qgraphicsview/benchapps/chipTest/view.cpp      |  257 +++
 .../qgraphicsview/benchapps/chipTest/view.h        |   86 ++
 .../qgraphicsview/benchapps/chipTest/zoomin.png    |  Bin 0 -> 1622 bytes
 .../qgraphicsview/benchapps/chipTest/zoomout.png   |  Bin 0 -> 1601 bytes
 .../qgraphicsview/benchapps/moveItems/main.cpp     |  106 ++
 .../benchapps/moveItems/moveItems.pro              |    1 +
 .../qgraphicsview/benchapps/scrolltest/main.cpp    |  146 ++
 .../benchapps/scrolltest/scrolltest.pro            |    1 +
 .../graphicsview/qgraphicsview/chiptester/chip.cpp |  182 +++
 .../graphicsview/qgraphicsview/chiptester/chip.h   |   68 +
 .../qgraphicsview/chiptester/chiptester.cpp        |  144 ++
 .../qgraphicsview/chiptester/chiptester.h          |   85 +
 .../qgraphicsview/chiptester/chiptester.pri        |   12 +
 .../qgraphicsview/chiptester/images.qrc            |    5 +
 .../qgraphicsview/chiptester/qt4logo.png           |  Bin 0 -> 48333 bytes
 .../graphicsview/qgraphicsview/images/designer.png |  Bin 0 -> 4205 bytes
 .../qgraphicsview/images/wine-big.jpeg             |  Bin 0 -> 12249 bytes
 .../graphicsview/qgraphicsview/images/wine.jpeg    |  Bin 0 -> 2265 bytes
 .../graphicsview/qgraphicsview/qgraphicsview.pro   |   16 +
 .../graphicsview/qgraphicsview/qgraphicsview.qrc   |    9 +
 .../gui/graphicsview/qgraphicsview/random.data     |  Bin 0 -> 800 bytes
 .../qgraphicsview/tst_qgraphicsview.cpp            |  908 +++++++++++
 .../qgraphicswidget/qgraphicswidget.pro            |    6 +
 .../qgraphicswidget/tst_qgraphicswidget.cpp        |   94 ++
 tests/benchmarks/gui/gui.pro                       |   11 +
 .../benchmarks/gui/image/blendbench/blendbench.pro |    8 +
 tests/benchmarks/gui/image/blendbench/main.cpp     |  152 ++
 tests/benchmarks/gui/image/image.pro               |    6 +
 .../gui/image/qimagereader/images/16bpp.bmp        |  Bin 0 -> 153654 bytes
 .../gui/image/qimagereader/images/4bpp-rle.bmp     |  Bin 0 -> 23662 bytes
 .../gui/image/qimagereader/images/YCbCr_cmyk.jpg   |  Bin 0 -> 3699 bytes
 .../gui/image/qimagereader/images/YCbCr_cmyk.png   |  Bin 0 -> 230 bytes
 .../gui/image/qimagereader/images/YCbCr_rgb.jpg    |  Bin 0 -> 2045 bytes
 .../gui/image/qimagereader/images/away.png         |  Bin 0 -> 753 bytes
 .../gui/image/qimagereader/images/ball.mng         |  Bin 0 -> 34394 bytes
 .../gui/image/qimagereader/images/bat1.gif         |  Bin 0 -> 953 bytes
 .../gui/image/qimagereader/images/bat2.gif         |  Bin 0 -> 980 bytes
 .../gui/image/qimagereader/images/beavis.jpg       |  Bin 0 -> 20688 bytes
 .../gui/image/qimagereader/images/black.png        |  Bin 0 -> 697 bytes
 .../gui/image/qimagereader/images/black.xpm        |   65 +
 .../gui/image/qimagereader/images/colorful.bmp     |  Bin 0 -> 65002 bytes
 .../image/qimagereader/images/corrupt-colors.xpm   |   26 +
 .../gui/image/qimagereader/images/corrupt-data.tif |  Bin 0 -> 8590 bytes
 .../image/qimagereader/images/corrupt-pixels.xpm   |    7 +
 .../gui/image/qimagereader/images/corrupt.bmp      |  Bin 0 -> 116 bytes
 .../gui/image/qimagereader/images/corrupt.gif      |  Bin 0 -> 2608 bytes
 .../gui/image/qimagereader/images/corrupt.jpg      |  Bin 0 -> 18 bytes
 .../gui/image/qimagereader/images/corrupt.mng      |  Bin 0 -> 183 bytes
 .../gui/image/qimagereader/images/corrupt.png      |  Bin 0 -> 95 bytes
 .../gui/image/qimagereader/images/corrupt.xbm      |    5 +
 .../qimagereader/images/crash-signed-char.bmp      |  Bin 0 -> 45748 bytes
 .../gui/image/qimagereader/images/earth.gif        |  Bin 0 -> 51712 bytes
 .../gui/image/qimagereader/images/fire.mng         |  Bin 0 -> 44430 bytes
 .../gui/image/qimagereader/images/font.bmp         |  Bin 0 -> 1026 bytes
 .../gui/image/qimagereader/images/gnus.xbm         |  622 ++++++++
 .../gui/image/qimagereader/images/image.pbm        |    8 +
 .../gui/image/qimagereader/images/image.pgm        |   10 +
 .../gui/image/qimagereader/images/image.png        |  Bin 0 -> 549 bytes
 .../gui/image/qimagereader/images/image.ppm        |    7 +
 .../gui/image/qimagereader/images/kollada-noext    |  Bin 0 -> 13907 bytes
 .../gui/image/qimagereader/images/kollada.png      |  Bin 0 -> 13907 bytes
 .../gui/image/qimagereader/images/marble.xpm       |  470 ++++++
 .../gui/image/qimagereader/images/namedcolors.xpm  |   18 +
 .../image/qimagereader/images/negativeheight.bmp   |  Bin 0 -> 24630 bytes
 .../gui/image/qimagereader/images/noclearcode.bmp  |  Bin 0 -> 326 bytes
 .../gui/image/qimagereader/images/noclearcode.gif  |  Bin 0 -> 130 bytes
 .../image/qimagereader/images/nontransparent.xpm   |  788 ++++++++++
 .../qimagereader/images/pngwithcompressedtext.png  |  Bin 0 -> 757 bytes
 .../gui/image/qimagereader/images/pngwithtext.png  |  Bin 0 -> 796 bytes
 .../images/rgba_adobedeflate_littleendian.tif      |  Bin 0 -> 4784 bytes
 .../qimagereader/images/rgba_lzw_littleendian.tif  |  Bin 0 -> 26690 bytes
 .../images/rgba_nocompression_bigendian.tif        |  Bin 0 -> 160384 bytes
 .../images/rgba_nocompression_littleendian.tif     |  Bin 0 -> 160388 bytes
 .../images/rgba_packbits_littleendian.tif          |  Bin 0 -> 161370 bytes
 .../images/rgba_zipdeflate_littleendian.tif        |  Bin 0 -> 14728 bytes
 .../gui/image/qimagereader/images/runners.ppm      |  Bin 0 -> 960016 bytes
 .../gui/image/qimagereader/images/task210380.jpg   |  Bin 0 -> 975535 bytes
 .../gui/image/qimagereader/images/teapot.ppm       |   31 +
 .../gui/image/qimagereader/images/test.ppm         |    2 +
 .../gui/image/qimagereader/images/test.xpm         |  260 ++++
 .../gui/image/qimagereader/images/transparent.xpm  |  788 ++++++++++
 .../gui/image/qimagereader/images/trolltech.gif    |  Bin 0 -> 42629 bytes
 .../gui/image/qimagereader/images/tst7.bmp         |  Bin 0 -> 582 bytes
 .../gui/image/qimagereader/images/tst7.png         |  Bin 0 -> 167 bytes
 .../gui/image/qimagereader/qimagereader.pro        |   27 +
 .../gui/image/qimagereader/tst_qimagereader.cpp    |  244 +++
 tests/benchmarks/gui/image/qpixmap/qpixmap.pro     |    5 +
 tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp |  227 +++
 .../gui/image/qpixmapcache/qpixmapcache.pro        |    6 +
 .../gui/image/qpixmapcache/tst_qpixmapcache.cpp    |  226 +++
 tests/benchmarks/gui/itemviews/itemviews.pro       |    3 +
 .../gui/itemviews/qtableview/qtableview.pro        |    6 +
 .../gui/itemviews/qtableview/tst_qtableview.cpp    |  367 +++++
 tests/benchmarks/gui/kernel/kernel.pro             |    4 +
 tests/benchmarks/gui/kernel/qapplication/main.cpp  |   71 +
 .../gui/kernel/qapplication/qapplication.pro       |   10 +
 tests/benchmarks/gui/kernel/qwidget/qwidget.pro    |    4 +
 .../benchmarks/gui/kernel/qwidget/tst_qwidget.cpp  |  332 ++++
 tests/benchmarks/gui/math3d/math3d.pro             |    4 +
 .../gui/math3d/qmatrix4x4/qmatrix4x4.pro           |    6 +
 .../gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp       |  672 ++++++++
 .../gui/math3d/qquaternion/qquaternion.pro         |    6 +
 .../gui/math3d/qquaternion/tst_qquaternion.cpp     |  124 ++
 tests/benchmarks/gui/painting/painting.pro         |    5 +
 .../benchmarks/gui/painting/qpainter/qpainter.pro  |    5 +
 .../gui/painting/qpainter/tst_qpainter.cpp         | 1633 ++++++++++++++++++++
 tests/benchmarks/gui/painting/qregion/main.cpp     |   89 ++
 tests/benchmarks/gui/painting/qregion/qregion.pro  |   10 +
 .../gui/painting/qtransform/qtransform.pro         |    6 +
 .../gui/painting/qtransform/tst_qtransform.cpp     |  592 +++++++
 .../gui/styles/qstylesheetstyle/main.cpp           |  192 +++
 .../styles/qstylesheetstyle/qstylesheetstyle.pro   |   11 +
 tests/benchmarks/gui/styles/styles.pro             |    3 +
 tests/benchmarks/gui/text/qfontmetrics/main.cpp    |  112 ++
 .../gui/text/qfontmetrics/qfontmetrics.pro         |    5 +
 tests/benchmarks/gui/text/qtext/bidi.txt           |    4 +
 tests/benchmarks/gui/text/qtext/main.cpp           |  415 +++++
 tests/benchmarks/gui/text/qtext/qtext.pro          |   14 +
 tests/benchmarks/gui/text/text.pro                 |    4 +
 tests/benchmarks/network/access/access.pro         |    4 +
 .../access/qfile_vs_qnetworkaccessmanager/main.cpp |  193 +++
 .../qfile_vs_qnetworkaccessmanager.pro             |   13 +
 .../network/access/qnetworkreply/qnetworkreply.pro |   13 +
 .../access/qnetworkreply/tst_qnetworkreply.cpp     |  656 ++++++++
 tests/benchmarks/network/kernel/kernel.pro         |    3 +
 tests/benchmarks/network/kernel/qhostinfo/main.cpp |   96 ++
 .../network/kernel/qhostinfo/qhostinfo.pro         |   13 +
 tests/benchmarks/network/network.pro               |    5 +
 .../network/socket/qtcpserver/qtcpserver.pro       |   13 +
 .../network/socket/qtcpserver/tst_qtcpserver.cpp   |  277 ++++
 tests/benchmarks/network/socket/socket.pro         |    3 +
 tests/benchmarks/qanimation/dummyanimation.cpp     |   61 -
 tests/benchmarks/qanimation/dummyanimation.h       |   60 -
 tests/benchmarks/qanimation/dummyobject.cpp        |   66 -
 tests/benchmarks/qanimation/dummyobject.h          |   64 -
 tests/benchmarks/qanimation/main.cpp               |  191 ---
 tests/benchmarks/qanimation/qanimation.pro         |   18 -
 tests/benchmarks/qanimation/rectanimation.cpp      |   94 --
 tests/benchmarks/qanimation/rectanimation.h        |   70 -
 tests/benchmarks/qapplication/main.cpp             |   71 -
 tests/benchmarks/qapplication/qapplication.pro     |   10 -
 tests/benchmarks/qbytearray/main.cpp               |   92 --
 tests/benchmarks/qbytearray/qbytearray.pro         |   12 -
 tests/benchmarks/qdir/qdir.pro                     |    8 -
 tests/benchmarks/qdir/tst_qdir.cpp                 |  198 ---
 tests/benchmarks/qdiriterator/main.cpp             |  251 ---
 tests/benchmarks/qdiriterator/qdiriterator.pro     |   23 -
 .../qdiriterator/qfilesystemiterator.cpp           |  678 --------
 .../benchmarks/qdiriterator/qfilesystemiterator.h  |   99 --
 tests/benchmarks/qfile/main.cpp                    |  675 --------
 tests/benchmarks/qfile/qfile.pro                   |    7 -
 .../qfile_vs_qnetworkaccessmanager/main.cpp        |  193 ---
 .../qfile_vs_qnetworkaccessmanager.pro             |   13 -
 tests/benchmarks/qfileinfo/main.cpp                |   83 -
 tests/benchmarks/qfileinfo/qfileinfo.pro           |   12 -
 tests/benchmarks/qfontmetrics/main.cpp             |  112 --
 tests/benchmarks/qfontmetrics/qfontmetrics.pro     |    5 -
 .../qgraphicsanchorlayout.pro                      |    6 -
 .../tst_qgraphicsanchorlayout.cpp                  |  433 ------
 tests/benchmarks/qgraphicsitem/qgraphicsitem.pro   |    5 -
 .../benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp |  243 ---
 tests/benchmarks/qgraphicsscene/qgraphicsscene.pro |    6 -
 .../qgraphicsscene/tst_qgraphicsscene.cpp          |  248 ---
 .../qgraphicsview/benchapps/chipTest/chip.cpp      |  176 ---
 .../qgraphicsview/benchapps/chipTest/chip.debug    |  Bin 863805 -> 0 bytes
 .../qgraphicsview/benchapps/chipTest/chip.h        |   68 -
 .../qgraphicsview/benchapps/chipTest/chip.pro      |   19 -
 .../qgraphicsview/benchapps/chipTest/fileprint.png |  Bin 1456 -> 0 bytes
 .../qgraphicsview/benchapps/chipTest/images.qrc    |   10 -
 .../qgraphicsview/benchapps/chipTest/main.cpp      |   57 -
 .../benchapps/chipTest/mainwindow.cpp              |   87 --
 .../qgraphicsview/benchapps/chipTest/mainwindow.h  |   66 -
 .../qgraphicsview/benchapps/chipTest/qt4logo.png   |  Bin 48333 -> 0 bytes
 .../benchapps/chipTest/rotateleft.png              |  Bin 1754 -> 0 bytes
 .../benchapps/chipTest/rotateright.png             |  Bin 1732 -> 0 bytes
 .../qgraphicsview/benchapps/chipTest/view.cpp      |  257 ---
 .../qgraphicsview/benchapps/chipTest/view.h        |   86 --
 .../qgraphicsview/benchapps/chipTest/zoomin.png    |  Bin 1622 -> 0 bytes
 .../qgraphicsview/benchapps/chipTest/zoomout.png   |  Bin 1601 -> 0 bytes
 .../qgraphicsview/benchapps/moveItems/main.cpp     |  106 --
 .../benchapps/moveItems/moveItems.pro              |    1 -
 .../qgraphicsview/benchapps/scrolltest/main.cpp    |  146 --
 .../benchapps/scrolltest/scrolltest.pro            |    1 -
 tests/benchmarks/qgraphicsview/chiptester/chip.cpp |  182 ---
 tests/benchmarks/qgraphicsview/chiptester/chip.h   |   68 -
 .../qgraphicsview/chiptester/chiptester.cpp        |  144 --
 .../qgraphicsview/chiptester/chiptester.h          |   85 -
 .../qgraphicsview/chiptester/chiptester.pri        |   12 -
 .../benchmarks/qgraphicsview/chiptester/images.qrc |    5 -
 .../qgraphicsview/chiptester/qt4logo.png           |  Bin 48333 -> 0 bytes
 tests/benchmarks/qgraphicsview/images/designer.png |  Bin 4205 -> 0 bytes
 .../benchmarks/qgraphicsview/images/wine-big.jpeg  |  Bin 12249 -> 0 bytes
 tests/benchmarks/qgraphicsview/images/wine.jpeg    |  Bin 2265 -> 0 bytes
 tests/benchmarks/qgraphicsview/qgraphicsview.pro   |   16 -
 tests/benchmarks/qgraphicsview/qgraphicsview.qrc   |    9 -
 tests/benchmarks/qgraphicsview/random.data         |  Bin 800 -> 0 bytes
 .../benchmarks/qgraphicsview/tst_qgraphicsview.cpp |  908 -----------
 .../benchmarks/qgraphicswidget/qgraphicswidget.pro |    6 -
 .../qgraphicswidget/tst_qgraphicswidget.cpp        |   94 --
 tests/benchmarks/qhostinfo/main.cpp                |   96 --
 tests/benchmarks/qhostinfo/qhostinfo.pro           |   13 -
 tests/benchmarks/qimagereader/images/16bpp.bmp     |  Bin 153654 -> 0 bytes
 tests/benchmarks/qimagereader/images/4bpp-rle.bmp  |  Bin 23662 -> 0 bytes
 .../benchmarks/qimagereader/images/YCbCr_cmyk.jpg  |  Bin 3699 -> 0 bytes
 .../benchmarks/qimagereader/images/YCbCr_cmyk.png  |  Bin 230 -> 0 bytes
 tests/benchmarks/qimagereader/images/YCbCr_rgb.jpg |  Bin 2045 -> 0 bytes
 tests/benchmarks/qimagereader/images/away.png      |  Bin 753 -> 0 bytes
 tests/benchmarks/qimagereader/images/ball.mng      |  Bin 34394 -> 0 bytes
 tests/benchmarks/qimagereader/images/bat1.gif      |  Bin 953 -> 0 bytes
 tests/benchmarks/qimagereader/images/bat2.gif      |  Bin 980 -> 0 bytes
 tests/benchmarks/qimagereader/images/beavis.jpg    |  Bin 20688 -> 0 bytes
 tests/benchmarks/qimagereader/images/black.png     |  Bin 697 -> 0 bytes
 tests/benchmarks/qimagereader/images/black.xpm     |   65 -
 tests/benchmarks/qimagereader/images/colorful.bmp  |  Bin 65002 -> 0 bytes
 .../qimagereader/images/corrupt-colors.xpm         |   26 -
 .../qimagereader/images/corrupt-data.tif           |  Bin 8590 -> 0 bytes
 .../qimagereader/images/corrupt-pixels.xpm         |    7 -
 tests/benchmarks/qimagereader/images/corrupt.bmp   |  Bin 116 -> 0 bytes
 tests/benchmarks/qimagereader/images/corrupt.gif   |  Bin 2608 -> 0 bytes
 tests/benchmarks/qimagereader/images/corrupt.jpg   |  Bin 18 -> 0 bytes
 tests/benchmarks/qimagereader/images/corrupt.mng   |  Bin 183 -> 0 bytes
 tests/benchmarks/qimagereader/images/corrupt.png   |  Bin 95 -> 0 bytes
 tests/benchmarks/qimagereader/images/corrupt.xbm   |    5 -
 .../qimagereader/images/crash-signed-char.bmp      |  Bin 45748 -> 0 bytes
 tests/benchmarks/qimagereader/images/earth.gif     |  Bin 51712 -> 0 bytes
 tests/benchmarks/qimagereader/images/fire.mng      |  Bin 44430 -> 0 bytes
 tests/benchmarks/qimagereader/images/font.bmp      |  Bin 1026 -> 0 bytes
 tests/benchmarks/qimagereader/images/gnus.xbm      |  622 --------
 tests/benchmarks/qimagereader/images/image.pbm     |    8 -
 tests/benchmarks/qimagereader/images/image.pgm     |   10 -
 tests/benchmarks/qimagereader/images/image.png     |  Bin 549 -> 0 bytes
 tests/benchmarks/qimagereader/images/image.ppm     |    7 -
 tests/benchmarks/qimagereader/images/kollada-noext |  Bin 13907 -> 0 bytes
 tests/benchmarks/qimagereader/images/kollada.png   |  Bin 13907 -> 0 bytes
 tests/benchmarks/qimagereader/images/marble.xpm    |  470 ------
 .../benchmarks/qimagereader/images/namedcolors.xpm |   18 -
 .../qimagereader/images/negativeheight.bmp         |  Bin 24630 -> 0 bytes
 .../benchmarks/qimagereader/images/noclearcode.bmp |  Bin 326 -> 0 bytes
 .../benchmarks/qimagereader/images/noclearcode.gif |  Bin 130 -> 0 bytes
 .../qimagereader/images/nontransparent.xpm         |  788 ----------
 .../qimagereader/images/pngwithcompressedtext.png  |  Bin 757 -> 0 bytes
 .../benchmarks/qimagereader/images/pngwithtext.png |  Bin 796 -> 0 bytes
 .../images/rgba_adobedeflate_littleendian.tif      |  Bin 4784 -> 0 bytes
 .../qimagereader/images/rgba_lzw_littleendian.tif  |  Bin 26690 -> 0 bytes
 .../images/rgba_nocompression_bigendian.tif        |  Bin 160384 -> 0 bytes
 .../images/rgba_nocompression_littleendian.tif     |  Bin 160388 -> 0 bytes
 .../images/rgba_packbits_littleendian.tif          |  Bin 161370 -> 0 bytes
 .../images/rgba_zipdeflate_littleendian.tif        |  Bin 14728 -> 0 bytes
 tests/benchmarks/qimagereader/images/runners.ppm   |  Bin 960016 -> 0 bytes
 .../benchmarks/qimagereader/images/task210380.jpg  |  Bin 975535 -> 0 bytes
 tests/benchmarks/qimagereader/images/teapot.ppm    |   31 -
 tests/benchmarks/qimagereader/images/test.ppm      |    2 -
 tests/benchmarks/qimagereader/images/test.xpm      |  260 ----
 .../benchmarks/qimagereader/images/transparent.xpm |  788 ----------
 tests/benchmarks/qimagereader/images/trolltech.gif |  Bin 42629 -> 0 bytes
 tests/benchmarks/qimagereader/images/tst7.bmp      |  Bin 582 -> 0 bytes
 tests/benchmarks/qimagereader/images/tst7.png      |  Bin 167 -> 0 bytes
 tests/benchmarks/qimagereader/qimagereader.pro     |   27 -
 tests/benchmarks/qimagereader/tst_qimagereader.cpp |  244 ---
 tests/benchmarks/qiodevice/main.cpp                |  107 --
 tests/benchmarks/qiodevice/qiodevice.pro           |   13 -
 tests/benchmarks/qmatrix4x4/qmatrix4x4.pro         |    6 -
 tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp     |  672 --------
 tests/benchmarks/qmetaobject/main.cpp              |  159 --
 tests/benchmarks/qmetaobject/qmetaobject.pro       |    5 -
 tests/benchmarks/qnetworkreply/qnetworkreply.pro   |   13 -
 .../benchmarks/qnetworkreply/tst_qnetworkreply.cpp |  656 --------
 tests/benchmarks/qobject/main.cpp                  |  180 ---
 tests/benchmarks/qobject/object.cpp                |   65 -
 tests/benchmarks/qobject/object.h                  |   75 -
 tests/benchmarks/qobject/qobject.pro               |    9 -
 tests/benchmarks/qpainter/qpainter.pro             |    5 -
 tests/benchmarks/qpainter/tst_qpainter.cpp         | 1633 --------------------
 tests/benchmarks/qpixmap/qpixmap.pro               |    5 -
 tests/benchmarks/qpixmap/tst_qpixmap.cpp           |  227 ---
 tests/benchmarks/qpixmapcache/qpixmapcache.pro     |    6 -
 tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp |  226 ---
 tests/benchmarks/qquaternion/qquaternion.pro       |    6 -
 tests/benchmarks/qquaternion/tst_qquaternion.cpp   |  124 --
 tests/benchmarks/qrect/main.cpp                    |  329 ----
 tests/benchmarks/qrect/qrect.pro                   |   12 -
 tests/benchmarks/qregexp/main.cpp                  |  290 ----
 tests/benchmarks/qregexp/qregexp.pro               |   12 -
 tests/benchmarks/qregion/main.cpp                  |   89 --
 tests/benchmarks/qregion/qregion.pro               |   10 -
 tests/benchmarks/qscriptclass/qscriptclass.pro     |    7 -
 tests/benchmarks/qscriptclass/tst_qscriptclass.cpp |  511 ------
 tests/benchmarks/qscriptengine/qscriptengine.pro   |   12 -
 .../benchmarks/qscriptengine/tst_qscriptengine.cpp |  289 ----
 tests/benchmarks/qscriptvalue/qscriptvalue.pro     |    7 -
 tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp |  205 ---
 tests/benchmarks/qstring/main.cpp                  |  147 --
 tests/benchmarks/qstring/qstring.pro               |   16 -
 tests/benchmarks/qstring/utf-8.txt                 |   72 -
 tests/benchmarks/qstringbuilder/main.cpp           |  464 ------
 tests/benchmarks/qstringbuilder/qstringbuilder.pro |   12 -
 tests/benchmarks/qstringlist/.gitignore            |    1 -
 tests/benchmarks/qstringlist/main.cpp              |  193 ---
 tests/benchmarks/qstringlist/qstringlist.pro       |    6 -
 tests/benchmarks/qstylesheetstyle/main.cpp         |  192 ---
 .../qstylesheetstyle/qstylesheetstyle.pro          |   11 -
 tests/benchmarks/qsvgrenderer/data/tiger.svg       |  730 ---------
 tests/benchmarks/qsvgrenderer/qsvgrenderer.pro     |    9 -
 tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc     |    6 -
 tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp |  103 --
 tests/benchmarks/qtableview/qtableview.pro         |    6 -
 tests/benchmarks/qtableview/tst_qtableview.cpp     |  367 -----
 tests/benchmarks/qtcpserver/qtcpserver.pro         |   13 -
 tests/benchmarks/qtcpserver/tst_qtcpserver.cpp     |  277 ----
 tests/benchmarks/qtemporaryfile/main.cpp           |  103 --
 tests/benchmarks/qtemporaryfile/qtemporaryfile.pro |   12 -
 tests/benchmarks/qtext/bidi.txt                    |    4 -
 tests/benchmarks/qtext/main.cpp                    |  415 -----
 tests/benchmarks/qtext/qtext.pro                   |   14 -
 tests/benchmarks/qthreadstorage/qthreadstorage.pro |    6 -
 .../qthreadstorage/tst_qthreadstorage.cpp          |  124 --
 tests/benchmarks/qtransform/qtransform.pro         |    6 -
 tests/benchmarks/qtransform/tst_qtransform.cpp     |  592 -------
 tests/benchmarks/qvariant/qvariant.pro             |   11 -
 tests/benchmarks/qvariant/tst_qvariant.cpp         |  180 ---
 tests/benchmarks/qwidget/qwidget.pro               |    4 -
 tests/benchmarks/qwidget/tst_qwidget.cpp           |  332 ----
 .../script/qscriptclass/qscriptclass.pro           |    7 +
 .../script/qscriptclass/tst_qscriptclass.cpp       |  511 ++++++
 .../script/qscriptengine/qscriptengine.pro         |   12 +
 .../script/qscriptengine/tst_qscriptengine.cpp     |  289 ++++
 .../script/qscriptvalue/qscriptvalue.pro           |    7 +
 .../script/qscriptvalue/tst_qscriptvalue.cpp       |  205 +++
 tests/benchmarks/script/script.pro                 |    5 +
 tests/benchmarks/svg/qsvgrenderer/data/tiger.svg   |  730 +++++++++
 tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.pro |    9 +
 tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.qrc |    6 +
 .../svg/qsvgrenderer/tst_qsvgrenderer.cpp          |  103 ++
 tests/benchmarks/svg/svg.pro                       |    3 +
 tests/tests.pro                                    |    3 +-
 421 files changed, 21488 insertions(+), 21421 deletions(-)
 delete mode 100644 tests/benchmarks/blendbench/blendbench.pro
 delete mode 100644 tests/benchmarks/blendbench/main.cpp
 delete mode 100644 tests/benchmarks/containers-associative/containers-associative.pro
 delete mode 100644 tests/benchmarks/containers-associative/main.cpp
 delete mode 100644 tests/benchmarks/containers-sequential/containers-sequential.pro
 delete mode 100644 tests/benchmarks/containers-sequential/main.cpp
 create mode 100644 tests/benchmarks/corelib/corelib.pro
 create mode 100644 tests/benchmarks/corelib/io/io.pro
 create mode 100644 tests/benchmarks/corelib/io/qdir/qdir.pro
 create mode 100644 tests/benchmarks/corelib/io/qdir/tst_qdir.cpp
 create mode 100644 tests/benchmarks/corelib/io/qdiriterator/main.cpp
 create mode 100755 tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
 create mode 100644 tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
 create mode 100644 tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
 create mode 100644 tests/benchmarks/corelib/io/qfile/main.cpp
 create mode 100644 tests/benchmarks/corelib/io/qfile/qfile.pro
 create mode 100644 tests/benchmarks/corelib/io/qfileinfo/main.cpp
 create mode 100644 tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
 create mode 100644 tests/benchmarks/corelib/io/qiodevice/main.cpp
 create mode 100755 tests/benchmarks/corelib/io/qiodevice/qiodevice.pro
 create mode 100644 tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
 create mode 100644 tests/benchmarks/corelib/io/qtemporaryfile/qtemporaryfile.pro
 create mode 100644 tests/benchmarks/corelib/kernel/events/events.pro
 create mode 100644 tests/benchmarks/corelib/kernel/events/main.cpp
 create mode 100644 tests/benchmarks/corelib/kernel/kernel.pro
 create mode 100644 tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
 create mode 100644 tests/benchmarks/corelib/kernel/qmetaobject/qmetaobject.pro
 create mode 100644 tests/benchmarks/corelib/kernel/qobject/main.cpp
 create mode 100644 tests/benchmarks/corelib/kernel/qobject/object.cpp
 create mode 100644 tests/benchmarks/corelib/kernel/qobject/object.h
 create mode 100644 tests/benchmarks/corelib/kernel/qobject/qobject.pro
 create mode 100644 tests/benchmarks/corelib/kernel/qvariant/qvariant.pro
 create mode 100644 tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
 create mode 100644 tests/benchmarks/corelib/thread/qthreadstorage/qthreadstorage.pro
 create mode 100644 tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
 create mode 100644 tests/benchmarks/corelib/thread/thread.pro
 create mode 100644 tests/benchmarks/corelib/tools/containers-associative/containers-associative.pro
 create mode 100644 tests/benchmarks/corelib/tools/containers-associative/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/containers-sequential/containers-sequential.pro
 create mode 100644 tests/benchmarks/corelib/tools/containers-sequential/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qbytearray/main.cpp
 create mode 100755 tests/benchmarks/corelib/tools/qbytearray/qbytearray.pro
 create mode 100644 tests/benchmarks/corelib/tools/qrect/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qrect/qrect.pro
 create mode 100644 tests/benchmarks/corelib/tools/qregexp/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qregexp/qregexp.pro
 create mode 100644 tests/benchmarks/corelib/tools/qstring/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qstring/qstring.pro
 create mode 100644 tests/benchmarks/corelib/tools/qstring/utf-8.txt
 create mode 100644 tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qstringbuilder/qstringbuilder.pro
 create mode 100644 tests/benchmarks/corelib/tools/qstringlist/.gitignore
 create mode 100644 tests/benchmarks/corelib/tools/qstringlist/main.cpp
 create mode 100644 tests/benchmarks/corelib/tools/qstringlist/qstringlist.pro
 create mode 100644 tests/benchmarks/corelib/tools/tools.pro
 delete mode 100644 tests/benchmarks/events/events.pro
 delete mode 100644 tests/benchmarks/events/main.cpp
 create mode 100644 tests/benchmarks/gui/animation/animation.pro
 create mode 100644 tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
 create mode 100644 tests/benchmarks/gui/animation/qanimation/dummyanimation.h
 create mode 100644 tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
 create mode 100644 tests/benchmarks/gui/animation/qanimation/dummyobject.h
 create mode 100644 tests/benchmarks/gui/animation/qanimation/main.cpp
 create mode 100644 tests/benchmarks/gui/animation/qanimation/qanimation.pro
 create mode 100644 tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
 create mode 100644 tests/benchmarks/gui/animation/qanimation/rectanimation.h
 create mode 100644 tests/benchmarks/gui/graphicsview/graphicsview.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/images.qrc
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateleft.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateright.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/images.qrc
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/qt4logo.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/images/designer.png
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine-big.jpeg
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine.jpeg
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.qrc
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/random.data
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
 create mode 100644 tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
 create mode 100644 tests/benchmarks/gui/gui.pro
 create mode 100644 tests/benchmarks/gui/image/blendbench/blendbench.pro
 create mode 100644 tests/benchmarks/gui/image/blendbench/main.cpp
 create mode 100644 tests/benchmarks/gui/image/image.pro
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/16bpp.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/4bpp-rle.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.jpg
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/YCbCr_rgb.jpg
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/away.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/ball.mng
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/bat1.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/bat2.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/beavis.jpg
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/black.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/black.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/colorful.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt-colors.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt-pixels.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.jpg
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.mng
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/corrupt.xbm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/crash-signed-char.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/earth.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/fire.mng
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/font.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/gnus.xbm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/image.pbm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/image.pgm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/image.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/image.ppm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/kollada-noext
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/kollada.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/marble.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/namedcolors.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/negativeheight.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/noclearcode.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/noclearcode.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/nontransparent.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/pngwithcompressedtext.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/pngwithtext.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/runners.ppm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/task210380.jpg
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/teapot.ppm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/test.ppm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/test.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/transparent.xpm
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/trolltech.gif
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/tst7.bmp
 create mode 100644 tests/benchmarks/gui/image/qimagereader/images/tst7.png
 create mode 100644 tests/benchmarks/gui/image/qimagereader/qimagereader.pro
 create mode 100644 tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
 create mode 100644 tests/benchmarks/gui/image/qpixmap/qpixmap.pro
 create mode 100644 tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
 create mode 100644 tests/benchmarks/gui/image/qpixmapcache/qpixmapcache.pro
 create mode 100644 tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
 create mode 100644 tests/benchmarks/gui/itemviews/itemviews.pro
 create mode 100644 tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
 create mode 100644 tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
 create mode 100644 tests/benchmarks/gui/kernel/kernel.pro
 create mode 100644 tests/benchmarks/gui/kernel/qapplication/main.cpp
 create mode 100644 tests/benchmarks/gui/kernel/qapplication/qapplication.pro
 create mode 100644 tests/benchmarks/gui/kernel/qwidget/qwidget.pro
 create mode 100644 tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
 create mode 100644 tests/benchmarks/gui/math3d/math3d.pro
 create mode 100644 tests/benchmarks/gui/math3d/qmatrix4x4/qmatrix4x4.pro
 create mode 100644 tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
 create mode 100644 tests/benchmarks/gui/math3d/qquaternion/qquaternion.pro
 create mode 100644 tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
 create mode 100644 tests/benchmarks/gui/painting/painting.pro
 create mode 100644 tests/benchmarks/gui/painting/qpainter/qpainter.pro
 create mode 100644 tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
 create mode 100644 tests/benchmarks/gui/painting/qregion/main.cpp
 create mode 100644 tests/benchmarks/gui/painting/qregion/qregion.pro
 create mode 100644 tests/benchmarks/gui/painting/qtransform/qtransform.pro
 create mode 100644 tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
 create mode 100644 tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
 create mode 100644 tests/benchmarks/gui/styles/qstylesheetstyle/qstylesheetstyle.pro
 create mode 100644 tests/benchmarks/gui/styles/styles.pro
 create mode 100644 tests/benchmarks/gui/text/qfontmetrics/main.cpp
 create mode 100644 tests/benchmarks/gui/text/qfontmetrics/qfontmetrics.pro
 create mode 100644 tests/benchmarks/gui/text/qtext/bidi.txt
 create mode 100644 tests/benchmarks/gui/text/qtext/main.cpp
 create mode 100644 tests/benchmarks/gui/text/qtext/qtext.pro
 create mode 100644 tests/benchmarks/gui/text/text.pro
 create mode 100644 tests/benchmarks/network/access/access.pro
 create mode 100644 tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
 create mode 100644 tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
 create mode 100644 tests/benchmarks/network/access/qnetworkreply/qnetworkreply.pro
 create mode 100644 tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
 create mode 100644 tests/benchmarks/network/kernel/kernel.pro
 create mode 100644 tests/benchmarks/network/kernel/qhostinfo/main.cpp
 create mode 100755 tests/benchmarks/network/kernel/qhostinfo/qhostinfo.pro
 create mode 100644 tests/benchmarks/network/network.pro
 create mode 100644 tests/benchmarks/network/socket/qtcpserver/qtcpserver.pro
 create mode 100644 tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
 create mode 100644 tests/benchmarks/network/socket/socket.pro
 delete mode 100644 tests/benchmarks/qanimation/dummyanimation.cpp
 delete mode 100644 tests/benchmarks/qanimation/dummyanimation.h
 delete mode 100644 tests/benchmarks/qanimation/dummyobject.cpp
 delete mode 100644 tests/benchmarks/qanimation/dummyobject.h
 delete mode 100644 tests/benchmarks/qanimation/main.cpp
 delete mode 100644 tests/benchmarks/qanimation/qanimation.pro
 delete mode 100644 tests/benchmarks/qanimation/rectanimation.cpp
 delete mode 100644 tests/benchmarks/qanimation/rectanimation.h
 delete mode 100644 tests/benchmarks/qapplication/main.cpp
 delete mode 100644 tests/benchmarks/qapplication/qapplication.pro
 delete mode 100644 tests/benchmarks/qbytearray/main.cpp
 delete mode 100755 tests/benchmarks/qbytearray/qbytearray.pro
 delete mode 100644 tests/benchmarks/qdir/qdir.pro
 delete mode 100644 tests/benchmarks/qdir/tst_qdir.cpp
 delete mode 100644 tests/benchmarks/qdiriterator/main.cpp
 delete mode 100755 tests/benchmarks/qdiriterator/qdiriterator.pro
 delete mode 100644 tests/benchmarks/qdiriterator/qfilesystemiterator.cpp
 delete mode 100644 tests/benchmarks/qdiriterator/qfilesystemiterator.h
 delete mode 100644 tests/benchmarks/qfile/main.cpp
 delete mode 100644 tests/benchmarks/qfile/qfile.pro
 delete mode 100644 tests/benchmarks/qfile_vs_qnetworkaccessmanager/main.cpp
 delete mode 100644 tests/benchmarks/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
 delete mode 100644 tests/benchmarks/qfileinfo/main.cpp
 delete mode 100644 tests/benchmarks/qfileinfo/qfileinfo.pro
 delete mode 100644 tests/benchmarks/qfontmetrics/main.cpp
 delete mode 100644 tests/benchmarks/qfontmetrics/qfontmetrics.pro
 delete mode 100644 tests/benchmarks/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
 delete mode 100644 tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
 delete mode 100644 tests/benchmarks/qgraphicsitem/qgraphicsitem.pro
 delete mode 100644 tests/benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp
 delete mode 100644 tests/benchmarks/qgraphicsscene/qgraphicsscene.pro
 delete mode 100644 tests/benchmarks/qgraphicsscene/tst_qgraphicsscene.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.debug
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.h
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.pro
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/fileprint.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/images.qrc
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/main.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.h
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/qt4logo.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateleft.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateright.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/view.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/view.h
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomin.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomout.png
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/moveItems/main.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/moveItems/moveItems.pro
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/benchapps/scrolltest/scrolltest.pro
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/chip.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/chip.h
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/chiptester.cpp
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/chiptester.h
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/chiptester.pri
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/images.qrc
 delete mode 100644 tests/benchmarks/qgraphicsview/chiptester/qt4logo.png
 delete mode 100644 tests/benchmarks/qgraphicsview/images/designer.png
 delete mode 100644 tests/benchmarks/qgraphicsview/images/wine-big.jpeg
 delete mode 100644 tests/benchmarks/qgraphicsview/images/wine.jpeg
 delete mode 100644 tests/benchmarks/qgraphicsview/qgraphicsview.pro
 delete mode 100644 tests/benchmarks/qgraphicsview/qgraphicsview.qrc
 delete mode 100644 tests/benchmarks/qgraphicsview/random.data
 delete mode 100644 tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
 delete mode 100644 tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
 delete mode 100644 tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp
 delete mode 100644 tests/benchmarks/qhostinfo/main.cpp
 delete mode 100755 tests/benchmarks/qhostinfo/qhostinfo.pro
 delete mode 100644 tests/benchmarks/qimagereader/images/16bpp.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/4bpp-rle.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/YCbCr_cmyk.jpg
 delete mode 100644 tests/benchmarks/qimagereader/images/YCbCr_cmyk.png
 delete mode 100644 tests/benchmarks/qimagereader/images/YCbCr_rgb.jpg
 delete mode 100644 tests/benchmarks/qimagereader/images/away.png
 delete mode 100644 tests/benchmarks/qimagereader/images/ball.mng
 delete mode 100644 tests/benchmarks/qimagereader/images/bat1.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/bat2.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/beavis.jpg
 delete mode 100644 tests/benchmarks/qimagereader/images/black.png
 delete mode 100644 tests/benchmarks/qimagereader/images/black.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/colorful.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt-colors.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt-data.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt-pixels.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.jpg
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.mng
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.png
 delete mode 100644 tests/benchmarks/qimagereader/images/corrupt.xbm
 delete mode 100644 tests/benchmarks/qimagereader/images/crash-signed-char.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/earth.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/fire.mng
 delete mode 100644 tests/benchmarks/qimagereader/images/font.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/gnus.xbm
 delete mode 100644 tests/benchmarks/qimagereader/images/image.pbm
 delete mode 100644 tests/benchmarks/qimagereader/images/image.pgm
 delete mode 100644 tests/benchmarks/qimagereader/images/image.png
 delete mode 100644 tests/benchmarks/qimagereader/images/image.ppm
 delete mode 100644 tests/benchmarks/qimagereader/images/kollada-noext
 delete mode 100644 tests/benchmarks/qimagereader/images/kollada.png
 delete mode 100644 tests/benchmarks/qimagereader/images/marble.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/namedcolors.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/negativeheight.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/noclearcode.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/noclearcode.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/nontransparent.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/pngwithcompressedtext.png
 delete mode 100644 tests/benchmarks/qimagereader/images/pngwithtext.png
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_adobedeflate_littleendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_lzw_littleendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_nocompression_bigendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_nocompression_littleendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_packbits_littleendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/rgba_zipdeflate_littleendian.tif
 delete mode 100644 tests/benchmarks/qimagereader/images/runners.ppm
 delete mode 100644 tests/benchmarks/qimagereader/images/task210380.jpg
 delete mode 100644 tests/benchmarks/qimagereader/images/teapot.ppm
 delete mode 100644 tests/benchmarks/qimagereader/images/test.ppm
 delete mode 100644 tests/benchmarks/qimagereader/images/test.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/transparent.xpm
 delete mode 100644 tests/benchmarks/qimagereader/images/trolltech.gif
 delete mode 100644 tests/benchmarks/qimagereader/images/tst7.bmp
 delete mode 100644 tests/benchmarks/qimagereader/images/tst7.png
 delete mode 100644 tests/benchmarks/qimagereader/qimagereader.pro
 delete mode 100644 tests/benchmarks/qimagereader/tst_qimagereader.cpp
 delete mode 100644 tests/benchmarks/qiodevice/main.cpp
 delete mode 100755 tests/benchmarks/qiodevice/qiodevice.pro
 delete mode 100644 tests/benchmarks/qmatrix4x4/qmatrix4x4.pro
 delete mode 100644 tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp
 delete mode 100644 tests/benchmarks/qmetaobject/main.cpp
 delete mode 100644 tests/benchmarks/qmetaobject/qmetaobject.pro
 delete mode 100644 tests/benchmarks/qnetworkreply/qnetworkreply.pro
 delete mode 100644 tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp
 delete mode 100644 tests/benchmarks/qobject/main.cpp
 delete mode 100644 tests/benchmarks/qobject/object.cpp
 delete mode 100644 tests/benchmarks/qobject/object.h
 delete mode 100644 tests/benchmarks/qobject/qobject.pro
 delete mode 100644 tests/benchmarks/qpainter/qpainter.pro
 delete mode 100644 tests/benchmarks/qpainter/tst_qpainter.cpp
 delete mode 100644 tests/benchmarks/qpixmap/qpixmap.pro
 delete mode 100644 tests/benchmarks/qpixmap/tst_qpixmap.cpp
 delete mode 100644 tests/benchmarks/qpixmapcache/qpixmapcache.pro
 delete mode 100644 tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp
 delete mode 100644 tests/benchmarks/qquaternion/qquaternion.pro
 delete mode 100644 tests/benchmarks/qquaternion/tst_qquaternion.cpp
 delete mode 100644 tests/benchmarks/qrect/main.cpp
 delete mode 100644 tests/benchmarks/qrect/qrect.pro
 delete mode 100644 tests/benchmarks/qregexp/main.cpp
 delete mode 100644 tests/benchmarks/qregexp/qregexp.pro
 delete mode 100644 tests/benchmarks/qregion/main.cpp
 delete mode 100644 tests/benchmarks/qregion/qregion.pro
 delete mode 100644 tests/benchmarks/qscriptclass/qscriptclass.pro
 delete mode 100644 tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
 delete mode 100644 tests/benchmarks/qscriptengine/qscriptengine.pro
 delete mode 100644 tests/benchmarks/qscriptengine/tst_qscriptengine.cpp
 delete mode 100644 tests/benchmarks/qscriptvalue/qscriptvalue.pro
 delete mode 100644 tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp
 delete mode 100644 tests/benchmarks/qstring/main.cpp
 delete mode 100644 tests/benchmarks/qstring/qstring.pro
 delete mode 100644 tests/benchmarks/qstring/utf-8.txt
 delete mode 100644 tests/benchmarks/qstringbuilder/main.cpp
 delete mode 100644 tests/benchmarks/qstringbuilder/qstringbuilder.pro
 delete mode 100644 tests/benchmarks/qstringlist/.gitignore
 delete mode 100644 tests/benchmarks/qstringlist/main.cpp
 delete mode 100644 tests/benchmarks/qstringlist/qstringlist.pro
 delete mode 100644 tests/benchmarks/qstylesheetstyle/main.cpp
 delete mode 100644 tests/benchmarks/qstylesheetstyle/qstylesheetstyle.pro
 delete mode 100644 tests/benchmarks/qsvgrenderer/data/tiger.svg
 delete mode 100644 tests/benchmarks/qsvgrenderer/qsvgrenderer.pro
 delete mode 100644 tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc
 delete mode 100644 tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp
 delete mode 100644 tests/benchmarks/qtableview/qtableview.pro
 delete mode 100644 tests/benchmarks/qtableview/tst_qtableview.cpp
 delete mode 100644 tests/benchmarks/qtcpserver/qtcpserver.pro
 delete mode 100644 tests/benchmarks/qtcpserver/tst_qtcpserver.cpp
 delete mode 100644 tests/benchmarks/qtemporaryfile/main.cpp
 delete mode 100644 tests/benchmarks/qtemporaryfile/qtemporaryfile.pro
 delete mode 100644 tests/benchmarks/qtext/bidi.txt
 delete mode 100644 tests/benchmarks/qtext/main.cpp
 delete mode 100644 tests/benchmarks/qtext/qtext.pro
 delete mode 100644 tests/benchmarks/qthreadstorage/qthreadstorage.pro
 delete mode 100644 tests/benchmarks/qthreadstorage/tst_qthreadstorage.cpp
 delete mode 100644 tests/benchmarks/qtransform/qtransform.pro
 delete mode 100644 tests/benchmarks/qtransform/tst_qtransform.cpp
 delete mode 100644 tests/benchmarks/qvariant/qvariant.pro
 delete mode 100644 tests/benchmarks/qvariant/tst_qvariant.cpp
 delete mode 100644 tests/benchmarks/qwidget/qwidget.pro
 delete mode 100644 tests/benchmarks/qwidget/tst_qwidget.cpp
 create mode 100644 tests/benchmarks/script/qscriptclass/qscriptclass.pro
 create mode 100644 tests/benchmarks/script/qscriptclass/tst_qscriptclass.cpp
 create mode 100644 tests/benchmarks/script/qscriptengine/qscriptengine.pro
 create mode 100644 tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
 create mode 100644 tests/benchmarks/script/qscriptvalue/qscriptvalue.pro
 create mode 100644 tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
 create mode 100644 tests/benchmarks/script/script.pro
 create mode 100644 tests/benchmarks/svg/qsvgrenderer/data/tiger.svg
 create mode 100644 tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.pro
 create mode 100644 tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.qrc
 create mode 100644 tests/benchmarks/svg/qsvgrenderer/tst_qsvgrenderer.cpp
 create mode 100644 tests/benchmarks/svg/svg.pro

diff --git a/tests/benchmarks/benchmarks.pro b/tests/benchmarks/benchmarks.pro
index 7a27cc9..c406d54 100644
--- a/tests/benchmarks/benchmarks.pro
+++ b/tests/benchmarks/benchmarks.pro
@@ -1,48 +1,8 @@
 TEMPLATE = subdirs
-SUBDIRS = containers-associative \
-	containers-sequential \
-        qanimation \
-	qbytearray \
-        qfileinfo \
-        qfile_vs_qnetworkaccessmanager \
-        qfontmetrics \
-        qhostinfo \
-	qpainter \
-	qtestlib-simple	events \
-        qtext \
-	qiodevice \
-	qpixmap \
-	blendbench \
-	qstring \
-    	qstringlist \
-        qmatrix4x4 \
-        qnetworkreply \
-	qobject \
-        qrect \
-	qregexp	\
-        qregion \
-        qvariant \
-	qwidget	\
-	qtwidgets \
-	qapplication \
-	qdir \
-	qdiriterator \
-	qgraphicsanchorlayout \
-	qgraphicsitem \
-	qgraphicswidget \
-	qmetaobject \
-	qpixmapcache \
-	qquaternion \
-	qscriptclass \
-	qscriptengine \
-	qscriptvalue \
-	qstringbuilder \
-	qstylesheetstyle \
-	qsvgrenderer \
-        qtcpserver \
-	qtableview \
-	qthreadstorage
-
-
-
+SUBDIRS = \
+        corelib \
+        gui \
+        network \
+        script \
+        svg
 contains(QT_CONFIG, opengl): SUBDIRS += opengl
diff --git a/tests/benchmarks/blendbench/blendbench.pro b/tests/benchmarks/blendbench/blendbench.pro
deleted file mode 100644
index a3228c5..0000000
--- a/tests/benchmarks/blendbench/blendbench.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_blendbench
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/blendbench/main.cpp b/tests/benchmarks/blendbench/main.cpp
deleted file mode 100644
index 92d1633..0000000
--- a/tests/benchmarks/blendbench/main.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include <QString>
-
-#include <qtest.h>
-
-void paint(QPaintDevice *device)
-{
-    QPainter p(device);
-    p.setCompositionMode(QPainter::CompositionMode_Source);
-    p.fillRect(0, 0, device->width(), device->height(), Qt::transparent);
-
-    QLinearGradient g(QPoint(0, 0), QPoint(1, 1));
-//    g.setCoordinateMode(QGradient::ObjectBoundingMode);
-    g.setColorAt(0, Qt::magenta);
-    g.setColorAt(0, Qt::white);
-
-//    p.setOpacity(0.8);
-    p.setPen(Qt::NoPen);
-    p.setBrush(g);
-    p.setRenderHint(QPainter::Antialiasing);
-    p.setOpacity(0.9);
-    p.drawEllipse(0, 0, device->width(), device->height());
-}
-
-QLatin1String compositionModes[] = {
-    QLatin1String("SourceOver"),
-    QLatin1String("DestinationOver"),
-    QLatin1String("Clear"),
-    QLatin1String("Source"),
-    QLatin1String("Destination"),
-    QLatin1String("SourceIn"),
-    QLatin1String("DestinationIn"),
-    QLatin1String("SourceOut"),
-    QLatin1String("DestinationOut"),
-    QLatin1String("SourceAtop"),
-    QLatin1String("DestinationAtop"),
-    QLatin1String("Xor"),
-
-    //svg 1.2 blend modes
-    QLatin1String("Plus"),
-    QLatin1String("Multiply"),
-    QLatin1String("Screen"),
-    QLatin1String("Overlay"),
-    QLatin1String("Darken"),
-    QLatin1String("Lighten"),
-    QLatin1String("ColorDodge"),
-    QLatin1String("ColorBurn"),
-    QLatin1String("HardLight"),
-    QLatin1String("SoftLight"),
-    QLatin1String("Difference"),
-    QLatin1String("Exclusion")
-};
-
-enum BrushType { ImageBrush, SolidBrush };
-QLatin1String brushTypes[] = {
-    QLatin1String("ImageBrush"),
-    QLatin1String("SolidBrush"),
-};
-
-class BlendBench : public QObject
-{
-    Q_OBJECT
-private slots:		
-    void blendBench_data();
-    void blendBench();
-};
-
-void BlendBench::blendBench_data()
-{
-    int first = 0;
-    int limit = 12;
-    if (qApp->arguments().contains("--extended")) {
-        first = 12;
-        limit = 24;
-    }
-
-    QTest::addColumn<int>("brushType");
-    QTest::addColumn<int>("compositionMode");
-
-    for (int brush = ImageBrush; brush <= SolidBrush; ++brush)
-        for (int mode = first; mode < limit; ++mode)
-            QTest::newRow(QString("brush=%1; mode=%2")
-                          .arg(brushTypes[brush]).arg(compositionModes[mode]).toAscii().data())
-                << brush << mode;
-}
-
-void BlendBench::blendBench()
-{
-    QFETCH(int, brushType);
-    QFETCH(int, compositionMode);
-
-    QImage img(512, 512, QImage::Format_ARGB32_Premultiplied);
-    QImage src(512, 512, QImage::Format_ARGB32_Premultiplied);
-    paint(&src);
-    QPainter p(&img);
-    p.setPen(Qt::NoPen);
-
-    p.setCompositionMode(QPainter::CompositionMode(compositionMode));
-    if (brushType == ImageBrush) {
-        p.setBrush(QBrush(src));
-    } else if (brushType == SolidBrush) {
-        p.setBrush(QColor(127, 127, 127, 127));
-    }
-
-    QBENCHMARK {
-        p.drawRect(0, 0, 512, 512);
-    }
-}
-
-QTEST_MAIN(BlendBench)
-
-#include "main.moc"
diff --git a/tests/benchmarks/containers-associative/containers-associative.pro b/tests/benchmarks/containers-associative/containers-associative.pro
deleted file mode 100644
index c6f3fa6..0000000
--- a/tests/benchmarks/containers-associative/containers-associative.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_containers-associative
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/containers-associative/main.cpp b/tests/benchmarks/containers-associative/main.cpp
deleted file mode 100644
index 4c6dae4..0000000
--- a/tests/benchmarks/containers-associative/main.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include <QString>
-
-#include <qtest.h>
-
-class tst_associative_containers : public QObject
-{
-    Q_OBJECT
-private slots:
-    void insert_data();
-    void insert();
-    void lookup_data();
-    void lookup();
-};
-
-template <typename T> 
-void testInsert(int size)
-{
-    T container;
-
-    QBENCHMARK {
-        for (int i = 0; i < size; ++i)
-            container.insert(i, i);
-    }
-}
-
-void tst_associative_containers::insert_data()
-{
-    QTest::addColumn<bool>("useHash");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < 20000; size += 100) {
-    
-        const QByteArray sizeString = QByteArray::number(size);
-
-        QTest::newRow(("hash--" + sizeString).constData()) << true << size;
-        QTest::newRow(("map--" + sizeString).constData()) << false << size;
-    }
-}
-
-void tst_associative_containers::insert()
-{
-    QFETCH(bool, useHash);
-    QFETCH(int, size);
-
-    QHash<int, int> testHash;
-    QMap<int, int> testMap;
-
-    if (useHash) {
-        testInsert<QHash<int, int> >(size);        
-    } else {
-        testInsert<QMap<int, int> >(size);        
-    }
-}
-
-void tst_associative_containers::lookup_data()
-{
-//    setReportType(LineChartReport);
-//    setChartTitle("Time to call value(), with an increasing number of items in the container");
-
-    QTest::addColumn<bool>("useHash");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < 20000; size += 100) {
-    
-        const QByteArray sizeString = QByteArray::number(size);
-
-        QTest::newRow(("hash--" + sizeString).constData()) << true << size;
-        QTest::newRow(("map--" + sizeString).constData()) << false << size;
-    }
-}
-
-template <typename T> 
-void testLookup(int size)
-{
-    T container;
-    
-    for (int i = 0; i < size; ++i)
-        container.insert(i, i);
-
-    int val;
-
-    QBENCHMARK {
-        for (int i = 0; i < size; ++i)
-            val = container.value(i);
-        
-    }
-}
-
-void tst_associative_containers::lookup()
-{
-    QFETCH(bool, useHash);
-    QFETCH(int, size);
-
-    if (useHash) {
-        testLookup<QHash<int, int> >(size);
-    } else {
-        testLookup<QMap<int, int> >(size);
-    }
-}
-
-QTEST_MAIN(tst_associative_containers)
-#include "main.moc"
diff --git a/tests/benchmarks/containers-sequential/containers-sequential.pro b/tests/benchmarks/containers-sequential/containers-sequential.pro
deleted file mode 100644
index bf6db44..0000000
--- a/tests/benchmarks/containers-sequential/containers-sequential.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_containers-sequential
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/containers-sequential/main.cpp b/tests/benchmarks/containers-sequential/main.cpp
deleted file mode 100644
index a6e405c..0000000
--- a/tests/benchmarks/containers-sequential/main.cpp
+++ /dev/null
@@ -1,265 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-// This file contains benchmarks for comparing QVector against std::vector
-
-#include <QtCore>
-#include <QVector>
-#include <vector>
-
-#include <qtest.h>
-
-template <typename T> // T is the item type
-class UseCases {
-public:
-    virtual ~UseCases() {}
-
-    // Use case: Insert \a size items into the vector.
-    virtual void insert(int size) = 0;
-
-    // Use case: Lookup \a size items from the vector.
-    virtual void lookup(int size) = 0;
-};
-
-template <typename T>
-T * f(T *ts) // dummy function to prevent code from being optimized away by the compiler
-{
-    return ts;
-}
-
-// This subclass implements the use cases using QVector as efficiently as possible.
-template <typename T>
-class UseCases_QVector : public UseCases<T>
-{
-    void insert(int size)
-    {
-        QVector<T> v;
-        T t;
-        QBENCHMARK {
-            for (int i = 0; i < size; ++i)
-                v.append(t);
-        }
-    }
-
-    void lookup(int size)
-    {
-        QVector<T> v;
-
-        T t;
-        for (int i = 0; i < size; ++i)
-            v.append(t);
-
-        T *ts = new T[size];
-        QBENCHMARK {
-            for (int i = 0; i < size; ++i)
-                ts[i] = v.value(i);
-        }
-        f<T>(ts);
-        delete[] ts;
-    }
-};
-
-// This subclass implements the use cases using std::vector as efficiently as possible.
-template <typename T>
-class UseCases_stdvector : public UseCases<T>
-{
-    void insert(int size)
-    {
-        std::vector<T> v;
-        T t;
-        QBENCHMARK {
-            for (int i = 0; i < size; ++i)
-                v.push_back(t);
-        }
-    }
-
-    void lookup(int size)
-    {
-        std::vector<T> v;
-
-        T t;
-        for (int i = 0; i < size; ++i)
-            v.push_back(t);
-
-        T *ts = new T[size];
-        QBENCHMARK {
-            for (int i = 0; i < size; ++i)
-                ts[i] = v[i];
-        }
-        f<T>(ts);
-        delete[] ts;
-    }
-};
-
-struct Large { // A "large" item type
-    int x[1000];
-};
-
-// Symbian devices typically have limited memory
-#ifdef Q_OS_SYMBIAN
-#  define LARGE_MAX_SIZE 2000
-#else
-#  define LARGE_MAX_SIZE 20000
-#endif
-
-class tst_vector_vs_std : public QObject
-{
-    Q_OBJECT
-public:
-    tst_vector_vs_std()
-    {
-        useCases_QVector_int = new UseCases_QVector<int>;
-        useCases_stdvector_int = new UseCases_stdvector<int>;
-
-        useCases_QVector_Large = new UseCases_QVector<Large>;
-        useCases_stdvector_Large = new UseCases_stdvector<Large>;
-    }
-
-private:
-    UseCases<int> *useCases_QVector_int;
-    UseCases<int> *useCases_stdvector_int;
-    UseCases<Large> *useCases_QVector_Large;
-    UseCases<Large> *useCases_stdvector_Large;
-
-private slots:
-    void insert_int_data();
-    void insert_int();
-    void insert_Large_data();
-    void insert_Large();
-    void lookup_int_data();
-    void lookup_int();
-    void lookup_Large_data();
-    void lookup_Large();
-};
-
-void tst_vector_vs_std::insert_int_data()
-{
-    QTest::addColumn<bool>("useStd");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < 20000; size += 100) {
-        const QByteArray sizeString = QByteArray::number(size);
-        QTest::newRow(("std::vector-int--" + sizeString).constData()) << true << size;
-        QTest::newRow(("QVector-int--" + sizeString).constData()) << false << size;
-    }
-}
-
-void tst_vector_vs_std::insert_int()
-{
-    QFETCH(bool, useStd);
-    QFETCH(int, size);
-
-    if (useStd)
-        useCases_stdvector_int->insert(size);
-    else
-        useCases_QVector_int->insert(size);
-}
-
-void tst_vector_vs_std::insert_Large_data()
-{
-    QTest::addColumn<bool>("useStd");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < LARGE_MAX_SIZE; size += 100) {
-        const QByteArray sizeString = QByteArray::number(size);
-        QTest::newRow(("std::vector-Large--" + sizeString).constData()) << true << size;
-        QTest::newRow(("QVector-Large--" + sizeString).constData()) << false << size;
-    }
-}
-
-void tst_vector_vs_std::insert_Large()
-{
-    QFETCH(bool, useStd);
-    QFETCH(int, size);
-
-    if (useStd)
-        useCases_stdvector_Large->insert(size);
-    else
-        useCases_QVector_Large->insert(size);
-}
-
-void tst_vector_vs_std::lookup_int_data()
-{
-    QTest::addColumn<bool>("useStd");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < 20000; size += 100) {
-        const QByteArray sizeString = QByteArray::number(size);
-        QTest::newRow(("std::vector-int--" + sizeString).constData()) << true << size;
-        QTest::newRow(("QVector-int--" + sizeString).constData()) << false << size;
-    }
-}
-
-void tst_vector_vs_std::lookup_int()
-{
-    QFETCH(bool, useStd);
-    QFETCH(int, size);
-
-    if (useStd)
-        useCases_stdvector_int->lookup(size);
-    else
-        useCases_QVector_int->lookup(size);
-}
-
-void tst_vector_vs_std::lookup_Large_data()
-{
-    QTest::addColumn<bool>("useStd");
-    QTest::addColumn<int>("size");
-
-    for (int size = 10; size < LARGE_MAX_SIZE; size += 100) {
-        const QByteArray sizeString = QByteArray::number(size);
-        QTest::newRow(("std::vector-Large--" + sizeString).constData()) << true << size;
-        QTest::newRow(("QVector-Large--" + sizeString).constData()) << false << size;
-    }
-}
-
-void tst_vector_vs_std::lookup_Large()
-{
-    QFETCH(bool, useStd);
-    QFETCH(int, size);
-
-    if (useStd)
-        useCases_stdvector_Large->lookup(size);
-    else
-        useCases_QVector_Large->lookup(size);
-}
-
-QTEST_MAIN(tst_vector_vs_std)
-#include "main.moc"
diff --git a/tests/benchmarks/corelib/corelib.pro b/tests/benchmarks/corelib/corelib.pro
new file mode 100644
index 0000000..72fca33
--- /dev/null
+++ b/tests/benchmarks/corelib/corelib.pro
@@ -0,0 +1,6 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        io \
+        kernel \
+        thread \
+        tools
diff --git a/tests/benchmarks/corelib/io/io.pro b/tests/benchmarks/corelib/io/io.pro
new file mode 100644
index 0000000..97445d7
--- /dev/null
+++ b/tests/benchmarks/corelib/io/io.pro
@@ -0,0 +1,9 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qdir \
+        qdiriterator \
+        qfile \
+        qfileinfo \
+        qiodevice \
+        qtemporaryfile
+
diff --git a/tests/benchmarks/corelib/io/qdir/qdir.pro b/tests/benchmarks/corelib/io/qdir/qdir.pro
new file mode 100644
index 0000000..2cdebfd
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/qdir.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qdir
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += tst_qdir.cpp
diff --git a/tests/benchmarks/corelib/io/qdir/tst_qdir.cpp b/tests/benchmarks/corelib/io/qdir/tst_qdir.cpp
new file mode 100644
index 0000000..aea9fd0
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdir/tst_qdir.cpp
@@ -0,0 +1,198 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+
+#ifdef Q_OS_WIN
+#   include <windows.h>
+#else
+#   include <sys/stat.h>
+#   include <sys/types.h>
+#   include <dirent.h>
+#   include <unistd.h>
+#endif
+
+class Test : public QObject{
+  Q_OBJECT
+public slots:
+    void initTestCase() {
+        QDir testdir = QDir::tempPath();
+
+        const QString subfolder_name = QLatin1String("test_speed");
+        QVERIFY(testdir.mkdir(subfolder_name));
+        QVERIFY(testdir.cd(subfolder_name));
+
+        for (uint i=0; i<10000; ++i) {
+            QFile file(testdir.absolutePath() + "/testfile_" + QString::number(i));
+            file.open(QIODevice::WriteOnly);
+        }
+    }
+    void cleanupTestCase() {
+        {
+            QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+            testdir.setSorting(QDir::Unsorted);
+            testdir.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
+            foreach (const QString &filename, testdir.entryList()) {
+                testdir.remove(filename);
+            }
+        }
+        const QDir temp = QDir(QDir::tempPath());
+        temp.rmdir(QLatin1String("test_speed"));
+    }
+private slots:
+    void baseline() {}
+
+    void sizeSpeed() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        QBENCHMARK {
+            QFileInfoList fileInfoList = testdir.entryInfoList(QDir::Files, QDir::Unsorted);
+            foreach (const QFileInfo &fileInfo, fileInfoList) {
+                fileInfo.isDir();
+                fileInfo.size();
+            }
+        }
+    }
+    void sizeSpeedIterator() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        QBENCHMARK {
+            QDirIterator dit(testdir.path(), QDir::Files);
+            while (dit.hasNext()) {
+                dit.fileInfo().isDir();
+                dit.fileInfo().size();
+                dit.next();
+            }
+        }
+    }
+
+    void sizeSpeedWithoutFilter() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        QBENCHMARK {
+            QFileInfoList fileInfoList = testdir.entryInfoList(QDir::NoFilter, QDir::Unsorted);
+            foreach (const QFileInfo &fileInfo, fileInfoList) {
+                fileInfo.size();
+            }
+        }
+    }
+    void sizeSpeedWithoutFilterIterator() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        QBENCHMARK {
+            QDirIterator dit(testdir.path());
+            while (dit.hasNext()) {
+                dit.fileInfo().isDir();
+                dit.fileInfo().size();
+                dit.next();
+            }
+        }
+    }
+
+    void sizeSpeedWithoutFileInfoList() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        testdir.setSorting(QDir::Unsorted);
+        QBENCHMARK {
+            QStringList fileList = testdir.entryList(QDir::NoFilter, QDir::Unsorted);
+            foreach (const QString &filename, fileList) {
+                QFileInfo fileInfo(filename);
+                fileInfo.size();
+            }
+        }
+    }
+
+    void iDontWantAnyStat() {
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        testdir.setSorting(QDir::Unsorted);
+        testdir.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
+        QBENCHMARK {
+            QStringList fileList = testdir.entryList(QDir::NoFilter, QDir::Unsorted);
+            foreach (const QString &filename, fileList) {
+
+            }
+        }
+    }
+    void iDontWantAnyStatIterator() {
+        QBENCHMARK {
+            QDirIterator dit(QDir::tempPath() + QLatin1String("/test_speed"));
+            while (dit.hasNext()) {
+                dit.next();
+            }
+        }
+    }
+
+    void sizeSpeedWithoutFilterLowLevel() {
+#ifdef Q_OS_WIN
+        const wchar_t *dirpath = (wchar_t*)testdir.absolutePath().utf16();
+        wchar_t appendedPath[MAX_PATH];
+        wcscpy(appendedPath, dirpath);
+        wcscat(appendedPath, L"\\*");
+
+        WIN32_FIND_DATA fd;
+        HANDLE hSearch = FindFirstFileW(appendedPath, &fd);
+        QVERIFY(hSearch == INVALID_HANDLE_VALUE);
+
+        QBENCHMARK {
+            do {
+
+            } while (FindNextFile(hSearch, &fd));
+        }
+        FindClose(hSearch);
+#else
+        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
+        DIR *dir = opendir(qPrintable(testdir.absolutePath()));
+        QVERIFY(dir);
+
+        QVERIFY(!chdir(qPrintable(testdir.absolutePath())));
+        QBENCHMARK {
+            struct dirent *item = readdir(dir);
+            while (item) {
+                char *fileName = item->d_name;
+
+                struct stat fileStat;
+                QVERIFY(!stat(fileName, &fileStat));
+
+                item = readdir(dir);
+            }
+        }
+        closedir(dir);
+#endif
+    }
+};
+
+QTEST_MAIN(Test)
+#include "tst_qdir.moc"
diff --git a/tests/benchmarks/corelib/io/qdiriterator/main.cpp b/tests/benchmarks/corelib/io/qdiriterator/main.cpp
new file mode 100644
index 0000000..afa6b7b
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdiriterator/main.cpp
@@ -0,0 +1,251 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QDirIterator>
+#include <QString>
+
+#ifdef Q_OS_WIN
+#   include <windows.h>
+#   include <atlbase.h>
+#else
+#   include <sys/stat.h>
+#   include <sys/types.h>
+#   include <dirent.h>
+#   include <errno.h>
+#   include <string.h>
+#endif
+
+#include <qtest.h>
+
+#include "qfilesystemiterator.h"
+
+class tst_qdiriterator : public QObject
+{
+    Q_OBJECT
+private slots:
+    void posix();
+    void posix_data() { data(); }
+    void diriterator();
+    void diriterator_data() { data(); }
+    void fsiterator();
+    void fsiterator_data() { data(); }
+    void data();
+};
+
+
+void tst_qdiriterator::data()
+{
+#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+    QByteArray qtdir = qPrintable(QCoreApplication::applicationDirPath());
+    qtdir += "/depot";
+#else
+#if defined(Q_OS_WIN)
+    const char *qtdir = "C:\\depot\\qt\\main";
+#else
+    const char *qtdir = ::getenv("QTDIR");
+#endif
+    if (!qtdir) {
+        fprintf(stderr, "QTDIR not set\n");
+        exit(1);
+    }
+#endif
+
+    QTest::addColumn<QByteArray>("dirpath");
+    QByteArray ba = QByteArray(qtdir) + "/src/corelib";
+    QByteArray ba1 = ba + "/io";
+    QTest::newRow(ba) << ba;
+    //QTest::newRow(ba1) << ba1;
+}
+
+#ifdef Q_OS_WIN
+static int posix_helper(const wchar_t *dirpath)
+{
+    int count = 0;
+    HANDLE hSearch;
+    WIN32_FIND_DATA fd;
+
+    const size_t origDirPathLength = wcslen(dirpath);
+
+    wchar_t appendedPath[MAX_PATH];
+    wcscpy(appendedPath, dirpath);
+    wcscat(appendedPath, L"\\*");
+    hSearch = FindFirstFile(appendedPath, &fd);
+    appendedPath[origDirPathLength] = 0;
+
+    if (hSearch == INVALID_HANDLE_VALUE) {
+        qWarning("FindFirstFile failed");
+        return count;
+    }
+
+    do {
+        if (!(fd.cFileName[0] == L'.' && fd.cFileName[1] == 0) &&
+            !(fd.cFileName[0] == L'.' && fd.cFileName[1] == L'.' && fd.cFileName[2] == 0))
+        {
+            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+                wcscat(appendedPath, L"\\");
+                wcscat(appendedPath, fd.cFileName);
+                count += posix_helper(appendedPath);
+                appendedPath[origDirPathLength] = 0;
+            }
+            else {
+                ++count;
+            }
+        }
+    } while (FindNextFile(hSearch, &fd));
+    FindClose(hSearch);
+
+    return count;
+}
+
+#else
+
+static int posix_helper(const char *dirpath)
+{
+    //qDebug() << "DIR" << dirpath;
+    DIR *dir = ::opendir(dirpath);
+    if (!dir)
+        return 0;
+
+    dirent *entry = 0;
+
+    int count = 0;
+    while ((entry = ::readdir(dir))) {
+        if (qstrcmp(entry->d_name, ".") == 0)
+            continue;
+        if (qstrcmp(entry->d_name, "..") == 0)
+            continue;
+        ++count;
+        QByteArray ba = dirpath;
+        ba += '/';
+        ba += entry->d_name;
+        struct stat st;
+        lstat(ba.constData(), &st);
+        if (S_ISDIR(st.st_mode))
+            count += posix_helper(ba.constData());
+    }
+
+    ::closedir(dir);
+    return count;
+}
+#endif
+
+
+void tst_qdiriterator::posix()
+{
+    QFETCH(QByteArray, dirpath);
+
+    int count = 0;
+    QString path(dirpath);
+    QBENCHMARK {
+#ifdef Q_OS_WIN
+        count = posix_helper(path.utf16());
+#else
+        count = posix_helper(dirpath.constData());
+#endif
+    }
+    qDebug() << count;
+}
+
+void tst_qdiriterator::diriterator()
+{
+    QFETCH(QByteArray, dirpath);
+
+    int count = 0;
+
+    QBENCHMARK {
+        int c = 0;
+
+        QDirIterator dir(dirpath,
+            //QDir::AllEntries | QDir::Hidden | QDir::NoDotAndDotDot,
+            //QDir::AllEntries | QDir::Hidden,
+            QDir::Files,
+            QDirIterator::Subdirectories);
+
+        while (dir.hasNext()) {
+            dir.next();
+            //printf("%s\n", qPrintable(dir.fileName()));
+            0 && printf("%d %s\n",
+                dir.fileInfo().isDir(),
+                //qPrintable(dir.fileInfo().absoluteFilePath()),
+                //qPrintable(dir.path()),
+                qPrintable(dir.filePath()));
+            ++c;
+        }
+        count = c;
+    }
+    qDebug() << count;
+}
+
+void tst_qdiriterator::fsiterator()
+{
+    QFETCH(QByteArray, dirpath);
+
+    int count = 0;
+    int dump = 0;
+
+    QBENCHMARK {
+        int c = 0;
+
+        dump && printf("\n\n\n\n");
+        QFileSystemIterator dir(dirpath,
+            //QDir::AllEntries | QDir::Hidden | QDir::NoDotAndDotDot,
+            //QDir::AllEntries | QDir::Hidden,
+            //QDir::Files | QDir::NoDotAndDotDot,
+            QDir::Files,
+            QFileSystemIterator::Subdirectories);
+
+        for (; !dir.atEnd(); dir.next()) {
+            dump && printf("%d %s\n",
+                dir.fileInfo().isDir(),
+                //qPrintable(dir.fileInfo().absoluteFilePath()),
+                //qPrintable(dir.path()),
+                qPrintable(dir.filePath())
+            );
+            ++c;
+        }
+        count = c;
+    }
+    qDebug() << count;
+}
+
+QTEST_MAIN(tst_qdiriterator)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
new file mode 100755
index 0000000..e06d746
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdiriterator/qdiriterator.pro
@@ -0,0 +1,23 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qdiriterator
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+CONFIG += debug
+
+
+SOURCES += main.cpp
+
+SOURCES += qfilesystemiterator.cpp
+HEADERS += qfilesystemiterator.h
+
+wince*|symbian: {
+   corelibdir.sources = $$QT_SOURCE_TREE/src/corelib
+   corelibdir.path = ./depot/src
+   DEPLOYMENT += corelibdir
+}
+
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
new file mode 100644
index 0000000..267d53f
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
@@ -0,0 +1,678 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+    \since 4.5
+    \class QFileSystemIterator
+    \brief The QFileSystemIterator class provides an iterator for directory entrylists.
+
+    You can use QFileSystemIterator to navigate entries of a directory one at a time.
+    It is similar to QDir::entryList() and QDir::entryInfoList(), but because
+    it lists entries one at a time instead of all at once, it scales better
+    and is more suitable for large directories. It also supports listing
+    directory contents recursively, and following symbolic links. Unlike
+    QDir::entryList(), QFileSystemIterator does not support sorting.
+
+    The QFileSystemIterator constructor takes a QDir or a directory as
+    argument. After construction, the iterator is located before the first
+    directory entry. Here's how to iterate over all the entries sequentially:
+
+    \snippet doc/src/snippets/code/src.corelib.io.qdiriterator.cpp 0
+
+    The next() function returns the path to the next directory entry and
+    advances the iterator. You can also call filePath() to get the current
+    file path without advancing the iterator.  The fileName() function returns
+    only the name of the file, similar to how QDir::entryList() works. You can
+    also call fileInfo() to get a QFileInfo for the current entry.
+
+    Unlike Qt's container iterators, QFileSystemIterator is uni-directional (i.e.,
+    you cannot iterate directories in reverse order) and does not allow random
+    access.
+
+    QFileSystemIterator works with all supported file engines, and is implemented
+    using QAbstractFileEngineIterator.
+
+    \sa QDir, QDir::entryList(), QAbstractFileEngineIterator
+*/
+
+/*! \enum QFileSystemIterator::IteratorFlag
+
+    This enum describes flags that you can combine to configure the behavior
+    of QFileSystemIterator.
+
+    \value NoIteratorFlags The default value, representing no flags. The
+    iterator will return entries for the assigned path.
+
+    \value Subdirectories List entries inside all subdirectories as well.
+
+    \value FollowSymlinks When combined with Subdirectories, this flag
+    enables iterating through all subdirectories of the assigned path,
+    following all symbolic links. Symbolic link loops (e.g., "link" => "." or
+    "link" => "..") are automatically detected and ignored.
+*/
+
+#include "qfilesystemiterator.h"
+
+#include <QDebug>
+#include <QtCore/qset.h>
+#include <QtCore/qstack.h>
+#include <QtCore/qvariant.h>
+
+#ifdef Q_OS_WIN
+#   include <windows.h>
+#   include <atlbase.h>
+#else
+#   include <sys/stat.h>
+#   include <sys/types.h>
+#   include <dirent.h>
+#   include <errno.h>
+#endif
+
+QT_BEGIN_NAMESPACE
+
+class QFileSystemIteratorPrivate
+{
+public:
+    QFileSystemIteratorPrivate(const QString &path, const QStringList &nameFilters,
+                        QDir::Filters filters, QFileSystemIterator::IteratorFlags flags);
+    ~QFileSystemIteratorPrivate();
+
+    void pushSubDirectory(const QByteArray &path);
+    void advance();
+    bool isAcceptable() const;
+    bool shouldFollowDirectory(const QFileInfo &);
+    //bool matchesFilters(const QAbstractFileEngineIterator *it) const;
+    inline bool atEnd() const { return m_dirPaths.isEmpty(); }
+
+#ifdef Q_OS_WIN
+    QStack<HANDLE>   m_dirStructs;
+    WIN32_FIND_DATA* m_entry;
+    WIN32_FIND_DATA  m_fileSearchResult;
+    bool             m_bFirstSearchResult;
+#else
+    QStack<DIR *> m_dirStructs;
+    dirent *m_entry;
+#endif
+
+    QSet<QString> visitedLinks;
+    QStack<QByteArray> m_dirPaths;
+    QFileInfo fileInfo;
+    QString currentFilePath;
+    QFileSystemIterator::IteratorFlags iteratorFlags;
+    QDir::Filters filters;
+    QStringList nameFilters;
+
+    enum { DontShowDir, ShowDotDotDir, ShowDotDir, ShowDir }
+        m_currentDirShown, m_nextDirShown;
+
+    QFileSystemIterator *q;
+
+private:
+    bool advanceHelper();  // returns true if we know we have something suitable
+};
+
+/*!
+    \internal
+*/
+QFileSystemIteratorPrivate::QFileSystemIteratorPrivate(const QString &path,
+    const QStringList &nameFilters, QDir::Filters filters,
+    QFileSystemIterator::IteratorFlags flags)
+  : iteratorFlags(flags)
+{
+    if (filters == QDir::NoFilter)
+        filters = QDir::AllEntries;
+    this->filters = filters;
+    this->nameFilters = nameFilters;
+
+    fileInfo.setFile(path);
+    QString dir = fileInfo.isSymLink() ? fileInfo.canonicalFilePath() : path;
+    pushSubDirectory(dir.toLocal8Bit());
+    // skip to acceptable entry
+    while (true) {
+        if (atEnd())
+            return;
+        if (isAcceptable())
+            return;
+        if (advanceHelper())
+            return;
+    }
+}
+
+/*!
+    \internal
+*/
+QFileSystemIteratorPrivate::~QFileSystemIteratorPrivate()
+{
+#ifdef Q_OS_WIN
+    while (!m_dirStructs.isEmpty())
+        ::FindClose(m_dirStructs.pop());
+#else
+    while (!m_dirStructs.isEmpty())
+        ::closedir(m_dirStructs.pop());
+#endif
+}
+
+#ifdef Q_OS_WIN
+static bool isDotOrDotDot(const wchar_t* name)
+{
+    if (name[0] == L'.' && name[1] == 0)
+        return true;
+    if (name[0] == L'.' && name[1] == L'.' && name[2] == 0)
+        return true;
+    return false;
+}
+#else
+static bool isDotOrDotDot(const char *name)
+{
+    if (name[0] == '.' && name[1] == 0)
+        return true;
+    if (name[0] == '.' && name[1] == '.' && name[2] == 0)
+        return true;
+    return false;
+}
+#endif
+
+/*!
+    \internal
+*/
+void QFileSystemIteratorPrivate::pushSubDirectory(const QByteArray &path)
+{
+/*
+    if (iteratorFlags & QFileSystemIterator::FollowSymlinks) {
+        if (fileInfo.filePath() != path)
+            fileInfo.setFile(path);
+        if (fileInfo.isSymLink()) {
+            visitedLinks << fileInfo.canonicalFilePath();
+        } else {
+            visitedLinks << fileInfo.absoluteFilePath();
+        }
+    }
+*/
+
+#ifdef Q_OS_WIN
+    wchar_t szSearchPath[MAX_PATH];
+    wcscpy(szSearchPath, QString(path).utf16());
+    wcscat(szSearchPath, L"\\*");
+    HANDLE dir = FindFirstFile(szSearchPath, &m_fileSearchResult);
+    m_bFirstSearchResult = true;
+#else
+    DIR *dir = ::opendir(path.constData());
+    //m_entry = ::readdir(dir);
+    //while (m_entry && isDotOrDotDot(m_entry->d_name))
+    //    m_entry = ::readdir(m_dirStructs.top());
+#endif
+    m_dirStructs.append(dir);
+    m_dirPaths.append(path);
+    m_entry = 0;
+    if (filters & QDir::Dirs)
+        m_nextDirShown = ShowDir;
+    else
+        m_nextDirShown = DontShowDir;
+    m_currentDirShown = DontShowDir;
+}
+
+/*!
+    \internal
+*/
+bool QFileSystemIteratorPrivate::isAcceptable() const
+{
+    if (!m_entry)
+        return false;
+    return true;
+}
+
+/*!
+    \internal
+*/
+
+
+void QFileSystemIteratorPrivate::advance()
+{
+    while (true) {
+        if (advanceHelper())
+            return;
+        if (atEnd())
+            return;
+        if (isAcceptable())
+            return;
+    }
+}
+
+bool QFileSystemIteratorPrivate::advanceHelper()
+{
+    if (m_dirStructs.isEmpty())
+        return true;
+
+    //printf("ADV %d %d\n", int(m_currentDirShown), int(m_nextDirShown));
+
+    if ((filters & QDir::Dirs)) {
+        m_currentDirShown = m_nextDirShown;
+        if (m_nextDirShown == ShowDir) {
+            //printf("RESTING ON DIR %s %x\n", m_dirPaths.top().constData(), int(filters));
+            m_nextDirShown = (filters & QDir::NoDotAndDotDot) ? DontShowDir : ShowDotDir;
+            // skip start directory itself
+            if (m_dirStructs.size() == 1 && m_currentDirShown == ShowDir)
+                return advanceHelper();
+            return true;
+        }
+        if (m_nextDirShown == ShowDotDir) {
+            //printf("RESTING ON DOT %s %x\n", m_dirPaths.top().constData(), int(filters));
+            m_nextDirShown = ShowDotDotDir;
+            return true;
+        }
+        if (m_nextDirShown == ShowDotDotDir) {
+            //printf("RESTING ON DOTDOT %s %x\n", m_dirPaths.top().constData(), int(filters));
+            m_nextDirShown = DontShowDir;
+            return true;
+        }
+        m_currentDirShown = DontShowDir;
+    }
+
+#ifdef Q_OS_WIN
+    m_entry = &m_fileSearchResult;
+    if (m_bFirstSearchResult) {
+        m_bFirstSearchResult = false;
+    } else {
+        if (!FindNextFile(m_dirStructs.top(), m_entry))
+            m_entry = 0;
+    }
+
+    while (m_entry && isDotOrDotDot(m_entry->cFileName))
+        if (!FindNextFile(m_dirStructs.top(), m_entry))
+            m_entry = 0;
+
+    if (!m_entry) {
+        m_dirPaths.pop();
+        FindClose(m_dirStructs.pop());
+        return false;
+    }
+
+    if (m_entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+        QByteArray ba = m_dirPaths.top();
+        ba += '\\';
+        ba += QString::fromWCharArray(m_entry->cFileName);
+        pushSubDirectory(ba);
+    }
+#else
+    m_entry = ::readdir(m_dirStructs.top());
+    while (m_entry && isDotOrDotDot(m_entry->d_name))
+        m_entry = ::readdir(m_dirStructs.top());
+        //return false; // further iteration possibly needed
+    //printf("READ %p %s\n", m_entry, m_entry ? m_entry->d_name : "");
+
+    if (!m_entry) {
+        m_dirPaths.pop();
+        DIR *dir = m_dirStructs.pop();
+        ::closedir(dir);
+        return false; // further iteration possibly needed
+    }
+
+    const char *name = m_entry->d_name;
+
+    QByteArray ba = m_dirPaths.top();
+    ba += '/';
+    ba += name;
+    struct stat st;
+    lstat(ba.constData(), &st);
+
+    if (S_ISDIR(st.st_mode)) {
+        pushSubDirectory(ba);
+        return false; // further iteration possibly needed
+    }
+#endif
+    return false; // further iteration possiblye needed
+}
+
+/*!
+    \internal
+ */
+bool QFileSystemIteratorPrivate::shouldFollowDirectory(const QFileInfo &fileInfo)
+{
+    // If we're doing flat iteration, we're done.
+    if (!(iteratorFlags & QFileSystemIterator::Subdirectories))
+        return false;
+    
+    // Never follow non-directory entries
+    if (!fileInfo.isDir())
+        return false;
+
+
+    // Never follow . and ..
+    if (fileInfo.fileName() == QLatin1String(".") || fileInfo.fileName() == QLatin1String(".."))
+        return false;
+
+      
+    // Check symlinks
+    if (fileInfo.isSymLink() && !(iteratorFlags & QFileSystemIterator::FollowSymlinks)) {
+        // Follow symlinks only if FollowSymlinks was passed
+        return false;
+    }
+
+    // Stop link loops
+    if (visitedLinks.contains(fileInfo.canonicalFilePath()))
+        return false;
+    
+    return true;
+}
+    
+
+/*!
+    \internal
+
+    This convenience function implements the iterator's filtering logics and
+    applies then to the current directory entry.
+
+    It returns true if the current entry matches the filters (i.e., the
+    current entry will be returned as part of the directory iteration);
+    otherwise, false is returned.
+*/
+#if 0
+bool QFileSystemIteratorPrivate::matchesFilters(const QAbstractFileEngineIterator *it) const
+{
+    const bool filterPermissions = ((filters & QDir::PermissionMask)
+                                    && (filters & QDir::PermissionMask) != QDir::PermissionMask);
+    const bool skipDirs     = !(filters & (QDir::Dirs | QDir::AllDirs));
+    const bool skipFiles    = !(filters & QDir::Files);
+    const bool skipSymlinks = (filters & QDir::NoSymLinks);
+    const bool doReadable   = !filterPermissions || (filters & QDir::Readable);
+    const bool doWritable   = !filterPermissions || (filters & QDir::Writable);
+    const bool doExecutable = !filterPermissions || (filters & QDir::Executable);
+    const bool includeHidden = (filters & QDir::Hidden);
+    const bool includeSystem = (filters & QDir::System);
+
+#ifndef QT_NO_REGEXP
+    // Prepare name filters
+    QList<QRegExp> regexps;
+    bool hasNameFilters = !nameFilters.isEmpty() && !(nameFilters.contains(QLatin1String("*")));
+    if (hasNameFilters) {
+        for (int i = 0; i < nameFilters.size(); ++i) {
+            regexps << QRegExp(nameFilters.at(i),
+                               (filters & QDir::CaseSensitive) ? Qt::CaseSensitive : Qt::CaseInsensitive,
+                               QRegExp::Wildcard);
+        }
+    }
+#endif
+
+    QString fileName = it->currentFileName();
+    if (fileName.isEmpty()) {
+        // invalid entry
+        return false;
+    }
+
+    QFileInfo fi = it->currentFileInfo();
+    QString filePath = it->currentFilePath();
+
+#ifndef QT_NO_REGEXP
+    // Pass all entries through name filters, except dirs if the AllDirs
+    // filter is passed.
+    if (hasNameFilters && !((filters & QDir::AllDirs) && fi.isDir())) {
+        bool matched = false;
+        for (int i = 0; i < regexps.size(); ++i) {
+            if (regexps.at(i).exactMatch(fileName)) {
+                matched = true;
+                break;
+            }
+        }
+        if (!matched)
+            return false;
+    }
+#endif
+    
+    bool dotOrDotDot = (fileName == QLatin1String(".") || fileName == QLatin1String(".."));
+    if ((filters & QDir::NoDotAndDotDot) && dotOrDotDot)
+        return false;
+
+    bool isHidden = !dotOrDotDot && fi.isHidden();
+    if (!includeHidden && isHidden)
+        return false;
+
+    bool isSystem = (!fi.isFile() && !fi.isDir() && !fi.isSymLink())
+                    || (!fi.exists() && fi.isSymLink());
+    if (!includeSystem && isSystem)
+        return false;
+
+    bool alwaysShow = (filters & QDir::TypeMask) == 0
+        && ((isHidden && includeHidden)
+            || (includeSystem && isSystem));
+
+    // Skip files and directories
+    if ((filters & QDir::AllDirs) == 0 && skipDirs && fi.isDir()) {
+        if (!alwaysShow)
+            return false;
+    }
+
+    if ((skipFiles && (fi.isFile() || !fi.exists()))
+        || (skipSymlinks && fi.isSymLink())) {
+        if (!alwaysShow)
+            return false;
+    }
+
+    if (filterPermissions
+        && ((doReadable && !fi.isReadable())
+            || (doWritable && !fi.isWritable())
+            || (doExecutable && !fi.isExecutable()))) {
+        return false;
+    }
+
+    if (!includeSystem && !dotOrDotDot && ((fi.exists() && !fi.isFile() && !fi.isDir() && !fi.isSymLink())
+                                           || (!fi.exists() && fi.isSymLink()))) {
+        return false;
+    }
+    
+    return true;
+}
+#endif
+
+/*!
+    Constructs a QFileSystemIterator that can iterate over \a dir's entrylist, using
+    \a dir's name filters and regular filters. You can pass options via \a
+    flags to decide how the directory should be iterated.
+
+    By default, \a flags is NoIteratorFlags, which provides the same behavior
+    as in QDir::entryList().
+
+    The sorting in \a dir is ignored.
+
+    \sa atEnd(), next(), IteratorFlags
+*/
+QFileSystemIterator::QFileSystemIterator(const QDir &dir, IteratorFlags flags)
+    : d(new QFileSystemIteratorPrivate(dir.path(), dir.nameFilters(), dir.filter(), flags))
+{
+    d->q = this;
+}
+
+/*!
+    Constructs a QFileSystemIterator that can iterate over \a path, with no name
+    filtering and \a filters for entry filtering. You can pass options via \a
+    flags to decide how the directory should be iterated.
+
+    By default, \a filters is QDir::NoFilter, and \a flags is NoIteratorFlags,
+    which provides the same behavior as in QDir::entryList().
+
+    \sa atEnd(), next(), IteratorFlags
+*/
+QFileSystemIterator::QFileSystemIterator(const QString &path, QDir::Filters filters, IteratorFlags flags)
+    : d(new QFileSystemIteratorPrivate(path, QStringList(QLatin1String("*")), filters, flags))
+{
+    d->q = this;
+}
+
+/*!
+    Constructs a QFileSystemIterator that can iterate over \a path. You can pass
+    options via \a flags to decide how the directory should be iterated.
+
+    By default, \a flags is NoIteratorFlags, which provides the same behavior
+    as in QDir::entryList().
+
+    \sa atEnd(), next(), IteratorFlags
+*/
+QFileSystemIterator::QFileSystemIterator(const QString &path, IteratorFlags flags)
+    : d(new QFileSystemIteratorPrivate(path, QStringList(QLatin1String("*")), QDir::NoFilter, flags))
+{
+    d->q = this;
+}
+
+/*!
+    Constructs a QFileSystemIterator that can iterate over \a path, using \a
+    nameFilters and \a filters. You can pass options via \a flags to decide
+    how the directory should be iterated.
+
+    By default, \a flags is NoIteratorFlags, which provides the same behavior
+    as QDir::entryList().
+
+    \sa atEnd(), next(), IteratorFlags
+*/
+QFileSystemIterator::QFileSystemIterator(const QString &path, const QStringList &nameFilters,
+                           QDir::Filters filters, IteratorFlags flags)
+    : d(new QFileSystemIteratorPrivate(path, nameFilters, filters, flags))
+{
+    d->q = this;
+}
+
+/*!
+    Destroys the QFileSystemIterator.
+*/
+QFileSystemIterator::~QFileSystemIterator()
+{
+    delete d;
+}
+
+/*!
+    Advances the iterator to the next entry, and returns the file path of this
+    new entry. If atEnd() returns true, this function does nothing, and
+    returns a null QString.
+
+    You can call fileName() or filePath() to get the current entry file name
+    or path, or fileInfo() to get a QFileInfo for the current entry.
+
+    \sa hasNext(), fileName(), filePath(), fileInfo()
+*/
+void QFileSystemIterator::next()
+{
+    d->advance();
+}
+
+/*!
+    Returns true if there is at least one more entry in the directory;
+    otherwise, false is returned.
+
+    \sa next(), fileName(), filePath(), fileInfo()
+*/
+bool QFileSystemIterator::atEnd() const
+{
+    return d->atEnd();
+}
+
+/*!
+    Returns the file name for the current directory entry, without the path
+    prepended. If the current entry is invalid (i.e., isValid() returns
+    false), a null QString is returned.
+
+    This function is provided for the convenience when iterating single
+    directories. For recursive iteration, you should call filePath() or
+    fileInfo() instead.
+    
+    \sa filePath(), fileInfo()
+*/
+QString QFileSystemIterator::fileName() const
+{
+    if (d->atEnd() || !d->m_entry)
+        return QString();
+    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDir)
+        return QString();
+    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDir)
+        return QLatin1String("@");
+    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDotDir)
+        return QLatin1String("@@");
+#ifdef Q_OS_WIN
+    return QString::fromWCharArray(d->m_entry->cFileName);
+#else
+    return QString::fromLocal8Bit(d->m_entry->d_name);
+#endif
+}
+
+/*!
+    Returns the full file path for the current directory entry. If the current
+    entry is invalid (i.e., isValid() returns false), a null QString is
+    returned.
+
+    \sa fileInfo(), fileName()
+*/
+QString QFileSystemIterator::filePath() const
+{
+    if (d->atEnd())
+        return QString();
+    QByteArray ba = d->m_dirPaths.top();
+    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDir)
+        ba += "/.";
+    else if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDotDir)
+        ba += "/..";
+    else if (d->m_entry) {
+        ba += '/';
+#ifdef Q_OS_WIN
+        ba += QString::fromWCharArray(d->m_entry->cFileName);
+#else
+        ba += d->m_entry->d_name;
+#endif
+    }
+    return QString::fromLocal8Bit(ba);
+}
+
+/*!
+    Returns a QFileInfo for the current directory entry. If the current entry
+    is invalid (i.e., isValid() returns false), a null QFileInfo is returned.
+
+    \sa filePath(), fileName()
+*/
+QFileInfo QFileSystemIterator::fileInfo() const
+{
+    return QFileInfo(filePath());
+}
+
+/*!
+    Returns the base directory of the iterator.
+*/
+QString QFileSystemIterator::path() const
+{
+    return QString::fromLocal8Bit(d->m_dirPaths.top());
+}
+
+QT_END_NAMESPACE
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
new file mode 100644
index 0000000..4aad3a1
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QFILESYSTEMITERATOR_H
+#define QFILESYSTEMITERATOR_H
+
+#include <QtCore/qdir.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+class QFileSystemIteratorPrivate;
+class //Q_CORE_EXPORT
+QFileSystemIterator
+{
+public:
+    enum IteratorFlag {
+        NoIteratorFlags = 0x0,
+        FollowSymlinks = 0x1,
+        Subdirectories = 0x2
+    };
+    Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag)
+
+    QFileSystemIterator(const QDir &dir, IteratorFlags flags = NoIteratorFlags);
+    QFileSystemIterator(const QString &path,
+                 IteratorFlags flags = NoIteratorFlags);
+    QFileSystemIterator(const QString &path,
+                 QDir::Filters filter,
+                 IteratorFlags flags = NoIteratorFlags);
+    QFileSystemIterator(const QString &path,
+                 const QStringList &nameFilters,
+                 QDir::Filters filters = QDir::NoFilter,
+                 IteratorFlags flags = NoIteratorFlags);
+
+    virtual ~QFileSystemIterator();
+
+    void next();
+    bool atEnd() const;
+
+    QString fileName() const;
+    QString filePath() const;
+    QFileInfo fileInfo() const;
+    QString path() const;
+
+private:
+    Q_DISABLE_COPY(QFileSystemIterator)
+
+    QFileSystemIteratorPrivate *d;
+    friend class QDir;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QFileSystemIterator::IteratorFlags)
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp
new file mode 100644
index 0000000..103b77c
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qfile/main.cpp
@@ -0,0 +1,675 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QDebug>
+#include <QTemporaryFile>
+#include <QFSFileEngine>
+#include <QString>
+#include <QDirIterator>
+
+#include <qtest.h>
+
+#include <stdio.h>
+
+#ifdef Q_OS_WIN
+# include <windows.h>
+# include <atlbase.h>
+#endif
+
+#define BUFSIZE 1024*512
+#define FACTOR 1024*512
+#define TF_SIZE FACTOR*81
+
+// 10 predefined (but random() seek positions
+// hardcoded to be comparable over several runs
+const int seekpos[] = {TF_SIZE*0.52,
+                       TF_SIZE*0.23,
+                       TF_SIZE*0.73,
+                       TF_SIZE*0.77,
+                       TF_SIZE*0.80,
+                       TF_SIZE*0.12,
+                       TF_SIZE*0.53,
+                       TF_SIZE*0.21,
+                       TF_SIZE*0.27,
+                       TF_SIZE*0.78};
+
+const int sp_size = sizeof(seekpos)/sizeof(int);
+
+class tst_qfile: public QObject
+{
+Q_ENUMS(BenchmarkType)
+Q_OBJECT
+public:
+    enum BenchmarkType {
+        QFileBenchmark = 1,
+        QFSFileEngineBenchmark,
+        Win32Benchmark,
+        PosixBenchmark,
+        QFileFromPosixBenchmark
+    };
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void open_data();
+    void open();
+    void seek_data();
+    void seek();
+
+    void readSmallFiles_QFile();
+    void readSmallFiles_QFSFileEngine();
+    void readSmallFiles_posix();
+    void readSmallFiles_Win32();
+
+    void readSmallFiles_QFile_data();
+    void readSmallFiles_QFSFileEngine_data();
+    void readSmallFiles_posix_data();
+    void readSmallFiles_Win32_data();
+
+    void readBigFile_QFile_data();
+    void readBigFile_QFSFileEngine_data();
+    void readBigFile_posix_data();
+    void readBigFile_Win32_data();
+
+    void readBigFile_QFile();
+    void readBigFile_QFSFileEngine();
+    void readBigFile_posix();
+    void readBigFile_Win32();
+
+private:
+    void readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b);
+    void readBigFile();
+    void readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b);
+    void readSmallFiles();
+    void createFile();
+    void fillFile(int factor=FACTOR);
+    void removeFile();
+    void createSmallFiles();
+    void removeSmallFiles();
+    QString filename;
+    QString tmpDirName;
+};
+
+Q_DECLARE_METATYPE(tst_qfile::BenchmarkType)
+Q_DECLARE_METATYPE(QIODevice::OpenMode)
+Q_DECLARE_METATYPE(QIODevice::OpenModeFlag)
+
+void tst_qfile::createFile()
+{
+    removeFile();  // Cleanup in case previous test case aborted before cleaning up
+
+    QTemporaryFile tmpFile;
+    tmpFile.setAutoRemove(false);
+    if (!tmpFile.open())
+        ::exit(1);
+    filename = tmpFile.fileName();
+    tmpFile.close();
+}
+
+void tst_qfile::removeFile()
+{
+    if (!filename.isEmpty())
+        QFile::remove(filename);
+}
+
+void tst_qfile::fillFile(int factor)
+{
+    QFile tmpFile(filename);
+    tmpFile.open(QIODevice::WriteOnly);
+    //for (int row=0; row<factor; ++row) {
+    //    tmpFile.write(QByteArray().fill('0'+row%('0'-'z'), 80));
+    //    tmpFile.write("\n");
+    //}
+    tmpFile.seek(factor*80);
+    tmpFile.putChar('\n');
+    tmpFile.close();
+    // let IO settle
+    QTest::qSleep(2000);
+}
+
+void tst_qfile::initTestCase()
+{
+}
+
+void tst_qfile::cleanupTestCase()
+{
+}
+
+void tst_qfile::readBigFile_QFile() { readBigFile(); }
+void tst_qfile::readBigFile_QFSFileEngine() { readBigFile(); }
+void tst_qfile::readBigFile_posix() { readBigFile(); }
+void tst_qfile::readBigFile_Win32() { readBigFile(); }
+
+void tst_qfile::readBigFile_QFile_data()
+{
+    readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+    readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
+    readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen);
+    readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered);
+
+}
+
+void tst_qfile::readBigFile_QFSFileEngine_data()
+{
+    readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+    readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
+    readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen);
+    readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered);
+}
+
+void tst_qfile::readBigFile_posix_data()
+{
+    readBigFile_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+}
+
+void tst_qfile::readBigFile_Win32_data()
+{
+    readBigFile_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+}
+
+
+void tst_qfile::readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b)
+{
+    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
+    QTest::addColumn<int>("blockSize");
+    QTest::addColumn<QFile::OpenModeFlag>("textMode");
+    QTest::addColumn<QFile::OpenModeFlag>("bufferedMode");
+
+    const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512};
+    int bs_entries = sizeof(bs)/sizeof(const int);
+
+    QString flagstring;
+    if (t & QIODevice::Text)       flagstring += "textMode ";
+    if (b & QIODevice::Unbuffered) flagstring += "unbuffered ";
+    if (flagstring.isEmpty())      flagstring = "none";
+
+    for (int i=0; i<bs_entries; ++i)
+        QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b;
+}
+
+void tst_qfile::readBigFile()
+{
+    QFETCH(tst_qfile::BenchmarkType, testType);
+    QFETCH(int, blockSize);
+    QFETCH(QFile::OpenModeFlag, textMode);
+    QFETCH(QFile::OpenModeFlag, bufferedMode);
+
+#ifndef Q_OS_WIN
+    if (testType == Win32Benchmark)
+        QSKIP("This is Windows only benchmark.", SkipSingle);
+#endif
+
+    char *buffer = new char[BUFSIZE];
+    createFile();
+    fillFile();
+
+    switch (testType) {
+        case(QFileBenchmark): {
+            QFile file(filename);
+            file.open(QIODevice::ReadOnly|textMode|bufferedMode);
+            QBENCHMARK {
+                while(!file.atEnd())
+                    file.read(blockSize);
+                file.reset();
+            }
+            file.close();
+        }
+        break;
+        case(QFSFileEngineBenchmark): {
+            QFSFileEngine fse(filename);
+            fse.open(QIODevice::ReadOnly|textMode|bufferedMode);
+            QBENCHMARK {
+               //qWarning() << fse.supportsExtension(QAbstractFileEngine::AtEndExtension);
+               while(fse.read(buffer, blockSize));
+               fse.seek(0);
+            }
+            fse.close();
+        }
+        break;
+        case(PosixBenchmark): {
+            QByteArray data = filename.toLocal8Bit();
+            const char* cfilename = data.constData();
+            FILE* cfile = ::fopen(cfilename, "rb");
+            QBENCHMARK {
+                while(!feof(cfile))
+                    ::fread(buffer, blockSize, 1, cfile);
+                ::fseek(cfile, 0, SEEK_SET);
+            }
+            ::fclose(cfile);
+        }
+        break;
+        case(QFileFromPosixBenchmark): {
+            // No gain in benchmarking this case
+        }
+        break;
+        case(Win32Benchmark): {
+#ifdef Q_OS_WIN
+            HANDLE hndl;
+
+            // ensure we don't account string conversion
+            wchar_t* cfilename = (wchar_t*)filename.utf16();
+
+            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+            Q_ASSERT(hndl);
+            wchar_t* nativeBuffer = new wchar_t[BUFSIZE];
+            DWORD numberOfBytesRead;
+
+            QBENCHMARK {
+                do {
+                   ReadFile(hndl, nativeBuffer, blockSize, &numberOfBytesRead, NULL);
+                } while(numberOfBytesRead != 0);
+                SetFilePointer(hndl, 0, NULL, FILE_BEGIN);
+            }
+            delete[] nativeBuffer;
+            CloseHandle(hndl);
+#else
+            QFAIL("Not running on a non-Windows platform!");
+#endif
+        }
+        break;
+    }
+
+    removeFile();
+    delete[] buffer;
+}
+
+void tst_qfile::seek_data()
+{
+    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
+    QTest::newRow("QFile") << QFileBenchmark;
+    QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark;
+    QTest::newRow("Posix FILE*") << PosixBenchmark;
+#ifdef Q_OS_WIN
+    QTest::newRow("Win32 API") << Win32Benchmark;
+#endif
+}
+
+void tst_qfile::seek()
+{
+    QFETCH(tst_qfile::BenchmarkType, testType);
+    int i = 0;
+
+    createFile();
+    fillFile();
+
+    switch (testType) {
+        case(QFileBenchmark): {
+            QFile file(filename);
+            file.open(QIODevice::ReadOnly);
+            QBENCHMARK {
+                i=(i+1)%sp_size;
+                file.seek(seekpos[i]);
+            }
+            file.close();
+        }
+        break;
+        case(QFSFileEngineBenchmark): {
+            QFSFileEngine fse(filename);
+            fse.open(QIODevice::ReadOnly);
+            QBENCHMARK {
+                i=(i+1)%sp_size;
+                fse.seek(seekpos[i]);
+            }
+            fse.close();
+        }
+        break;
+        case(PosixBenchmark): {
+            QByteArray data = filename.toLocal8Bit();
+            const char* cfilename = data.constData();
+            FILE* cfile = ::fopen(cfilename, "rb");
+            QBENCHMARK {
+                i=(i+1)%sp_size;
+                ::fseek(cfile, seekpos[i], SEEK_SET);
+            }
+            ::fclose(cfile);
+        }
+        break;
+        case(QFileFromPosixBenchmark): {
+            // No gain in benchmarking this case
+        }
+        break;
+        case(Win32Benchmark): {
+#ifdef Q_OS_WIN
+            HANDLE hndl;
+
+            // ensure we don't account string conversion
+            wchar_t* cfilename = (wchar_t*)filename.utf16();
+
+            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+            Q_ASSERT(hndl);
+            QBENCHMARK {
+                i=(i+1)%sp_size;
+                SetFilePointer(hndl, seekpos[i], NULL, 0);
+            }
+            CloseHandle(hndl);
+#else
+            QFAIL("Not running on a Windows plattform!");
+#endif
+        }
+        break;
+    }
+
+    removeFile();
+}
+
+void tst_qfile::open_data()
+{
+    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
+    QTest::newRow("QFile") << QFileBenchmark;
+    QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark;
+    QTest::newRow("Posix FILE*") << PosixBenchmark;
+    QTest::newRow("QFile from FILE*") << QFileFromPosixBenchmark;
+#ifdef Q_OS_WIN
+    QTest::newRow("Win32 API") << Win32Benchmark;
+#endif
+}
+
+void tst_qfile::open()
+{
+    QFETCH(tst_qfile::BenchmarkType, testType);
+
+    createFile();
+
+    switch (testType) {
+        case(QFileBenchmark): {
+            QBENCHMARK {
+                QFile file( filename );
+                file.open( QIODevice::ReadOnly );
+                file.close();
+            }
+        }
+        break;
+        case(QFSFileEngineBenchmark): {
+            QBENCHMARK {
+                QFSFileEngine fse(filename);
+                fse.open(QIODevice::ReadOnly);
+                fse.close();
+            }
+        }
+        break;
+
+        case(PosixBenchmark): {
+            // ensure we don't account toLocal8Bit()
+            QByteArray data = filename.toLocal8Bit();
+            const char* cfilename = data.constData();
+
+            QBENCHMARK {
+                FILE* cfile = ::fopen(cfilename, "rb");
+                ::fclose(cfile);
+            }
+        }
+        break;
+        case(QFileFromPosixBenchmark): {
+            // ensure we don't account toLocal8Bit()
+            QByteArray data = filename.toLocal8Bit();
+            const char* cfilename = data.constData();
+            FILE* cfile = ::fopen(cfilename, "rb");
+
+            QBENCHMARK {
+                QFile file;
+                file.open(cfile, QIODevice::ReadOnly);
+                file.close();
+            }
+            ::fclose(cfile);
+        }
+        break;
+        case(Win32Benchmark): {
+#ifdef Q_OS_WIN
+            HANDLE hndl;
+
+            // ensure we don't account string conversion
+            wchar_t* cfilename = (wchar_t*)filename.utf16();
+
+            QBENCHMARK {
+                hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+                Q_ASSERT(hndl);
+                CloseHandle(hndl);
+            }
+#else
+        QFAIL("Not running on a non-Windows platform!");
+#endif
+        }
+        break;
+    }
+
+    removeFile();
+}
+
+
+void tst_qfile::readSmallFiles_QFile() { readSmallFiles(); }
+void tst_qfile::readSmallFiles_QFSFileEngine() { readSmallFiles(); }
+void tst_qfile::readSmallFiles_posix() { readSmallFiles(); }
+void tst_qfile::readSmallFiles_Win32() { readSmallFiles(); }
+
+void tst_qfile::readSmallFiles_QFile_data()
+{
+    readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+    readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
+    readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen);
+    readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered);
+
+}
+
+void tst_qfile::readSmallFiles_QFSFileEngine_data()
+{
+    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
+    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen);
+    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered);
+}
+
+void tst_qfile::readSmallFiles_posix_data()
+{
+    readSmallFiles_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+}
+
+void tst_qfile::readSmallFiles_Win32_data()
+{
+    readSmallFiles_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen);
+}
+
+
+void tst_qfile::readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b)
+{
+    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
+    QTest::addColumn<int>("blockSize");
+    QTest::addColumn<QFile::OpenModeFlag>("textMode");
+    QTest::addColumn<QFile::OpenModeFlag>("bufferedMode");
+
+    const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512};
+    int bs_entries = sizeof(bs)/sizeof(const int);
+
+    QString flagstring;
+    if (t & QIODevice::Text)       flagstring += "textMode ";
+    if (b & QIODevice::Unbuffered) flagstring += "unbuffered ";
+    if (flagstring.isEmpty())      flagstring = "none";
+
+    for (int i=0; i<bs_entries; ++i)
+        QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b;
+
+}
+
+void tst_qfile::createSmallFiles()
+{
+    QDir dir = QDir::temp();
+    dir.mkdir("tst");
+    dir.cd("tst");
+    tmpDirName = dir.absolutePath();
+
+#ifdef Q_OS_SYMBIAN
+    for (int i = 0; i < 100; ++i)
+#else
+    for (int i = 0; i < 1000; ++i)
+#endif
+    {
+        QFile f(tmpDirName+"/"+QString::number(i));
+        f.open(QIODevice::WriteOnly);
+        f.seek(511);
+        f.putChar('\n');
+        f.close();
+    }
+}
+
+void tst_qfile::removeSmallFiles()
+{
+    QDirIterator it(tmpDirName, QDirIterator::FollowSymlinks);
+    while (it.hasNext())
+        QFile::remove(it.next());
+    QDir::temp().rmdir("tst");
+}
+
+
+void tst_qfile::readSmallFiles()
+{
+    QFETCH(tst_qfile::BenchmarkType, testType);
+    QFETCH(int, blockSize);
+    QFETCH(QFile::OpenModeFlag, textMode);
+    QFETCH(QFile::OpenModeFlag, bufferedMode);
+
+#ifndef Q_OS_WIN
+    if (testType == Win32Benchmark)
+        QSKIP("This is Windows only benchmark.", SkipSingle);
+#endif
+
+    createSmallFiles();
+
+    QDir dir(tmpDirName);
+    const QStringList files = dir.entryList(QDir::NoDotAndDotDot|QDir::NoSymLinks|QDir::Files);
+    char *buffer = new char[BUFSIZE];
+
+    switch (testType) {
+        case(QFileBenchmark): {
+            QList<QFile*> fileList;
+            Q_FOREACH(QString file, files) {
+                QFile *f = new QFile(tmpDirName+ "/" + file);
+                f->open(QIODevice::ReadOnly|textMode|bufferedMode);
+                fileList.append(f);
+            }
+
+            QBENCHMARK {
+                Q_FOREACH(QFile *file, fileList) {
+                    while (!file->atEnd()) {
+                       file->read(buffer, blockSize);
+                    }
+                }
+            }
+
+            Q_FOREACH(QFile *file, fileList) {
+                file->close();
+                delete file;
+            }
+        }
+        break;
+        case(QFSFileEngineBenchmark): {
+            QList<QFSFileEngine*> fileList;
+            Q_FOREACH(QString file, files) {
+                QFSFileEngine *fse = new QFSFileEngine(tmpDirName+ "/" + file);
+                fse->open(QIODevice::ReadOnly|textMode|bufferedMode);
+                fileList.append(fse);
+            }
+
+            QBENCHMARK {
+                Q_FOREACH(QFSFileEngine *fse, fileList) {
+                    while (fse->read(buffer, blockSize));
+                }
+            }
+
+            Q_FOREACH(QFSFileEngine *fse, fileList) {
+                fse->close();
+                delete fse;
+            }
+        }
+        break;
+        case(PosixBenchmark): {
+            QList<FILE*> fileList;
+            Q_FOREACH(QString file, files) {
+                fileList.append(::fopen(QFile::encodeName(tmpDirName+ "/" + file).constData(), "rb"));
+            }
+
+            QBENCHMARK {
+                Q_FOREACH(FILE* cfile, fileList) {
+                    while(!feof(cfile))
+                        ::fread(buffer, blockSize, 1, cfile);
+                    ::fseek(cfile, 0, SEEK_SET);
+                }
+            }
+
+            Q_FOREACH(FILE* cfile, fileList) {
+                ::fclose(cfile);
+            }
+        }
+        break;
+        case(QFileFromPosixBenchmark): {
+            // No gain in benchmarking this case
+        }
+        break;
+        case(Win32Benchmark): {
+#ifdef Q_OS_WIN
+            HANDLE hndl;
+
+            // ensure we don't account string conversion
+            wchar_t* cfilename = (wchar_t*)filename.utf16();
+
+            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
+            Q_ASSERT(hndl);
+            wchar_t* nativeBuffer = new wchar_t[BUFSIZE];
+            DWORD numberOfBytesRead;
+            QBENCHMARK {
+                do {
+                   ReadFile(hndl, nativeBuffer, blockSize, &numberOfBytesRead, NULL);
+                } while(numberOfBytesRead != 0);
+            }
+            delete nativeBuffer;
+            CloseHandle(hndl);
+#else
+            QFAIL("Not running on a non-Windows platform!");
+#endif
+        }
+        break;
+    }
+
+    removeSmallFiles();
+    delete[] buffer;
+}
+
+QTEST_MAIN(tst_qfile)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/io/qfile/qfile.pro b/tests/benchmarks/corelib/io/qfile/qfile.pro
new file mode 100644
index 0000000..99505c3
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qfile/qfile.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qfile
+QT -= gui
+win32: DEFINES+= _CRT_SECURE_NO_WARNINGS
+
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/io/qfileinfo/main.cpp b/tests/benchmarks/corelib/io/qfileinfo/main.cpp
new file mode 100644
index 0000000..025787f
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qfileinfo/main.cpp
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <qtest.h>
+#include <QtTest/QtTest>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QFileInfo>
+
+#include "private/qfsfileengine_p.h"
+
+class qfileinfo : public QObject
+{
+    Q_OBJECT
+private slots:
+    void canonicalFileNamePerformance();
+
+    void initTestCase();
+    void cleanupTestCase();
+public:
+    qfileinfo() : QObject() {};
+};
+
+void qfileinfo::initTestCase()
+{
+}
+
+void qfileinfo::cleanupTestCase()
+{
+}
+
+void qfileinfo::canonicalFileNamePerformance()
+{
+    QString appPath = QCoreApplication::applicationFilePath();
+    QFSFileEnginePrivate::canonicalized(appPath); // warmup
+    QFSFileEnginePrivate::canonicalized(appPath); // more warmup
+    QBENCHMARK {
+        for (int i = 0; i < 5000; i++) {
+            QFSFileEnginePrivate::canonicalized(appPath);
+        }
+    }
+}
+
+QTEST_MAIN(qfileinfo)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro b/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
new file mode 100644
index 0000000..295cb50
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qfileinfo/qfileinfo.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = qfileinfo
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/io/qiodevice/main.cpp b/tests/benchmarks/corelib/io/qiodevice/main.cpp
new file mode 100644
index 0000000..4af697c
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qiodevice/main.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QIODevice>
+#include <QFile>
+#include <QString>
+
+#include <qtest.h>
+
+
+class tst_qiodevice : public QObject
+{
+    Q_OBJECT
+private slots:
+    void read_old();
+    void read_old_data() { read_data(); }
+    //void read_new();
+    //void read_new_data() { read_data(); }
+private:
+    void read_data();
+};
+
+
+void tst_qiodevice::read_data()
+{
+    QTest::addColumn<qint64>("size");
+    QTest::newRow("10k")      << qint64(10 * 1024);
+    QTest::newRow("100k")     << qint64(100 * 1024);
+    QTest::newRow("1000k")    << qint64(1000 * 1024);
+    QTest::newRow("10000k")   << qint64(10000 * 1024);
+#ifndef Q_OS_SYMBIAN // Symbian devices don't (yet) have enough available RAM to run these
+    QTest::newRow("100000k")  << qint64(100000 * 1024);
+    QTest::newRow("1000000k") << qint64(1000000 * 1024);
+#endif
+}
+
+void tst_qiodevice::read_old()
+{
+    QFETCH(qint64, size);
+
+    QString name = "tmp" + QString::number(size);
+
+    {
+        QFile file(name);
+        file.open(QIODevice::WriteOnly);
+        file.seek(size);
+        file.write("x", 1);
+        file.close();
+    }
+
+    QBENCHMARK {
+        QFile file(name);
+        file.open(QIODevice::ReadOnly);
+        QByteArray ba;
+        qint64 s = size - 1024;
+        file.seek(512);
+        ba = file.read(s);  // crash happens during this read / assignment operation
+    }
+
+    {
+        QFile file(name);
+        file.remove();
+    }
+}
+
+
+QTEST_MAIN(tst_qiodevice)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/io/qiodevice/qiodevice.pro b/tests/benchmarks/corelib/io/qiodevice/qiodevice.pro
new file mode 100755
index 0000000..749a4d6
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qiodevice/qiodevice.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qiodevice
+TARGET.EPOCHEAPSIZE = 0x100000 0x2000000
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp b/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
new file mode 100644
index 0000000..8b71189
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QIODevice>
+#include <QFile>
+#include <QString>
+#include <QTemporaryFile>
+#include <qtest.h>
+
+
+class tst_qtemporaryfile : public QObject
+{
+    Q_OBJECT
+private slots:
+    void openclose_data();
+    void openclose();
+    void readwrite_data() { openclose_data(); }
+    void readwrite();
+
+private:
+};
+
+void tst_qtemporaryfile::openclose_data()
+{
+    QTest::addColumn<qint64>("amount");
+    QTest::newRow("100")   << qint64(100);
+    QTest::newRow("1000")  << qint64(1000);
+    QTest::newRow("10000") << qint64(10000);
+}
+
+void tst_qtemporaryfile::openclose()
+{
+    QFETCH(qint64, amount);
+
+    QBENCHMARK {
+        for (qint64 i = 0; i < amount; ++i) {
+            QTemporaryFile file;
+            file.open();
+            file.close();
+        }
+    }
+}
+
+void tst_qtemporaryfile::readwrite()
+{
+    QFETCH(qint64, amount);
+
+    const int dataSize = 4096;
+    QByteArray data;
+    data.fill('a', dataSize);
+    QBENCHMARK {
+        for (qint64 i = 0; i < amount; ++i) {
+            QTemporaryFile file;
+            file.open();
+            file.write(data);
+            file.seek(0);
+            file.read(dataSize);
+            file.close();
+        }
+    }
+}
+
+QTEST_MAIN(tst_qtemporaryfile)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/io/qtemporaryfile/qtemporaryfile.pro b/tests/benchmarks/corelib/io/qtemporaryfile/qtemporaryfile.pro
new file mode 100644
index 0000000..c1b04f4
--- /dev/null
+++ b/tests/benchmarks/corelib/io/qtemporaryfile/qtemporaryfile.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qtemporaryfile
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/kernel/events/events.pro b/tests/benchmarks/corelib/kernel/events/events.pro
new file mode 100644
index 0000000..adf2317
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/events/events.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_events
+DEPENDPATH += .
+INCLUDEPATH += .
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/kernel/events/main.cpp b/tests/benchmarks/corelib/kernel/events/main.cpp
new file mode 100644
index 0000000..0dd2c18
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/events/main.cpp
@@ -0,0 +1,187 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+
+#include <qtest.h>
+#include <qtesteventloop.h>
+
+class PingPong : public QObject
+{
+public:
+    void setPeer(QObject *peer);
+    void resetCounter() {m_counter = 100;}
+
+protected:
+    bool event(QEvent *e);
+
+private:
+    QObject *m_peer;
+    int m_counter;
+};
+
+void PingPong::setPeer(QObject *peer)
+{
+    m_peer = peer;
+    m_counter = 100;
+}
+
+bool PingPong::event(QEvent *)
+{
+    --m_counter;
+    if (m_counter > 0) {
+        QEvent *e = new QEvent(QEvent::User);
+        QCoreApplication::postEvent(m_peer, e);
+    } else {
+        QTestEventLoop::instance().exitLoop();
+    }
+    return true;
+}
+
+class EventTester : public QObject
+{
+public:
+    int foo(int bar);
+
+protected:
+    bool event(QEvent *e);
+};
+
+bool EventTester::event(QEvent *e)
+{
+    if (e->type() == QEvent::User+1)
+        return foo(e->type()) != 0;
+    return false;
+}
+
+int EventTester::foo(int bar)
+{
+    return bar + 1;
+}
+
+class EventsBench : public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void noEvent();
+    void sendEvent_data();
+    void sendEvent();
+    void postEvent_data();
+    void postEvent();
+};
+
+void EventsBench::initTestCase()
+{
+}
+
+void EventsBench::cleanupTestCase()
+{
+}
+
+void EventsBench::noEvent()
+{
+    EventTester tst;
+    int val = 0;
+    QBENCHMARK {
+        val += tst.foo(1);
+    }
+}
+
+void EventsBench::sendEvent_data()
+{
+    QTest::addColumn<bool>("filterEvents");
+    QTest::newRow("no eventfilter") << false;
+    QTest::newRow("eventfilter") << true;
+}
+
+void EventsBench::sendEvent()
+{
+    QFETCH(bool, filterEvents);
+    EventTester tst;
+    if (filterEvents)
+        tst.installEventFilter(this);
+    QEvent evt(QEvent::Type(QEvent::User+1));
+    QBENCHMARK {
+        QCoreApplication::sendEvent(&tst, &evt);
+    }
+}
+
+void EventsBench::postEvent_data()
+{
+    QTest::addColumn<bool>("filterEvents");
+    // The first time an eventloop is executed, the case runs radically slower at least
+    // on some platforms, so test the "no eventfilter" case to get a comparable results
+    // with the "eventfilter" case.
+    QTest::newRow("first time, no eventfilter") << false;
+    QTest::newRow("no eventfilter") << false;
+    QTest::newRow("eventfilter") << true;
+}
+
+void EventsBench::postEvent()
+{
+    QFETCH(bool, filterEvents);
+    PingPong ping;
+    PingPong pong;
+    ping.setPeer(&pong);
+    pong.setPeer(&ping);
+    if (filterEvents) {
+        ping.installEventFilter(this);
+        pong.installEventFilter(this);
+    }
+
+    QBENCHMARK {
+        // In case multiple iterations are done, event needs to be created inside the QBENCHMARK,
+        // or it gets deleted once first iteration exits and can cause a crash. Similarly,
+        // ping and pong need their counters reset.
+        QEvent *e = new QEvent(QEvent::User);
+        ping.resetCounter();
+        pong.resetCounter();
+        QCoreApplication::postEvent(&ping, e);
+        QTestEventLoop::instance().enterLoop( 61 );
+    }
+}
+
+QTEST_MAIN(EventsBench)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/kernel/kernel.pro b/tests/benchmarks/corelib/kernel/kernel.pro
new file mode 100644
index 0000000..91cf3c5
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/kernel.pro
@@ -0,0 +1,6 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        events \
+        qmetaobject \
+        qobject \
+        qvariant
diff --git a/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
new file mode 100644
index 0000000..c375a16
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
@@ -0,0 +1,159 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtGui>
+#include <qtest.h>
+
+class tst_qmetaobject: public QObject
+{
+Q_OBJECT
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+
+    void indexOfProperty_data();
+    void indexOfProperty();
+    void indexOfMethod_data();
+    void indexOfMethod();
+    void indexOfSignal_data();
+    void indexOfSignal();
+    void indexOfSlot_data();
+    void indexOfSlot();
+};
+
+void tst_qmetaobject::initTestCase()
+{
+}
+
+void tst_qmetaobject::cleanupTestCase()
+{
+}
+
+void tst_qmetaobject::indexOfProperty_data()
+{
+    QTest::addColumn<QByteArray>("name");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->propertyCount(); ++i) {
+        QMetaProperty prop = mo->property(i);
+        QTest::newRow(prop.name()) << QByteArray(prop.name());
+    }
+}
+
+void tst_qmetaobject::indexOfProperty()
+{
+    QFETCH(QByteArray, name);
+    const char *p = name.constData();
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    QBENCHMARK {
+        (void)mo->indexOfProperty(p);
+    }
+}
+
+void tst_qmetaobject::indexOfMethod_data()
+{
+    QTest::addColumn<QByteArray>("method");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->methodCount(); ++i) {
+        QMetaMethod method = mo->method(i);
+        QByteArray sig = method.signature();
+        QTest::newRow(sig) << sig;
+    }
+}
+
+void tst_qmetaobject::indexOfMethod()
+{
+    QFETCH(QByteArray, method);
+    const char *p = method.constData();
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    QBENCHMARK {
+        (void)mo->indexOfMethod(p);
+    }
+}
+
+void tst_qmetaobject::indexOfSignal_data()
+{
+    QTest::addColumn<QByteArray>("signal");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->methodCount(); ++i) {
+        QMetaMethod method = mo->method(i);
+        if (method.methodType() != QMetaMethod::Signal)
+            continue;
+        QByteArray sig = method.signature();
+        QTest::newRow(sig) << sig;
+    }
+}
+
+void tst_qmetaobject::indexOfSignal()
+{
+    QFETCH(QByteArray, signal);
+    const char *p = signal.constData();
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    QBENCHMARK {
+        (void)mo->indexOfSignal(p);
+    }
+}
+
+void tst_qmetaobject::indexOfSlot_data()
+{
+    QTest::addColumn<QByteArray>("slot");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->methodCount(); ++i) {
+        QMetaMethod method = mo->method(i);
+        if (method.methodType() != QMetaMethod::Slot)
+            continue;
+        QByteArray sig = method.signature();
+        QTest::newRow(sig) << sig;
+    }
+}
+
+void tst_qmetaobject::indexOfSlot()
+{
+    QFETCH(QByteArray, slot);
+    const char *p = slot.constData();
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    QBENCHMARK {
+        (void)mo->indexOfSlot(p);
+    }
+}
+
+QTEST_MAIN(tst_qmetaobject)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/kernel/qmetaobject/qmetaobject.pro b/tests/benchmarks/corelib/kernel/qmetaobject/qmetaobject.pro
new file mode 100644
index 0000000..78300f6
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qmetaobject/qmetaobject.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qmetaobject
+
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/kernel/qobject/main.cpp b/tests/benchmarks/corelib/kernel/qobject/main.cpp
new file mode 100644
index 0000000..7f24ebd
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qobject/main.cpp
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore>
+#include <QtGui>
+#include <qtest.h>
+#include "object.h"
+#include <qcoreapplication.h>
+#include <qdatetime.h>
+
+enum {
+    CreationDeletionBenckmarkConstant = 34567,
+    SignalsAndSlotsBenchmarkConstant = 456789
+};
+
+class QObjectBenchmark : public QObject
+{
+Q_OBJECT
+private slots:
+    void signal_slot_benchmark();
+    void signal_slot_benchmark_data();
+    void qproperty_benchmark_data();
+    void qproperty_benchmark();
+    void dynamic_property_benchmark();
+    void connect_disconnect_benchmark_data();
+    void connect_disconnect_benchmark();
+};
+
+void QObjectBenchmark::signal_slot_benchmark_data()
+{
+    QTest::addColumn<int>("type");
+    QTest::newRow("simple function") << 0;
+    QTest::newRow("single signal/slot") << 1;
+    QTest::newRow("multi signal/slot") << 2;
+}
+
+void QObjectBenchmark::signal_slot_benchmark()
+{
+    QFETCH(int, type);
+
+    Object singleObject;
+    Object multiObject;
+    singleObject.setObjectName("single");
+    multiObject.setObjectName("multi");
+
+    singleObject.connect(&singleObject, SIGNAL(signal0()), SLOT(slot0()));
+
+    multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(slot0()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal1()));
+    multiObject.connect(&multiObject, SIGNAL(signal1()), SLOT(slot1()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal2()));
+    multiObject.connect(&multiObject, SIGNAL(signal2()), SLOT(slot2()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal3()));
+    multiObject.connect(&multiObject, SIGNAL(signal3()), SLOT(slot3()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal4()));
+    multiObject.connect(&multiObject, SIGNAL(signal4()), SLOT(slot4()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal5()));
+    multiObject.connect(&multiObject, SIGNAL(signal5()), SLOT(slot5()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal6()));
+    multiObject.connect(&multiObject, SIGNAL(signal6()), SLOT(slot6()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal7()));
+    multiObject.connect(&multiObject, SIGNAL(signal7()), SLOT(slot7()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal8()));
+    multiObject.connect(&multiObject, SIGNAL(signal8()), SLOT(slot8()));
+    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal9()));
+    multiObject.connect(&multiObject, SIGNAL(signal9()), SLOT(slot9()));
+
+    if (type == 0) {
+        QBENCHMARK {
+            singleObject.slot0();
+        }
+    } else if (type == 1) {
+        QBENCHMARK {
+            singleObject.emitSignal0();
+        }
+    } else {
+        QBENCHMARK {
+            multiObject.emitSignal0();   
+        }
+    }
+}
+
+void QObjectBenchmark::qproperty_benchmark_data()
+{
+    QTest::addColumn<QByteArray>("name");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->propertyCount(); ++i) {
+        QMetaProperty prop = mo->property(i);
+        QTest::newRow(prop.name()) << QByteArray(prop.name());
+    }
+}
+
+void QObjectBenchmark::qproperty_benchmark()
+{
+    QFETCH(QByteArray, name);
+    const char *p = name.constData();
+    QTreeView obj;
+    QVariant v = obj.property(p);
+    QBENCHMARK {
+        obj.setProperty(p, v);
+        (void)obj.property(p);
+    }
+}
+
+void QObjectBenchmark::dynamic_property_benchmark()
+{
+    QTreeView obj;
+    QBENCHMARK {
+        obj.setProperty("myProperty", 123);
+        (void)obj.property("myProperty");
+        obj.setProperty("myOtherProperty", 123);
+        (void)obj.property("myOtherProperty");
+    }
+}
+
+void QObjectBenchmark::connect_disconnect_benchmark_data()
+{
+    QTest::addColumn<QByteArray>("signal");
+    const QMetaObject *mo = &QTreeView::staticMetaObject;
+    for (int i = 0; i < mo->methodCount(); ++i) {
+        QMetaMethod method = mo->method(i);
+        if (method.methodType() != QMetaMethod::Signal)
+            continue;
+        QByteArray sig = method.signature();
+        QTest::newRow(sig) << sig;
+    }
+}
+
+void QObjectBenchmark::connect_disconnect_benchmark()
+{
+    QFETCH(QByteArray, signal);
+    signal.prepend('2');
+    const char *p = signal.constData();
+    QTreeView obj;
+    QBENCHMARK {
+        QObject::connect(&obj, p, &obj, p);
+        QObject::disconnect(&obj, p, &obj, p);
+    }
+}
+
+QTEST_MAIN(QObjectBenchmark)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/kernel/qobject/object.cpp b/tests/benchmarks/corelib/kernel/qobject/object.cpp
new file mode 100644
index 0000000..d775a32
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qobject/object.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "object.h"
+
+void Object::emitSignal0()
+{ emit signal0(); }
+
+void Object::slot0()
+{ }
+void Object::slot1()
+{ }
+void Object::slot2()
+{ }
+void Object::slot3()
+{ }
+void Object::slot4()
+{ }
+void Object::slot5()
+{ }
+void Object::slot6()
+{ }
+void Object::slot7()
+{ }
+void Object::slot8()
+{ }
+void Object::slot9()
+{ }
diff --git a/tests/benchmarks/corelib/kernel/qobject/object.h b/tests/benchmarks/corelib/kernel/qobject/object.h
new file mode 100644
index 0000000..7e4933f
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qobject/object.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#ifndef OBJECT_H
+#define OBJECT_H
+
+#include <qobject.h>
+
+class Object : public QObject
+{
+    Q_OBJECT
+public:
+    void emitSignal0();
+signals:
+    void signal0();
+    void signal1();
+    void signal2();
+    void signal3();
+    void signal4();
+    void signal5();
+    void signal6();
+    void signal7();
+    void signal8();
+    void signal9();
+public slots:
+    void slot0();
+    void slot1();
+    void slot2();
+    void slot3();
+    void slot4();
+    void slot5();
+    void slot6();
+    void slot7();
+    void slot8();
+    void slot9();
+};
+
+#endif // OBJECT_H
diff --git a/tests/benchmarks/corelib/kernel/qobject/qobject.pro b/tests/benchmarks/corelib/kernel/qobject/qobject.pro
new file mode 100644
index 0000000..2855de4
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qobject/qobject.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qobject
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+HEADERS += object.h
+SOURCES += main.cpp object.cpp
diff --git a/tests/benchmarks/corelib/kernel/qvariant/qvariant.pro b/tests/benchmarks/corelib/kernel/qvariant/qvariant.pro
new file mode 100644
index 0000000..63b5442
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qvariant/qvariant.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qvariant
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += release
+#CONFIG += debug
+
+
+SOURCES += tst_qvariant.cpp
diff --git a/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
new file mode 100644
index 0000000..82dc7dd
--- /dev/null
+++ b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -0,0 +1,180 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore>
+#include <QtGui/QPixmap>
+#include <qtest.h>
+
+#define ITERATION_COUNT 1e5
+
+class tst_qvariant : public QObject
+{
+    Q_OBJECT
+private slots:
+    void testBound();
+
+    void doubleVariantCreation();
+    void floatVariantCreation();
+    void rectVariantCreation();
+    void stringVariantCreation();
+    void pixmapVariantCreation();
+
+    void doubleVariantSetValue();
+    void floatVariantSetValue();
+    void rectVariantSetValue();
+    void stringVariantSetValue();
+
+    void doubleVariantAssignment();
+    void floatVariantAssignment();
+    void rectVariantAssignment();
+    void stringVariantAssignment();
+};
+
+void tst_qvariant::testBound()
+{
+    qreal d = qreal(.5);
+    QBENCHMARK {
+        for(int i = 0; i < ITERATION_COUNT; ++i) {
+            d = qBound<qreal>(0, d, 1);
+        }
+    }
+}
+
+template <typename T>
+static void variantCreation(T val)
+{
+    QBENCHMARK {
+        for(int i = 0; i < ITERATION_COUNT; ++i) {
+            QVariant v(val);
+        }
+    }
+}
+
+void tst_qvariant::doubleVariantCreation()
+{
+    variantCreation<double>(0.0);
+}
+
+void tst_qvariant::floatVariantCreation()
+{
+    variantCreation<float>(0.0f);
+}
+
+void tst_qvariant::rectVariantCreation()
+{
+    variantCreation<QRect>(QRect(1, 2, 3, 4));
+}
+
+void tst_qvariant::stringVariantCreation()
+{
+    variantCreation<QString>(QString());
+}
+
+void tst_qvariant::pixmapVariantCreation()
+{
+    variantCreation<QPixmap>(QPixmap());
+}
+
+template <typename T>
+static void variantSetValue(T d)
+{
+    QVariant v;
+    QBENCHMARK {
+        for(int i = 0; i < ITERATION_COUNT; ++i) {
+            qVariantSetValue(v, d);
+        }
+    }
+}
+
+void tst_qvariant::doubleVariantSetValue()
+{
+    variantSetValue<double>(0.0);
+}
+
+void tst_qvariant::floatVariantSetValue()
+{
+    variantSetValue<float>(0.0f);
+}
+
+void tst_qvariant::rectVariantSetValue()
+{
+    variantSetValue<QRect>(QRect());
+}
+
+void tst_qvariant::stringVariantSetValue()
+{
+    variantSetValue<QString>(QString());
+}
+
+template <typename T>
+static void variantAssignment(T d)
+{
+    QVariant v;
+    QBENCHMARK {
+        for(int i = 0; i < ITERATION_COUNT; ++i) {
+            v = d;
+        }
+    }
+}
+
+void tst_qvariant::doubleVariantAssignment()
+{
+    variantAssignment<double>(0.0);
+}
+
+void tst_qvariant::floatVariantAssignment()
+{
+    variantAssignment<float>(0.0f);
+}
+
+void tst_qvariant::rectVariantAssignment()
+{
+    variantAssignment<QRect>(QRect());
+}
+
+void tst_qvariant::stringVariantAssignment()
+{
+    variantAssignment<QString>(QString());
+}
+
+QTEST_MAIN(tst_qvariant)
+
+#include "tst_qvariant.moc"
diff --git a/tests/benchmarks/corelib/thread/qthreadstorage/qthreadstorage.pro b/tests/benchmarks/corelib/thread/qthreadstorage/qthreadstorage.pro
new file mode 100644
index 0000000..f9c1978
--- /dev/null
+++ b/tests/benchmarks/corelib/thread/qthreadstorage/qthreadstorage.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qthreadstorage
+
+SOURCES += tst_qthreadstorage.cpp
+
diff --git a/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
new file mode 100644
index 0000000..faae4d7
--- /dev/null
+++ b/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtCore>
+
+//TESTED_FILES=
+
+QThreadStorage<int *> dummy[8];
+
+QThreadStorage<QString *> tls1;
+
+class tst_QThreadStorage : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QThreadStorage();
+    virtual ~tst_QThreadStorage();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void construct();
+    void get();
+    void set();
+};
+
+tst_QThreadStorage::tst_QThreadStorage()
+{
+}
+
+tst_QThreadStorage::~tst_QThreadStorage()
+{
+}
+
+void tst_QThreadStorage::init()
+{
+    dummy[1].setLocalData(new int(5));
+    dummy[2].setLocalData(new int(4));
+    dummy[3].setLocalData(new int(3));
+    tls1.setLocalData(new QString());
+}
+
+void tst_QThreadStorage::cleanup()
+{
+}
+
+void tst_QThreadStorage::construct()
+{
+    QBENCHMARK {
+        QThreadStorage<int *> ts;
+    }
+}
+
+
+void tst_QThreadStorage::get()
+{
+    QThreadStorage<int *> ts;
+    ts.setLocalData(new int(45));
+
+    int count = 0;
+    QBENCHMARK {
+        int *i = ts.localData();
+        count += *i;
+    }
+    ts.setLocalData(0);
+}
+
+void tst_QThreadStorage::set()
+{
+    QThreadStorage<int *> ts;
+
+    int count = 0;
+    QBENCHMARK {
+        ts.setLocalData(new int(count));
+        count++;
+    }
+    ts.setLocalData(0);
+}
+
+
+QTEST_MAIN(tst_QThreadStorage)
+#include "tst_qthreadstorage.moc"
diff --git a/tests/benchmarks/corelib/thread/thread.pro b/tests/benchmarks/corelib/thread/thread.pro
new file mode 100644
index 0000000..26570ba
--- /dev/null
+++ b/tests/benchmarks/corelib/thread/thread.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qthreadstorage
diff --git a/tests/benchmarks/corelib/tools/containers-associative/containers-associative.pro b/tests/benchmarks/corelib/tools/containers-associative/containers-associative.pro
new file mode 100644
index 0000000..c6f3fa6
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/containers-associative/containers-associative.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_containers-associative
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/tools/containers-associative/main.cpp b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
new file mode 100644
index 0000000..4c6dae4
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
@@ -0,0 +1,143 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+#include <QString>
+
+#include <qtest.h>
+
+class tst_associative_containers : public QObject
+{
+    Q_OBJECT
+private slots:
+    void insert_data();
+    void insert();
+    void lookup_data();
+    void lookup();
+};
+
+template <typename T> 
+void testInsert(int size)
+{
+    T container;
+
+    QBENCHMARK {
+        for (int i = 0; i < size; ++i)
+            container.insert(i, i);
+    }
+}
+
+void tst_associative_containers::insert_data()
+{
+    QTest::addColumn<bool>("useHash");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < 20000; size += 100) {
+    
+        const QByteArray sizeString = QByteArray::number(size);
+
+        QTest::newRow(("hash--" + sizeString).constData()) << true << size;
+        QTest::newRow(("map--" + sizeString).constData()) << false << size;
+    }
+}
+
+void tst_associative_containers::insert()
+{
+    QFETCH(bool, useHash);
+    QFETCH(int, size);
+
+    QHash<int, int> testHash;
+    QMap<int, int> testMap;
+
+    if (useHash) {
+        testInsert<QHash<int, int> >(size);        
+    } else {
+        testInsert<QMap<int, int> >(size);        
+    }
+}
+
+void tst_associative_containers::lookup_data()
+{
+//    setReportType(LineChartReport);
+//    setChartTitle("Time to call value(), with an increasing number of items in the container");
+
+    QTest::addColumn<bool>("useHash");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < 20000; size += 100) {
+    
+        const QByteArray sizeString = QByteArray::number(size);
+
+        QTest::newRow(("hash--" + sizeString).constData()) << true << size;
+        QTest::newRow(("map--" + sizeString).constData()) << false << size;
+    }
+}
+
+template <typename T> 
+void testLookup(int size)
+{
+    T container;
+    
+    for (int i = 0; i < size; ++i)
+        container.insert(i, i);
+
+    int val;
+
+    QBENCHMARK {
+        for (int i = 0; i < size; ++i)
+            val = container.value(i);
+        
+    }
+}
+
+void tst_associative_containers::lookup()
+{
+    QFETCH(bool, useHash);
+    QFETCH(int, size);
+
+    if (useHash) {
+        testLookup<QHash<int, int> >(size);
+    } else {
+        testLookup<QMap<int, int> >(size);
+    }
+}
+
+QTEST_MAIN(tst_associative_containers)
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/containers-sequential/containers-sequential.pro b/tests/benchmarks/corelib/tools/containers-sequential/containers-sequential.pro
new file mode 100644
index 0000000..bf6db44
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/containers-sequential/containers-sequential.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_containers-sequential
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp
new file mode 100644
index 0000000..a6e405c
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp
@@ -0,0 +1,265 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// This file contains benchmarks for comparing QVector against std::vector
+
+#include <QtCore>
+#include <QVector>
+#include <vector>
+
+#include <qtest.h>
+
+template <typename T> // T is the item type
+class UseCases {
+public:
+    virtual ~UseCases() {}
+
+    // Use case: Insert \a size items into the vector.
+    virtual void insert(int size) = 0;
+
+    // Use case: Lookup \a size items from the vector.
+    virtual void lookup(int size) = 0;
+};
+
+template <typename T>
+T * f(T *ts) // dummy function to prevent code from being optimized away by the compiler
+{
+    return ts;
+}
+
+// This subclass implements the use cases using QVector as efficiently as possible.
+template <typename T>
+class UseCases_QVector : public UseCases<T>
+{
+    void insert(int size)
+    {
+        QVector<T> v;
+        T t;
+        QBENCHMARK {
+            for (int i = 0; i < size; ++i)
+                v.append(t);
+        }
+    }
+
+    void lookup(int size)
+    {
+        QVector<T> v;
+
+        T t;
+        for (int i = 0; i < size; ++i)
+            v.append(t);
+
+        T *ts = new T[size];
+        QBENCHMARK {
+            for (int i = 0; i < size; ++i)
+                ts[i] = v.value(i);
+        }
+        f<T>(ts);
+        delete[] ts;
+    }
+};
+
+// This subclass implements the use cases using std::vector as efficiently as possible.
+template <typename T>
+class UseCases_stdvector : public UseCases<T>
+{
+    void insert(int size)
+    {
+        std::vector<T> v;
+        T t;
+        QBENCHMARK {
+            for (int i = 0; i < size; ++i)
+                v.push_back(t);
+        }
+    }
+
+    void lookup(int size)
+    {
+        std::vector<T> v;
+
+        T t;
+        for (int i = 0; i < size; ++i)
+            v.push_back(t);
+
+        T *ts = new T[size];
+        QBENCHMARK {
+            for (int i = 0; i < size; ++i)
+                ts[i] = v[i];
+        }
+        f<T>(ts);
+        delete[] ts;
+    }
+};
+
+struct Large { // A "large" item type
+    int x[1000];
+};
+
+// Symbian devices typically have limited memory
+#ifdef Q_OS_SYMBIAN
+#  define LARGE_MAX_SIZE 2000
+#else
+#  define LARGE_MAX_SIZE 20000
+#endif
+
+class tst_vector_vs_std : public QObject
+{
+    Q_OBJECT
+public:
+    tst_vector_vs_std()
+    {
+        useCases_QVector_int = new UseCases_QVector<int>;
+        useCases_stdvector_int = new UseCases_stdvector<int>;
+
+        useCases_QVector_Large = new UseCases_QVector<Large>;
+        useCases_stdvector_Large = new UseCases_stdvector<Large>;
+    }
+
+private:
+    UseCases<int> *useCases_QVector_int;
+    UseCases<int> *useCases_stdvector_int;
+    UseCases<Large> *useCases_QVector_Large;
+    UseCases<Large> *useCases_stdvector_Large;
+
+private slots:
+    void insert_int_data();
+    void insert_int();
+    void insert_Large_data();
+    void insert_Large();
+    void lookup_int_data();
+    void lookup_int();
+    void lookup_Large_data();
+    void lookup_Large();
+};
+
+void tst_vector_vs_std::insert_int_data()
+{
+    QTest::addColumn<bool>("useStd");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < 20000; size += 100) {
+        const QByteArray sizeString = QByteArray::number(size);
+        QTest::newRow(("std::vector-int--" + sizeString).constData()) << true << size;
+        QTest::newRow(("QVector-int--" + sizeString).constData()) << false << size;
+    }
+}
+
+void tst_vector_vs_std::insert_int()
+{
+    QFETCH(bool, useStd);
+    QFETCH(int, size);
+
+    if (useStd)
+        useCases_stdvector_int->insert(size);
+    else
+        useCases_QVector_int->insert(size);
+}
+
+void tst_vector_vs_std::insert_Large_data()
+{
+    QTest::addColumn<bool>("useStd");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < LARGE_MAX_SIZE; size += 100) {
+        const QByteArray sizeString = QByteArray::number(size);
+        QTest::newRow(("std::vector-Large--" + sizeString).constData()) << true << size;
+        QTest::newRow(("QVector-Large--" + sizeString).constData()) << false << size;
+    }
+}
+
+void tst_vector_vs_std::insert_Large()
+{
+    QFETCH(bool, useStd);
+    QFETCH(int, size);
+
+    if (useStd)
+        useCases_stdvector_Large->insert(size);
+    else
+        useCases_QVector_Large->insert(size);
+}
+
+void tst_vector_vs_std::lookup_int_data()
+{
+    QTest::addColumn<bool>("useStd");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < 20000; size += 100) {
+        const QByteArray sizeString = QByteArray::number(size);
+        QTest::newRow(("std::vector-int--" + sizeString).constData()) << true << size;
+        QTest::newRow(("QVector-int--" + sizeString).constData()) << false << size;
+    }
+}
+
+void tst_vector_vs_std::lookup_int()
+{
+    QFETCH(bool, useStd);
+    QFETCH(int, size);
+
+    if (useStd)
+        useCases_stdvector_int->lookup(size);
+    else
+        useCases_QVector_int->lookup(size);
+}
+
+void tst_vector_vs_std::lookup_Large_data()
+{
+    QTest::addColumn<bool>("useStd");
+    QTest::addColumn<int>("size");
+
+    for (int size = 10; size < LARGE_MAX_SIZE; size += 100) {
+        const QByteArray sizeString = QByteArray::number(size);
+        QTest::newRow(("std::vector-Large--" + sizeString).constData()) << true << size;
+        QTest::newRow(("QVector-Large--" + sizeString).constData()) << false << size;
+    }
+}
+
+void tst_vector_vs_std::lookup_Large()
+{
+    QFETCH(bool, useStd);
+    QFETCH(int, size);
+
+    if (useStd)
+        useCases_stdvector_Large->lookup(size);
+    else
+        useCases_QVector_Large->lookup(size);
+}
+
+QTEST_MAIN(tst_vector_vs_std)
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qbytearray/main.cpp b/tests/benchmarks/corelib/tools/qbytearray/main.cpp
new file mode 100644
index 0000000..22d4815
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qbytearray/main.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QIODevice>
+#include <QFile>
+#include <QString>
+
+#include <qtest.h>
+
+
+class tst_qbytearray : public QObject
+{
+    Q_OBJECT
+private slots:
+    void append();
+    void append_data();
+};
+
+
+void tst_qbytearray::append_data()
+{
+    QTest::addColumn<int>("size");
+    QTest::newRow("1")         << int(1);
+    QTest::newRow("10")        << int(10);
+    QTest::newRow("100")       << int(100);
+    QTest::newRow("1000")      << int(1000);
+    QTest::newRow("10000")     << int(10000);
+    QTest::newRow("100000")    << int(100000);
+    QTest::newRow("1000000")   << int(1000000);
+    QTest::newRow("10000000")  << int(10000000);
+    QTest::newRow("100000000") << int(100000000);
+}
+
+void tst_qbytearray::append()
+{
+    QFETCH(int, size);
+
+#ifdef Q_OS_SYMBIAN
+    if (size > 1000000)
+        QSKIP("Skipped due to limited memory in many Symbian devices.", SkipSingle);
+#endif
+
+    QByteArray ba;
+    QBENCHMARK {
+        QByteArray ba2(size, 'x');
+        ba.append(ba2);
+        ba.clear();
+    }
+}
+
+
+QTEST_MAIN(tst_qbytearray)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qbytearray/qbytearray.pro b/tests/benchmarks/corelib/tools/qbytearray/qbytearray.pro
new file mode 100755
index 0000000..a0bf021
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qbytearray/qbytearray.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qbytearray
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/tools/qrect/main.cpp b/tests/benchmarks/corelib/tools/qrect/main.cpp
new file mode 100644
index 0000000..e293bfa
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qrect/main.cpp
@@ -0,0 +1,329 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// This file contains benchmarks for QRect/QRectF functions.
+
+#include <QDebug>
+#include <qtest.h>
+
+class tst_qrect : public QObject
+{
+    Q_OBJECT
+private slots:
+    // QRect functions:
+    void contains_point_data();
+    void contains_point();
+    void contains_rect_data();
+    void contains_rect();
+    void intersects_data();
+    void intersects();
+    void intersected_data();
+    void intersected();
+    void united_data();
+    void united();
+
+    // QRectF functions:
+    void contains_point_f_data();
+    void contains_point_f();
+    void contains_rect_f_data();
+    void contains_rect_f();
+    void intersects_f_data();
+    void intersects_f();
+    void intersected_f_data();
+    void intersected_f();
+    void united_f_data();
+    void united_f();
+};
+
+struct RectRectCombination
+{
+    QString tag;
+    qreal x1, y1, w1, h1, x2, y2, w2, h2;
+    RectRectCombination(
+        const QString &tag,
+        const qreal x1, const qreal y1, const qreal w1, const qreal h1,
+        const qreal x2, const qreal y2, const qreal w2, const qreal h2)
+        : tag(tag), x1(x1), y1(y1), w1(w1), h1(h1), x2(x2), y2(y2), w2(w2), h2(h2) {}
+};
+
+static QList<RectRectCombination> createRectRectCombinations()
+{
+    QList<RectRectCombination> result;
+    result << RectRectCombination("null", 0, 0, 0, 0, 0, 0, 0, 0);
+    result << RectRectCombination("null1", 0, 0, 0, 0, 0, 0, 10, 10);
+    result << RectRectCombination("null2", 0, 0, 10, 10, 0, 0, 0, 0);
+
+    result << RectRectCombination("miss", 0, 0, 10, 10, 11, 11, 10, 10);
+    result << RectRectCombination("intersect", 0, 0, 10, 10, 5, 5, 10, 10);
+    result << RectRectCombination("contain1", 0, 0, 10, 10, 1, 1, 8, 8);
+    result << RectRectCombination("contain2", 1, 1, 8, 8, 0, 0, 10, 10);
+
+    result << RectRectCombination("miss_flip1", 9, 9, -10, -10, 11, 11, 10, 10);
+    result << RectRectCombination("intersect_flip1", 9, 9, -10, -10, 5, 5, 10, 10);
+    result << RectRectCombination("contain1_flip1", 9, 9, -10, -10, 1, 1, 8, 8);
+    result << RectRectCombination("contain2_flip1", 8, 8, -8, -8, 0, 0, 10, 10);
+
+    result << RectRectCombination("miss_flip2", 0, 0, 10, 10, 20, 20, -10, -10);
+    result << RectRectCombination("intersect_flip2", 0, 0, 10, 10, 14, 14, -10, -10);
+    result << RectRectCombination("contain1_flip2", 0, 0, 10, 10, 8, 8, -8, -8);
+    result << RectRectCombination("contain2_flip2", 1, 1, 8, 8, 9, 9, -10, -10);
+
+    return result;
+}
+
+static void addRectRectData(bool includeProperArg = false)
+{
+    QTest::addColumn<QRectF>("rf1");
+    QTest::addColumn<QRectF>("rf2");
+    if (includeProperArg)
+        QTest::addColumn<bool>("proper");
+    for (int i = 0; i < (includeProperArg ? 2 : 1); ++i) {
+        QList<RectRectCombination> combinations = createRectRectCombinations();
+        foreach (RectRectCombination c, combinations) {
+            QTestData &testData = QTest::newRow(c.tag.toLatin1().data());
+            QRectF r1(c.x1, c.y1, c.w1, c.h1);
+            QRectF r2(c.x2, c.y2, c.w2, c.h2);
+            testData << r1 << r2;
+            if (includeProperArg)
+                testData << (i == 0);
+        }
+    }
+}
+
+struct RectPointCombination
+{
+    QString tag;
+    qreal x, y, w, h, px, py;
+    RectPointCombination(
+        const QString &tag,
+        const qreal x, const qreal y, const qreal w, const qreal h, const qreal px, const qreal py)
+        : tag(tag), x(x), y(y), w(w), h(h), px(px), py(py) {}
+};
+
+static QList<RectPointCombination> createRectPointCombinations()
+{
+    QList<RectPointCombination> result;
+    result << RectPointCombination("null", 0, 0, 0, 0, 0, 0);
+
+    result << RectPointCombination("miss", 0, 0, 10, 10, -1, -1);
+    result << RectPointCombination("contain", 0, 0, 10, 10, 0, 0);
+    result << RectPointCombination("contain_proper", 0, 0, 10, 10, 1, 1);
+
+    result << RectPointCombination("miss_flip", 9, 9, -10, -10, -1, -1);
+    result << RectPointCombination("contain_flip", 9, 9, -10, -10, 0, 0);
+    result << RectPointCombination("contain_flip_proper", 9, 9, -10, -10, 1, 1);
+
+    return result;
+}
+
+static void addRectPointData(bool includeProperArg = false)
+{
+    QTest::addColumn<QRectF>("rf");
+    QTest::addColumn<QPointF>("pf");
+    if (includeProperArg)
+        QTest::addColumn<bool>("proper");
+    for (int i = 0; i < (includeProperArg ? 2 : 1); ++i) {
+        QList<RectPointCombination> combinations = createRectPointCombinations();
+        foreach (RectPointCombination c, combinations) {
+            QTestData &testData = QTest::newRow(c.tag.toLatin1().data());
+            QRectF r(c.x, c.y, c.w, c.h);
+            QPointF p(c.px, c.py);
+            testData << r << p;
+            if (includeProperArg)
+                testData << (i == 0);
+        }
+    }
+}
+
+void tst_qrect::contains_point_data()
+{
+    addRectPointData(true);
+}
+
+void tst_qrect::contains_point()
+{
+    QFETCH(QRectF, rf);
+    QFETCH(QPointF, pf);
+    QFETCH(bool, proper);
+    QRect r(rf.toRect());
+    QPoint p(pf.toPoint());
+    QBENCHMARK {
+        r.contains(p, proper);
+    }
+}
+
+void tst_qrect::contains_rect_data()
+{
+    addRectRectData(true);
+}
+
+void tst_qrect::contains_rect()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QFETCH(bool, proper);
+    QRect r1(rf1.toRect());
+    QRect r2(rf2.toRect());
+    QBENCHMARK {
+        r1.contains(r2, proper);
+    }
+}
+
+void tst_qrect::intersects_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::intersects()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QRect r1(rf1.toRect());
+    QRect r2(rf2.toRect());
+    QBENCHMARK {
+        r1.intersects(r2);
+    }
+}
+
+void tst_qrect::intersected_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::intersected()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QRect r1(rf1.toRect());
+    QRect r2(rf2.toRect());
+    QBENCHMARK {
+        r1.intersected(r2);
+    }
+}
+
+void tst_qrect::united_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::united()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QRect r1(rf1.toRect());
+    QRect r2(rf2.toRect());
+    QBENCHMARK {
+        r1.united(r2);
+    }
+}
+
+void tst_qrect::contains_point_f_data()
+{
+    addRectPointData();
+}
+
+void tst_qrect::contains_point_f()
+{
+    QFETCH(QRectF, rf);
+    QFETCH(QPointF, pf);
+    QBENCHMARK {
+        rf.contains(pf);
+    }
+}
+
+void tst_qrect::contains_rect_f_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::contains_rect_f()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QBENCHMARK {
+        rf1.contains(rf2);
+    }
+}
+
+void tst_qrect::intersects_f_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::intersects_f()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QBENCHMARK {
+        rf1.intersects(rf2);
+    }
+}
+
+void tst_qrect::intersected_f_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::intersected_f()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QBENCHMARK {
+        rf1.intersected(rf2);
+    }
+}
+
+void tst_qrect::united_f_data()
+{
+    addRectRectData();
+}
+
+void tst_qrect::united_f()
+{
+    QFETCH(QRectF, rf1);
+    QFETCH(QRectF, rf2);
+    QBENCHMARK {
+        rf1.united(rf2);
+    }
+}
+
+QTEST_MAIN(tst_qrect)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qrect/qrect.pro b/tests/benchmarks/corelib/tools/qrect/qrect.pro
new file mode 100644
index 0000000..6e35119
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qrect/qrect.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qrect
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/tools/qregexp/main.cpp b/tests/benchmarks/corelib/tools/qregexp/main.cpp
new file mode 100644
index 0000000..ab9ed71
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qregexp/main.cpp
@@ -0,0 +1,290 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <QRegExp>
+#include <QString>
+
+#include <qtest.h>
+
+
+class tst_qregexp : public QObject
+{
+    Q_OBJECT
+private slots:
+    void escape_old();
+    void escape_old_data() { escape_data(); }
+    void escape_new1();
+    void escape_new1_data() { escape_data(); }
+    void escape_new2();
+    void escape_new2_data() { escape_data(); }
+    void escape_new3();
+    void escape_new3_data() { escape_data(); }
+    void escape_new4();
+    void escape_new4_data() { escape_data(); }
+private:
+    void escape_data();
+};
+
+
+static void verify(const QString &quoted, const QString &expected)
+{
+    if (quoted != expected)
+        qDebug() << "ERROR:" << quoted << expected;
+}
+
+void tst_qregexp::escape_data()
+{
+    QTest::addColumn<QString>("pattern");
+    QTest::addColumn<QString>("expected");
+
+    QTest::newRow("escape 0") << "Hello world" << "Hello world";
+    QTest::newRow("escape 1") << "(Hello world)" << "\\(Hello world\\)";
+    { 
+        QString s;
+        for (int i = 0; i < 10; ++i)
+            s += "(escape)";
+        QTest::newRow("escape 10") << s << QRegExp::escape(s);
+    }
+    { 
+        QString s;
+        for (int i = 0; i < 100; ++i)
+            s += "(escape)";
+        QTest::newRow("escape 100") << s << QRegExp::escape(s);
+    }
+}
+
+void tst_qregexp::escape_old()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QString, expected);
+
+    QBENCHMARK {
+        static const char meta[] = "$()*+.?[\\]^{|}";
+        QString quoted = pattern;
+        int i = 0;
+
+        while (i < quoted.length()) {
+            if (strchr(meta, quoted.at(i).toLatin1()) != 0)
+                quoted.insert(i++, QLatin1Char('\\'));
+            ++i;
+        }
+
+        verify(quoted, expected);
+    }
+}
+
+void tst_qregexp::escape_new1()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QString, expected);
+
+    QBENCHMARK {
+        QString quoted;
+        const int count = pattern.count();
+        quoted.reserve(count * 2);
+        const QLatin1Char backslash('\\');
+        for (int i = 0; i < count; i++) {
+            switch (pattern.at(i).toLatin1()) {
+            case '$':
+            case '(':
+            case ')':
+            case '*':
+            case '+':
+            case '.':
+            case '?':
+            case '[':
+            case '\\':
+            case ']':
+            case '^':
+            case '{':
+            case '|':
+            case '}':
+                quoted.append(backslash);
+            }
+            quoted.append(pattern.at(i));
+        }
+        verify(quoted, expected);
+    }
+}
+
+void tst_qregexp::escape_new2()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QString, expected);
+
+    QBENCHMARK {
+        int count = pattern.count();
+        const QLatin1Char backslash('\\');
+        QString quoted(count * 2, backslash);
+        const QChar *patternData = pattern.data();
+        QChar *quotedData = quoted.data();
+        int escaped = 0;
+        for ( ; --count >= 0; ++patternData) {
+            const QChar c = *patternData;
+            switch (c.unicode()) {
+            case '$':
+            case '(':
+            case ')':
+            case '*':
+            case '+':
+            case '.':
+            case '?':
+            case '[':
+            case '\\':
+            case ']':
+            case '^':
+            case '{':
+            case '|':
+            case '}':
+                ++escaped;
+                ++quotedData;
+            }
+            *quotedData = c;
+            ++quotedData;
+        }
+        quoted.resize(pattern.size() + escaped); 
+
+        verify(quoted, expected);
+    }
+}
+
+void tst_qregexp::escape_new3()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QString, expected);
+
+    QBENCHMARK {
+        QString quoted;
+        const int count = pattern.count();
+        quoted.reserve(count * 2);
+        const QLatin1Char backslash('\\');
+        for (int i = 0; i < count; i++) {
+            switch (pattern.at(i).toLatin1()) {
+            case '$':
+            case '(':
+            case ')':
+            case '*':
+            case '+':
+            case '.':
+            case '?':
+            case '[':
+            case '\\':
+            case ']':
+            case '^':
+            case '{':
+            case '|':
+            case '}':
+                quoted += backslash;
+            }
+            quoted += pattern.at(i);
+        }
+
+        verify(quoted, expected);
+    }
+}
+
+
+static inline bool needsEscaping(int c)
+{
+    switch (c) {
+    case '$':
+    case '(':
+    case ')':
+    case '*':
+    case '+':
+    case '.':
+    case '?':
+    case '[':
+    case '\\':
+    case ']':
+    case '^':
+    case '{':
+    case '|':
+    case '}':
+        return true;
+    }
+    return false;
+}
+
+void tst_qregexp::escape_new4()
+{
+    QFETCH(QString, pattern);
+    QFETCH(QString, expected);
+
+    QBENCHMARK {
+        const int n = pattern.size();
+        const QChar *patternData = pattern.data();
+        // try to prevent copy if no escape is needed
+        int i = 0;
+        for (int i = 0; i != n; ++i) {
+            const QChar c = patternData[i];
+            if (needsEscaping(c.unicode()))
+                break;
+        }
+        if (i == n) {
+            verify(pattern, expected);
+            // no escaping needed, "return pattern" should be done here.
+            return;
+        }
+        const QLatin1Char backslash('\\');
+        QString quoted(n * 2, backslash);
+        QChar *quotedData = quoted.data();
+        for (int j = 0; j != i; ++j) 
+            *quotedData++ = *patternData++;
+        int escaped = 0;
+        for (; i != n; ++i) {
+            const QChar c = *patternData;
+            if (needsEscaping(c.unicode())) {
+                ++escaped;
+                ++quotedData;
+            }
+            *quotedData = c;
+            ++quotedData;
+            ++patternData;
+        }
+        quoted.resize(n + escaped); 
+        verify(quoted, expected);
+        // "return quoted"
+    }
+}
+QTEST_MAIN(tst_qregexp)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qregexp/qregexp.pro b/tests/benchmarks/corelib/tools/qregexp/qregexp.pro
new file mode 100644
index 0000000..83d723c
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qregexp/qregexp.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qregexp
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/corelib/tools/qstring/main.cpp b/tests/benchmarks/corelib/tools/qstring/main.cpp
new file mode 100644
index 0000000..12826eb
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstring/main.cpp
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QStringList>
+#include <QFile>
+#include <qtest.h>
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
+#define SRCDIR ""
+#endif
+
+class tst_QString: public QObject
+{
+    Q_OBJECT
+private slots:
+    void equals() const;
+    void equals_data() const;
+    void fromUtf8() const;
+};
+
+void tst_QString::equals() const
+{
+    QFETCH(QString, a);
+    QFETCH(QString, b);
+
+    QBENCHMARK {
+        a == b;
+    }
+}
+
+void tst_QString::equals_data() const
+{
+    static const struct {
+        ushort data[80];
+        int dummy;              // just to ensure 4-byte alignment
+    } data = {
+        {
+            64, 64, 64, 64,  64, 64, 64, 64,
+            64, 64, 64, 64,  64, 64, 64, 64, // 16
+            64, 64, 64, 64,  64, 64, 64, 64,
+            64, 64, 64, 64,  64, 64, 64, 64, // 32
+            64, 64, 64, 64,  64, 64, 64, 64,
+            64, 64, 64, 64,  64, 64, 64, 64, // 48
+            64, 64, 64, 64,  64, 64, 64, 64,
+            64, 64, 64, 64,  64, 64, 64, 64, // 64
+            64, 64, 64, 64,  96, 96, 96, 96,
+            64, 64, 96, 96,  96, 96, 96, 96  // 80
+        }, 0
+    };
+    const QChar *ptr = reinterpret_cast<const QChar *>(data.data);
+
+    QTest::addColumn<QString>("a");
+    QTest::addColumn<QString>("b");
+    QString base = QString::fromRawData(ptr, 64);
+
+    QTest::newRow("different-length") << base << QString::fromRawData(ptr, 4);
+    QTest::newRow("same-string") << base << base;
+    QTest::newRow("same-data") << base << QString::fromRawData(ptr, 64);
+
+    // try to avoid crossing a cache line (that is, at ptr[64])
+    QTest::newRow("aligned-aligned-4n")
+            << QString::fromRawData(ptr, 60) << QString::fromRawData(ptr + 2, 60);
+    QTest::newRow("aligned-unaligned-4n")
+            << QString::fromRawData(ptr, 60) << QString::fromRawData(ptr + 1, 60);
+    QTest::newRow("unaligned-unaligned-4n")
+            << QString::fromRawData(ptr + 1, 60) << QString::fromRawData(ptr + 3, 60);
+
+    QTest::newRow("aligned-aligned-4n+1")
+            << QString::fromRawData(ptr, 61) << QString::fromRawData(ptr + 2, 61);
+    QTest::newRow("aligned-unaligned-4n+1")
+            << QString::fromRawData(ptr, 61) << QString::fromRawData(ptr + 1, 61);
+    QTest::newRow("unaligned-unaligned-4n+1")
+            << QString::fromRawData(ptr + 1, 61) << QString::fromRawData(ptr + 3, 61);
+
+    QTest::newRow("aligned-aligned-4n-1")
+            << QString::fromRawData(ptr, 59) << QString::fromRawData(ptr + 2, 59);
+    QTest::newRow("aligned-unaligned-4n-1")
+            << QString::fromRawData(ptr, 59) << QString::fromRawData(ptr + 1, 59);
+    QTest::newRow("unaligned-unaligned-4n-1")
+            << QString::fromRawData(ptr + 1, 59) << QString::fromRawData(ptr + 3, 59);
+
+    QTest::newRow("aligned-aligned-2n")
+            << QString::fromRawData(ptr, 58) << QString::fromRawData(ptr + 2, 58);
+    QTest::newRow("aligned-unaligned-2n")
+            << QString::fromRawData(ptr, 58) << QString::fromRawData(ptr + 1, 58);
+    QTest::newRow("unaligned-unaligned-2n")
+            << QString::fromRawData(ptr + 1, 58) << QString::fromRawData(ptr + 3, 58);
+}
+
+void tst_QString::fromUtf8() const
+{
+    QFile file(SRCDIR "utf-8.txt");
+    if (!file.open(QFile::ReadOnly)) {
+        qFatal("Cannot open input file");
+        return;
+    }
+    QByteArray data = file.readAll();
+    const char *d = data.constData();
+    int size = data.size();
+
+    QBENCHMARK {
+        QString::fromUtf8(d, size);
+    }
+}
+
+QTEST_MAIN(tst_QString)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qstring/qstring.pro b/tests/benchmarks/corelib/tools/qstring/qstring.pro
new file mode 100644
index 0000000..2e7c86a
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstring/qstring.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+TARGET = tst_qstring
+QT -= gui
+SOURCES += main.cpp
+
+wince*:{
+   DEFINES += SRCDIR=\\\"\\\"
+} else:symbian* {
+   addFiles.sources = utf-8.txt
+   addFiles.path = .
+   DEPLOYMENT += addFiles
+   TARGET.EPOCHEAPSIZE="0x100 0x1000000"
+} else {
+   DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
+
diff --git a/tests/benchmarks/corelib/tools/qstring/utf-8.txt b/tests/benchmarks/corelib/tools/qstring/utf-8.txt
new file mode 100644
index 0000000..a8a58de
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstring/utf-8.txt
@@ -0,0 +1,72 @@
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
+Språk: Norsk
+Γλώσσα: Ελληνικά
+Язык: Русский
+언어 : 한국어
+言語: 日本語
+Langage : Français
diff --git a/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp b/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
new file mode 100644
index 0000000..9bd146f
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
@@ -0,0 +1,464 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// Select one of the scenarios below
+#define SCENARIO 1
+
+#if SCENARIO == 1
+// this is the "no harm done" version. Only operator% is active,
+// with NO_CAST * defined
+#define P %
+#undef QT_USE_FAST_OPERATOR_PLUS
+#undef QT_USE_FAST_CONCATENATION
+#define QT_NO_CAST_FROM_ASCII
+#define QT_NO_CAST_TO_ASCII
+#endif
+
+
+#if SCENARIO == 2
+// this is the "full" version. Operator+ is replaced by a QStringBuilder
+// based version
+// with NO_CAST * defined
+#define P +
+#define QT_USE_FAST_OPERATOR_PLUS
+#define QT_USE_FAST_CONCATENATION
+#define QT_NO_CAST_FROM_ASCII
+#define QT_NO_CAST_TO_ASCII
+#endif
+
+#if SCENARIO == 3
+// this is the "no harm done" version. Only operator% is active,
+// with NO_CAST * _not_ defined
+#define P %
+#undef QT_USE_FAST_OPERATOR_PLUS
+#undef QT_USE_FAST_CONCATENATION
+#undef QT_NO_CAST_FROM_ASCII
+#undef QT_NO_CAST_TO_ASCII
+#endif
+
+#if SCENARIO == 4
+// this is the "full" version. Operator+ is replaced by a QStringBuilder
+// based version
+// with NO_CAST * _not_ defined
+#define P +
+#define QT_USE_FAST_OPERATOR_PLUS
+#define QT_USE_FAST_CONCATENATION
+#undef QT_NO_CAST_FROM_ASCII
+#undef QT_NO_CAST_TO_ASCII
+#endif
+
+
+#include <qbytearray.h>
+#include <qdebug.h>
+#include <qstring.h>
+#include <qstringbuilder.h>
+
+#include <qtest.h>
+
+#include <string>
+
+#define COMPARE(a, b) QCOMPARE(a, b)
+//#define COMPARE(a, b)
+
+#define SEP(s) qDebug() << "\n\n-------- " s "  ---------";
+
+#define LITERAL "some string literal"
+
+class tst_qstringbuilder : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_qstringbuilder()
+      : l1literal(LITERAL),
+        l1string(LITERAL),
+        ba(LITERAL),
+        string(l1string),
+        stdstring(LITERAL),
+        stringref(&string, 2, 10),
+        achar('c'),
+        r2(QLatin1String(LITERAL LITERAL)),
+        r3(QLatin1String(LITERAL LITERAL LITERAL)),
+        r4(QLatin1String(LITERAL LITERAL LITERAL LITERAL)),
+        r5(QLatin1String(LITERAL LITERAL LITERAL LITERAL LITERAL))
+    {}
+
+
+public:
+    enum { N = 10000 };
+
+    int run_traditional()
+    {
+        int s = 0;
+        for (int i = 0; i < N; ++i) {
+#if 0
+            s += QString(l1string + l1string).size();
+            s += QString(l1string + l1string + l1string).size();
+            s += QString(l1string + l1string + l1string + l1string).size();
+            s += QString(l1string + l1string + l1string + l1string + l1string).size();
+#endif
+            s += QString(achar + l1string + achar).size();
+        }
+        return s;
+    }
+
+    int run_builder()
+    {
+        int s = 0;
+        for (int i = 0; i < N; ++i) {
+#if 0
+            s += QString(l1literal P l1literal).size();
+            s += QString(l1literal P l1literal P l1literal).size();
+            s += QString(l1literal P l1literal P l1literal P l1literal).size();
+            s += QString(l1literal P l1literal P l1literal P l1literal P l1literal).size();
+#endif
+            s += QString(achar % l1literal % achar).size();
+        }
+        return s;
+    }
+
+private slots:
+
+    void separator_0() {
+        qDebug() << "\nIn each block the QStringBuilder based result appear first "
+            "(with a 'b_' prefix), QStringBased second ('q_' prefix), std::string "
+            "last ('s_' prefix)\n";
+    }
+
+    void separator_1() { SEP("literal + literal  (builder first)"); }
+
+    void b_2_l1literal() {
+        QBENCHMARK { r = l1literal P l1literal; }
+        COMPARE(r, r2);
+    }
+    #ifndef QT_NO_CAST_FROM_ASCII
+    void b_l1literal_LITERAL() {
+        QBENCHMARK { r = l1literal P LITERAL; }
+        COMPARE(r, r2);
+    }
+    #endif
+    void q_2_l1string() {
+        QBENCHMARK { r = l1string + l1string; }
+        COMPARE(r, r2);
+    }
+
+
+    void separator_2() { SEP("2 strings"); }
+
+    void b_2_string() {
+        QBENCHMARK { r = string P string; }
+        COMPARE(r, r2);
+    }
+    void q_2_string() {
+        QBENCHMARK { r = string + string; }
+        COMPARE(r, r2);
+    }
+    void s_2_string() {
+        QBENCHMARK { stdr = stdstring + stdstring; }
+        COMPARE(stdr, stdstring + stdstring);
+    }
+
+
+    void separator_2c() { SEP("2 string refs"); }
+
+    void b_2_stringref() {
+        QBENCHMARK { r = stringref % stringref; }
+        COMPARE(r, QString(stringref.toString() + stringref.toString()));
+    }
+    void q_2_stringref() {
+        QBENCHMARK { r = stringref.toString() + stringref.toString(); }
+        COMPARE(r, QString(stringref % stringref));
+    }
+
+
+    void separator_2b() { SEP("3 strings"); }
+
+    void b_3_string() {
+        QBENCHMARK { r = string P string P string; }
+        COMPARE(r, r3);
+    }
+    void q_3_string() {
+        QBENCHMARK { r = string + string + string; }
+        COMPARE(r, r3);
+    }
+    void s_3_string() {
+        QBENCHMARK { stdr = stdstring + stdstring + stdstring; }
+        COMPARE(stdr, stdstring + stdstring + stdstring);
+    }
+
+    void separator_2e() { SEP("4 strings"); }
+
+    void b_4_string() {
+        QBENCHMARK { r = string P string P string P string; }
+        COMPARE(r, r4);
+    }
+    void q_4_string() {
+        QBENCHMARK { r = string + string + string + string; }
+        COMPARE(r, r4);
+    }
+    void s_4_string() {
+        QBENCHMARK { stdr = stdstring + stdstring + stdstring + stdstring; }
+        COMPARE(stdr, stdstring + stdstring + stdstring + stdstring);
+    }
+
+
+
+    void separator_2a() { SEP("string + literal  (builder first)"); }
+
+    void b_string_l1literal() {
+        QBENCHMARK { r = string % l1literal; }
+        COMPARE(r, r2);
+    }
+    #ifndef QT_NO_CAST_FROM_ASCII
+    void b_string_LITERAL() {
+        QBENCHMARK { r = string P LITERAL; }
+        COMPARE(r, r2);
+    }
+    void b_LITERAL_string() {
+        QBENCHMARK { r = LITERAL P string; }
+        COMPARE(r, r2);
+    }
+    #endif
+    void b_string_l1string() {
+        QBENCHMARK { r = string P l1string; }
+        COMPARE(r, r2);
+    }
+    void q_string_l1literal() {
+        QBENCHMARK { r = string + l1string; }
+        COMPARE(r, r2);
+    }
+    void q_string_l1string() {
+        QBENCHMARK { r = string + l1string; }
+        COMPARE(r, r2);
+    }
+    void s_LITERAL_string() {
+        QBENCHMARK { stdr = LITERAL + stdstring; }
+        COMPARE(stdr, stdstring + stdstring);
+    }
+
+
+    void separator_3() { SEP("3 literals"); }
+
+    void b_3_l1literal() {
+        QBENCHMARK { r = l1literal P l1literal P l1literal; }
+        COMPARE(r, r3);
+    }
+    void q_3_l1string() {
+        QBENCHMARK { r = l1string + l1string + l1string; }
+        COMPARE(r, r3);
+    }
+    void s_3_l1string() {
+        QBENCHMARK { stdr = stdstring + LITERAL + LITERAL; }
+        COMPARE(stdr, stdstring + stdstring + stdstring);
+    }
+
+
+    void separator_4() { SEP("4 literals"); }
+
+    void b_4_l1literal() {
+        QBENCHMARK { r = l1literal P l1literal P l1literal P l1literal; }
+        COMPARE(r, r4);
+    }
+    void q_4_l1string() {
+        QBENCHMARK { r = l1string + l1string + l1string + l1string; }
+        COMPARE(r, r4);
+    }
+
+
+    void separator_5() { SEP("5 literals"); }
+
+    void b_5_l1literal() {
+        QBENCHMARK { r = l1literal P l1literal P l1literal P l1literal P l1literal; }
+        COMPARE(r, r5);
+    }
+
+    void q_5_l1string() {
+        QBENCHMARK { r = l1string + l1string + l1string + l1string + l1string; }
+        COMPARE(r, r5);
+    }
+
+
+    void separator_6() { SEP("4 chars"); }
+
+    void b_string_4_char() {
+        QBENCHMARK { r = string + achar + achar + achar + achar; }
+        COMPARE(r, QString(string P achar P achar P achar P achar));
+    }
+
+    void q_string_4_char() {
+        QBENCHMARK { r = string + achar + achar + achar + achar; }
+        COMPARE(r, QString(string P achar P achar P achar P achar));
+    }
+
+    void s_string_4_char() {
+        QBENCHMARK { stdr = stdstring + 'c' + 'c' + 'c' + 'c'; }
+        COMPARE(stdr, stdstring + 'c' + 'c' + 'c' + 'c');
+    }
+
+
+    void separator_7() { SEP("char + string + char"); }
+
+    void b_char_string_char() {
+        QBENCHMARK { r = achar + string + achar; }
+        COMPARE(r, QString(achar P string P achar));
+    }
+
+    void q_char_string_char() {
+        QBENCHMARK { r = achar + string + achar; }
+        COMPARE(r, QString(achar P string P achar));
+    }
+
+    void s_char_string_char() {
+        QBENCHMARK { stdr = 'c' + stdstring + 'c'; }
+        COMPARE(stdr, 'c' + stdstring + 'c');
+    }
+
+
+    void separator_8() { SEP("string.arg"); }
+
+    void b_string_arg() {
+        const QString pattern = l1string + QString::fromLatin1("%1") + l1string;
+        QBENCHMARK { r = l1literal P string P l1literal; }
+        COMPARE(r, r3);
+    }
+
+    void q_string_arg() {
+        const QString pattern = l1string + QLatin1String("%1") + l1string;
+        QBENCHMARK { r = pattern.arg(string); }
+        COMPARE(r, r3);
+    }
+
+    void q_bytearray_arg() {
+        QByteArray result;
+        QBENCHMARK { result = ba + ba + ba; }
+    }
+
+
+    void separator_9() { SEP("QString::reserve()"); }
+
+    void b_reserve() {
+        QBENCHMARK {
+            r.clear();
+            r = string P string P string P string;
+        }
+        COMPARE(r, r4);
+    }
+    void b_reserve_lit() {
+        QBENCHMARK {
+            r.clear();
+            r = string P l1literal P string P string;
+        }
+        COMPARE(r, r4);
+    }
+    void s_reserve() {
+        QBENCHMARK {
+            r.clear();
+            r.reserve(string.size() + string.size() + string.size() + string.size());
+            r += string;
+            r += string;
+            r += string;
+            r += string;
+        }
+        COMPARE(r, r4);
+    }
+    void s_reserve_lit() {
+        QBENCHMARK {
+            r.clear();
+            //r.reserve(string.size() + qstrlen(l1string.latin1())
+            //    + string.size() + string.size());
+            r.reserve(1024);
+            r += string;
+            r += l1string;
+            r += string;
+            r += string;
+        }
+        COMPARE(r, r4);
+    }
+
+private:
+    const QLatin1Literal l1literal;
+    const QLatin1String l1string;
+    const QByteArray ba;
+    const QString string;
+    const std::string stdstring;
+    const QStringRef stringref;
+    const QLatin1Char achar;
+    const QString r2, r3, r4, r5;
+
+    // short cuts for results
+    QString r;
+    std::string stdr;
+};
+
+
+//void operator%(QString, int) {}
+
+int main(int argc, char *argv[])
+{
+    //qDebug() << (QString("xx") * QLatin1String("y")).toString();
+    //42 % 3; // Sanity test, should always work.
+    //QString("x") % 2; // Sanity test, should only compile when the 
+    // operator%(QString, int) is visible.
+
+    if (argc == 2 && (QLatin1String(argv[1]) == QLatin1String("--run-builder")
+                   || QLatin1String(argv[1]) == QLatin1String("-b"))) {
+        tst_qstringbuilder test;
+        return test.run_builder();
+    }
+
+    if (argc == 2 && (QLatin1String(argv[1]) == QLatin1String("--run-traditional")
+                   || QLatin1String(argv[1]) == QLatin1String("-t"))) {
+        tst_qstringbuilder test;
+        return test.run_traditional();
+    }
+
+    if (argc == 1) {
+        QCoreApplication app(argc, argv);
+        QStringList args = app.arguments();
+        tst_qstringbuilder test;
+        return QTest::qExec(&test, argc, argv);
+    }
+
+    qDebug() << "Usage: " << argv[0] << " [--run-builder|-r|--run-traditional|-t]";
+}
+
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/corelib/tools/qstringbuilder/qstringbuilder.pro
new file mode 100644
index 0000000..79171b4
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstringbuilder/qstringbuilder.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qstringbuilder
+
+QMAKE_CXXFLAGS += -g
+QMAKE_CFLAGS += -g
+
+QT -= gui
+
+CONFIG += release
+
+SOURCES += main.cpp 
diff --git a/tests/benchmarks/corelib/tools/qstringlist/.gitignore b/tests/benchmarks/corelib/tools/qstringlist/.gitignore
new file mode 100644
index 0000000..3e0cdc9
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstringlist/.gitignore
@@ -0,0 +1 @@
+tst_qstringlist
diff --git a/tests/benchmarks/corelib/tools/qstringlist/main.cpp b/tests/benchmarks/corelib/tools/qstringlist/main.cpp
new file mode 100644
index 0000000..3fac598
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstringlist/main.cpp
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QStringList>
+#include <QtTest>
+
+#include <sstream>
+#include <string>
+#include <vector>
+
+class tst_QStringList: public QObject
+{
+    Q_OBJECT
+
+private slots:
+    void join() const;
+    void join_data() const;
+
+    void split() const;
+    void split_data() const;
+
+    void split_std() const;
+    void split_std_data() const { return split_data(); }
+
+    void split_stdw() const;
+    void split_stdw_data() const { return split_data(); }
+
+    void split_ba() const;
+    void split_ba_data() const { return split_data(); }
+
+private:
+    static QStringList populateList(const int count, const QString &unit);
+    static QString populateString(const int count, const QString &unit);
+};
+
+QStringList tst_QStringList::populateList(const int count, const QString &unit)
+{
+    QStringList retval;
+
+    for (int i = 0; i < count; ++i)
+        retval.append(unit);
+
+    return retval;
+}
+
+QString tst_QStringList::populateString(const int count, const QString &unit)
+{
+    QString retval;
+
+    for (int i = 0; i < count; ++i) {
+        retval.append(unit);
+        retval.append(QLatin1Char(':'));
+    }
+
+    return retval;
+}
+
+void tst_QStringList::join() const
+{
+    QFETCH(QStringList, input);
+    QFETCH(QString, separator);
+
+    QBENCHMARK {
+        input.join(separator);
+    }
+}
+
+void tst_QStringList::join_data() const
+{
+    QTest::addColumn<QStringList>("input");
+    QTest::addColumn<QString>("separator");
+
+    QTest::newRow("")
+        << populateList(100, QLatin1String("unit"))
+        << QString();
+
+    QTest::newRow("")
+        << populateList(1000, QLatin1String("unit"))
+        << QString();
+
+    QTest::newRow("")
+        << populateList(10000, QLatin1String("unit"))
+        << QString();
+
+    QTest::newRow("")
+        << populateList(100000, QLatin1String("unit"))
+        << QString();
+}
+
+void tst_QStringList::split() const
+{
+    QFETCH(QString, input);
+    const QChar splitChar = ':';
+
+    QBENCHMARK {
+        input.split(splitChar);
+    }
+}
+
+void tst_QStringList::split_data() const
+{
+    QTest::addColumn<QString>("input");
+    QString unit = QLatin1String("unit");
+    QTest::newRow("") << populateString(10, unit);
+    QTest::newRow("") << populateString(100, unit);
+    QTest::newRow("") << populateString(1000, unit);
+    QTest::newRow("") << populateString(10000, unit);
+}
+
+void tst_QStringList::split_std() const
+{
+    QFETCH(QString, input);
+    const char split_char = ':';
+    std::string stdinput = input.toStdString();
+
+    QBENCHMARK {
+        std::istringstream split(stdinput);
+        std::vector<std::string> token;
+        for (std::string each;
+             std::getline(split, each, split_char);
+             token.push_back(each))
+            ;
+    }
+}
+
+void tst_QStringList::split_stdw() const
+{
+    QFETCH(QString, input);
+    const wchar_t split_char = ':';
+    std::wstring stdinput = input.toStdWString();
+
+    QBENCHMARK {
+        std::wistringstream split(stdinput);
+        std::vector<std::wstring> token;
+        for (std::wstring each;
+             std::getline(split, each, split_char);
+             token.push_back(each))
+            ;
+    }
+}
+
+void tst_QStringList::split_ba() const
+{
+    QFETCH(QString, input);
+    const char splitChar = ':';
+    QByteArray ba = input.toLatin1();
+
+    QBENCHMARK {
+        ba.split(splitChar);
+    }
+}
+
+QTEST_MAIN(tst_QStringList)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qstringlist/qstringlist.pro b/tests/benchmarks/corelib/tools/qstringlist/qstringlist.pro
new file mode 100644
index 0000000..11cceb0
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qstringlist/qstringlist.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TARGET = tst_qstringlist
+QT -= gui
+SOURCES += main.cpp
+
+symbian: LIBS += -llibpthread
diff --git a/tests/benchmarks/corelib/tools/tools.pro b/tests/benchmarks/corelib/tools/tools.pro
new file mode 100644
index 0000000..12c23fc
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/tools.pro
@@ -0,0 +1,10 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        containers-associative \
+        containers-sequential \
+        qbytearray \
+        qrect \
+        qregexp \
+        qstring \
+        qstringbuilder \
+        qstringlist
diff --git a/tests/benchmarks/events/events.pro b/tests/benchmarks/events/events.pro
deleted file mode 100644
index adf2317..0000000
--- a/tests/benchmarks/events/events.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_events
-DEPENDPATH += .
-INCLUDEPATH += .
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/events/main.cpp b/tests/benchmarks/events/main.cpp
deleted file mode 100644
index 0dd2c18..0000000
--- a/tests/benchmarks/events/main.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtCore>
-
-#include <qtest.h>
-#include <qtesteventloop.h>
-
-class PingPong : public QObject
-{
-public:
-    void setPeer(QObject *peer);
-    void resetCounter() {m_counter = 100;}
-
-protected:
-    bool event(QEvent *e);
-
-private:
-    QObject *m_peer;
-    int m_counter;
-};
-
-void PingPong::setPeer(QObject *peer)
-{
-    m_peer = peer;
-    m_counter = 100;
-}
-
-bool PingPong::event(QEvent *)
-{
-    --m_counter;
-    if (m_counter > 0) {
-        QEvent *e = new QEvent(QEvent::User);
-        QCoreApplication::postEvent(m_peer, e);
-    } else {
-        QTestEventLoop::instance().exitLoop();
-    }
-    return true;
-}
-
-class EventTester : public QObject
-{
-public:
-    int foo(int bar);
-
-protected:
-    bool event(QEvent *e);
-};
-
-bool EventTester::event(QEvent *e)
-{
-    if (e->type() == QEvent::User+1)
-        return foo(e->type()) != 0;
-    return false;
-}
-
-int EventTester::foo(int bar)
-{
-    return bar + 1;
-}
-
-class EventsBench : public QObject
-{
-    Q_OBJECT
-
-private slots:
-    void initTestCase();
-    void cleanupTestCase();
-
-    void noEvent();
-    void sendEvent_data();
-    void sendEvent();
-    void postEvent_data();
-    void postEvent();
-};
-
-void EventsBench::initTestCase()
-{
-}
-
-void EventsBench::cleanupTestCase()
-{
-}
-
-void EventsBench::noEvent()
-{
-    EventTester tst;
-    int val = 0;
-    QBENCHMARK {
-        val += tst.foo(1);
-    }
-}
-
-void EventsBench::sendEvent_data()
-{
-    QTest::addColumn<bool>("filterEvents");
-    QTest::newRow("no eventfilter") << false;
-    QTest::newRow("eventfilter") << true;
-}
-
-void EventsBench::sendEvent()
-{
-    QFETCH(bool, filterEvents);
-    EventTester tst;
-    if (filterEvents)
-        tst.installEventFilter(this);
-    QEvent evt(QEvent::Type(QEvent::User+1));
-    QBENCHMARK {
-        QCoreApplication::sendEvent(&tst, &evt);
-    }
-}
-
-void EventsBench::postEvent_data()
-{
-    QTest::addColumn<bool>("filterEvents");
-    // The first time an eventloop is executed, the case runs radically slower at least
-    // on some platforms, so test the "no eventfilter" case to get a comparable results
-    // with the "eventfilter" case.
-    QTest::newRow("first time, no eventfilter") << false;
-    QTest::newRow("no eventfilter") << false;
-    QTest::newRow("eventfilter") << true;
-}
-
-void EventsBench::postEvent()
-{
-    QFETCH(bool, filterEvents);
-    PingPong ping;
-    PingPong pong;
-    ping.setPeer(&pong);
-    pong.setPeer(&ping);
-    if (filterEvents) {
-        ping.installEventFilter(this);
-        pong.installEventFilter(this);
-    }
-
-    QBENCHMARK {
-        // In case multiple iterations are done, event needs to be created inside the QBENCHMARK,
-        // or it gets deleted once first iteration exits and can cause a crash. Similarly,
-        // ping and pong need their counters reset.
-        QEvent *e = new QEvent(QEvent::User);
-        ping.resetCounter();
-        pong.resetCounter();
-        QCoreApplication::postEvent(&ping, e);
-        QTestEventLoop::instance().enterLoop( 61 );
-    }
-}
-
-QTEST_MAIN(EventsBench)
-
-#include "main.moc"
diff --git a/tests/benchmarks/gui/animation/animation.pro b/tests/benchmarks/gui/animation/animation.pro
new file mode 100644
index 0000000..a4ba273
--- /dev/null
+++ b/tests/benchmarks/gui/animation/animation.pro
@@ -0,0 +1,2 @@
+TEMPLATE = subdirs
+SUBDIRS = qanimation
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp b/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
new file mode 100644
index 0000000..f79cc5b
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dummyanimation.h"
+#include "dummyobject.h"
+
+
+DummyAnimation::DummyAnimation(DummyObject *d) : m_dummy(d)
+{
+}
+
+void DummyAnimation::updateCurrentValue(const QVariant &value)
+{
+    if (state() == Stopped)
+        return;
+    if (m_dummy)
+        m_dummy->setRect(value.toRect());
+}
+
+void DummyAnimation::updateState(State state)
+{
+    Q_UNUSED(state);
+}
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyanimation.h b/tests/benchmarks/gui/animation/qanimation/dummyanimation.h
new file mode 100644
index 0000000..1df76be
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/dummyanimation.h
@@ -0,0 +1,60 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#ifndef _DUMMYANIMATION_H__
+
+class DummyObject;
+
+class DummyAnimation : public QVariantAnimation
+{
+public:
+    DummyAnimation(DummyObject *d);
+
+    void updateCurrentValue(const QVariant &value);
+    void updateState(State state);
+
+private:
+    DummyObject *m_dummy;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp b/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
new file mode 100644
index 0000000..2b66cda
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dummyobject.h"
+
+DummyObject::DummyObject()
+{
+}
+
+QRect DummyObject::rect() const
+{
+    return m_rect;
+}
+
+void DummyObject::setRect(const QRect &r)
+{
+    m_rect = r;
+}
+
+float DummyObject::opacity() const
+{
+    return m_opacity;
+}
+
+void DummyObject::setOpacity(float o)
+{
+    m_opacity = o;
+}
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyobject.h b/tests/benchmarks/gui/animation/qanimation/dummyobject.h
new file mode 100644
index 0000000..31614fd
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/dummyobject.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#ifndef _DUMMYOBJECT_H__
+
+class DummyObject : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(QRect rect READ rect WRITE setRect)
+    Q_PROPERTY(float opacity READ opacity WRITE setOpacity)
+public:
+    DummyObject();
+    QRect rect() const;
+    void setRect(const QRect &r);
+    float opacity() const;
+    void setOpacity(float);
+
+private:
+    QRect m_rect;
+    float m_opacity;
+};
+
+
+#endif
diff --git a/tests/benchmarks/gui/animation/qanimation/main.cpp b/tests/benchmarks/gui/animation/qanimation/main.cpp
new file mode 100644
index 0000000..8b9884e
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/main.cpp
@@ -0,0 +1,191 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <qtest.h>
+
+#include "dummyobject.h"
+#include "dummyanimation.h"
+#include "rectanimation.h"
+
+#define ITERATION_COUNT 10e3
+
+class tst_qanimation : public QObject
+{
+    Q_OBJECT
+private slots:
+    void itemPropertyAnimation();
+    void itemPropertyAnimation_data() { data();}
+    void dummyAnimation();
+    void dummyAnimation_data() { data();}
+    void dummyPropertyAnimation();
+    void dummyPropertyAnimation_data() { data();}
+    void rectAnimation();
+    void rectAnimation_data() { data();}
+
+    void floatAnimation_data() { data(); }
+    void floatAnimation();
+
+private:
+    void data();
+};
+
+
+void tst_qanimation::data()
+{
+    QTest::addColumn<bool>("started");
+    QTest::newRow("NotRunning") << false;
+    QTest::newRow("Running") << true;
+}
+
+void tst_qanimation::itemPropertyAnimation()
+{
+    QFETCH(bool, started);
+    QGraphicsWidget item;
+
+    //then the property animation
+    {
+        QPropertyAnimation anim(&item, "pos");
+        anim.setDuration(ITERATION_COUNT);
+        anim.setStartValue(QPointF(0,0));
+        anim.setEndValue(QPointF(ITERATION_COUNT,ITERATION_COUNT));
+        if (started)
+            anim.start();
+        QBENCHMARK {
+            for(int i = 0; i < ITERATION_COUNT; ++i) {
+                anim.setCurrentTime(i);
+            }
+        }
+    }
+
+}
+
+void tst_qanimation::dummyAnimation()
+{
+    QFETCH(bool, started);
+    DummyObject dummy;
+
+    //first the dummy animation
+    {
+        DummyAnimation anim(&dummy);
+        anim.setDuration(ITERATION_COUNT);
+        anim.setStartValue(QRect(0, 0, 0, 0));
+        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
+        if (started)
+            anim.start();
+        QBENCHMARK {
+            for(int i = 0; i < anim.duration(); ++i) {
+                anim.setCurrentTime(i);
+            }
+        }
+    }
+}
+
+void tst_qanimation::dummyPropertyAnimation()
+{
+    QFETCH(bool, started);
+    DummyObject dummy;
+
+    //then the property animation
+    {
+        QPropertyAnimation anim(&dummy, "rect");
+        anim.setDuration(ITERATION_COUNT);
+        anim.setStartValue(QRect(0, 0, 0, 0));
+        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
+        if (started)
+            anim.start();
+        QBENCHMARK {
+            for(int i = 0; i < ITERATION_COUNT; ++i) {
+                anim.setCurrentTime(i);
+            }
+        }
+    }
+}
+
+void tst_qanimation::rectAnimation()
+{
+    //this is the simplest animation you can do
+    QFETCH(bool, started);
+    DummyObject dummy;
+
+    //then the property animation
+    {
+        RectAnimation anim(&dummy);
+        anim.setDuration(ITERATION_COUNT);
+        anim.setStartValue(QRect(0, 0, 0, 0));
+        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
+        if (started)
+            anim.start();
+        QBENCHMARK {
+            for(int i = 0; i < ITERATION_COUNT; ++i) {
+                anim.setCurrentTime(i);
+            }
+        }
+    }
+}
+
+void tst_qanimation::floatAnimation()
+{
+    //this is the simplest animation you can do
+    QFETCH(bool, started);
+    DummyObject dummy;
+
+    //then the property animation
+    {
+        QPropertyAnimation anim(&dummy, "opacity");
+        anim.setDuration(ITERATION_COUNT);
+        anim.setStartValue(0.f);
+        anim.setEndValue(1.f);
+        if (started)
+            anim.start();
+        QBENCHMARK {
+            for(int i = 0; i < ITERATION_COUNT; ++i) {
+                anim.setCurrentTime(i);
+            }
+        }
+    }
+}
+
+
+
+QTEST_MAIN(tst_qanimation)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/animation/qanimation/qanimation.pro b/tests/benchmarks/gui/animation/qanimation/qanimation.pro
new file mode 100644
index 0000000..55cd75e
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/qanimation.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qanimation
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += release
+#CONFIG += debug
+
+
+SOURCES += main.cpp \
+           dummyobject.cpp \
+           dummyanimation.cpp \
+           rectanimation.cpp
+
+HEADERS += dummyobject.h \
+           dummyanimation.h \
+           rectanimation.h
diff --git a/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp b/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
new file mode 100644
index 0000000..e6d7a7e
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "rectanimation.h"
+#include "dummyobject.h"
+
+static inline int interpolateInteger(int from, int to, qreal progress)
+{
+   return from + (to - from) * progress;
+}
+
+
+RectAnimation::RectAnimation(DummyObject *obj) : m_object(obj), m_dura(250)
+{
+}
+
+void RectAnimation::setEndValue(const QRect &rect)
+{
+    m_end = rect;
+}
+
+void RectAnimation::setStartValue(const QRect &rect)
+{
+    m_start = rect;
+}
+
+void RectAnimation::setDuration(int d)
+{
+    m_dura = d;
+}
+
+int RectAnimation::duration() const
+{
+    return m_dura;
+}
+
+
+void RectAnimation::updateCurrentTime(int currentTime)
+{
+    qreal progress = m_easing.valueForProgress( currentTime / qreal(m_dura) );
+    QRect now;
+    now.setCoords(interpolateInteger(m_start.left(), m_end.left(), progress),
+                  interpolateInteger(m_start.top(), m_end.top(), progress),
+                  interpolateInteger(m_start.right(), m_end.right(), progress),
+                  interpolateInteger(m_start.bottom(), m_end.bottom(), progress));
+
+    bool changed = (now != m_current);
+    if (changed)
+        m_current = now;
+
+    if (state() == Stopped)
+        return;
+
+    if (m_object)
+        m_object->setRect(m_current);
+}
diff --git a/tests/benchmarks/gui/animation/qanimation/rectanimation.h b/tests/benchmarks/gui/animation/qanimation/rectanimation.h
new file mode 100644
index 0000000..42b9376
--- /dev/null
+++ b/tests/benchmarks/gui/animation/qanimation/rectanimation.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+#ifndef _RECTANIMATION_H__
+
+class DummyObject;
+
+//this class is even simpler than the dummy
+//and uses no QVariant at all
+class RectAnimation : public QAbstractAnimation
+{
+public:
+    RectAnimation(DummyObject *obj);
+
+    void setEndValue(const QRect &rect);
+    void setStartValue(const QRect &rect);
+
+    void setDuration(int d);
+    int duration() const;
+
+    virtual void updateCurrentTime(int currentTime);
+
+private:
+    DummyObject *m_object;
+    QEasingCurve m_easing;
+    QRect m_start, m_end, m_current;
+    int m_dura;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/graphicsview.pro b/tests/benchmarks/gui/graphicsview/graphicsview.pro
new file mode 100644
index 0000000..93c00d2
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/graphicsview.pro
@@ -0,0 +1,7 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qgraphicsanchorlayout \
+        qgraphicsitem \
+        qgraphicsscene \
+        qgraphicsview \
+        qgraphicswidget
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
new file mode 100644
index 0000000..0d563b9
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicsanchorlayout
+
+SOURCES += tst_qgraphicsanchorlayout.cpp
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
new file mode 100644
index 0000000..faacec4
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
@@ -0,0 +1,433 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGui/qgraphicsanchorlayout.h>
+#include <QtGui/qgraphicslinearlayout.h>
+#include <QtGui/qgraphicswidget.h>
+#include <QtGui/qgraphicsview.h>
+
+class tst_QGraphicsAnchorLayout : public QObject
+{
+    Q_OBJECT
+public:
+    tst_QGraphicsAnchorLayout() {}
+    ~tst_QGraphicsAnchorLayout() {}
+
+private slots:
+    void s60_hard_complex_data();
+    void s60_hard_complex();
+    void linearVsAnchorSizeHints_data();
+    void linearVsAnchorSizeHints();
+    void linearVsAnchorSetGeometry_data();
+    void linearVsAnchorSetGeometry();
+    void linearVsAnchorNested_data();
+    void linearVsAnchorNested();
+};
+
+
+class RectWidget : public QGraphicsWidget
+{
+public:
+    RectWidget(QGraphicsItem *parent = 0) : QGraphicsWidget(parent){}
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+    {
+        Q_UNUSED(option);
+        Q_UNUSED(widget);
+        painter->drawRoundRect(rect());
+        painter->drawLine(rect().topLeft(), rect().bottomRight());
+        painter->drawLine(rect().bottomLeft(), rect().topRight());
+    }
+};
+
+static QGraphicsWidget *createItem(const QSizeF &minimum = QSizeF(100.0, 100.0),
+                                   const QSizeF &preferred = QSize(150.0, 100.0),
+                                   const QSizeF &maximum = QSizeF(200.0, 100.0),
+                                   const QString &name = QString())
+{
+    QGraphicsWidget *w = new RectWidget;
+    w->setMinimumSize(minimum);
+    w->setPreferredSize(preferred);
+    w->setMaximumSize(maximum);
+    w->setData(0, name);
+    return w;
+}
+
+static void setAnchor(QGraphicsAnchorLayout *l,
+                      QGraphicsLayoutItem *firstItem,
+                      Qt::AnchorPoint firstEdge,
+                      QGraphicsLayoutItem *secondItem,
+                      Qt::AnchorPoint secondEdge,
+                      qreal spacing)
+{
+    QGraphicsAnchor *anchor = l->addAnchor(firstItem, firstEdge, secondItem, secondEdge);
+    anchor->setSpacing(spacing);
+}
+
+void tst_QGraphicsAnchorLayout::s60_hard_complex_data()
+{
+    QTest::addColumn<int>("whichSizeHint");
+    QTest::newRow("minimumSizeHint")
+        << int(Qt::MinimumSize);
+    QTest::newRow("preferredSizeHint")
+        << int(Qt::PreferredSize);
+    QTest::newRow("maximumSizeHint")
+        << int(Qt::MaximumSize);
+    // Add it as a reference to see how much overhead the body of effectiveSizeHint takes.
+    QTest::newRow("noSizeHint")
+        << -1;
+}
+
+void tst_QGraphicsAnchorLayout::s60_hard_complex()
+{
+    QFETCH(int, whichSizeHint);
+
+    // Test for "hard" complex case, taken from wiki
+    // https://cwiki.nokia.com/S60QTUI/AnchorLayoutComplexCases
+    QSizeF min(0, 10);
+    QSizeF pref(50, 10);
+    QSizeF max(100, 10);
+
+    QGraphicsWidget *a = createItem(min, pref, max, "a");
+    QGraphicsWidget *b = createItem(min, pref, max, "b");
+    QGraphicsWidget *c = createItem(min, pref, max, "c");
+    QGraphicsWidget *d = createItem(min, pref, max, "d");
+    QGraphicsWidget *e = createItem(min, pref, max, "e");
+    QGraphicsWidget *f = createItem(min, pref, max, "f");
+    QGraphicsWidget *g = createItem(min, pref, max, "g");
+
+    QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
+    l->setContentsMargins(0, 0, 0, 0);
+
+    //<!-- Trunk -->
+    setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 10);
+    setAnchor(l, a, Qt::AnchorRight, b, Qt::AnchorLeft, 10);
+    setAnchor(l, b, Qt::AnchorRight, c, Qt::AnchorLeft, 10);
+    setAnchor(l, c, Qt::AnchorRight, d, Qt::AnchorLeft, 10);
+    setAnchor(l, d, Qt::AnchorRight, l, Qt::AnchorRight, 10);
+
+    //<!-- Above trunk -->
+    setAnchor(l, b, Qt::AnchorLeft, e, Qt::AnchorLeft, 10);
+    setAnchor(l, e, Qt::AnchorRight, d, Qt::AnchorLeft, 10);
+
+    //<!-- Below trunk -->
+    setAnchor(l, a, Qt::AnchorHorizontalCenter, g, Qt::AnchorLeft, 10);
+    setAnchor(l, g, Qt::AnchorRight, f, Qt::AnchorHorizontalCenter, 10);
+    setAnchor(l, c, Qt::AnchorLeft, f, Qt::AnchorLeft, 10);
+    setAnchor(l, f, Qt::AnchorRight, d, Qt::AnchorRight, 10);
+
+    //<!-- vertical is simpler -->
+    setAnchor(l, l, Qt::AnchorTop, e, Qt::AnchorTop, 0);
+    setAnchor(l, e, Qt::AnchorBottom, a, Qt::AnchorTop, 0);
+    setAnchor(l, e, Qt::AnchorBottom, b, Qt::AnchorTop, 0);
+    setAnchor(l, e, Qt::AnchorBottom, c, Qt::AnchorTop, 0);
+    setAnchor(l, e, Qt::AnchorBottom, d, Qt::AnchorTop, 0);
+    setAnchor(l, a, Qt::AnchorBottom, f, Qt::AnchorTop, 0);
+    setAnchor(l, a, Qt::AnchorBottom, b, Qt::AnchorBottom, 0);
+    setAnchor(l, a, Qt::AnchorBottom, c, Qt::AnchorBottom, 0);
+    setAnchor(l, a, Qt::AnchorBottom, d, Qt::AnchorBottom, 0);
+    setAnchor(l, f, Qt::AnchorBottom, g, Qt::AnchorTop, 0);
+    setAnchor(l, g, Qt::AnchorBottom, l, Qt::AnchorBottom, 0);
+
+    // It won't query the size hint if it already has a size set.
+    // If only one of the sizes is unset it will query sizeHint only of for that hint type.
+    l->setMinimumSize(60,40);
+    l->setPreferredSize(220,40);
+    l->setMaximumSize(240,40);
+
+    switch (whichSizeHint) {
+    case Qt::MinimumSize:
+        l->setMinimumSize(-1, -1);
+        break;
+    case Qt::PreferredSize:
+        l->setPreferredSize(-1, -1);
+        break;
+    case Qt::MaximumSize:
+        l->setMaximumSize(-1, -1);
+        break;
+    default:
+        break;
+    }
+
+    QSizeF sizeHint;
+    // warm up instruction cache
+    l->invalidate();
+    sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
+    // ...then measure...
+    QBENCHMARK {
+        l->invalidate();
+        sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
+    }
+}
+
+static QGraphicsLayout* createLayouts(int whichLayout)
+{
+    QSizeF min(0, 10);
+    QSizeF pref(50, 10);
+    QSizeF max(100, 10);
+
+    QGraphicsWidget *a = createItem(min, pref, max, "a");
+    QGraphicsWidget *b = createItem(min, pref, max, "b");
+    QGraphicsWidget *c = createItem(min, pref, max, "c");
+    QGraphicsWidget *d = createItem(min, pref, max, "d");
+
+    QGraphicsLayout *l;
+    if (whichLayout == 0) {
+        l = new QGraphicsLinearLayout;
+        QGraphicsLinearLayout *linear = static_cast<QGraphicsLinearLayout *>(l);
+        linear->setContentsMargins(0, 0, 0, 0);
+
+        linear->addItem(a);
+        linear->addItem(b);
+        linear->addItem(c);
+        linear->addItem(d);
+    } else {
+        l = new QGraphicsAnchorLayout;
+        QGraphicsAnchorLayout *anchor = static_cast<QGraphicsAnchorLayout *>(l);
+        anchor->setContentsMargins(0, 0, 0, 0);
+
+        // Horizontal
+        setAnchor(anchor, anchor, Qt::AnchorLeft, a, Qt::AnchorLeft, 0);
+        setAnchor(anchor, a, Qt::AnchorRight, b, Qt::AnchorLeft, 0);
+        setAnchor(anchor, b, Qt::AnchorRight, c, Qt::AnchorLeft, 0);
+        setAnchor(anchor, c, Qt::AnchorRight, d, Qt::AnchorLeft, 0);
+        setAnchor(anchor, d, Qt::AnchorRight, anchor, Qt::AnchorRight, 0);
+
+        // Vertical
+        anchor->addAnchors(anchor, a, Qt::Vertical);
+        anchor->addAnchors(anchor, b, Qt::Vertical);
+        anchor->addAnchors(anchor, c, Qt::Vertical);
+        anchor->addAnchors(anchor, d, Qt::Vertical);
+    }
+
+    return l;
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorSizeHints_data()
+{
+    QTest::addColumn<int>("whichLayout");
+    QTest::addColumn<int>("whichSizeHint");
+
+    QTest::newRow("QGraphicsLinearLayout::minimum")
+        << 0 << int(Qt::MinimumSize);
+    QTest::newRow("QGraphicsLinearLayout::preferred")
+        << 0 << int(Qt::PreferredSize);
+    QTest::newRow("QGraphicsLinearLayout::maximum")
+        << 0 << int(Qt::MaximumSize);
+    QTest::newRow("QGraphicsLinearLayout::noSizeHint")
+        << 0 << -1;
+
+    QTest::newRow("QGraphicsAnchorLayout::minimum")
+        << 1 << int(Qt::MinimumSize);
+    QTest::newRow("QGraphicsAnchorLayout::preferred")
+        << 1 << int(Qt::PreferredSize);
+    QTest::newRow("QGraphicsAnchorLayout::maximum")
+        << 1 << int(Qt::MaximumSize);
+    QTest::newRow("QGraphicsAnchorLayout::noSizeHint")
+        << 1 << -1;
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorSizeHints()
+{
+    QFETCH(int, whichSizeHint);
+    QFETCH(int, whichLayout);
+
+    QGraphicsLayout *l = createLayouts(whichLayout);
+
+    QSizeF sizeHint;
+    // warm up instruction cache
+    l->invalidate();
+    sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
+    // ...then measure...
+
+    QBENCHMARK {
+        l->invalidate();
+        sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
+    }
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorSetGeometry_data()
+{
+    QTest::addColumn<int>("whichLayout");
+
+    QTest::newRow("QGraphicsLinearLayout")
+        << 0;
+    QTest::newRow("QGraphicsAnchorLayout")
+        << 1;
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorSetGeometry()
+{
+    QFETCH(int, whichLayout);
+
+    QGraphicsLayout *l = createLayouts(whichLayout);
+
+    QRectF sizeHint;
+    qreal maxWidth;
+    qreal increment;
+    // warm up instruction cache
+    l->invalidate();
+    sizeHint.setSize(l->effectiveSizeHint(Qt::MinimumSize));
+    maxWidth = l->effectiveSizeHint(Qt::MaximumSize).width();
+    increment = (maxWidth - sizeHint.width()) / 100;
+    l->setGeometry(sizeHint);
+    // ...then measure...
+
+    QBENCHMARK {
+        l->invalidate();
+        for (qreal width = sizeHint.width(); width <= maxWidth; width += increment) {
+            sizeHint.setWidth(width);
+            l->setGeometry(sizeHint);
+        }
+    }
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorNested_data()
+{
+    QTest::addColumn<int>("whichLayout");
+    QTest::newRow("LinearLayout")
+        << 0;
+    QTest::newRow("AnchorLayout setup with null-anchors knot")
+        << 1;
+    QTest::newRow("AnchorLayout setup easy to simplificate")
+        << 2;
+}
+
+void tst_QGraphicsAnchorLayout::linearVsAnchorNested()
+{
+    QFETCH(int, whichLayout);
+
+    QSizeF min(10, 10);
+    QSizeF pref(80, 80);
+    QSizeF max(150, 150);
+
+    QGraphicsWidget *a = createItem(min, pref, max, "a");
+    QGraphicsWidget *b = createItem(min, pref, max, "b");
+    QGraphicsWidget *c = createItem(min, pref, max, "c");
+    QGraphicsWidget *d = createItem(min, pref, max, "d");
+
+    QGraphicsLayout *layout;
+
+    if (whichLayout == 0) {
+        QGraphicsLinearLayout *linear1 = new QGraphicsLinearLayout;
+        QGraphicsLinearLayout *linear2 = new QGraphicsLinearLayout(Qt::Vertical);
+        QGraphicsLinearLayout *linear3 = new QGraphicsLinearLayout;
+
+        linear1->addItem(a);
+        linear1->addItem(linear2);
+        linear2->addItem(b);
+        linear2->addItem(linear3);
+        linear3->addItem(c);
+        linear3->addItem(d);
+
+        layout = linear1;
+    } else if (whichLayout == 1) {
+        QGraphicsAnchorLayout *anchor = new QGraphicsAnchorLayout;
+
+        // A
+        anchor->addCornerAnchors(a, Qt::TopLeftCorner, anchor, Qt::TopLeftCorner);
+        anchor->addCornerAnchors(a, Qt::TopRightCorner, b, Qt::TopLeftCorner);
+        anchor->addCornerAnchors(a, Qt::BottomLeftCorner, anchor, Qt::BottomLeftCorner);
+        anchor->addCornerAnchors(a, Qt::BottomRightCorner, c, Qt::BottomLeftCorner);
+
+        // B
+        anchor->addCornerAnchors(b, Qt::TopRightCorner, anchor, Qt::TopRightCorner);
+        anchor->addCornerAnchors(b, Qt::BottomLeftCorner, c, Qt::TopLeftCorner);
+        anchor->addCornerAnchors(b, Qt::BottomRightCorner, d, Qt::TopRightCorner);
+
+        // C
+        anchor->addCornerAnchors(c, Qt::TopRightCorner, d, Qt::TopLeftCorner);
+        anchor->addCornerAnchors(c, Qt::BottomRightCorner, d, Qt::BottomLeftCorner);
+
+        // D
+        anchor->addCornerAnchors(d, Qt::BottomRightCorner, anchor, Qt::BottomRightCorner);
+
+        layout = anchor;
+    } else {
+        QGraphicsAnchorLayout *anchor = new QGraphicsAnchorLayout;
+
+        // A
+        anchor->addAnchor(a, Qt::AnchorLeft, anchor, Qt::AnchorLeft);
+        anchor->addAnchors(a, anchor, Qt::Vertical);
+        anchor->addAnchor(a, Qt::AnchorRight, b, Qt::AnchorLeft);
+        anchor->addAnchor(a, Qt::AnchorRight, c, Qt::AnchorLeft);
+
+        // B
+        anchor->addAnchor(b, Qt::AnchorTop, anchor, Qt::AnchorTop);
+        anchor->addAnchor(b, Qt::AnchorRight, anchor, Qt::AnchorRight);
+        anchor->addAnchor(b, Qt::AnchorBottom, c, Qt::AnchorTop);
+        anchor->addAnchor(b, Qt::AnchorBottom, d, Qt::AnchorTop);
+
+        // C
+        anchor->addAnchor(c, Qt::AnchorRight, d, Qt::AnchorLeft);
+        anchor->addAnchor(c, Qt::AnchorBottom, anchor, Qt::AnchorBottom);
+
+        // D
+        anchor->addAnchor(d, Qt::AnchorRight, anchor, Qt::AnchorRight);
+        anchor->addAnchor(d, Qt::AnchorBottom, anchor, Qt::AnchorBottom);
+
+        layout = anchor;
+    }
+
+    QSizeF sizeHint;
+    // warm up instruction cache
+    layout->invalidate();
+    sizeHint = layout->effectiveSizeHint(Qt::PreferredSize);
+
+    // ...then measure...
+    QBENCHMARK {
+        // To ensure that all sizeHints caches are invalidated in
+        // the LinearLayout setup, we must call updateGeometry on the
+        // children. If we didn't, only the top level layout would be
+        // re-calculated.
+        static_cast<QGraphicsLayoutItem *>(a)->updateGeometry();
+        static_cast<QGraphicsLayoutItem *>(b)->updateGeometry();
+        static_cast<QGraphicsLayoutItem *>(c)->updateGeometry();
+        static_cast<QGraphicsLayoutItem *>(d)->updateGeometry();
+        layout->invalidate();
+        sizeHint = layout->effectiveSizeHint(Qt::PreferredSize);
+    }
+}
+
+QTEST_MAIN(tst_QGraphicsAnchorLayout)
+
+#include "tst_qgraphicsanchorlayout.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro b/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
new file mode 100644
index 0000000..726bb96
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsitem/qgraphicsitem.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicsitem
+
+SOURCES += tst_qgraphicsitem.cpp
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
new file mode 100644
index 0000000..ac51072
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -0,0 +1,243 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+
+//TESTED_FILES=
+
+class tst_QGraphicsItem : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QGraphicsItem();
+    virtual ~tst_QGraphicsItem();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void setParentItem();
+    void setParentItem_deep();
+    void setParentItem_deep_reversed();
+    void deleteItemWithManyChildren();
+    void setPos_data();
+    void setPos();
+    void setTransform_data();
+    void setTransform();
+    void rotate();
+    void scale();
+    void shear();
+    void translate();
+    void setRotation();
+};
+
+tst_QGraphicsItem::tst_QGraphicsItem()
+{
+}
+
+tst_QGraphicsItem::~tst_QGraphicsItem()
+{
+}
+
+void tst_QGraphicsItem::init()
+{
+}
+
+void tst_QGraphicsItem::cleanup()
+{
+}
+
+void tst_QGraphicsItem::setParentItem()
+{
+    QBENCHMARK {
+        QGraphicsRectItem rect;
+        QGraphicsRectItem *childRect = new QGraphicsRectItem;
+        childRect->setParentItem(&rect);
+    }
+}
+
+void tst_QGraphicsItem::setParentItem_deep()
+{
+    QBENCHMARK {
+        QGraphicsRectItem rect;
+        QGraphicsRectItem *lastRect = &rect;
+        for (int i = 0; i < 10; ++i) {
+            QGraphicsRectItem *childRect = new QGraphicsRectItem;
+            childRect->setParentItem(lastRect);
+            lastRect = childRect;
+        }
+        QGraphicsItem *first = rect.children().first();
+        first->setParentItem(0);
+    }
+}
+
+void tst_QGraphicsItem::setParentItem_deep_reversed()
+{
+    QBENCHMARK {
+        QGraphicsRectItem *lastRect = new QGraphicsRectItem;
+        for (int i = 0; i < 100; ++i) {
+            QGraphicsRectItem *parentRect = new QGraphicsRectItem;
+            lastRect->setParentItem(parentRect);
+            lastRect = parentRect;
+        }
+        delete lastRect;
+    }
+}
+
+void tst_QGraphicsItem::deleteItemWithManyChildren()
+{
+    QBENCHMARK {
+        QGraphicsRectItem *rect = new QGraphicsRectItem;
+        for (int i = 0; i < 1000; ++i)
+            new QGraphicsRectItem(rect);
+        delete rect;
+    }
+}
+
+void tst_QGraphicsItem::setPos_data()
+{
+    QTest::addColumn<QPointF>("pos");
+
+    QTest::newRow("0, 0") << QPointF(0, 0);
+    QTest::newRow("10, 10") << QPointF(10, 10);
+    QTest::newRow("-10, -10") << QPointF(-10, -10);
+}
+
+void tst_QGraphicsItem::setPos()
+{
+    QFETCH(QPointF, pos);
+
+    QGraphicsScene scene;
+    QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        rect->setPos(10, 10);
+        rect->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::setTransform_data()
+{
+    QTest::addColumn<QTransform>("transform");
+
+    QTest::newRow("id") << QTransform();
+    QTest::newRow("rotate 45z") << QTransform().rotate(45);
+    QTest::newRow("scale 2x2") << QTransform().scale(2, 2);
+    QTest::newRow("translate 100, 100") << QTransform().translate(100, 100);
+    QTest::newRow("rotate 45x 45y 45z") << QTransform().rotate(45, Qt::XAxis)
+        .rotate(45, Qt::YAxis).rotate(45, Qt::ZAxis);
+}
+
+void tst_QGraphicsItem::setTransform()
+{
+    QFETCH(QTransform, transform);
+
+    QGraphicsScene scene;
+    QGraphicsRectItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->setTransform(transform);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::rotate()
+{
+    QGraphicsScene scene;
+    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->rotate(45);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::scale()
+{
+    QGraphicsScene scene;
+    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->scale(2, 2);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::shear()
+{
+    QGraphicsScene scene;
+    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->shear(1.5, 1.5);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::translate()
+{
+    QGraphicsScene scene;
+    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->translate(100, 100);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+void tst_QGraphicsItem::setRotation()
+{
+    QGraphicsScene scene;
+    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
+
+    QBENCHMARK {
+        item->setRotation(45);
+        item->transform(); // prevent lazy optimizing
+    }
+}
+
+QTEST_MAIN(tst_QGraphicsItem)
+#include "tst_qgraphicsitem.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro b/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
new file mode 100644
index 0000000..b460e2a
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsscene/qgraphicsscene.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicsscene
+
+SOURCES += tst_qgraphicsscene.cpp
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
new file mode 100644
index 0000000..5bd07f9
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -0,0 +1,248 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+
+//TESTED_FILES=
+
+class tst_QGraphicsScene : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QGraphicsScene();
+    virtual ~tst_QGraphicsScene();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void construct();
+    void addItem_data();
+    void addItem();
+    void itemAt_data();
+    void itemAt();
+    void initialShow();
+};
+
+tst_QGraphicsScene::tst_QGraphicsScene()
+{
+}
+
+tst_QGraphicsScene::~tst_QGraphicsScene()
+{
+}
+
+void tst_QGraphicsScene::init()
+{
+}
+
+void tst_QGraphicsScene::cleanup()
+{
+}
+
+void tst_QGraphicsScene::construct()
+{
+    QBENCHMARK {
+        QGraphicsScene scene;
+    }
+}
+
+void tst_QGraphicsScene::addItem_data()
+{
+    QTest::addColumn<int>("indexMethod");
+    QTest::addColumn<QRectF>("sceneRect");
+    QTest::addColumn<int>("numItems_X");
+    QTest::addColumn<int>("numItems_Y");
+    QTest::addColumn<int>("itemType");
+    QTest::addColumn<QRectF>("itemRect");
+
+    QTest::newRow("null") << 0 << QRectF() << 0 << 0 << 0 << QRectF();
+    QTest::newRow("0 QRectF() 10 x  10 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 25 x  25 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,0)") << 0 << QRectF() << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  10 x  10 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("0 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 10 x  10 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  10 x  10 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+    QTest::newRow("1 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
+}
+
+void tst_QGraphicsScene::addItem()
+{
+    QFETCH(int, indexMethod);
+    QFETCH(QRectF, sceneRect);
+    QFETCH(int, numItems_X);
+    QFETCH(int, numItems_Y);
+    QFETCH(int, itemType);
+    QFETCH(QRectF, itemRect);
+
+    QGraphicsScene scene;
+    scene.setItemIndexMethod(indexMethod ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
+    if (!sceneRect.isNull())
+        scene.setSceneRect(sceneRect);
+
+    QBENCHMARK {
+        QGraphicsItem *item = 0;
+        for (int y = 0; y < numItems_Y; ++y) {
+            for (int x = 0; x < numItems_X; ++x) {
+                switch (itemType) {
+                case QGraphicsRectItem::Type:
+                    item = new QGraphicsRectItem(itemRect);
+                    break;
+                case QGraphicsEllipseItem::Type:
+                default:
+                    item = new QGraphicsEllipseItem(itemRect);
+                    break;
+                }
+                item->setPos(x * itemRect.width(), y * itemRect.height());
+                scene.addItem(item);
+            }
+        }
+        scene.itemAt(0, 0);
+    }
+    //let QGraphicsScene::_q_polishItems be called so ~QGraphicsItem doesn't spend all his time cleaning the unpolished list
+    qApp->processEvents();
+}
+
+void tst_QGraphicsScene::itemAt_data()
+{
+    QTest::addColumn<int>("bspTreeDepth");
+    QTest::addColumn<QRectF>("sceneRect");
+    QTest::addColumn<int>("numItems_X");
+    QTest::addColumn<int>("numItems_Y");
+    QTest::addColumn<QRectF>("itemRect");
+
+    QTest::newRow("null") << 0 << QRectF() << 0 << 0 << QRectF();
+    QTest::newRow("NoIndex 10x10") << -1 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("NoIndex 25x25") << -1 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("NoIndex 100x100") << -1 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("NoIndex 250x250") << -1 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=auto 10x10") << 0 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=auto 25x25") << 0 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=auto 100x100") << 0 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=auto 250x250") << 0 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=16 10x10") << 16 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=16 25x25") << 16 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=16 100x100") << 16 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
+    QTest::newRow("BspTreeIndex depth=16 250x250") << 16 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
+}
+
+void tst_QGraphicsScene::itemAt()
+{
+    QFETCH(int, bspTreeDepth);
+    QFETCH(QRectF, sceneRect);
+    QFETCH(int, numItems_X);
+    QFETCH(int, numItems_Y);
+    QFETCH(QRectF, itemRect);
+
+    QGraphicsScene scene;
+    scene.setItemIndexMethod(bspTreeDepth >= 0 ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
+    if (bspTreeDepth > 0)
+        scene.setBspTreeDepth(bspTreeDepth);
+    if (!sceneRect.isNull())
+        scene.setSceneRect(sceneRect);
+
+    QGraphicsItem *item = 0;
+    for (int y = 0; y < numItems_Y; ++y) {
+        for (int x = 0; x < numItems_X; ++x) {
+            QGraphicsRectItem *item = new QGraphicsRectItem(itemRect);
+            item->setPos((x - numItems_X/2) * itemRect.width(), (y - numItems_Y/2) * itemRect.height());
+            scene.addItem(item);
+        }
+    }
+
+    scene.itemAt(0, 0); // triggers indexing
+
+    QBENCHMARK {
+        scene.itemAt(0, 0);
+    }
+
+    //let QGraphicsScene::_q_polishItems be called so ~QGraphicsItem doesn't spend all his time cleaning the unpolished list
+    qApp->processEvents();
+}
+
+void tst_QGraphicsScene::initialShow()
+{
+    QGraphicsScene scene;
+
+    QBENCHMARK {
+        for (int y = 0; y < 30000; ++y) {
+            QGraphicsRectItem *item = new QGraphicsRectItem(0, 0, 50, 50);
+            item->setPos((y/2) * item->rect().width(), (y/2) * item->rect().height());
+            scene.addItem(item);
+        }
+        scene.itemAt(0, 0); // triggers indexing
+        //This call polish the items so we bench their processing too.
+        qApp->processEvents();
+    }
+}
+
+QTEST_MAIN(tst_QGraphicsScene)
+#include "tst_qgraphicsscene.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
new file mode 100644
index 0000000..77b86c1
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "chip.h"
+
+#include <QtGui>
+
+Chip::Chip(const QColor &color, int x, int y)
+{
+    this->x = x;
+    this->y = y;
+    this->color = color;
+    setZValue((x + y) % 2);
+
+    setFlags(ItemIsSelectable | ItemIsMovable);
+    setAcceptsHoverEvents(true);
+}
+
+QRectF Chip::boundingRect() const
+{
+    return QRectF(0, 0, 110, 70);
+}
+
+QPainterPath Chip::shape() const
+{
+    QPainterPath path;
+    path.addRect(14, 14, 82, 42);
+    return path;
+}
+
+void Chip::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(widget);
+
+    QColor fillColor = (option->state & QStyle::State_Selected) ? color.dark(150) : color;
+    if (option->state & QStyle::State_MouseOver)
+        fillColor = fillColor.light(125);
+
+    if (option->levelOfDetail < 0.2) {
+        if (option->levelOfDetail < 0.125) {
+            painter->fillRect(QRectF(0, 0, 110, 70), fillColor);
+            return;
+        }
+
+        painter->setPen(QPen(Qt::black, 0));
+        painter->setBrush(fillColor);
+        painter->drawRect(13, 13, 97, 57);
+        return;
+    }
+
+    QPen oldPen = painter->pen();
+    QPen pen = oldPen;
+    int width = 0;
+    if (option->state & QStyle::State_Selected)
+        width += 2;
+
+    pen.setWidth(width);
+    painter->setBrush(QBrush(fillColor.dark(option->state & QStyle::State_Sunken ? 120 : 100)));
+
+    painter->drawRect(QRect(14, 14, 79, 39));
+    if (option->levelOfDetail >= 1) {
+        painter->setPen(QPen(Qt::gray, 1));
+        painter->drawLine(15, 54, 94, 54);
+        painter->drawLine(94, 53, 94, 15);
+        painter->setPen(QPen(Qt::black, 0));
+    }
+
+    // Draw text
+    if (option->levelOfDetail >= 2) {
+        QFont font("Times", 10);
+        font.setStyleStrategy(QFont::ForceOutline);
+        painter->setFont(font);
+        painter->save();
+        painter->scale(0.1, 0.1);
+        painter->drawText(170, 180, QString("Model: VSC-2000 (Very Small Chip) at %1x%2").arg(x).arg(y));
+        painter->drawText(170, 200, QString("Serial number: DLWR-WEER-123L-ZZ33-SDSJ"));
+        painter->drawText(170, 220, QString("Manufacturer: Chip Manufacturer"));
+        painter->restore();
+    }
+
+    // Draw lines
+    QVarLengthArray<QLineF, 36> lines;
+    if (option->levelOfDetail >= 0.5) {
+        for (int i = 0; i <= 10; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
+            lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5));
+            lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62));
+        }
+        for (int i = 0; i <= 6; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
+            lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5));
+            lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5));
+        }
+    }
+    if (option->levelOfDetail >= 0.4) {
+        const QLineF lineData[] = {
+            QLineF(25, 35, 35, 35),
+            QLineF(35, 30, 35, 40),
+            QLineF(35, 30, 45, 35),
+            QLineF(35, 40, 45, 35),
+            QLineF(45, 30, 45, 40),
+            QLineF(45, 35, 55, 35)
+        };
+        lines.append(lineData, 6);
+    }
+    painter->drawLines(lines.data(), lines.size());
+
+    // Draw red ink
+    if (stuff.size() > 1) {
+        painter->setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        painter->setBrush(Qt::NoBrush);
+        QPainterPath path;
+        path.moveTo(stuff.first());
+        for (int i = 1; i < stuff.size(); ++i)
+            path.lineTo(stuff.at(i));
+        painter->drawPath(path);
+    }
+}
+
+void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    QGraphicsItem::mousePressEvent(event);
+    update();
+}
+
+void Chip::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (event->modifiers() & Qt::ShiftModifier) {
+        stuff << event->pos();
+        update();
+        return;
+    }
+    QGraphicsItem::mouseMoveEvent(event);
+}
+
+void Chip::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    QGraphicsItem::mouseReleaseEvent(event);
+    update();
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug
new file mode 100644
index 0000000..8fe1e5b
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.debug differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
new file mode 100644
index 0000000..9db23f9
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CHIP_H
+#define CHIP_H
+
+#include <QtGui/QColor>
+#include <QtGui/QGraphicsItem>
+
+class Chip : public QGraphicsItem
+{
+public:
+    Chip(const QColor &color, int x, int y);
+
+    QRectF boundingRect() const;
+    QPainterPath shape() const;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
+
+protected:
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+private:
+    int x, y;
+    QColor color;
+    QList<QPointF> stuff;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro
new file mode 100644
index 0000000..53fa23b
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.pro
@@ -0,0 +1,19 @@
+RESOURCES += images.qrc
+
+HEADERS += mainwindow.h view.h chip.h
+SOURCES += main.cpp
+SOURCES += mainwindow.cpp view.cpp chip.cpp
+
+contains(QT_CONFIG, opengl):QT += opengl
+
+build_all:!build_pass {
+    CONFIG -= build_all
+    CONFIG += release
+}
+
+# install
+target.path = $$[QT_INSTALL_DEMOS]/chip
+sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.pro *.html *.doc images
+sources.path = $$[QT_INSTALL_DEMOS]/chip
+INSTALLS += target sources
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png
new file mode 100644
index 0000000..ba7c02d
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/fileprint.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/images.qrc b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/images.qrc
new file mode 100644
index 0000000..c7cdf0c
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/images.qrc
@@ -0,0 +1,10 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>qt4logo.png</file>
+    <file>zoomin.png</file>
+    <file>zoomout.png</file>
+    <file>rotateleft.png</file>
+    <file>rotateright.png</file>
+    <file>fileprint.png</file>
+</qresource>
+</RCC>
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
new file mode 100644
index 0000000..ea2f94a
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "mainwindow.h"
+
+#include <QApplication>
+
+int main(int argc, char **argv)
+{
+    Q_INIT_RESOURCE(images);
+
+    QApplication app(argc, argv);
+    app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
+
+    MainWindow window;
+    window.show();   
+
+    return app.exec();
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
new file mode 100644
index 0000000..452b42c
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "mainwindow.h"
+#include "view.h"
+#include "chip.h"
+
+#include <QtGui>
+
+MainWindow::MainWindow(QWidget *parent)
+    : QWidget(parent)
+{
+    populateScene();
+
+    View *view = new View("Top left view");
+    view->view()->setScene(scene);
+    QHBoxLayout *layout = new QHBoxLayout;
+    layout->addWidget(view);
+    setLayout(layout);
+
+    setWindowTitle(tr("Chip Demo"));
+}
+
+void MainWindow::populateScene()
+{
+    scene = new QGraphicsScene;
+
+    QImage image(":/qt4logo.png");
+
+    // Populate scene
+    int xx = 0;
+    int nitems = 0;
+    for (int i = -11000; i < 11000; i += 110) {
+        ++xx;
+        int yy = 0;
+        for (int j = -7000; j < 7000; j += 70) {
+            ++yy;
+            qreal x = (i + 11000) / 22000.0;
+            qreal y = (j + 7000) / 14000.0;
+
+            QColor color(image.pixel(int(image.width() * x), int(image.height() * y)));
+            QGraphicsItem *item = new Chip(color, xx, yy);
+            item->setPos(QPointF(i, j));
+            scene->addItem(item);
+
+            ++nitems;
+        }
+    }
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
new file mode 100644
index 0000000..558bbef
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QtGui/qwidget.h>
+
+QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
+QT_FORWARD_DECLARE_CLASS(QGraphicsView)
+QT_FORWARD_DECLARE_CLASS(QLabel)
+QT_FORWARD_DECLARE_CLASS(QSlider)
+QT_FORWARD_DECLARE_CLASS(QSplitter)
+
+class MainWindow : public QWidget
+{
+    Q_OBJECT
+public:
+    MainWindow(QWidget *parent = 0);
+    
+private:
+    void setupMatrix();
+    void populateScene();
+
+    QGraphicsScene *scene;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png
new file mode 100644
index 0000000..157e86e
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/qt4logo.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateleft.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateleft.png
new file mode 100644
index 0000000..8cfa931
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateleft.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateright.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateright.png
new file mode 100644
index 0000000..ec5e866
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/rotateright.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
new file mode 100644
index 0000000..1028f42
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
@@ -0,0 +1,257 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "view.h"
+
+#include <QtGui>
+#include "valgrind/callgrind.h"
+#ifndef QT_NO_OPENGL
+#include <QtOpenGL>
+#endif
+
+#include <qmath.h>
+
+class CountView : public QGraphicsView
+{
+protected:
+    void paintEvent(QPaintEvent *event)
+    {
+        static int n = 0;
+        if (n)
+            CALLGRIND_START_INSTRUMENTATION
+        QGraphicsView::paintEvent(event);
+        if (n)
+            CALLGRIND_STOP_INSTRUMENTATION
+        if (++n == 500)
+            qApp->quit();
+    }
+};
+
+View::View(const QString &name, QWidget *parent)
+    : QFrame(parent)
+{
+    setFrameStyle(Sunken | StyledPanel);
+    graphicsView = new CountView;
+    graphicsView->setRenderHint(QPainter::Antialiasing, false);
+    graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
+    graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
+
+    int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
+    QSize iconSize(size, size);
+
+    QToolButton *zoomInIcon = new QToolButton;
+    zoomInIcon->setAutoRepeat(true);
+    zoomInIcon->setAutoRepeatInterval(33);
+    zoomInIcon->setAutoRepeatDelay(0);
+    zoomInIcon->setIcon(QPixmap(":/zoomin.png"));
+    zoomInIcon->setIconSize(iconSize);
+    QToolButton *zoomOutIcon = new QToolButton;
+    zoomOutIcon->setAutoRepeat(true);
+    zoomOutIcon->setAutoRepeatInterval(33);
+    zoomOutIcon->setAutoRepeatDelay(0);
+    zoomOutIcon->setIcon(QPixmap(":/zoomout.png"));
+    zoomOutIcon->setIconSize(iconSize);
+    zoomSlider = new QSlider;
+    zoomSlider->setMinimum(0);
+    zoomSlider->setMaximum(500);
+    zoomSlider->setValue(250);
+    zoomSlider->setTickPosition(QSlider::TicksRight);
+
+    // Zoom slider layout
+    QVBoxLayout *zoomSliderLayout = new QVBoxLayout;
+    zoomSliderLayout->addWidget(zoomInIcon);
+    zoomSliderLayout->addWidget(zoomSlider);
+    zoomSliderLayout->addWidget(zoomOutIcon);
+
+    QToolButton *rotateLeftIcon = new QToolButton;
+    rotateLeftIcon->setIcon(QPixmap(":/rotateleft.png"));
+    rotateLeftIcon->setIconSize(iconSize);
+    QToolButton *rotateRightIcon = new QToolButton;
+    rotateRightIcon->setIcon(QPixmap(":/rotateright.png"));
+    rotateRightIcon->setIconSize(iconSize);
+    rotateSlider = new QSlider;
+    rotateSlider->setOrientation(Qt::Horizontal);
+    rotateSlider->setMinimum(-360);
+    rotateSlider->setMaximum(360);
+    rotateSlider->setValue(0);
+    rotateSlider->setTickPosition(QSlider::TicksBelow);
+
+    // Rotate slider layout
+    QHBoxLayout *rotateSliderLayout = new QHBoxLayout;
+    rotateSliderLayout->addWidget(rotateLeftIcon);
+    rotateSliderLayout->addWidget(rotateSlider);
+    rotateSliderLayout->addWidget(rotateRightIcon);
+
+    resetButton = new QToolButton;
+    resetButton->setText(tr("0"));
+    resetButton->setEnabled(false);
+
+    // Label layout
+    QHBoxLayout *labelLayout = new QHBoxLayout;
+    label = new QLabel(name);
+    antialiasButton = new QToolButton;
+    antialiasButton->setText(tr("Antialiasing"));
+    antialiasButton->setCheckable(true);
+    antialiasButton->setChecked(false);
+    openGlButton = new QToolButton;
+    openGlButton->setText(tr("OpenGL"));
+    openGlButton->setCheckable(true);
+#ifndef QT_NO_OPENGL
+    openGlButton->setEnabled(QGLFormat::hasOpenGL());
+#else
+    openGlButton->setEnabled(false);
+#endif
+    printButton = new QToolButton;
+    printButton->setIcon(QIcon(QPixmap(":/fileprint.png")));
+
+    labelLayout->addWidget(label);
+    labelLayout->addStretch();
+    labelLayout->addWidget(antialiasButton);
+    labelLayout->addWidget(openGlButton);
+    labelLayout->addWidget(printButton);
+
+    QGridLayout *topLayout = new QGridLayout;
+    topLayout->addLayout(labelLayout, 0, 0);
+    topLayout->addWidget(graphicsView, 1, 0);
+    topLayout->addLayout(zoomSliderLayout, 1, 1);
+    topLayout->addLayout(rotateSliderLayout, 2, 0);
+    topLayout->addWidget(resetButton, 2, 1);
+    setLayout(topLayout);
+
+    connect(resetButton, SIGNAL(clicked()), this, SLOT(resetView()));
+    connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
+    connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
+    connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
+    connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
+    connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing()));
+    connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL()));
+    connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft()));
+    connect(rotateRightIcon, SIGNAL(clicked()), this, SLOT(rotateRight()));
+    connect(zoomInIcon, SIGNAL(clicked()), this, SLOT(zoomIn()));
+    connect(zoomOutIcon, SIGNAL(clicked()), this, SLOT(zoomOut()));
+    connect(printButton, SIGNAL(clicked()), this, SLOT(print()));
+
+    setupMatrix();
+
+    startTimer(0);
+}
+
+QGraphicsView *View::view() const
+{
+    return graphicsView;
+}
+
+void View::resetView()
+{
+    zoomSlider->setValue(250);
+    rotateSlider->setValue(0);
+    setupMatrix();
+    graphicsView->ensureVisible(QRectF(0, 0, 0, 0));
+
+    resetButton->setEnabled(false);
+}
+
+void View::setResetButtonEnabled()
+{
+    resetButton->setEnabled(true);
+}
+
+void View::setupMatrix()
+{
+    qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50));
+
+    QMatrix matrix;
+    matrix.scale(scale, scale);
+    matrix.rotate(rotateSlider->value());
+
+    graphicsView->setMatrix(matrix);
+    setResetButtonEnabled();
+}
+
+void View::toggleOpenGL()
+{
+#ifndef QT_NO_OPENGL
+    graphicsView->setViewport(openGlButton->isChecked() ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : new QWidget);
+#endif
+}
+
+void View::toggleAntialiasing()
+{
+    graphicsView->setRenderHint(QPainter::Antialiasing, antialiasButton->isChecked());
+}
+
+void View::print()
+{
+#ifndef QT_NO_PRINTER
+    QPrinter printer;
+    QPrintDialog dialog(&printer, this);
+    if (dialog.exec() == QDialog::Accepted) {
+        QPainter painter(&printer);
+        graphicsView->render(&painter);
+    }
+#endif
+}
+
+void View::zoomIn()
+{
+    zoomSlider->setValue(zoomSlider->value() + 1);
+}
+
+void View::zoomOut()
+{
+    zoomSlider->setValue(zoomSlider->value() - 1);
+}
+
+void View::rotateLeft()
+{
+    rotateSlider->setValue(rotateSlider->value() - 10);
+}
+
+void View::rotateRight()
+{
+    rotateSlider->setValue(rotateSlider->value() + 10);
+}
+
+void View::timerEvent(QTimerEvent *)
+{
+    graphicsView->horizontalScrollBar()->setValue(graphicsView->horizontalScrollBar()->value() + 1);
+}
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
new file mode 100644
index 0000000..fc5c226
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef VIEW_H
+#define VIEW_H
+
+#include <QFrame>
+
+QT_FORWARD_DECLARE_CLASS(QGraphicsView)
+QT_FORWARD_DECLARE_CLASS(QLabel)
+QT_FORWARD_DECLARE_CLASS(QSlider)
+QT_FORWARD_DECLARE_CLASS(QToolButton)
+
+class View : public QFrame
+{
+    Q_OBJECT
+public:
+    View(const QString &name, QWidget *parent = 0);
+
+    QGraphicsView *view() const;
+
+private slots:
+    void resetView();
+    void setResetButtonEnabled();
+    void setupMatrix();
+    void toggleOpenGL();
+    void toggleAntialiasing();
+    void print();
+
+    void zoomIn();
+    void zoomOut();
+    void rotateLeft();
+    void rotateRight();
+
+    void timerEvent(QTimerEvent *);
+    
+private:
+    QGraphicsView *graphicsView;
+    QLabel *label;
+    QToolButton *openGlButton;
+    QToolButton *antialiasButton;
+    QToolButton *printButton;
+    QToolButton *resetButton;
+    QSlider *zoomSlider;
+    QSlider *rotateSlider;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png
new file mode 100644
index 0000000..8b0daee
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomin.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png
new file mode 100644
index 0000000..1575dd2
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/zoomout.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
new file mode 100644
index 0000000..527713f
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
@@ -0,0 +1,106 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+#include "valgrind/callgrind.h"
+
+#ifdef Q_WS_X11
+extern void qt_x11_wait_for_window_manager(QWidget *);
+#endif
+
+class View : public QGraphicsView
+{
+    Q_OBJECT
+public:
+    View(QGraphicsScene *scene, QGraphicsItem *item)
+        : QGraphicsView(scene), _item(item)
+    {
+    }
+
+protected:
+    void paintEvent(QPaintEvent *event)
+    {
+        static int n = 0;
+        if (n)
+            CALLGRIND_START_INSTRUMENTATION
+        QGraphicsView::paintEvent(event);
+        _item->moveBy(1, 1);
+        if (n)
+            CALLGRIND_STOP_INSTRUMENTATION
+        if (++n == 200)
+            qApp->quit();
+    }
+
+private:
+    QGraphicsItem *_item;
+};
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    if (argc < 2) {
+        qDebug("usage: ./%s <numItems>", argv[0]);
+        return 1;
+    }
+
+    QGraphicsScene scene(-150, -150, 300, 300);
+    scene.setItemIndexMethod(QGraphicsScene::NoIndex);
+
+    QGraphicsRectItem *item = scene.addRect(-50, -50, 100, 100, QPen(Qt::NoPen), QBrush(Qt::blue));
+    item->setFlag(QGraphicsItem::ItemIsMovable);
+
+    for (int i = 0; i < atoi(argv[1]); ++i) {
+        QGraphicsRectItem *child = scene.addRect(-5, -5, 10, 10, QPen(Qt::NoPen), QBrush(Qt::blue));
+        child->setPos(-50 + qrand() % 100, -50 + qrand() % 100);
+        child->setParentItem(item);
+    }
+
+    View view(&scene, item);
+    view.resize(300, 300);
+    view.show();
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+
+    return app.exec();
+}
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro
new file mode 100644
index 0000000..28dcadc
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/moveItems.pro
@@ -0,0 +1 @@
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
new file mode 100644
index 0000000..7419206
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+#include "valgrind/callgrind.h"
+
+class ItemMover : public QObject
+{
+    Q_OBJECT
+public:
+    ItemMover(QGraphicsItem *item)
+        : _item(item)
+    {
+        startTimer(0);
+    }
+
+protected:
+    void timerEvent(QTimerEvent *event)
+    {
+        _item->moveBy(-1, 0);
+    }
+
+private:
+    QGraphicsItem *_item;
+};
+
+class ClipItem : public QGraphicsRectItem
+{
+public:
+    ClipItem(qreal x, qreal y, qreal w, qreal h, const QPen &pen, const QBrush &brush)
+        : QGraphicsRectItem(x, y, w, h)
+    {
+        setPen(pen);
+        setBrush(brush);
+    }
+
+    QPainterPath shape() const
+    {
+        QPainterPath path;
+        path.addRect(rect());
+        return path;
+    }
+};
+
+class CountView : public QGraphicsView
+{
+protected:
+    void paintEvent(QPaintEvent *event)
+    {
+        static int n = 0;
+        if (n)
+            CALLGRIND_START_INSTRUMENTATION
+        QGraphicsView::paintEvent(event);
+        if (n)
+            CALLGRIND_STOP_INSTRUMENTATION
+        if (++n == 500)
+            qApp->quit();
+    }
+};
+
+int main(int argc, char *argv[])
+{
+    QApplication app(argc, argv);
+
+    QGraphicsScene scene;
+    scene.setItemIndexMethod(QGraphicsScene::NoIndex);
+
+    ClipItem *clipItem = new ClipItem(0, 0, 100, 100, QPen(), QBrush(Qt::blue));
+    clipItem->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+    clipItem->setData(0, "clipItem");
+    scene.addItem(clipItem);
+
+    QGraphicsRectItem *scrollItem = scene.addRect(0, 0, 10, 10, QPen(Qt::NoPen), QBrush(Qt::NoBrush));
+    scrollItem->setParentItem(clipItem);
+    scrollItem->setFlag(QGraphicsItem::ItemIsMovable);
+    scrollItem->setData(0, "scrollItem");
+
+    for (int y = 0; y < 25; ++y) {
+        for (int x = 0; x < 25; ++x) {
+            ClipItem *rect = new ClipItem(0, 0, 90, 20, QPen(Qt::NoPen), QBrush(Qt::green));
+            rect->setParentItem(scrollItem);
+            rect->setPos(x * 95, y * 25);
+            rect->setData(0, qPrintable(QString("rect %1 %2").arg(x).arg(y)));
+            rect->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+
+            QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(-5, -5, 10, 10);
+            ellipse->setPen(QPen(Qt::NoPen));
+            ellipse->setBrush(QBrush(Qt::yellow));
+            ellipse->setParentItem(rect);
+            ellipse->setData(0, qPrintable(QString("ellipse %1 %2").arg(x).arg(y)));
+        }
+    }
+
+    scrollItem->setRect(scrollItem->childrenBoundingRect());
+
+#if 0
+    ItemMover mover(scrollItem);
+#endif
+
+    CountView view;
+    view.setScene(&scene);
+    view.setSceneRect(-25, -25, 150, 150);
+    view.resize(300, 300);
+    view.show();
+
+    return app.exec();
+}
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro
new file mode 100644
index 0000000..28dcadc
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/scrolltest.pro
@@ -0,0 +1 @@
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
new file mode 100644
index 0000000..4c1020a
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
@@ -0,0 +1,182 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "chip.h"
+
+#include <QtGui>
+
+Chip::Chip(const QColor &color, int x, int y)
+{
+    this->x = x;
+    this->y = y;
+    this->color = color;
+    setZValue((x + y) % 2);
+
+    setFlags(ItemIsSelectable | ItemIsMovable);
+    setAcceptsHoverEvents(true);
+}
+
+QRectF Chip::boundingRect() const
+{
+    return QRectF(0, 0, 110, 70);
+}
+
+QPainterPath Chip::shape() const
+{
+    QPainterPath path;
+    path.addRect(14, 14, 82, 42);
+    return path;
+}
+
+void Chip::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+    Q_UNUSED(widget);
+
+    QColor fillColor = (option->state & QStyle::State_Selected) ? color.dark(150) : color;
+    if (option->state & QStyle::State_MouseOver)
+        fillColor = fillColor.light(125);
+
+    if (option->levelOfDetail < 0.2) {
+        if (option->levelOfDetail < 0.125) {
+            painter->fillRect(QRectF(0, 0, 110, 70), fillColor);
+            return;
+        }
+
+        QBrush b = painter->brush();
+        painter->setBrush(fillColor);
+        painter->drawRect(13, 13, 97, 57);
+        painter->setBrush(b);
+        return;
+    }
+
+    QPen oldPen = painter->pen();
+    QPen pen = oldPen;
+    int width = 0;
+    if (option->state & QStyle::State_Selected)
+        width += 2;
+
+    pen.setWidth(width);
+    QBrush b = painter->brush();
+    painter->setBrush(QBrush(fillColor.dark(option->state & QStyle::State_Sunken ? 120 : 100)));
+
+    painter->drawRect(QRect(14, 14, 79, 39));
+    painter->setBrush(b);
+
+    if (option->levelOfDetail >= 1) {
+        painter->setPen(QPen(Qt::gray, 1));
+        painter->drawLine(15, 54, 94, 54);
+        painter->drawLine(94, 53, 94, 15);
+        painter->setPen(QPen(Qt::black, 0));
+    }
+
+    // Draw text
+    if (option->levelOfDetail >= 2) {
+        QFont font("Times", 10);
+        font.setStyleStrategy(QFont::ForceOutline);
+        painter->setFont(font);
+        painter->save();
+        painter->scale(0.1, 0.1);
+        painter->drawText(170, 180, QString("Model: VSC-2000 (Very Small Chip) at %1x%2").arg(x).arg(y));
+        painter->drawText(170, 200, QString("Serial number: DLWR-WEER-123L-ZZ33-SDSJ"));
+        painter->drawText(170, 220, QString("Manufacturer: Chip Manufacturer"));
+        painter->restore();
+    }
+
+    // Draw lines
+    QVarLengthArray<QLineF, 36> lines;
+    if (option->levelOfDetail >= 0.5) {
+        for (int i = 0; i <= 10; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
+            lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5));
+            lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62));
+        }
+        for (int i = 0; i <= 6; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
+            lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5));
+            lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5));
+        }
+    }
+    if (option->levelOfDetail >= 0.4) {
+        const QLineF lineData[] = {
+            QLineF(25, 35, 35, 35),
+            QLineF(35, 30, 35, 40),
+            QLineF(35, 30, 45, 35),
+            QLineF(35, 40, 45, 35),
+            QLineF(45, 30, 45, 40),
+            QLineF(45, 35, 55, 35)
+        };
+        lines.append(lineData, 6);
+    }
+    painter->drawLines(lines.data(), lines.size());
+
+    // Draw red ink
+    if (stuff.size() > 1) {
+        QPen p = painter->pen();
+        painter->setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        painter->setBrush(Qt::NoBrush);
+        QPainterPath path;
+        path.moveTo(stuff.first());
+        for (int i = 1; i < stuff.size(); ++i)
+            path.lineTo(stuff.at(i));
+        painter->drawPath(path);
+        painter->setPen(p);
+    }
+}
+
+void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
+{
+    QGraphicsItem::mousePressEvent(event);
+    update();
+}
+
+void Chip::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+{
+    if (event->modifiers() & Qt::ShiftModifier) {
+        stuff << event->pos();
+        update();
+        return;
+    }
+    QGraphicsItem::mouseMoveEvent(event);
+}
+
+void Chip::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    QGraphicsItem::mouseReleaseEvent(event);
+    update();
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
new file mode 100644
index 0000000..9db23f9
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CHIP_H
+#define CHIP_H
+
+#include <QtGui/QColor>
+#include <QtGui/QGraphicsItem>
+
+class Chip : public QGraphicsItem
+{
+public:
+    Chip(const QColor &color, int x, int y);
+
+    QRectF boundingRect() const;
+    QPainterPath shape() const;
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
+
+protected:
+    void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+
+private:
+    int x, y;
+    QColor color;
+    QList<QPointF> stuff;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
new file mode 100644
index 0000000..8cada67
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "chiptester.h"
+#include "chip.h"
+
+#include <QtGui>
+#ifndef QT_NO_OPENGL
+#include <QtOpenGL>
+#endif
+
+ChipTester::ChipTester(QWidget *parent)
+    : QGraphicsView(parent),
+      npaints(0)
+{
+    resize(400, 300);
+    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    setFrameStyle(0);
+    setTransformationAnchor(NoAnchor);
+
+    populateScene();
+    setScene(scene);
+
+    setWindowTitle(tr("Chip Demo"));
+}
+
+void ChipTester::setAntialias(bool enabled)
+{
+    setRenderHint(QPainter::Antialiasing, enabled);
+}
+
+void ChipTester::setOpenGL(bool enabled)
+{
+#ifndef QT_NO_OPENGL
+    setViewport(enabled ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : 0);
+#endif
+}
+
+void ChipTester::setOperation(Operation operation)
+{
+    this->operation = operation;
+}
+
+void ChipTester::runBenchmark()
+{
+    npaints = 0;
+    timerId = startTimer(0);
+    stopWatch.start();
+    eventLoop.exec();
+    killTimer(timerId);
+}
+
+void ChipTester::paintEvent(QPaintEvent *event)
+{
+    QGraphicsView::paintEvent(event);
+    if (++npaints == 50)
+	eventLoop.quit();
+}
+
+void ChipTester::timerEvent(QTimerEvent *)
+{
+    switch (operation) {
+    case Rotate360:
+	rotate(1);
+	break;
+    case ZoomInOut: {
+	qreal s = 0.05 + (npaints / 20.0);
+	setTransform(QTransform().scale(s, s));
+	break;
+    }
+    case Translate: {
+	int offset = horizontalScrollBar()->minimum()
+	    + (npaints % (horizontalScrollBar()->maximum() - horizontalScrollBar()->minimum()));
+	horizontalScrollBar()->setValue(offset);
+	break;
+    }
+    }
+}
+
+void ChipTester::populateScene()
+{
+    scene = new QGraphicsScene;
+
+    QImage image(":/qt4logo.png");
+
+    // Populate scene
+    int xx = 0;
+    int nitems = 0;
+    for (int i = -1100; i < 1100; i += 110) {
+        ++xx;
+        int yy = 0;
+        for (int j = -700; j < 700; j += 70) {
+            ++yy;
+            qreal x = (i + 1100) / 2200.0;
+            qreal y = (j + 700) / 1400.0;
+
+            QColor color(image.pixel(int(image.width() * x), int(image.height() * y)));
+            QGraphicsItem *item = new Chip(color, xx, yy);
+            item->setPos(QPointF(i, j));
+            scene->addItem(item);
+
+            ++nitems;
+        }
+    }
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
new file mode 100644
index 0000000..1a73bb7
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CHIPTESTER_H
+#define CHIPTESTER_H
+
+#include <QtGui>
+
+QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
+QT_FORWARD_DECLARE_CLASS(QGraphicsView)
+QT_FORWARD_DECLARE_CLASS(QLabel)
+QT_FORWARD_DECLARE_CLASS(QSlider)
+QT_FORWARD_DECLARE_CLASS(QSplitter)
+
+class ChipTester : public QGraphicsView
+{
+    Q_OBJECT
+public:
+    enum Operation {
+	Rotate360,
+	ZoomInOut,
+	Translate
+    };
+    ChipTester(QWidget *parent = 0);
+    
+    void setAntialias(bool enabled);
+    void setOpenGL(bool enabled);
+    void runBenchmark();
+    void setOperation(Operation operation);
+
+protected:
+    void paintEvent(QPaintEvent *event);
+    void timerEvent(QTimerEvent *event);
+
+private:
+    void populateScene();
+
+    QGraphicsView *view;    
+    QGraphicsScene *scene;
+    int npaints;
+    int timerId;
+    QEventLoop eventLoop;
+    QTime stopWatch;
+    Operation operation;
+};
+
+#endif
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
new file mode 100644
index 0000000..a9e0bf8
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.pri
@@ -0,0 +1,12 @@
+SOURCES += \
+	chiptester/chiptester.cpp \
+	chiptester/chip.cpp
+
+HEADERS += \
+	chiptester/chiptester.h \
+	chiptester/chip.h
+
+RESOURCES += \
+        chiptester/images.qrc
+
+contains(QT_CONFIG, opengl) QT += opengl
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/images.qrc b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/images.qrc
new file mode 100644
index 0000000..73e8620
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/images.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>qt4logo.png</file>
+</qresource>
+</RCC>
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/qt4logo.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/qt4logo.png
new file mode 100644
index 0000000..157e86e
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/qt4logo.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/images/designer.png b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/designer.png
new file mode 100644
index 0000000..0988fce
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/designer.png differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine-big.jpeg b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine-big.jpeg
new file mode 100644
index 0000000..9900a50
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine-big.jpeg differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine.jpeg b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine.jpeg
new file mode 100644
index 0000000..8fe1d3a
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/images/wine.jpeg differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
new file mode 100644
index 0000000..927d731
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.pro
@@ -0,0 +1,16 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicsview
+
+SOURCES += tst_qgraphicsview.cpp
+RESOURCES += qgraphicsview.qrc
+
+include(chiptester/chiptester.pri)
+
+symbian {
+   qt_not_deployed {
+      plugins.sources = qjpeg.dll
+      plugins.path = imageformats
+      DEPLOYMENT += plugins
+   }
+}
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.qrc b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.qrc
new file mode 100644
index 0000000..3681648
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/qgraphicsview.qrc
@@ -0,0 +1,9 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>images/designer.png</file>
+    <file>images/wine.jpeg</file>
+    <file>images/wine-big.jpeg</file>
+    <file>random.data</file>
+</qresource>
+</RCC>
+
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/random.data b/tests/benchmarks/gui/graphicsview/qgraphicsview/random.data
new file mode 100644
index 0000000..190a36c
Binary files /dev/null and b/tests/benchmarks/gui/graphicsview/qgraphicsview/random.data differ
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
new file mode 100644
index 0000000..4cb07db
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -0,0 +1,908 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QDebug>
+#include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QImage>
+#ifdef Q_WS_X11
+QT_BEGIN_NAMESPACE
+extern void qt_x11_wait_for_window_manager(QWidget *);
+QT_END_NAMESPACE
+#endif
+#include "chiptester/chiptester.h"
+//#define CALLGRIND_DEBUG
+#ifdef CALLGRIND_DEBUG
+#include "valgrind/callgrind.h"
+#endif
+
+//TESTED_FILES=
+
+class QEventWaiter : public QEventLoop
+{
+public:
+    QEventWaiter(QObject *receiver, QEvent::Type type)
+        : waiting(false), t(type)
+    {
+        receiver->installEventFilter(this);
+    }
+
+    void wait()
+    {
+        waiting = true;
+        exec();
+    }
+
+    bool eventFilter(QObject *receiver, QEvent *event)
+    {
+        Q_UNUSED(receiver);
+        if (waiting && event->type() == t) {
+            waiting = false;
+            exit();
+        }
+        return false;
+    }
+
+private:
+    bool waiting;
+    QEvent::Type t;
+};
+
+class tst_QGraphicsView : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QGraphicsView();
+    virtual ~tst_QGraphicsView();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void construct();
+    void paintSingleItem();
+    void paintDeepStackingItems();
+    void paintDeepStackingItems_clipped();
+    void moveSingleItem();
+    void mapPointToScene_data();
+    void mapPointToScene();
+    void mapPointFromScene_data();
+    void mapPointFromScene();
+    void mapRectToScene_data();
+    void mapRectToScene();
+    void mapRectFromScene_data();
+    void mapRectFromScene();
+    void chipTester_data();
+    void chipTester();
+    void deepNesting_data();
+    void deepNesting();
+    void imageRiver_data();
+    void imageRiver();
+    void textRiver_data();
+    void textRiver();
+    void moveItemCache_data();
+    void moveItemCache();
+    void paintItemCache_data();
+    void paintItemCache();
+};
+
+tst_QGraphicsView::tst_QGraphicsView()
+{
+}
+
+tst_QGraphicsView::~tst_QGraphicsView()
+{
+}
+
+void tst_QGraphicsView::init()
+{
+}
+
+void tst_QGraphicsView::cleanup()
+{
+}
+
+void tst_QGraphicsView::construct()
+{
+    QBENCHMARK {
+        QGraphicsView view;
+    }
+}
+
+void tst_QGraphicsView::paintSingleItem()
+{
+    QGraphicsScene scene(0, 0, 100, 100);
+    scene.addRect(0, 0, 10, 10);
+
+    QGraphicsView view(&scene);
+    view.show();
+    view.resize(100, 100);
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+
+    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
+    QPainter painter(&image);
+    QBENCHMARK {
+        view.viewport()->render(&painter);
+    }
+}
+
+#ifdef Q_OS_SYMBIAN
+#  define DEEP_STACKING_COUNT 85
+#else
+#  define DEEP_STACKING_COUNT 1000
+#endif
+
+void tst_QGraphicsView::paintDeepStackingItems()
+{
+    QGraphicsScene scene(0, 0, 100, 100);
+    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
+    QGraphicsRectItem *lastRect = item;
+    for (int i = 0; i < DEEP_STACKING_COUNT; ++i) {
+        QGraphicsRectItem *rect = scene.addRect(0, 0, 10, 10);
+        rect->setPos(1, 1);
+        rect->setParentItem(lastRect);
+        lastRect = rect;
+    }
+
+    QGraphicsView view(&scene);
+    view.show();
+    view.resize(100, 100);
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+
+    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
+    QPainter painter(&image);
+    QBENCHMARK {
+        view.viewport()->render(&painter);
+    }
+}
+
+void tst_QGraphicsView::paintDeepStackingItems_clipped()
+{
+    QGraphicsScene scene(0, 0, 100, 100);
+    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
+    item->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
+    QGraphicsRectItem *lastRect = item;
+    for (int i = 0; i < DEEP_STACKING_COUNT; ++i) {
+        QGraphicsRectItem *rect = scene.addRect(0, 0, 10, 10);
+        rect->setPos(1, 1);
+        rect->setParentItem(lastRect);
+        lastRect = rect;
+    }
+
+    QGraphicsView view(&scene);
+    view.show();
+    view.resize(100, 100);
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+
+    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
+    QPainter painter(&image);
+    QBENCHMARK {
+        view.viewport()->render(&painter);
+    }
+}
+
+void tst_QGraphicsView::moveSingleItem()
+{
+    QGraphicsScene scene(0, 0, 100, 100);
+    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
+
+    QGraphicsView view(&scene);
+    view.show();
+    view.resize(100, 100);
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+
+    QEventWaiter waiter(view.viewport(), QEvent::Paint);
+    int n = 1;
+    QBENCHMARK {
+        item->setPos(25 * n, 25 * n);
+        waiter.wait();
+        n = n ? 0 : 1;
+    }
+}
+
+void tst_QGraphicsView::mapPointToScene_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<QPoint>("point");
+
+    QTest::newRow("null") << QTransform() << QPoint();
+    QTest::newRow("identity  QPoint(100, 100)") << QTransform() << QPoint(100, 100);
+    QTest::newRow("rotate    QPoint(100, 100)") << QTransform().rotate(90) << QPoint(100, 100);
+    QTest::newRow("scale     QPoint(100, 100)") << QTransform().scale(5, 5) << QPoint(100, 100);
+    QTest::newRow("translate QPoint(100, 100)") << QTransform().translate(5, 5) << QPoint(100, 100);
+    QTest::newRow("shear     QPoint(100, 100)") << QTransform().shear(1.5, 1.5) << QPoint(100, 100);
+    QTest::newRow("perspect  QPoint(100, 100)") << QTransform().rotate(45, Qt::XAxis) << QPoint(100, 100);
+}
+
+void tst_QGraphicsView::mapPointToScene()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(QPoint, point);
+
+    QGraphicsView view;
+    view.setTransform(transform);
+    QBENCHMARK {
+        view.mapToScene(point);
+    }
+}
+
+void tst_QGraphicsView::mapPointFromScene_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<QPointF>("point");
+
+    QTest::newRow("null") << QTransform() << QPointF();
+    QTest::newRow("identity  QPointF(100, 100)") << QTransform() << QPointF(100, 100);
+    QTest::newRow("rotate    QPointF(100, 100)") << QTransform().rotate(90) << QPointF(100, 100);
+    QTest::newRow("scale     QPointF(100, 100)") << QTransform().scale(5, 5) << QPointF(100, 100);
+    QTest::newRow("translate QPointF(100, 100)") << QTransform().translate(5, 5) << QPointF(100, 100);
+    QTest::newRow("shear     QPointF(100, 100)") << QTransform().shear(1.5, 1.5) << QPointF(100, 100);
+    QTest::newRow("perspect  QPointF(100, 100)") << QTransform().rotate(45, Qt::XAxis) << QPointF(100, 100);
+}
+
+void tst_QGraphicsView::mapPointFromScene()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(QPointF, point);
+
+    QGraphicsView view;
+    view.setTransform(transform);
+    QBENCHMARK {
+        view.mapFromScene(point);
+    }
+}
+
+void tst_QGraphicsView::mapRectToScene_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<QRect>("rect");
+
+    QTest::newRow("null") << QTransform() << QRect();
+    QTest::newRow("identity  QRect(0, 0, 100, 100)") << QTransform() << QRect(0, 0, 100, 100);
+    QTest::newRow("rotate    QRect(0, 0, 100, 100)") << QTransform().rotate(90) << QRect(0, 0, 100, 100);
+    QTest::newRow("scale     QRect(0, 0, 100, 100)") << QTransform().scale(5, 5) << QRect(0, 0, 100, 100);
+    QTest::newRow("translate QRect(0, 0, 100, 100)") << QTransform().translate(5, 5) << QRect(0, 0, 100, 100);
+    QTest::newRow("shear     QRect(0, 0, 100, 100)") << QTransform().shear(1.5, 1.5) << QRect(0, 0, 100, 100);
+    QTest::newRow("perspect  QRect(0, 0, 100, 100)") << QTransform().rotate(45, Qt::XAxis) << QRect(0, 0, 100, 100);
+}
+
+void tst_QGraphicsView::mapRectToScene()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(QRect, rect);
+
+    QGraphicsView view;
+    view.setTransform(transform);
+    QBENCHMARK {
+        view.mapToScene(rect);
+    }
+}
+
+void tst_QGraphicsView::mapRectFromScene_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<QRectF>("rect");
+
+    QTest::newRow("null") << QTransform() << QRectF();
+    QTest::newRow("identity  QRectF(0, 0, 100, 100)") << QTransform() << QRectF(0, 0, 100, 100);
+    QTest::newRow("rotate    QRectF(0, 0, 100, 100)") << QTransform().rotate(90) << QRectF(0, 0, 100, 100);
+    QTest::newRow("scale     QRectF(0, 0, 100, 100)") << QTransform().scale(5, 5) << QRectF(0, 0, 100, 100);
+    QTest::newRow("translate QRectF(0, 0, 100, 100)") << QTransform().translate(5, 5) << QRectF(0, 0, 100, 100);
+    QTest::newRow("shear     QRectF(0, 0, 100, 100)") << QTransform().shear(1.5, 1.5) << QRectF(0, 0, 100, 100);
+    QTest::newRow("perspect  QRectF(0, 0, 100, 100)") << QTransform().rotate(45, Qt::XAxis) << QRectF(0, 0, 100, 100);
+}
+
+void tst_QGraphicsView::mapRectFromScene()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(QRectF, rect);
+
+    QGraphicsView view;
+    view.setTransform(transform);
+    QBENCHMARK {
+        view.mapFromScene(rect);
+    }
+}
+
+void tst_QGraphicsView::chipTester_data()
+{
+    QTest::addColumn<bool>("antialias");
+    QTest::addColumn<bool>("opengl");
+    QTest::addColumn<int>("operation");
+    QTest::newRow("rotate, normal") << false << false << 0;
+    QTest::newRow("rotate, normal, antialias") << true << false << 0;
+    QTest::newRow("rotate, opengl") << false << true << 0;
+    QTest::newRow("rotate, opengl, antialias") << true << true << 0;
+    QTest::newRow("zoom, normal") << false << false << 1;
+    QTest::newRow("zoom, normal, antialias") << true << false << 1;
+    QTest::newRow("zoom, opengl") << false << true << 1;
+    QTest::newRow("zoom, opengl, antialias") << true << true << 1;
+    QTest::newRow("translate, normal") << false << false << 2;
+    QTest::newRow("translate, normal, antialias") << true << false << 2;
+    QTest::newRow("translate, opengl") << false << true << 2;
+    QTest::newRow("translate, opengl, antialias") << true << true << 2;
+}
+
+void tst_QGraphicsView::chipTester()
+{
+    QFETCH(bool, antialias);
+    QFETCH(bool, opengl);
+    QFETCH(int, operation);
+
+    ChipTester tester;
+    tester.show();
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&tester);
+#endif
+    tester.setAntialias(antialias);
+    tester.setOpenGL(opengl);
+    tester.setOperation(ChipTester::Operation(operation));
+    QBENCHMARK {
+        tester.runBenchmark();
+    }
+}
+
+static void addChildHelper(QGraphicsItem *parent, int n, bool rotate)
+{
+    if (!n)
+        return;
+    QGraphicsRectItem *item = new QGraphicsRectItem(QRectF(0, 0, 50, 50), parent);
+    item->setPos(10, 10);
+    if (rotate)
+        item->rotate(10);
+    addChildHelper(item, n - 1, rotate);
+}
+
+void tst_QGraphicsView::deepNesting_data()
+{
+    QTest::addColumn<bool>("rotate");
+    QTest::addColumn<bool>("sortCache");
+    QTest::addColumn<bool>("bsp");
+
+    QTest::newRow("bsp, no transform") << false << false << true;
+    QTest::newRow("bsp, rotation") << true << false << true;
+    QTest::newRow("bsp, no transform, sort cache") << false << true << true;
+    QTest::newRow("bsp, rotation, sort cache") << true << true << true;
+    QTest::newRow("no transform") << false << false << false;
+    QTest::newRow("rotation") << true << false << false;
+    QTest::newRow("no transform, sort cache") << false << true << false;
+    QTest::newRow("rotation, sort cache") << true << true << false;
+}
+
+void tst_QGraphicsView::deepNesting()
+{
+    QFETCH(bool, rotate);
+    QFETCH(bool, sortCache);
+    QFETCH(bool, bsp);
+
+    QGraphicsScene scene;
+    for (int y = 0; y < 15; ++y) {
+        for (int x = 0; x < 15; ++x) {
+            QGraphicsItem *item1 = scene.addRect(QRectF(0, 0, 50, 50));
+            if (rotate) item1->rotate(10);
+            item1->setPos(x * 25, y * 25);
+            addChildHelper(item1, 30, rotate);
+        }
+    }
+    scene.setItemIndexMethod(bsp ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
+    scene.setSortCacheEnabled(sortCache);
+
+    QGraphicsView view(&scene);
+    view.setRenderHint(QPainter::Antialiasing);
+    view.show();
+#ifdef Q_WS_X11
+    qt_x11_wait_for_window_manager(&view);
+#endif
+    QTest::qWait(250);
+
+    QBENCHMARK {
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_START_INSTRUMENTATION
+#endif
+        view.viewport()->repaint();
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_STOP_INSTRUMENTATION
+#endif
+    }
+}
+
+class AnimatedPixmapItem : public QGraphicsPixmapItem
+{
+public:
+    AnimatedPixmapItem(int x, int y, bool rot, bool scal, QGraphicsItem *parent = 0)
+        : QGraphicsPixmapItem(parent), rotateFactor(0), scaleFactor(0)
+    {
+        rotate = rot;
+        scale = scal;
+        xspeed = x;
+        yspeed = y;
+    }
+
+protected:
+    void advance(int i)
+    {
+        if (!i)
+            return;
+        int x = int(pos().x()) + pixmap().width();
+        x += xspeed;
+        x = (x % (300 + pixmap().width() * 2)) - pixmap().width();
+        int y = int(pos().y()) + pixmap().width();
+        y += yspeed;
+        y = (y % (300 + pixmap().width() * 2)) - pixmap().width();
+        setPos(x, y);
+
+        int rot = rotateFactor;
+        int sca = scaleFactor;
+        if (rotate)
+            rotateFactor = 1 + (rot + xspeed) % 360;
+        if (scale)
+            scaleFactor = 1 + (sca + yspeed) % 50;
+
+        if (rotate || scale) {
+            qreal s = 0.5 + scaleFactor / 50.0;
+            setTransform(QTransform().rotate(rotateFactor).scale(s, s));
+        }
+    }
+
+private:
+    int xspeed;
+    int yspeed;
+    int rotateFactor;
+    int scaleFactor;
+    bool rotate;
+    bool scale;
+};
+
+class CountPaintEventView : public QGraphicsView
+{
+public:
+    CountPaintEventView(QGraphicsScene *scene = 0)
+        : QGraphicsView(scene), count(0)
+    { }
+
+    int count;
+
+protected:
+    void paintEvent(QPaintEvent *event)
+    {
+        ++count;
+        QGraphicsView::paintEvent(event);
+    };
+};
+
+void tst_QGraphicsView::imageRiver_data()
+{
+    QTest::addColumn<int>("direction");
+    QTest::addColumn<bool>("rotation");
+    QTest::addColumn<bool>("scale");
+    QTest::newRow("horizontal") << 0 << false << false;
+    QTest::newRow("vertical") << 1 << false << false;
+    QTest::newRow("both") << 2 << false << false;
+    QTest::newRow("horizontal rot") << 0 << true << false;
+    QTest::newRow("horizontal scale") << 0 << false << true;
+    QTest::newRow("horizontal rot + scale") << 0 << true << true;
+}
+
+void tst_QGraphicsView::imageRiver()
+{
+    QFETCH(int, direction);
+    QFETCH(bool, rotation);
+    QFETCH(bool, scale);
+
+    QGraphicsScene scene(0, 0, 300, 300);
+
+    CountPaintEventView view(&scene);
+    view.resize(300, 300);
+    view.setFrameStyle(0);
+    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.show();
+
+    QPixmap pix(":/images/designer.png");
+    QVERIFY(!pix.isNull());
+
+    QList<QGraphicsItem *> items;
+    QFile file(":/random.data");
+    QVERIFY(file.open(QIODevice::ReadOnly));
+    QDataStream str(&file);
+    for (int i = 0; i < 100; ++i) {
+        AnimatedPixmapItem *item;
+        if (direction == 0) item = new AnimatedPixmapItem((i % 4) + 1, 0, rotation, scale);
+        if (direction == 1) item = new AnimatedPixmapItem(0, (i % 4) + 1, rotation, scale);
+        if (direction == 2) item = new AnimatedPixmapItem((i % 4) + 1, (i % 4) + 1, rotation, scale);
+        item->setPixmap(pix);
+        int rnd1, rnd2;
+        str >> rnd1 >> rnd2;
+        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
+                     -pix.height() + rnd2 % (view.height() + pix.height()));
+        scene.addItem(item);
+    }
+
+    view.count = 0;
+
+    QBENCHMARK {
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_START_INSTRUMENTATION
+#endif
+        for (int i = 0; i < 100; ++i) {
+            scene.advance();
+            while (view.count < (i+1))
+                qApp->processEvents();
+        }
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_STOP_INSTRUMENTATION
+#endif
+    }
+}
+
+class AnimatedTextItem : public QGraphicsSimpleTextItem
+{
+public:
+    AnimatedTextItem(int x, int y, bool rot, bool scal, QGraphicsItem *parent = 0)
+        : QGraphicsSimpleTextItem(parent), rotateFactor(0), scaleFactor(25)
+    {
+        setText("River of text");
+        rotate = rot;
+        scale = scal;
+        xspeed = x;
+        yspeed = y;
+    }
+
+protected:
+    void advance(int i)
+    {
+        if (!i)
+            return;
+        QRect r = boundingRect().toRect();
+        int x = int(pos().x()) + r.width();
+        x += xspeed;
+        x = (x % (300 + r.width() * 2)) - r.width();
+        int y = int(pos().y()) + r.width();
+        y += yspeed;
+        y = (y % (300 + r.width() * 2)) - r.width();
+        setPos(x, y);
+
+        int rot = rotateFactor;
+        int sca = scaleFactor;
+        if (rotate)
+            rotateFactor = 1 + (rot + xspeed) % 360;
+        if (scale)
+            scaleFactor = 1 + (sca + yspeed) % 50;
+
+        if (rotate || scale) {
+            qreal s = 0.5 + scaleFactor / 50.0;
+            setTransform(QTransform().rotate(rotateFactor).scale(s, s));
+        }
+    }
+
+private:
+    int xspeed;
+    int yspeed;
+    int rotateFactor;
+    int scaleFactor;
+    bool rotate;
+    bool scale;
+};
+
+void tst_QGraphicsView::textRiver_data()
+{
+    QTest::addColumn<int>("direction");
+    QTest::addColumn<bool>("rotation");
+    QTest::addColumn<bool>("scale");
+    QTest::newRow("horizontal") << 0 << false << false;
+    QTest::newRow("vertical") << 1 << false << false;
+    QTest::newRow("both") << 2 << false << false;
+    QTest::newRow("horizontal rot") << 0 << true << false;
+    QTest::newRow("horizontal scale") << 0 << false << true;
+    QTest::newRow("horizontal rot + scale") << 0 << true << true;
+}
+
+void tst_QGraphicsView::textRiver()
+{
+    QFETCH(int, direction);
+    QFETCH(bool, rotation);
+    QFETCH(bool, scale);
+
+    QGraphicsScene scene(0, 0, 300, 300);
+
+    CountPaintEventView view(&scene);
+    view.resize(300, 300);
+    view.setFrameStyle(0);
+    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.show();
+
+    QPixmap pix(":/images/designer.png");
+    QVERIFY(!pix.isNull());
+
+    QList<QGraphicsItem *> items;
+    QFile file(":/random.data");
+    QVERIFY(file.open(QIODevice::ReadOnly));
+    QDataStream str(&file);
+    for (int i = 0; i < 100; ++i) {
+        AnimatedTextItem *item;
+        if (direction == 0) item = new AnimatedTextItem((i % 4) + 1, 0, rotation, scale);
+        if (direction == 1) item = new AnimatedTextItem(0, (i % 4) + 1, rotation, scale);
+        if (direction == 2) item = new AnimatedTextItem((i % 4) + 1, (i % 4) + 1, rotation, scale);
+        int rnd1, rnd2;
+        str >> rnd1 >> rnd2;
+        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
+                     -pix.height() + rnd2 % (view.height() + pix.height()));
+        scene.addItem(item);
+    }
+
+    view.count = 0;
+
+    QBENCHMARK {
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_START_INSTRUMENTATION
+#endif
+        for (int i = 0; i < 100; ++i) {
+            scene.advance();
+            while (view.count < (i+1))
+                qApp->processEvents();
+        }
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_STOP_INSTRUMENTATION
+#endif
+    }
+}
+
+class AnimatedPixmapCacheItem : public QGraphicsPixmapItem
+{
+public:
+    AnimatedPixmapCacheItem(int x, int y, QGraphicsItem *parent = 0)
+        : QGraphicsPixmapItem(parent)
+    {
+        xspeed = x;
+        yspeed = y;
+    }
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
+    {
+        QGraphicsPixmapItem::paint(painter,option,widget);
+        //We just want to wait, and we don't want to process the event loop with qWait
+        QTest::qSleep(3);
+    }
+protected:
+    void advance(int i)
+    {
+        if (!i)
+            return;
+        int x = int(pos().x()) + pixmap().width();
+        x += xspeed;
+        x = (x % (300 + pixmap().width() * 2)) - pixmap().width();
+        int y = int(pos().y()) + pixmap().width();
+        y += yspeed;
+        y = (y % (300 + pixmap().width() * 2)) - pixmap().width();
+        setPos(x, y);
+    }
+
+private:
+    int xspeed;
+    int yspeed;
+};
+
+void tst_QGraphicsView::moveItemCache_data()
+{
+    QTest::addColumn<int>("direction");
+    QTest::addColumn<bool>("rotation");
+    QTest::addColumn<int>("cacheMode");
+    QTest::newRow("Horizontal movement : ItemCoordinate Cache") << 0 << false << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Horizontal movement : DeviceCoordinate Cache") << 0 << false << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Horizontal movement : No Cache") << 0 << false << (int)QGraphicsItem::NoCache;
+    QTest::newRow("Vertical +  Horizontal movement : ItemCoordinate Cache") << 2 << false <<  (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Vertical +  Horizontal movement : DeviceCoordinate Cache") << 2 << false <<  (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Vertical +  Horizontal movement : No Cache") << 2 << false << (int)QGraphicsItem::NoCache;
+    QTest::newRow("Horizontal movement + Rotation : ItemCoordinate Cache") << 0 << true << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Horizontal movement + Rotation : DeviceCoordinate Cache") << 0 << true << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Horizontal movement + Rotation : No Cache") << 0 << true << (int)QGraphicsItem::NoCache;
+}
+
+void tst_QGraphicsView::moveItemCache()
+{
+    QFETCH(int, direction);
+    QFETCH(bool, rotation);
+    QFETCH(int, cacheMode);
+
+    QGraphicsScene scene(0, 0, 300, 300);
+
+    CountPaintEventView view(&scene);
+    view.resize(600, 600);
+    view.setFrameStyle(0);
+    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.show();
+
+    QPixmap pix(":/images/wine.jpeg");
+    QVERIFY(!pix.isNull());
+
+    QList<QGraphicsItem *> items;
+    QFile file(":/random.data");
+    QVERIFY(file.open(QIODevice::ReadOnly));
+    QDataStream str(&file);
+    for (int i = 0; i < 50; ++i) {
+        AnimatedPixmapCacheItem *item;
+        if (direction == 0) item = new AnimatedPixmapCacheItem((i % 4) + 1, 0);
+        if (direction == 1) item = new AnimatedPixmapCacheItem(0, (i % 4) + 1);
+        if (direction == 2) item = new AnimatedPixmapCacheItem((i % 4) + 1, (i % 4) + 1);
+        item->setPixmap(pix);
+        item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
+        if (rotation)
+            item->setTransform(QTransform().rotate(45));
+        int rnd1, rnd2;
+        str >> rnd1 >> rnd2;
+        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
+                     -pix.height() + rnd2 % (view.height() + pix.height()));
+        scene.addItem(item);
+    }
+
+    view.count = 0;
+
+    QBENCHMARK {
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_START_INSTRUMENTATION
+#endif
+        for (int i = 0; i < 100; ++i) {
+            scene.advance();
+            while (view.count < (i+1))
+                qApp->processEvents();
+        }
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_STOP_INSTRUMENTATION
+#endif
+    }
+}
+
+class UpdatedPixmapCacheItem : public QGraphicsPixmapItem
+{
+public:
+    UpdatedPixmapCacheItem(bool partial, QGraphicsItem *parent = 0)
+        : QGraphicsPixmapItem(parent), partial(partial)
+    {
+    }
+
+    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
+    {
+        QGraphicsPixmapItem::paint(painter,option,widget);
+    }
+protected:
+    void advance(int i)
+    {
+        if (partial)
+            update(QRectF(boundingRect().center().x(), boundingRect().center().x(), 30, 30));
+        else
+            update();
+    }
+
+private:
+    bool partial;
+};
+
+void tst_QGraphicsView::paintItemCache_data()
+{
+    QTest::addColumn<bool>("updatePartial");
+    QTest::addColumn<bool>("rotation");
+    QTest::addColumn<int>("cacheMode");
+    QTest::newRow("Partial Update : ItemCoordinate Cache") << true << false << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Partial Update : DeviceCoordinate Cache") << true << false << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Partial Update : No Cache") << true << false << (int)QGraphicsItem::NoCache;
+    QTest::newRow("Full Update : ItemCoordinate Cache") << false << false << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Full Update : DeviceCoordinate Cache") << false << false << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Full Update : No Cache") << false << false << (int)QGraphicsItem::NoCache;
+    QTest::newRow("Partial Update : ItemCoordinate Cache item rotated") << true << true << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Partial Update : DeviceCoordinate Cache item rotated") << true << true << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Partial Update : No Cache item rotated") << true << true << (int)QGraphicsItem::NoCache;
+    QTest::newRow("Full Update : ItemCoordinate Cache item rotated") << false  << true << (int)QGraphicsItem::ItemCoordinateCache;
+    QTest::newRow("Full Update : DeviceCoordinate Cache item rotated") << false << true << (int)QGraphicsItem::DeviceCoordinateCache;
+    QTest::newRow("Full Update : No Cache item rotated") << false << true <<(int)QGraphicsItem::NoCache;
+}
+
+void tst_QGraphicsView::paintItemCache()
+{
+    QFETCH(bool, updatePartial);
+    QFETCH(bool, rotation);
+    QFETCH(int, cacheMode);
+
+    QGraphicsScene scene(0, 0, 300, 300);
+
+    CountPaintEventView view(&scene);
+    view.resize(600, 600);
+    view.setFrameStyle(0);
+    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view.show();
+
+    QPixmap pix(":/images/wine.jpeg");
+    QVERIFY(!pix.isNull());
+
+    QList<QGraphicsItem *> items;
+    QFile file(":/random.data");
+    QVERIFY(file.open(QIODevice::ReadOnly));
+    QDataStream str(&file);
+    UpdatedPixmapCacheItem *item = new UpdatedPixmapCacheItem(updatePartial);
+    item->setPixmap(pix);
+    item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
+    if (rotation)
+        item->setTransform(QTransform().rotate(45));
+    item->setPos(-100, -100);
+    scene.addItem(item);
+
+    QPixmap pix2(":/images/wine-big.jpeg");
+    item = new UpdatedPixmapCacheItem(updatePartial);
+    item->setPixmap(pix2);
+    item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
+    if (rotation)
+        item->setTransform(QTransform().rotate(45));
+    item->setPos(0, 0);
+    scene.addItem(item);
+
+    view.count = 0;
+
+    QBENCHMARK {
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_START_INSTRUMENTATION
+#endif
+        for (int i = 0; i < 50; ++i) {
+            scene.advance();
+            while (view.count < (i+1))
+                qApp->processEvents();
+        }
+#ifdef CALLGRIND_DEBUG
+        CALLGRIND_STOP_INSTRUMENTATION
+#endif
+    }
+}
+
+QTEST_MAIN(tst_QGraphicsView)
+#include "tst_qgraphicsview.moc"
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro b/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
new file mode 100644
index 0000000..f1ec54e
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicswidget/qgraphicswidget.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qgraphicswidget
+TEMPLATE = app
+# Input
+SOURCES += tst_qgraphicswidget.cpp
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
new file mode 100644
index 0000000..7db98ce
--- /dev/null
+++ b/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QGraphicsItem>
+#include <QGraphicsScene>
+#include <QGraphicsView>
+#include <QGraphicsWidget>
+//TESTED_FILES=
+
+class tst_QGraphicsWidget : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QGraphicsWidget();
+    virtual ~tst_QGraphicsWidget();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void move();
+};
+
+tst_QGraphicsWidget::tst_QGraphicsWidget()
+{
+}
+
+tst_QGraphicsWidget::~tst_QGraphicsWidget()
+{
+}
+
+void tst_QGraphicsWidget::init()
+{
+}
+
+void tst_QGraphicsWidget::cleanup()
+{
+}
+
+void tst_QGraphicsWidget::move()
+{
+    QGraphicsScene scene;
+    QGraphicsWidget *widget = new QGraphicsWidget();
+    scene.addItem(widget);
+    QGraphicsView view(&scene);
+    view.show();
+    QBENCHMARK {
+        widget->setPos(qrand(),qrand());
+    }
+}
+
+QTEST_MAIN(tst_QGraphicsWidget)
+#include "tst_qgraphicswidget.moc"
diff --git a/tests/benchmarks/gui/gui.pro b/tests/benchmarks/gui/gui.pro
new file mode 100644
index 0000000..946f184
--- /dev/null
+++ b/tests/benchmarks/gui/gui.pro
@@ -0,0 +1,11 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        animation \
+        graphicsview \
+        image \
+        itemviews \
+        kernel \
+        math3d \
+        painting \
+        styles \
+        text
diff --git a/tests/benchmarks/gui/image/blendbench/blendbench.pro b/tests/benchmarks/gui/image/blendbench/blendbench.pro
new file mode 100644
index 0000000..a3228c5
--- /dev/null
+++ b/tests/benchmarks/gui/image/blendbench/blendbench.pro
@@ -0,0 +1,8 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_blendbench
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/image/blendbench/main.cpp b/tests/benchmarks/gui/image/blendbench/main.cpp
new file mode 100644
index 0000000..92d1633
--- /dev/null
+++ b/tests/benchmarks/gui/image/blendbench/main.cpp
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtGui>
+#include <QString>
+
+#include <qtest.h>
+
+void paint(QPaintDevice *device)
+{
+    QPainter p(device);
+    p.setCompositionMode(QPainter::CompositionMode_Source);
+    p.fillRect(0, 0, device->width(), device->height(), Qt::transparent);
+
+    QLinearGradient g(QPoint(0, 0), QPoint(1, 1));
+//    g.setCoordinateMode(QGradient::ObjectBoundingMode);
+    g.setColorAt(0, Qt::magenta);
+    g.setColorAt(0, Qt::white);
+
+//    p.setOpacity(0.8);
+    p.setPen(Qt::NoPen);
+    p.setBrush(g);
+    p.setRenderHint(QPainter::Antialiasing);
+    p.setOpacity(0.9);
+    p.drawEllipse(0, 0, device->width(), device->height());
+}
+
+QLatin1String compositionModes[] = {
+    QLatin1String("SourceOver"),
+    QLatin1String("DestinationOver"),
+    QLatin1String("Clear"),
+    QLatin1String("Source"),
+    QLatin1String("Destination"),
+    QLatin1String("SourceIn"),
+    QLatin1String("DestinationIn"),
+    QLatin1String("SourceOut"),
+    QLatin1String("DestinationOut"),
+    QLatin1String("SourceAtop"),
+    QLatin1String("DestinationAtop"),
+    QLatin1String("Xor"),
+
+    //svg 1.2 blend modes
+    QLatin1String("Plus"),
+    QLatin1String("Multiply"),
+    QLatin1String("Screen"),
+    QLatin1String("Overlay"),
+    QLatin1String("Darken"),
+    QLatin1String("Lighten"),
+    QLatin1String("ColorDodge"),
+    QLatin1String("ColorBurn"),
+    QLatin1String("HardLight"),
+    QLatin1String("SoftLight"),
+    QLatin1String("Difference"),
+    QLatin1String("Exclusion")
+};
+
+enum BrushType { ImageBrush, SolidBrush };
+QLatin1String brushTypes[] = {
+    QLatin1String("ImageBrush"),
+    QLatin1String("SolidBrush"),
+};
+
+class BlendBench : public QObject
+{
+    Q_OBJECT
+private slots:		
+    void blendBench_data();
+    void blendBench();
+};
+
+void BlendBench::blendBench_data()
+{
+    int first = 0;
+    int limit = 12;
+    if (qApp->arguments().contains("--extended")) {
+        first = 12;
+        limit = 24;
+    }
+
+    QTest::addColumn<int>("brushType");
+    QTest::addColumn<int>("compositionMode");
+
+    for (int brush = ImageBrush; brush <= SolidBrush; ++brush)
+        for (int mode = first; mode < limit; ++mode)
+            QTest::newRow(QString("brush=%1; mode=%2")
+                          .arg(brushTypes[brush]).arg(compositionModes[mode]).toAscii().data())
+                << brush << mode;
+}
+
+void BlendBench::blendBench()
+{
+    QFETCH(int, brushType);
+    QFETCH(int, compositionMode);
+
+    QImage img(512, 512, QImage::Format_ARGB32_Premultiplied);
+    QImage src(512, 512, QImage::Format_ARGB32_Premultiplied);
+    paint(&src);
+    QPainter p(&img);
+    p.setPen(Qt::NoPen);
+
+    p.setCompositionMode(QPainter::CompositionMode(compositionMode));
+    if (brushType == ImageBrush) {
+        p.setBrush(QBrush(src));
+    } else if (brushType == SolidBrush) {
+        p.setBrush(QColor(127, 127, 127, 127));
+    }
+
+    QBENCHMARK {
+        p.drawRect(0, 0, 512, 512);
+    }
+}
+
+QTEST_MAIN(BlendBench)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/image/image.pro b/tests/benchmarks/gui/image/image.pro
new file mode 100644
index 0000000..3094e72
--- /dev/null
+++ b/tests/benchmarks/gui/image/image.pro
@@ -0,0 +1,6 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        blendbench \
+        qimagereader \
+        qpixmap \
+        qpixmapcache
diff --git a/tests/benchmarks/gui/image/qimagereader/images/16bpp.bmp b/tests/benchmarks/gui/image/qimagereader/images/16bpp.bmp
new file mode 100644
index 0000000..74ce63e
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/16bpp.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/4bpp-rle.bmp b/tests/benchmarks/gui/image/qimagereader/images/4bpp-rle.bmp
new file mode 100644
index 0000000..ae71e67
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/4bpp-rle.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.jpg b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.jpg
new file mode 100644
index 0000000..b8aa9ea
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.jpg differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.png b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.png
new file mode 100644
index 0000000..a24db1b
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_cmyk.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/YCbCr_rgb.jpg b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_rgb.jpg
new file mode 100644
index 0000000..8771224
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/YCbCr_rgb.jpg differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/away.png b/tests/benchmarks/gui/image/qimagereader/images/away.png
new file mode 100644
index 0000000..0e21a37
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/away.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/ball.mng b/tests/benchmarks/gui/image/qimagereader/images/ball.mng
new file mode 100644
index 0000000..8154478
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/ball.mng differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/bat1.gif b/tests/benchmarks/gui/image/qimagereader/images/bat1.gif
new file mode 100644
index 0000000..cb6f4f7
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/bat1.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/bat2.gif b/tests/benchmarks/gui/image/qimagereader/images/bat2.gif
new file mode 100644
index 0000000..fbbda4e
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/bat2.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/beavis.jpg b/tests/benchmarks/gui/image/qimagereader/images/beavis.jpg
new file mode 100644
index 0000000..d555047
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/beavis.jpg differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/black.png b/tests/benchmarks/gui/image/qimagereader/images/black.png
new file mode 100644
index 0000000..6c94085
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/black.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/black.xpm b/tests/benchmarks/gui/image/qimagereader/images/black.xpm
new file mode 100644
index 0000000..d7925bf
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/black.xpm
@@ -0,0 +1,65 @@
+/* XPM */
+static char * ddd_xpm[] = {
+/* $Id: ddd.xpm,v 1.5 1999/08/19 11:30:07 andreas Exp $
+ * DDD Logo.  Copyright (C) 1997 TU Braunschweig, Germany.
+ * For details on DDD, see `http://www.gnu.org/software/ddd/'.
+ * width height ncolors chars_per_pixel */
+"  48    48     8       1",
+/* Colors */
+"       c None      m None  g None   g4 None   s Background ",
+". c black     m black g black  g4 black  s Legs       ",
+"X c grey      m white g grey   g4 grey   s Body       ",
+"- c grey      m white g grey   g4 grey   s Border     ",
+"o      c #000040   m black g grey25 g4 grey25 s Handle1    ",
+"O c blue4     m black g grey25 g4 grey25 s Handle2    ",
+"+ c white     m white g white  g4 white  s Light      ",
+"*      c DarkGreen m black g grey25 g4 grey25 s Eye        ",
+/* Pixels */
+"                .            .                  ",    
+"                .           ..                  ",    
+"                 .          .                   ",    
+"                 ..        .                    ",    
+"   ..             ..      ..                    ",    
+"     ..            .     .               .      ",    
+"       .            . . .              ..       ",    
+"        .            .X.              .         ",    
+"         .          *.X.*           ..          ",    
+"         ..     ..  .XXX.  ..     ...           ",    
+"          .     .X...XXX...X.     .             ",    
+"          ..   ..XXX.XXX.XXX.   ..              ",    
+"            .....XXXX...XXXX.   .               ",    
+"             .. ..XXXXXXXXX.. ..                ",    
+"                ...XXXXXXX.....                 ",    
+"                  .........                     ",
+"                  .XXXXXXX.                     ",
+"                .....XXX.....                   ",
+"               .XXXXXoOOOOOOX.  ...             ",
+"        ..    ..XXXoOOO-----OOO.....            ",
+"       .........XXoO-----..----O   ..           ",
+"      ..    ..X..oO--.........--O   ..          ",
+"      .    ..XXXoO--..++.......--O  ..          ",
+"     ..    .XXXXO-XXX+++XXXXXXXXX-O  .          ",
+"     ..   .....oO-XX+++XXXXXXXXXXX-O  ..        ",
+"    ..    .XXXoO--XX++XXXXXXXXXXXX-O   ..       ",
+"   ..    ..XXXoO-..+++............-O     ..     ",
+"   .   .. .XXoO--..++.............-OO      ..   ",
+"  .   ... ...oO--..................-O           ",
+"..    .   .XXoO-XXXXXXXXXXXXXXXXXXX-O           ",
+"     ..   .XXoO-XXXXXXXXXXXXXXXXXXX-O           ",
+"     ..    .XoO-XXXXXXXXXXXXXXXXXXX-O.          ",
+"     .     ...oO-.................-O ..         ",
+"     .     .XXoO-.................-O ..         ",
+"     .     ..XoO-.................-O  ..        ",
+"     .      ...oO-XXXXXXXXXXXXXXX-OOO  .        ",
+"     ..      .XoOO-XXXXXXXXXXXXX-OOOOO .        ",
+"     ..      ..XoOO---.......---OOOOOO .        ",
+"     ..       ....oOO---...----OOOOOOOO         ",
+"      .        .XX..oOO-----OOOOOOOOOOO         ",
+"     .          .....OOOOOOOOooOOOOOOOOO        ",
+"     .            .XXooooooOo  oOOOOOOOOO       ",
+"    .              .XXX.         ooOOOOOOO      ",
+"  ..                ...            ooOOOOOO     ",
+"  .                                 ooOOOOOO    ",
+"                                     ooOOOOOO   ",
+"                                      ooOOOOOO  ",
+"                                       ooOOOOOO "};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/colorful.bmp b/tests/benchmarks/gui/image/qimagereader/images/colorful.bmp
new file mode 100644
index 0000000..8ea6f4a
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/colorful.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt-colors.xpm b/tests/benchmarks/gui/image/qimagereader/images/corrupt-colors.xpm
new file mode 100644
index 0000000..f8d80ed
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/corrupt-colors.xpm
@@ -0,0 +1,26 @@
+/* XPM */
+static const char *marble_xpm[] = {
+/* width height num_colors chars_per_pixel */
+"   240   240      223            2",
+/* colors */
+".. c #959595",
+".# c #c5c5c5",
+".a c #adadad",
+".b c #dedede",
+".c c #b7b7b7",
+".d c #d2d2d2",
+".e c #bebebe",
+".f c #c9c9c9",
+".g c #b8b8b8",
+".h c #d6d6d6",
+".i c #9e9e9e",
+".j c #eaeaea",
+".k c #b2b2b2",
+".l c #cecece",
+".m c #a5a5a5",
+".n c #e4e4e4",
+".o c #c4c4c4",
+".p c #d9d9d9",
+".q c #b1b1b1",
+/* pixels */
+"aYbla9aN.N#x",
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif b/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif
new file mode 100644
index 0000000..d63c688
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt-pixels.xpm b/tests/benchmarks/gui/image/qimagereader/images/corrupt-pixels.xpm
new file mode 100644
index 0000000..21031ee
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/corrupt-pixels.xpm
@@ -0,0 +1,7 @@
+/* XPM */
+static char * test_xpm[] = {
+"256 256 1 1",
+" 	c grey",
+"                                                                                                                                                                                                                                                                ",
+"                                                  ",
+"                                                                                                                                                                                                                                                                "};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.bmp b/tests/benchmarks/gui/image/qimagereader/images/corrupt.bmp
new file mode 100644
index 0000000..824190b
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.gif b/tests/benchmarks/gui/image/qimagereader/images/corrupt.gif
new file mode 100644
index 0000000..0725945
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.jpg b/tests/benchmarks/gui/image/qimagereader/images/corrupt.jpg
new file mode 100644
index 0000000..1959662
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt.jpg differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng b/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng
new file mode 100644
index 0000000..17fd43a
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.png b/tests/benchmarks/gui/image/qimagereader/images/corrupt.png
new file mode 100644
index 0000000..9d8911c
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/corrupt.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.xbm b/tests/benchmarks/gui/image/qimagereader/images/corrupt.xbm
new file mode 100644
index 0000000..8510634
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/corrupt.xbm
@@ -0,0 +1,5 @@
+#define noname_width 271
+#define noname_height 273
+static char noname_bits[] = {
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/crash-signed-char.bmp b/tests/benchmarks/gui/image/qimagereader/images/crash-signed-char.bmp
new file mode 100644
index 0000000..b35cda6
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/crash-signed-char.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/earth.gif b/tests/benchmarks/gui/image/qimagereader/images/earth.gif
new file mode 100644
index 0000000..2c229eb
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/earth.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/fire.mng b/tests/benchmarks/gui/image/qimagereader/images/fire.mng
new file mode 100644
index 0000000..c6695c8
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/fire.mng differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/font.bmp b/tests/benchmarks/gui/image/qimagereader/images/font.bmp
new file mode 100644
index 0000000..28b8c66
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/font.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/gnus.xbm b/tests/benchmarks/gui/image/qimagereader/images/gnus.xbm
new file mode 100644
index 0000000..58d1ac8
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/gnus.xbm
@@ -0,0 +1,622 @@
+#define noname_width 271
+#define noname_height 273
+static char noname_bits[] = {
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05,
+ 0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5,
+ 0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,
+ 0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4,
+ 0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff,
+ 0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42,
+ 0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24,
+ 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,
+ 0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55,
+ 0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49,
+ 0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54,
+ 0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
+ 0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52,
+ 0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f,
+ 0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9,
+ 0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5,
+ 0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff,
+ 0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c,
+ 0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94,
+ 0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe,
+ 0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a,
+ 0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a,
+ 0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe,
+ 0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42,
+ 0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a,
+ 0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,
+ 0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5,
+ 0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54,
+ 0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a,
+ 0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55,
+ 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a,
+ 0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28,
+ 0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff,
+ 0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85,
+ 0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff,
+ 0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55,
+ 0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff,
+ 0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff,
+ 0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29,
+ 0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f,
+ 0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50,
+ 0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2,
+ 0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff,
+ 0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff,
+ 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92,
+ 0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff,
+ 0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f,
+ 0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48,
+ 0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff,
+ 0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1,
+ 0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f,
+ 0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff,
+ 0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5,
+ 0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5,
+ 0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa,
+ 0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40,
+ 0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff,
+ 0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff,
+ 0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24,
+ 0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff,
+ 0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8,
+ 0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa,
+ 0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a,
+ 0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92,
+ 0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94,
+ 0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff,
+ 0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff,
+ 0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97,
+ 0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff,
+ 0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85,
+ 0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55,
+ 0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff,
+ 0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82,
+ 0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf,
+ 0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff,
+ 0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0,
+ 0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f,
+ 0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4,
+ 0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24,
+ 0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5,
+ 0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f,
+ 0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff,
+ 0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a,
+ 0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff,
+ 0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e,
+ 0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05,
+ 0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a,
+ 0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4,
+ 0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff,
+ 0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff,
+ 0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52,
+ 0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff,
+ 0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20,
+ 0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff,
+ 0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87,
+ 0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a,
+ 0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff,
+ 0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff,
+ 0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd,
+ 0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55,
+ 0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21,
+ 0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff,
+ 0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f,
+ 0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f,
+ 0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff,
+ 0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6,
+ 0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4,
+ 0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08,
+ 0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa,
+ 0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff,
+ 0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff,
+ 0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff,
+ 0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,
+ 0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f,
+ 0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff,
+ 0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5,
+ 0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff,
+ 0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff,
+ 0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f,
+ 0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff,
+ 0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,
+ 0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1,
+ 0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff,
+ 0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5,
+ 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14,
+ 0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd,
+ 0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b,
+ 0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49,
+ 0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a,
+ 0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff,
+ 0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54,
+ 0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,
+ 0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff,
+ 0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa,
+ 0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24,
+ 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
+ 0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff,
+ 0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4,
+ 0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff,
+ 0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,
+ 0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff,
+ 0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,
+ 0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92,
+ 0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff,
+ 0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff,
+ 0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa,
+ 0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2,
+ 0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,
+ 0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff,
+ 0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29,
+ 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14,
+ 0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff,
+ 0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf,
+ 0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff,
+ 0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff,
+ 0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea,
+ 0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff,
+ 0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78,
+ 0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff,
+ 0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
+ 0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b,
+ 0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff,
+ 0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,
+ 0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff,
+ 0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff,
+ 0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
+ 0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,
+ 0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff,
+ 0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5,
+ 0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,
+ 0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff,
+ 0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d,
+ 0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,
+ 0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa,
+ 0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85,
+ 0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff,
+ 0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa,
+ 0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2,
+ 0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,
+ 0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff,
+ 0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9,
+ 0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
+ 0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03,
+ 0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
+ 0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5,
+ 0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f,
+ 0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
+ 0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54,
+ 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff,
+ 0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd,
+ 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc,
+ 0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82,
+ 0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5,
+ 0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51,
+ 0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f,
+ 0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
+ 0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff,
+ 0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff,
+ 0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc,
+ 0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3,
+ 0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2,
+ 0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff,
+ 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
+ 0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,
+ 0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,
+ 0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,
+ 0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/image.pbm b/tests/benchmarks/gui/image/qimagereader/images/image.pbm
new file mode 100644
index 0000000..67e5efa
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/image.pbm
@@ -0,0 +1,8 @@
+P1
+16 6
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
+1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
diff --git a/tests/benchmarks/gui/image/qimagereader/images/image.pgm b/tests/benchmarks/gui/image/qimagereader/images/image.pgm
new file mode 100644
index 0000000..443bf40
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/image.pgm
@@ -0,0 +1,10 @@
+P2
+24 7
+15
+0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
+0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
+0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
+0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
+0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
+0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
+0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
diff --git a/tests/benchmarks/gui/image/qimagereader/images/image.png b/tests/benchmarks/gui/image/qimagereader/images/image.png
new file mode 100644
index 0000000..7d4890a
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/image.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/image.ppm b/tests/benchmarks/gui/image/qimagereader/images/image.ppm
new file mode 100644
index 0000000..2a5640e
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/image.ppm
@@ -0,0 +1,7 @@
+P3
+4 4
+15
+ 0  0  0    0  0  0    0  0  0   15  0 15
+ 0  0  0    0 15  7    0  0  0    0  0  0
+ 0  0  0    0  0  0    0 15  7    0  0  0
+15  0 15    0  0  0    0  0  0    0  0  0
\ No newline at end of file
diff --git a/tests/benchmarks/gui/image/qimagereader/images/kollada-noext b/tests/benchmarks/gui/image/qimagereader/images/kollada-noext
new file mode 100644
index 0000000..2abd4bb
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/kollada-noext differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/kollada.png b/tests/benchmarks/gui/image/qimagereader/images/kollada.png
new file mode 100644
index 0000000..2abd4bb
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/kollada.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/marble.xpm b/tests/benchmarks/gui/image/qimagereader/images/marble.xpm
new file mode 100644
index 0000000..1c08049
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/marble.xpm
@@ -0,0 +1,470 @@
+/* XPM */
+static const char *marble_xpm[] = {
+/* width height num_colors chars_per_pixel */
+"   240   240      223            2",
+/* colors */
+".. c #959595",
+".# c #c5c5c5",
+".a c #adadad",
+".b c #dedede",
+".c c #b7b7b7",
+".d c #d2d2d2",
+".e c #bebebe",
+".f c #c9c9c9",
+".g c #b8b8b8",
+".h c #d6d6d6",
+".i c #9e9e9e",
+".j c #eaeaea",
+".k c #b2b2b2",
+".l c #cecece",
+".m c #a5a5a5",
+".n c #e4e4e4",
+".o c #c4c4c4",
+".p c #d9d9d9",
+".q c #b1b1b1",
+".r c #d8d8d8",
+".s c #e0e0e0",
+".t c #d6d6d6",
+".u c #b6b6b6",
+".v c #bfbfbf",
+".w c #cbcbcb",
+".x c #a5a5a5",
+".y c #d1d1d1",
+".z c #cdcdcd",
+".A c #aaaaaa",
+".B c #9a9a9a",
+".C c #dedede",
+".D c #aeaeae",
+".E c #e6e6e6",
+".F c #d3d3d3",
+".G c #c8c8c8",
+".H c #bababa",
+".I c #c4c4c4",
+".J c #cccccc",
+".K c #bcbcbc",
+".L c #f0f0f0",
+".M c #b5b5b5",
+".N c #e3e3e3",
+".O c #c2c2c2",
+".P c #adadad",
+".Q c #c9c9c9",
+".R c #e1e1e1",
+".S c #a2a2a2",
+".T c #d1d1d1",
+".U c #bebebe",
+".V c #dbdbdb",
+".W c #dbdbdb",
+".X c #c8c8c8",
+".Y c #b9b9b9",
+".Z c #a8a8a8",
+".0 c #d3d3d3",
+".1 c #9f9f9f",
+".2 c #c1c1c1",
+".3 c #ebebeb",
+".4 c #b4b4b4",
+".5 c #d9d9d9",
+".6 c #cecece",
+".7 c #e8e8e8",
+".8 c #d6d6d6",
+".9 c #c5c5c5",
+"#. c #b0b0b0",
+"## c #dadada",
+"#a c #c5c5c5",
+"#b c #d1d1d1",
+"#c c #afafaf",
+"#d c #b1b1b1",
+"#e c #cbcbcb",
+"#f c #c1c1c1",
+"#g c #eeeeee",
+"#h c #9b9b9b",
+"#i c #c6c6c6",
+"#j c #c0c0c0",
+"#k c #cbcbcb",
+"#l c #bdbdbd",
+"#m c #a1a1a1",
+"#n c #b7b7b7",
+"#o c #a7a7a7",
+"#p c #e6e6e6",
+"#q c #c9c9c9",
+"#r c #bbbbbb",
+"#s c #e2e2e2",
+"#t c #b8b8b8",
+"#u c #cdcdcd",
+"#v c #d3d3d3",
+"#w c #cfcfcf",
+"#x c #e0e0e0",
+"#y c #d5d5d5",
+"#z c #bdbdbd",
+"#A c #cecece",
+"#B c #c0c0c0",
+"#C c #b7b7b7",
+"#D c #e5e5e5",
+"#E c #c4c4c4",
+"#F c #e3e3e3",
+"#G c #d3d3d3",
+"#H c #dddddd",
+"#I c #dddddd",
+"#J c #acacac",
+"#K c #a3a3a3",
+"#L c #eaeaea",
+"#M c #e1e1e1",
+"#N c #b9b9b9",
+"#O c #d5d5d5",
+"#P c #bababa",
+"#Q c #d7d7d7",
+"#R c #b5b5b5",
+"#S c #d1d1d1",
+"#T c #c6c6c6",
+"#U c #dcdcdc",
+"#V c #b4b4b4",
+"#W c #c6c6c6",
+"#X c #a8a8a8",
+"#Y c #a0a0a0",
+"#Z c #cbcbcb",
+"#0 c #bfbfbf",
+"#1 c #cbcbcb",
+"#2 c #a4a4a4",
+"#3 c #c0c0c0",
+"#4 c #bbbbbb",
+"#5 c #9c9c9c",
+"#6 c #a2a2a2",
+"#7 c #dcdcdc",
+"#8 c #c3c3c3",
+"#9 c #9d9d9d",
+"a. c #aaaaaa",
+"a# c #d5d5d5",
+"aa c #eeeeee",
+"ab c #b6b6b6",
+"ac c #b0b0b0",
+"ad c #b3b3b3",
+"ae c #c9c9c9",
+"af c #e9e9e9",
+"ag c #bdbdbd",
+"ah c #a0a0a0",
+"ai c #b0b0b0",
+"aj c #e8e8e8",
+"ak c #cacaca",
+"al c #c3c3c3",
+"am c #dbdbdb",
+"an c #d0d0d0",
+"ao c #d8d8d8",
+"ap c #c7c7c7",
+"aq c #dcdcdc",
+"ar c #c7c7c7",
+"as c #f0f0f0",
+"at c #a3a3a3",
+"au c #bfbfbf",
+"av c #d9d9d9",
+"aw c #dfdfdf",
+"ax c #d3d3d3",
+"ay c #c0c0c0",
+"az c #cacaca",
+"aA c #b3b3b3",
+"aB c #cfcfcf",
+"aC c #dadada",
+"aD c #b2b2b2",
+"aE c #e2e2e2",
+"aF c #d7d7d7",
+"aG c #c4c4c4",
+"aH c #b8b8b8",
+"aI c #cdcdcd",
+"aJ c #a6a6a6",
+"aK c #d2d2d2",
+"aL c #cecece",
+"aM c #acacac",
+"aN c #dfdfdf",
+"aO c #d5d5d5",
+"aP c #c9c9c9",
+"aQ c #bcbcbc",
+"aR c #c6c6c6",
+"aS c #cdcdcd",
+"aT c #bebebe",
+"aU c #f2f2f2",
+"aV c #b6b6b6",
+"aW c #e4e4e4",
+"aX c #c3c3c3",
+"aY c #e2e2e2",
+"aZ c #d2d2d2",
+"a0 c #dddddd",
+"a1 c #dcdcdc",
+"a2 c #ececec",
+"a3 c #eaeaea",
+"a4 c #cccccc",
+"a5 c #c7c7c7",
+"a6 c #c2c2c2",
+"a7 c #cccccc",
+"a8 c #a8a8a8",
+"a9 c #e7e7e7",
+"b. c #e4e4e4",
+"b# c #d9d9d9",
+"ba c #bababa",
+"bb c #cfcfcf",
+"bc c #d4d4d4",
+"bd c #d0d0d0",
+"be c #aeaeae",
+"bf c #e1e1e1",
+"bg c #d7d7d7",
+"bh c #cfcfcf",
+"bi c #b8b8b8",
+"bj c #e6e6e6",
+"bk c #c5c5c5",
+"bl c #e4e4e4",
+"bm c #d4d4d4",
+"bn c #dfdfdf",
+"bo c #dedede",
+"bp c #ececec",
+"bq c #bababa",
+"br c #bcbcbc",
+"bs c #b0b0b0",
+"bt c #cccccc",
+"bu c #a6a6a6",
+"bv c #c1c1c1",
+"bw c #bcbcbc",
+"bx c #ababab",
+"by c #d7d7d7",
+"bz c #b7b7b7",
+"bA c #b2b2b2",
+"bB c #b4b4b4",
+"bC c #bfbfbf",
+/* pixels */
+"aYbla9a9a9.7#D.N#L#La9.7a9#D#D.7#D#D#DaY#x#xa0ama0ama0am#xbnbnbnaYaYaYaYaY#DaYaYaYbn#x#x#xaY.N#Da9a9a9a9a9a9a9a9a9.7a9a9a9#Da9#D#L#L#L#L#L#La2#La2a2a2a2a2a2#ga2#ga2#ga2a2#ga2a2#L#L#L#Lafa9a9a9bl#Dbl#Da9a9a9#L#L#Laf#L#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2a2#La2#L#L#Laf#L#Laf#L#Laf#L#Laf#L#Laf#Laf#Laf#Laf#Laf#L#D#DblblaYaYaCa0.t.Fb#bnbnaCbnblblblblblaYaY.RaYblblblblblblblbla9a9a9a9a9a9#pa9a9#pa9#pa9#pa9#pa9#pa9a9bl#D#D#D#pa9#pafa9a9a9a9#L#Lafa9a9a9#D#D#pbl#U.V.Vb#.8am#xbn#IaYbl.N.N#x",
+"am#I#Da9a9a9bj#D#La9.7#D#Da9#D#D#p#DaYaY#xbna0amamamb#a0a0a0a0bnawaYaYaYaYaYaYaY#xbnaY.R#xaYaY.Nafa9afa9afa9afa9.7a9.7a9bja9bja9#Lafa2afa2af#L#L.3#La2#La2bpa2#La2#ga2a2#ga2a2#g#L#Laf#L#La9afa9bl#Dbl#Da9afa9#L#Laf#L#Laf#L#Laf#L#L#L#L#L#L#L.7a2#La2a2#La2#La2#Laf#L#Laf#Laf#Lafajaf#L#Laf#L#L#Lafajafajafajaf.na9#s#Daw#xbnaCb#bg.Vbnbn.RaYaY#Mbl#pblaYblaYaYaYblblbl#D#Dbl#D#paf#pafa9#pa9afbla9#pa9#pa9#pa9#pa9#p#D#p#Da9#D#pa9#pa9#Da9#Da9af#L#La9.7#D#s#D#MaYbnaCb#aOb#aC#x#UaYaY#M#DaYbf",
+"aOambn.sa9bja9.7a9.7a9#Da9bj#D#D#D#DaYaY#x#xa0amaFaFbgb#aF.Va0.VaYaYaYaYaYaYaYaYbn#xaY#xaY.N#D#Da9a9a9a9a9a9a9a9a9bja9#Da9#Da9#D#L#L#L#L#L#La2#La2afa2a2a2a2#ga2#g#La2bpa2bpa2#L#L#L#L#Lafa9a9#p#DaY#D#Da9a9.7a9af#Laf#L#Laf#Laf#L.7#L#L.7#L#L#L#La2a2a2#La2#L.3#Laf#Laf#Lajaf#Laja9#Lajaf#Lajafaja9#La9#La9#La9a9a9blaYaYaYawa0b#b#.paYaYblaY.Rbla9#pblblaYblaYa9#p#D#pa9#pa9#pa9a9a9#pa9a9#pa9bl#pa9#pa9#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9#pa9a9a9#L#Lafa9a9#D#D#Da9awbn.pb#bgamaCbn#xaw#D#D#D.N#x",
+"amamaC#x#D#s.7.7a9#Da9#D#D#D.N.N#xaYaYaY#xbna0a0aOaFb#aOb#bg.Vambna0bnaCa0aYaYaY#U.RaYaYaY#Dbl#Da9a9#La9af.7afa9.7a9.7a9bja9bja9#L#L.3#L.3#Laf#Lafa2#L#La2#La2bpa2a2#ga2#ga2a2#g#L#L#L#Lafa9afa9.Nblbl#Da9a9afa9#Laf#L#Laf#Laf#L#L#L#L#L#L#L.7#L#La2#L#La2aja2#Laj#Lafaj#Laf#L#Laf#Lafafajafaf#Lafaj#Lafajafaj#Laja9.n#D#MaY.R#xbga0bnbn.RaYbl#Ua9#pa9#D#Dbl#D#Dbl#Dbl#Dbla9#Da9a9#pafa9af#pa9#p#pa9#pa9#pa9#pa9#pa9#p#D#pa9#Da9a9af#pafa9af.7a9#Laf#L.7a9#s#D#saYaY#Ua0aObgao#x#IaYbl#D#s#D.sbf",
+"amaOama0.N.Na9a9bja9#Dbj#D#D#DaY.N#x#x#x#xbnaCa0#H.Vbgb#b#aFbgambnbn#Ubnbnbnbnbn#xaYawaYbl#Da9#Da9a9a9a9a9a9a9a9a9bja9#Da9#sa9#D#Laf#L#L#L#La2a2a2afa2#La2#ga2a2#g#L#g#La2bpa2#L#L#L#Laf#La9a9#pbl#Dbl#Da9a9.7a9#Lajaf#Lajaf#Lajafafajafafajafaf.j#L.3a2#Laf#La2af#Laf#Laf#Laf#L.n#L.n#La9#L#Lafa9afa9aja9#La9af.7afa9#Dbl#IaYawa0a0#UbnaYblblaY#pa9#pa9#D#D#D#Dafa9afa9af#pa9#pa9afa9#pa9a9a9a9#pa9#pa9#p#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9a9.7a9.7af#Laja9a9#D#D#saYawbnaCb#aobn#x.Nbl#s#D#D#D.N.N",
+".CamaOao.WaY#D.7#s#Da9#D#D.NaY.N#x#I#xbn#xaY#x#U#xa0a0a0bgamb#ambga0ama0am#xa0a0.RaYaY#Dbl#Dbl#Da9a9a9a9afa9afa9.7a9#D.7#Dbja9.7af#La2#La2af#L#La2a2a2a2a2#L#g#L#ga2a2#ga2#ga2#g#L#L#L#Lafa9a9a9#Dawbl#Da9a9a9.7af#Laf#Laf#L#Laf#L#Laf#L#Laf#L#Laf#L.j#La2afajaf#Lafajaf.Eafaj#Laf#Laf#Lafaja9aj#Lajaf#Laf#Lafajafajaf.n#DblaYaYaCbn#xbnaYaYaY.Rbla9#p#Da9a9.7#La9a9a9a9a9afa9afa9a9afa9afa9afa9#p#pa9#pa9a9#pa9#pa9#p#D#pa9#Da9afafafaf.7a9a9.7#L#Lafa9.n#D#s#D#D#x#Ua0aCaC#x.saY.s#D.7a9.Ebj.N",
+"#xa0.8a#.8.Cbf.N#D#D.N.NaY.N.saY#x#xaY#IaYaYaYaYaYaY#x#x#xa0aCam.Vb#bg#yb#.Va0bnaYaYblaY#Da9#D#Da9afa9af.7a9a9a9.7a9bja9#s#Da9.7ajaf#Laf#L#La2#L.3#La2#La2a2#ga2a2bpa2#L#g#La2bp#L#L#Laf#La9af#paYbl#D#Da9a9a9a9#L#L#Laf#Laf#L#Lafafafafaf#Lafaf#La2#La2afajaf#Lajaf.7af#Lafa9aja9aja9#L.n#Lafafa9#L.n#L.n#La9#Laf#La9a9#Mbl#xaY#x#IaYawaYaYaYaYblbl#pa9a9.7#L.7afaf#Laf#Lafa9afa9a9a9a9a9a9a9a9a9#pa9#pa9#pa9#pa9#pa9a9#D#D#Da9af#Lafa9a9a9.7af#Laja9a9#D#D#D#M.N#I#xaCa0#UaY#D.NaY#D.n.7bj#Dbj",
+"#x#xa0#vbcaq#xbf#D#D.Nbl.s.NaYbf#x#x#xaYaYaYaYaYaY#M.NaY#x#x.Ca0b#bgb#bgbg.V.p.VawaYblbl#Dbl#Dafa9a9a9a9afa9afa9.7a9#Da9#D#s#Da9af#La2#La2#Laf#La2#La2#La2bpa2bpa2#ga2#ga2#ga2a2#L#L#L#Lafa9a9a9aYaYbl#Da9afa9a9ajaf#Lajaf#Lajafafaj#Lafajafafajafa2#La2#Laf#Lafa9#Lafaja9aj#Laf#Lafajaf#Laf.7afaj#Laf#Lafajaf.Eafajaf.n#Dbl#MaY#IaY#xaY.RaY.RaY#FaYa9a9a9#L#L#Lafa9afafa9#Laf#L#La9afa9afa9afa9#pa9#pa9#pa9#pa9#pa9#p#D#p#Da9a9afa9a9.7a9#L.7.7.naf#La9.n#D#s.N.N#x#UaCbnaY#s#DaY#sa9.7b..7#DaW",
+".7aw#x.CaoaB.y.5#s.N#I.Ca0a0ama0#x.N.NaY.NaY#D#Dbl#DblaYawaY#U.CbgbmaBaSaZbma0a0blaYaY#Dbla9a9#Da9af.7afa9a9a9a9bl#D#D#D#D.N#D#D.7a9a9a9a9a9#La9afafafafafaf#Lafa2#La2#L#L#L#La2a2a2af#La9a9#D#DawaY#sbla9b..7#La9a9a9a9.7a9a9a9afa9af.nafafafafafajafajafajafajafaja9a9bl#MaY#s#Da9#Da9#sa9.na9.7af.Eaf.7af#Lafafa9a9bl#M.NaY#Ibn#UaYaYaw#Da9a9.n#p#pa9a9.7.7.7.7a9.7a9.7a9a9#Lafafaf#Lafa9a9a9#pa9a9#pa9#pa9a9a9a9afa9.7af.7.7.7afa9a9a9a9a9a9#L.na9.na9.na9.n#Maw.Nawaw.N#D#D.E.7bj.7#Dbjb.#D",
+".7#D.s#x.5.y#va#.NaYbf.Ca0ao#xbn.s.N.N#D#D#Da9#Dbl#Dbl#DaYaYaYbn.p.taBan#uaZ.FbgbnawaYawbl#D#D#D#D#Dbl#D#D#D#D#D#Dblblawbl.N#D#Da9a9a9.7af.7a9a9afafafajafaf#L#L#La2a2a2a2a2#La2#La2af#La9#D#D#DaYaY#D#D#Da9a9.7a9a9.7a9a9a9.7a9#Lafafafaf#Lafafaja9af#pafa9af#pajaf.na9#s#DblaYa9a9.na9a9a9#Da9aj#Lafaj#La9aja9ajaf.nbl#DaYaw#xa0#x.b#xaY#D#D#p#p#p.na9a9a9#L.7a9a9a9a9a9.7a9#Lafafafafafafa9af#p.na9#pa9a9a9afa9af.7a9#L.7#L#La9a9.7a9a9.7.na9a9a9.na9.na9.na9#D#MaYaw.N#s#D.n.7.7.n.7.E#D#D.7",
+".7a9aY#xaCam#v#vaCaqa0aqama0#UaY.NaY#D#D#D#D#D#Da9#D#D#Dbl.NaY#Ibnambm#SaZa#a#b#aCa0a0#x#x#xaYbl#D#Da9#Dbl#Dbl#DblaYaYaYaYbl#D#Da9a9a9afa9afafafafafafafafaf#Laf#L#L#Laf#Laf#Laf.j#L#L.n.7a9#s#Daw#x#M#Da9#Daj.7a9.na9.7.na9a9.naf#Lafajafafajafafafajafajafafaf#pa9bl#Mbl#Daw#D.n#Da9#D.na9.na9a9af.7afafajaf#Lafa9a9#sblaY#x#IbnbnaYaYawbla9a9#p#pbl#pa9#D.7.7a9.7a9.7a9a9#L#Lafaf#Lafafa9a9a9a9#pa9.n#pa9a9a9afa9a9#L#Laf.7afa9a9a9a9.7a9a9a9.naf.na9.na9.na9#M.Nawaw#D#s#D#Daj.7aj.7#D.7b.a9",
+"a9#saY.s.Ca0aF#v#v.5#vaF.8a0#x#D#D.N#D#Da9bja9.7a9a9bl#D#DaYaY.N.R#Uama#aFaOaFaFb#b#b#a0aCa0#I#xaYblaYblbl#DblaYaw.R#IaYawaY#D#Da9a9a9a9a9a9a9a9a9#p.na9af#La9.7af#Laf#Lafajaf#L#L.3#La9#D#D.NaYaYaYbl#D#D.7a9.7a9.7a9a9a9.7a9.7a9a9a9a9.na9#pa9.n#pa9#pa9#p.na9#sbl#s#Dbl#DblaYa9a9a9.Ea9a9bja9a9.na9#sa9#Da9#Da9.nblbl#D#M#x#x#U#x#UaYaY#Da9#sa9#p.na9a9.7a9a9#La9a9#La9#L#L#L#Lafafa9#La9afa9#pa9#pa9a9a9a9.7#Laf#L#L#L.7#L.7.7a9.7.na9a9.na9.7.n#D#D#s#D#M#D#Mbl.s#D.s#Da9#D.7.na9a9.n.7#D.7",
+".N.N.NaY#Uaqamaoa#aB.0a#ambn#xbl#D#D#D#D#Da9.7a9a9.7a9#D#D.s.NaYaY.RaCamamaF.5b#amaob#amama0a0a0#IaYawaYaYaYaYaYbnbnbnaYaYaYbl#D.na9a9.7afa9a9a9a9af#paf.na9afa9.n.7#La9.7a9#L#Laf#La9a9#D#D.N.NaYaY#Dbl.n#D.7af.7a9.na9.na9a9.na9.na9a9#pa9.na9a9a9.na9.na9a9a9aY#MaYbl#sbl#s#D.n#Da9#Da9#sa9.n#Da9a9.7a9.na9.na9a9#DawaY#x#x#xbnbnaYawaYbla9a9a9a9#pa9#Da9a9.7a9.7af#L#L#La9#Laf#Laja9.7a9.7a9a9.n#pa9a9.7#Da9a9#L#La9#Laf.7afa9a9a9.7a9a9bja9#sa9#D#M#D#M#D#sbl#saY#saY#s#D#s.7a9.E.7#D#D#D#D",
+"#I.N#I#xamaCamaFaB.Gaz#u.8am#xaY#D#D#D.7a9bja9.7.7a9.7a9#D#D#D.N#Ubna0aCama0amao.Va0amaCama0aC.Cbnbnbnbn#x#Ubn#Uam#Ua0awaYaYaw#D#pa9a9#pa9a9a9#p.na9a9a9a9a9.7a9.7a9af.7afa9a9a9aj#La9.E#D#D#saYaY#Mbl#Dbja9.7.7a9a9a9.7a9#sa9#D#p#D#pbl#sbla9#D#sblbl#Dblbl#sblawaY.N#MaYbl#Dbla9.Ea9.na9.7a9a9#D#s#D#s#D#D#D#D#D#MaYbl.Naw#x#Ibn#I.R#xaY#Da9#Da9a9a9a9.na9a9a9.7a9a9#La9#La9a9#L#Laf#La9a9#Dbj#pa9a9a9#Da9.7.7afafa9.7a9.7#L.7a9.7a9a9#sa9.na9#D#D#D#s#D.sbl#Dawbl#saY#sbj#Da9#s#D.Nbl.saY.s.N",
+".Cbf.C.Cam.5aoa#.la5.G.waZ#va0.C#D#D#D.7a9a9#L#La9#L.7.7.7#D#D#D#x#x#x#x#x#xa0bnam.Va0.Va0a0#xbnaY#x#Ia0a0aCa0aCa0ambnbnaYawblbl#Dbl#M#Dblbl#D#Mbl#pa9a9#Da9a9.7a9.7a9.7a9.7a9a9#La9.n#D#D.NaY.NaYaY#D#Da9#Daja9.7a9a9a9a9.7a9.n#D#M#D#sbl#sblbl#D#M#D#M#D#M#D#M#x#xawaY#Dawa9#Ma9#Da9#Da9#sa9#s#D#D#D#D#D#s#D#sbla9blaw#x#x#xa0#UbnaYawaYbl#D.na9a9a9a9a9#Da9#pa9#La9#L#La9.7af#L#L#L.7#L.7.7.na9a9#D#s.7#D.7.7afa9#La9af.7a9.7.na9.na9a9a9#Da9#s#Dawblaw#D.sbl#sbl.s#D#D#s#D#saY.Naw#xaYbf#x#x",
+"aqaoamavam.8a##v.5#Saza7.w#u#vam#Da9#D.7a9.7a9a9.7#L.7#La9bj#D#D.Cbn#xbnaYaY#x#x.pb#.Vamaobnbn#xbnbn#xbn#xbn#xa0a0b#aCa0aw.R.Nblaw#Dbl#Dbl#Dblbl#pa9#Ma9a9.nbja9a9a9#La9a9a9.7a9.na9#D#D#DaY.N.NaYaYbl#D#sa9a9#La9.Ea9.7a9a9#Da9#M#Dbl#Mbl#sbl#s#Mbl#sbl#D#MaY#sa0#I.NaYaYblbl#Da9a9.na9.Ea9a9a9#D#D#s#D#s#D#D#D#Dbl#saY#x#xaC.Ca0#x.R#xaY#D#Da9a9a9a9a9a9#p.na9a9a9a9#La9#La9a9#L#L#L.7#La9.7.7a9a9a9#Da9.7af.7a9afa9.7a9.7#L.7a9a9bja9#s.7.na9#sbl.s.saYaw#saY#saY#saY#s#D#s#D#xaY#x.W.C.C.Waq",
+"amaFaOaFaOaFama0aY#x.8.0#u#uan#uam#xaY#Da9a9.7a9#Laf#L#La9#D#D.sbl#D#sbl#xaYaw#x.Rbn#Ub#.Va0b#b##Ubnbnbnbna0#xbnbnaYaYaYbnbn#UbnaYaYblaYblawblawa9.n#p#pa9#pafafa9a9a9.na9a9a9a9bl#Dbl#Dbl#sblblawaY#D#Da9.7.7#Laf#Laf.n.7#D.7#D.NaYawaY#xbn#Ua0#U#Ubn#UbnaC#UaY#xawaY#M#D.na9ajaY.N#Dbla9a9.na9.nbl#DblaYaYaw#x#MblaYawbn#Ibna0.b#U.RawaY#Mblbl.na9a9a9a9a9afa9#Dbj#D#D#D#D#D.7#Lafa9afa9.7#Da9#sa9a9a9#Da9.7.7afa9a9a9a9#D#s#D#D#Daw.N.NaY.NaY#D#sbl#saY#saY.N.na9#D#s#DaY.N.N#I#x.CamaoaFbya#",
+"bgb#amam.5aCa0.C#M#xa0aFaZ#uaB.0aO#xaY#Dafa9a9a9#L#L.7af.7#D#D#D#D#DaY#D.N.N#xaY.Cbna0a0b#aFb#aF.Vbnbna0#Ubnbn#x#U#x.R#xawaYbn#x.R#I.Raw.RaY#x.R#p#p#pbl.na9a9a9a9a9a9#Da9#s#D#M#Dblbl#sblbl#DblaY#Dbla9#Da9af.7ajaf#L.7a9.n#Da9#M#DaYaYaYaYbnaCbn.paCa0bgaoaC#UaC#I#xaY#MaYblbl#Mbl#M#D.na9a9.n#D#M#D#M#DaY#DaY#M#pawaY#Ibn.Ca0aYbnaY.RaYblbl#Da9a9.na9afa9a9af#D#D#D#D#D#Da9#Daf#L.7a9.7#Da9#D#pa9.na9a9b.a9.7.7a9.7a9bja9#D#D#D#D#DaY#Daw#Daw#D#D#M.N#saY.saY#sbl#sbl.Naw.Nawbna0aCa0.8a#aF.5",
+"amamaCa0a0#x#xaYblaY#Ia0bc#u#ua#amam#x#D#Da9.7a9#Laf#La9a9.7#D#Dbl#D#D#MaYaYboaYbna0a0aoamb#aOb#b#am.Va0bnbn#Ubnbn#xaYaY.R#xawaYbn#UbnaCbn#Ubn#U.RawaYblaYblawbl#D#D#D#Dbl#Dbl#Dbl#Dblbl#Dblbl#DaYaw#D#Da9bj.7#La9#Lafa9a9bja9bj#D#MblawaYaw.R#Ubn.V.8#vaB#S#waOaoa0aC#x#x.N#I.NaY.NaY#D#D#D.n#Dbl#sbl#Dbl#saYaYblawaYaYbnbnaCbn#U.baYawaY#M#Dbla9.na9a9.na9.na9#s#D#s#D#s#D#D#D.na9a9a9a9#D#D#D#pa9a9#Da9#D#L.7a9.na9#D.n#D#D#D.saY.saY.NaY.saY#sbl#s#Daw#DaY.NaY.NaY.saY.NaY#x.Wa0a0a0aOam.8a#",
+"#x#x#x#xaYaY.N.N.7#D#x#xb#aZ.ya#amaObn#Da9#Da9bj#L#L#D.7#Da9.7a9a9.nbl#D#DaYaY.NaC#xa0.Vamb#aFaF#vaFbga0a0bn#xaY#Ubn#U#xaYaYaYaYbn#xa0a0a0a0aCa0bn#Ubn.baYaYaYaYbl#D#M#Dbl#D#Dbl#Dbl#s#D#D#D#D#MaY#Dbl#D#Da9.7a9ajafaj.7a9a9#sa9a9#M#DaYaYaY.b#xbgb##vaBa7.Q.z#S.5aO.8aoao.Ca0.W#x#I.Naw.NawaY#DawaYblawaYaYawaYawaYaY#U.C#U.Ca0aY#x.RaY#xblbl#D#Dbla9a9a9a9a9a9#D#D#D.NaY.N#s#Da9a9#sa9a9#M#Dbl.na9a9a9a9bja9.7a9a9a9.7#D#D#D#saY#DaY#Daw#DaY.N#M#D#s#Dbl.s.N#M.Naw.N#xaY#x#I#x#Ua0a0aCamama0am",
+"aYaYbl.s#D#D#D#Da9#D#s.N.CaOa#aF.5ao#x#Dbl#Da9#Da9a9.7a9.7a9a9.7a9a9a9#Dbl.NblaY#x#xbna0a0amaFaFbmaFaFamaCbn#U#xbnbnbnaY.b#x.R#xaYbn#xbnaCa0bna0#Ubn#Ubnbn#I#xaY.NblaYaYawaYaw#Dbl#Dbl#D#M#Dbl#DaYaY#Dbl.na9.7a9#La9#La9a9bja9#D#MaYblawaY.R#x#U#S#SaB#uaz#u#vaO.8aOaOaOaOaOaOaO.Caoa0.W.C#I#x#I#x#I#x#x#I#x.NaY#x#Ubn#UbnaCbnaC#I.R#IaYawbl.sbl#M#D#Ma9#D.n#Dbl#D#D#s#D#D#D#D#D#Ma9bl#D#D#DblaYa9#p#sa9#D.n.7.7.na9#s#D#s#D.NaY.saY.saY.NaY.saY#s#D#p.s#saYaY.N#IaYaYaw#x#IaY#I#x#x#I#x#x#x#x#x",
+"#D#D#D.7.7.7.7.7.7a9a9#DaY.CaO.y.5.5bnaY#D#D#D#D#D#Da9bja9a9.7a9a9a9#Da9#sbl.N#MaYaY#xawbna0aCb#aOaFbgb#b#a0a0bn#Ibnaw#xaYaYaYaY#Ubn#IaYaYaYaYbnbn.R#xaw#x.R#Ibnaw#IaY.sbl.Nbl.N#D#M#Dbl#D#M#DblawaY#M#D#D#s.7a9aj#L.na9.n#D#s#D#DaY#IbnaY#UbnaCaB#SaB#u#uaBaO.5amaoam.8.5aO.y#1#1#u.yaOamamaoamamamaC.C.C#xbn#x#Ua0aC.CaCa0#Ia0.R#x#UaYaYblaY.N#D#p#D#sbl#Dbl#D#s#D#D#D#D#s#D#Da9#p#MblblawaYaY#Ma9bl#sa9bja9.7#Da9a9.7a9#Daw#DaY.saY#Daw#DaY#D#M#D#sbl.N#saY.saY#xbo.N.N.s.N.Naw.N#D#D#D#Da9#D",
+"a9.7.7af#Lajbp#L.7#L#La9#DaYa0#va#a0a0.Cbl#D#D#Dbj#D#Da9.7a9#L#L.na9a9a9a9#D#D#Dbl#DaYaY#xaYbna0b#aFb#b#aob#aoambnbnbnbn#U#x.R#xaY.RaY.R#IaYaYawblblaYblaYaYaYawbn#I#x#UaYawbl#Daw.N#D#D.NaY.NawaY#xbl#D#D#Da9.Eafaf#La9#D#D#D#D#I#x#xaCa0aCaoaO.FaO#v#u#u#uaFbgaC.Caoa0ao.5aB.z.U.Oaz.y.y#vbm.y#v#v.5amaoamao.8amaoa0aoa0#Ua0#x#U#xbnaw.N.saY#sbl#Dbl#Dbl#D#M#D#D#D#D#D#D#D#D#D.nbl#Dbl#xaYaYaY#pbla9bl#D#s.7.7.na9#Da9#s#D.NaY.NaY.Naw.Naw.Naw#D#M#D#D#Maw.Naw#x#IaYaY#s#Da9.nbj.7.7b..7.7bp#L",
+"#L.7#L#Lbpbp#Lbp.7#L#L.n#D.N.C.5a#amaCaoaY#D#D.N#Da9#Da9#La9#Lafafa9a9#Da9bl#Dbl.n#D.nblawaY#x.Ra0.Vbgamb#amaFaF#Ubn#U#xbnbnaYaYawaYawaYaYblaYaY.bblaYblblblaYaYaYaYaY#I#x#I#x#I.NaYaY.sbl.sbl.NaYaw.N#M#D#sa9.7a9a9.na9.n#D#s#D#xaCa0aoaob##SaBaOaF#S#uaB#v.5aoa0aCamaoao.8#v#v#3ar.wanazaz#3#C#3aX.w.yaOam.8amaCambga0aoa0aCbn#U#x#IaYaw.NaY.NaYaY#sbl#sbl#D#M#D#D#D#D#s#D#D#DblblaY#MaY#IaYawbl.nbl.n#D#Da9#D#Da9.Ea9#D#D#Daw#D#saY.Naw.NaY.N#M#D#s#D.saYawaY#I.N.N#sa9a9.7af#L.E#L#Laj#L#L#g",
+"#L#L#L#L#La2bpa2#L.j.7.7#D.Nbf#IaFaBa7an.5a0#Daf#D.7#D.7a9a9#L#L#D#Da9#D#M#D#Dbl#Dbl#Dbl#Dbl#sblaw.RbnaCb#aOaFa#bg.VambnaCbnaw#x.RaYaYaY.baYawbl#pbl.n#Da9a9#D.7#s#D#D#D#D#D#MaYaw#IawaY#x.N#I#x#IaYaY#D#Da9.na9aja9.n#D.N.N#x.CaCb##vaB#uaBaB#v#SaOaOaOaObg.8am.W.WaCaCamaOaB#u#a#faz#Sa#aBaBaz#u#u#uaz.w.wa7#u#uaB.yao.5aC.C#Ia0.pa0aCbnawaY.sbl#saYaYaY#DaYaY#D#s#D#D#D#D#D#D#s#D#sblaY#x#I#x#D#D#D#Da9.n#D#sa9#D#D#D#s#D#D#D#sbl#s#D#saY.saY#MblaY.C.W#I.N#s#Da9#sa9.7.na9.7#L#L#L#L#L#L#L#L",
+"bpaj#Lbp#Lbp#Lbpa2#L#L.7#D.Nbfbf.Va#an#uaB.8bn#D#Da9#Da9.7a9ajafa9bl#Dbl#D#D#M#D#D#Dbl#D#Dbl.NblaYawbnamb#aFbm#Sb#.Vaobn#xbnaYaY.baY#MaYblaYblaY#pbl#p.n#Da9.n#D#D#D#s#D#s#D#D#saY.s#x.s#I#x#Ibn.W#I#xaw.N#s#D#D#D#D.NaY#I#x.WaCaCaCaF#SaB#v#SaOaOaOb#aOb#bgamao#x#I.CaCao.8#u.w.OaG.G#SaBaBbmaB#v#v#va#aB#u.G.Galbk#Taz.w#v#v.5bg.5bga0ao.C#IaYaY#Dbl#DawaY#D#M.NaY#D#s#D#D#s#D#D#MaYblaY#I#x#x#M#s#D#s#D#D#D#D#Dbj#s#D#D#D#s#D#D#s#D#Daw#Daw.N#M#s#x#I.Cbf.s#D#D.n.7a9.7a9.7.E.7#L.7#L.7#L#L#L",
+"#Lbp#L#g#La2bpa2a2#g#La9bj#D.Nbf.RaCaOaZ.yaFa0aY#D#D#s#Da9a9a9a9#D#Da9#Dbl#D#Dbl#D#M#D#D#M#Dbl#saY#xbnaCa0aOaF#Sb#bg.VbnaCbnaY#xaYaYaY.baYblaYbl#Ma9#p#Da9a9#D.7#D#sbl#Da9#Da9#D#D#D#saY.N#I#I#Iaoao.W#xaY.Naw.N#I#I#U.WaCaoamaobnaCaO#vaF#vaOaFbgambgambg.5.8amav.WaC.CaoaF#uaza6.OazaZaB#vaF#vaFaFam.5aF#v#SaB.G.O#3bv.G.GaPaP.w#u#vaFama0.C.C#IawaYawaY.NaYaYaY#MaYaYaYblaYawblaYaw.NaY#I#x#I#D.N#M#D#D#s#D#s#D#s#D#D#s#D#Dbl#s#p#saY#s.Naw.Nblaw#I#xaY.N.N#sa9.7a9.Ea9.Ea9#L#L#L#L#L#L#L#L#L",
+"#La2bp#L#Lbp#Lbp#L#L#L.7#Dbj#D.NaYbna0aoa##vam.C#D#D#D#D.7#D.7a9a9#D#Dbl#D#Dbl#Dbl#Dbl#Dbl#D#DaYaYaYawbna0b#aO.Fbgb#ama0bnbn#IaY.bblawblaYaY#MaYa9#p#sa9a9#Da9#Da9a9a9a9a9.na9a9#s#D#D.saY.NaY#x.C.C.C.W#I#x#I.WaF.8a0a0a0a0aCa0aCaCb##vaFaO#vbgaob#aoaoamaoaCam.W.Caoa0.8#v#ubkab#aan#vaZ#vaFa#aoaobga0aoamamaOa#aBaZ#u.w.w.G#3#3#a.w.y.yaOb#aCbnbn#I#xbn#UaYawbfaYbfaw#x.s#xaY.NawaYbl#x#Ibn#I#Daw#D.s#D#s#D#D#D#D#D#D#D#D#s#D#D#Dbl#saY#saY.saYaw#xaw.N#s#D#D.7.n.7a9.7a9.7#La9aj.7#L.E#L.7#L",
+"bp#L#L#g#L#g#La2#g#L#L#L.7#D#DbjawaYaCamaoa#.8aF.N.s#D#D#D.n#Da9#sbl#D#D#M#D#D#M#D#M#D#Dbl#sbl#saYaY#x#UbnaCb#b#bgb#bga0aCbn#x.RaYaYaYaYawblaYbl#p.n#pa9a9.nbja9.7a9.7#sa9#D.7.na9a9#D#D#D#saY.s#x#I#I#x.C.Wa0aoaoama0.W.C.Wa0#Ibn.paO#S#v#v#S#Sbgaoaoa0aoa0avaCaqaoavao.8#v.w#T.Y#3an#va#aOamaOa0bnaoambgamaoam.pa0bgb#aoaFaO.ybk#T.GaXaz.waBbyaCa0a0bnaCa0#Ibn#I#x#x#x#x#x#xaC#x#I#x#I#x#I.C#IaY#saY#saY#D#M#D#s#D#M#D#M#D#D#D.n#M#D.s#DawaYaw#x#IaYaw#sa9.7.n.7#L.7aj.7#L#L#L#L#L#L#L#L#L#L#L",
+"#L#g#L#g#g#gbp#L#L#L#L.7af.7.7.7#D.N#xaob#.8a#a##DaY#D#D#D#Da9bjbl#D#Dbl#Dbl#D#DaY#DaY#D#M#DaYaYaYawaY#x#Ibna0aCbgb#bg.VaCbn#U#xaw.Raw#FaYblaYbl#D#p#Da9#Da9a9#Dafaj#Laf#Lajaf.7a9#Da9#sa9#D.Nbl.NaY.NaYaY#I.C.Wamaoaoaobga0aoa0aCam#vaBa##SaBaBaobgaoaoaC.Waqaoav.8ao.5aOaBazaX#4alaza##vaOam.5aC.Wa0.Wa0aob#.8bnaCaCaCaC.W.WaC.y.yaB#ubkbkaX.Oazae#vaO.5ao.pbga0a0a0#Ua0aCa0ao.CaCaCa0#IaCa0#IaYaw#D.sbl#s.N#s#Dbl#D#s#D#D#sbl#D#D#saYaw.saw.NaC#xaw#D#sa9.n.7a9aja9#La9aja9#L#L#L#L#L#L#L#L#L",
+"#Lbp#ga2bpa2#L#g#L#L#L#L#L#L#LafbjaYaY#xama0.5aO.N.NaY.s#D#D#Da9#Dbl#s#Dbl#Dbl#D#M#D#M#DaYblaw#D#MaY#I.R#U#x#U#Ub#b#bga0aCa0#x.R.Raw.RaYawaYblaw#p.n#pa9.na9#Da9aja9af.Eaf#Lafajafaja9#Da9#s#Daw#D#s#D#s.NaY.NaY#U#Ua0.paobgb#bgaO#vaB#u#u.y#ua5aObgaoamaoamaoavam.8.8#v#v#u.w.GaTbw.G.0#vaFaoamaoa0aoama0aqamaoamaCaqaC.W.W#I#Iaxbgaobg#va7.Oau.U#3#3a5#uaB#vaFaoaoa0amaCamaob#aoamaoaoa0aC#Ibn.sawaY.sbl#saY#s#D#s#DaY#saY#D#D#s#p#s#DawaY#Iaw.C#I.N.naf.Ea9.7aj#L#Laj#L#L#Laj#L#L#L#L#L#L#L#L",
+"a2#L#g#g#g#gbp#L#L#L#L#L.7#L.7#L.N.N.s#x#xao.5b#.NaY.N#D#D#D#D#D#M#D#Dbl#D#D#sbl#D#Dbl#Dbl.sblaY.NaY#x#I#x#U#UaC.Vbgb#bgaCaC#U#I.R#x.baY.RaYblaYa9#pa9#Da9#Da9bjaf#Laf#Laf#L#La9#La9a9a9.7#Da9#D#sa9a9a9#D.NaY.Na9#paY#Ua0aoaO.yaBaBazazan#u.Gbk.daOaO.8aoavao.8.8.8bd.yaL#uazaX#0#4#TaZaOaO.5aoa0.Camaoamaoamambcby.8.C.C.W.W.W#U.rbgaO#S.yaB#uaP#3.U#3arbk#u#vaFbgbgaob#aob#bgamaOaoaoaoaC#U#IawaY.sbl.s#D#Daw#DaY#s.N#M#D#s#D#s#D#M.NawaY.s#xaC.C#Ma9aj#L.7.naf#Laf#Lafaj#Laf#L#L#L#L#L#L#L#L",
+"#g#g#Lbp#Lbp#Lbpa2a2#L#L#L#L.7#L#D.N.NaYbo.C.C.W.Vbn.N#Dbjbj.E.7#D#D#D#D#s#D#D#D#D#s#D#s#D#D#D#sawawaYaw#x#U#xaCa0aCa0aC.Vamb#a0aYaw.RaY#M#p#M#pajafaj#pa9a9#Mbl.na9a9a9a9a9a9afajafaja9#D#s#D#Dbl#D#s#D#s#D.n#Dbl#saYaYaw#x#IaCaOaB#1a5.w.wbkaV.Qbt.ybcbc.8bcbcaBaB#u#uaz.waP#T.O#zbw.6aF#vaOaFambga0amamaOaoaOaoaCa0.WaC.W.C#I.WaCaoaOaoaOaobg#v#v#S#1.Q#3agaV#1aB.8aOamaoaCbg#v.8aoa0aC#x#U#Iawaw#D.s#D#s#D#s.N#saY#s#Daw#D#Mbl#saYaw#x#I#xaC#D#sbj#D#D.7#s.7.7.E#L.7#Laf#L#La2a2a2#ga2#g#g#g",
+"#gasbp#g#Lbp#Lbp#L#g#L#L#L.7af.7#D.NaYbf#x#x#x#xaCbn#I.N#Dbja9.7#D#D#D#D#D#D#D#D#D#D#D#D#D#s#D#DblawaYawbn#I.WbnaCa0.pa0aoa0aoam#UbnaYaYaYblblbl#paf#p.n#pa9bl#Da9a9a9aja9af.na9.7af.7a9a9a9#D#sa9#M#D#D#D#D#D#D#D#D#M.NaY#x#x#xa0am#vaB.z#u#Ebi#nbCaX.Q.y.y.QaXbka5#u#u.w.wbkaP.O#4#4.wa##v.5a#aoamambg.5aO.5a#aoamaC.WaC.W.W#IaCaC.WaCaoaoaoao.8bg.8#v#v#u#uaPagagaXbka5aBaBaB.y.z#S.8bgaoamaC#x#IaYaw#D#sbj#D.sbl.sbl.N#saY.s#D#MaYawaY#U#x#Ibj#s#Db.#Db.#Dbj.na9#La9aj.7#L#La2#ga2a2#g#gas#g",
+"#ga2#ga2#g#g.7bpa2a2#L#L#L#L.7#L#D#D.N#M.N#I#x#xa0a0#x.s.N.N#D#D#D#s#D#D#D#D#D#s#D#s#D#D#s#D#D#M#D#MblawaYaw#x#I#Ubn#Ua0.pa0.pa0aCbn#Ubnaw.Rawbl.n#p#p#pa9a9bl#Dafa9a9#pa9a9a9afajafaja9.7#D.n#D#Dbl#D#s#D.n#D#s#D#D#DaY#saYaw.N#UbnaCaOaO#vaBbkbq#Rbqag#3.U#zaVau#Tazazbkbkbv#3#E#0ab.2#uaOaF#vaFaOaOaFaObyaO.8aCaCaC.C.W.W#I.W.WaCaC.WaC.WaCaCaCaCaoao.8.8#v#vbbbbap#3.U.U.U#4a5#E#1#SaFaOaOaFaC.W#x#IaY.s#D#saY.s#xawawaY.saY.sbl.NaY.s#x#x#Ia9.7.E.7.E.7.n.7a9#L.E#L.7#L#L.7#L#L#L#L#ga2bpbp",
+"#g#g#L#gbp#g#Lbp#L#g#L#L#L#Laf.7#Da9#D#DaY.N.N.sbn#Ua0.C#x.N#s#D#D#D#D#D#s#D#D#Da9a9.na9a9a9a9#Dawbl#saYawaY#U#x#U#x#Ubn#Ibna0aCa0a0#UbnbnbnaY.Rbl.n#D#p.n#pa9bla9af.nafa9afa9a9#Laf#La9a9a9bja9a9a9.na9a9.7a9.7a9a9#s#D#DaY.Naw#xaw#xaCamaoaOaB.v.O.Obqadbx.abzbi.U#3#T#3bvagag#3#4#caT.w#vaF.y#v.5#vaOa#ao.5.5aC.CaC#I#I#I#Ibo#I#Iaw#Iawaw#I#U#7.W#IaC.WaCav.W.8#v#v.y.w.G#T#3.Oag.O.w#uaB.ya#aoamaC#x#I#x.N.s#xaw#I#x#Ibfaw.Nbl.s.Naw.NaY.saY.E.7af.Eaf.7#L.E.7aj.7#La9aj#Lafajafaja2#L#ga2#g",
+"#ga2#ga2#Lbp#Lbpa2a2#L#L#L#L.7#La9.7a9#D#D#DaY.NaY#xa0#U.CaYbl#D#D#D#D#D#D#D#D#Da9a9#Da9#sa9.na9#D#M#Dbl#saYawaYawaYaYawbn#Ibn#IbnaC#xbn#Ibna0bnblblbl#Dblbla9a9.na9a9a9a9.na9a9af#L#L.na9bja9#D.na9a9a9.n.7.n.7.Ea9.7a9#s#D#D#D#sblaw#IaCaobg.d.O#ia5.G#zadadadabadaVaVbq#3#3bvbqaba8.YbkaBaO#uaFaOaFao.5aoaqaC#I#I#Iaw#I.s.sawbobo.sbo.sbobo.s#M#M.s#7aw#Iaw#I#U#IaCao.8aO#v#u.Q#3biag#3aXazaZ#vaOam.C#x#I#IaY#I#x#I#I#x#I#xaw.Naw#D#s#D#s#Da9#Laj#L#Laj#Laj#L#La9#L.E#L#L.7#Laf#Laf.7#L#L#L#L",
+"a2a2#L#g#L#L#L#La2bp#L#L#L#L#L#L#L.7#La9.7#Da9#D#DaYbnama0#xaY#s#D#D#s#D#D#D#D#Daj#Lafajaf#La9a9.na9#M#D#MaY#MaYbl#MawaYaYaYaw#x.RaY.b#xbnbn#Ibnaw#xawbl#D#Ma9#pafa9afa9afa9afa9aj#Laf.7a9.n#Da9ajafa9aja9#L.7#Laf#L.E#L.7.Ea9#sblawaw#xaCaCaO.8aBazbka5.Gbk.U#3biad.a.a.DaVaVaV.M#d.S.Yaz#u.0.y#vaF.8a0.W.C#I.C#Iaw.Naw.s.s.s#s#s#s#s#s#s#s#s#s#s#s#s#M#s#s#s#s.n.n#M.raC#OaO#w#u#E.vbkazbkbkbk.w.yaOamaC.C.C#I#I#I#x#I#x#I#x#Ibf.s.N#s#D.7a9.E#L.E#L.E#L#L#L#L.7aj.7af#L#L#L#Laf.nafaj#L#L#Lbp",
+"#gaa#ga2#L#L#L#Lbpa2#L#L#L.7#L.7#Laf#L#L#La9.7#D#saY#xa0ama0aYaY#D#D#D#D#Da9#D#Daf.7aja9#L.n#Laj#p.n#p#Dbl#s#DaY#sbl#D#MawaYaYaY#Mblbl.baYawbnbnaYaYaYaYbl#D#pa9a9a9a9a9a9a9a9a9afafaja9a9bja9#Dafafajaf#L.Eaf.Ea2#Lafaja9a9#s#D#sawaw#IaC.WaoaoaO#uae#1#u#uaz#u.O.Ubi.D#d.D#J.D.abu#6.Y.G.w.yaZ.8aoam.W#xaw#I.saw.saw.s.s#s#sbj.Eb.#sb.b.#sb..E#s#s#s#s.s#s.E#s#s#s#s.r#U#IaCaCbd#1#SaOao.ya5bkaza5.waOamaoaC#x.WaC.W#I#x#I#x#I.Naw#D#D#s.7#L.7#Laj#L#Laj#Laj#Laja9#L.E.7.n.7.Ea9a9a9a9a9.7#Laf",
+"a2#g#L#g#L#L.7#La2#g#L#L#L#L#L#L#La2#Laf#Lbja9a9#DaY.C.VaFa0#xaw#D#D#D#D#D#D#D#Dajafaf#Laf#Lafaf#p.nbl.n#Dbl#M#D#Ma9#M#DaYaw#Dawbl#MaY#Mbn.RaYawbn#xaw#x#Mbla9.naf#paja9af.nafa9aja9#La9a9a9#s#Daja9#La9#Laf.7#L#Laj.n#L.7.n.7#s#Daw#x#I.CaC.8.8#v#v#v#vaO.z#1.z.Gbk.O#zbibBbBad.x#5#9.YaPaz.y.0bgaoam#Iaw.N#s#Dawaw.s#s#D#s#s#s.E.7.E.7.E.E.E.Eb..Eb..E.E.E.E.E.s.saw#IaC.WaC#Oam.d#vao.8aFaO.8.G#3.OaB.8amaCaCaC.Wa0#I#I#I#I#x.s.N#s#D.na9.n#Laj#L#Laj#Laj#Laj.7#L.7af#L#Laf#Lafa9a9.na9a9.7.7",
+"#L#L#L#L#L#L#L#L#La2bpa2#ga2bp#L#L#L#L#L.7a9.7.7.NaY#xbnao.VaF.V#xaY#Ma9.na9a9#D#La9aja9aja9aj.7.na9.na9.na9.na9#p#s#p#D.na9a9.n#p.nbla9#sbl#saYaYaYaYaYaYaYaYaY#pa9#p#pa9#pa9.nafafaja9#D#D.N.N.nafajafaja9ajafajaf.7.na9#D.n#D#Dawaw#I.W#IaCaCaobdaO#v#v.y.y.y#u.QaX.9#TbC#r#r.aatatbB.2aX.GanaC.W#Ibobf.sbf#I#s#s#s#sb.b.bj#s.7.E.E.E.7.Ea9.Eaj#Lajajajajajaj.s#s#I.s.s#I.s.WaCaCaCaCa0.W.W.W#v#vbtbkbk#uaB.0aObgaoaoamaC.C.W.n.na9.E.7.E.7#Lbjb..Ea9aj#L#La2a2.jbpaj#L.E.7bjajaf#La9#Laf#Laf",
+"#L#L#L#L#L#L#L#L#L#ga2a2bpa2a2a2#L#L#L#L#L.7#L.7#DaY#Ibnb#b#aOb##xaY#D#Da9.n.7#Dafajaf#Laf#Lafafa9aja9a9.na9.na9.na9.na9#p.na9a9afa9.n#p#D#M#DblaYawaYaw#xaw#xaY#p.na9a9a9a9#p#pafaf#pa9#D#s.N#sa9a9#La9#Laf#Laf.7aja9.n.7.n#Da9.saYaw#x#I#x.W.WaCao.8.8aObc#v.y#v#ubkbvbvaXbvbC.k.Dai.UaXbv.Ga7aOaoaNboaWbo.s.Nb.#sb.#D#s#sbjb.b.a9b.a9.E.7.Ebjajaja2aj#Laj.naj#D#s.sbo#I.sbo.saCaCaC#I#I#I.W#xavaoaO.y.z#1bkbkaBaBaO.5aoaoav.Wa9#s#L.E#L#L.7.E.7#D.7.E#L#L#Laja2bpa2#L#L#L#L.7af.7afajafaj#L#L",
+"a2#La2#ga2#ga2#ga2#L#ga2a2#g#L#g#L#L#L.7af.7a9.7#Daw#x#xam#SaZa#aC#xaYa9a9a9#Da9aja9#L.n#L.n#Lajafa9.naf.na9a9.na9a9.na9.na9a9.n.na9a9.na9#D#D#saY#x.R#xaYbn#x#xblblbl#Mblbl#Dbl.n#p.nbl#D#D.N.N.naf.nafaja9#L.n#L#La9.7.n#D#s#saYaw#I#I#I#U#Ia0.Wao.8aObc.8.y.y#u#ubk#3bCapbkag.kbqaX.Q.Qbka5#u#v#vamava1bob..E.na9b..E#s.7.E.E.7.E.7.E.7.E.7.naj#L.jaja2ajajaj.n#D.s#I.s#I.saY#I#U#x#I#x#x#Ibo#x#I.CaoaO#v.y#1bkbk#u#vbcam.C#I#sa9.n.7.E#L.E.7#s#s.7.n#Lajbpa2bp.jbp.j#Laj#L#Lajafajaf#La2afa2",
+"#ga2#ga2a2a2#g#La2#ga2#g#L#ga2a2#L#L#L#L.7.7#La9#D#D#xaCaF.0aZana0#xaYbla9.na9#D#Laf#Laf#Laf#La9af#L.na9af.nafa9ajaf#Laf#Lajaf#Lafajaf#L#D.n#D#DawaYaY#IaY#I#x#IaYawaYaYaYawaYawbl#Mbl#D#sbl.s#Da9.na9.7afajaf#Laf.Ea9.Ea9#sa9#s.N#I#x#I#x#Ia0#I.Wao.8.8aObc.ybba5bkaXaX#3bvag#n.c.#bt#baLbcbdaBaB.y#vam.Wbfb..7#s#s#s.7.E.E.E.7#s.E.E.7.n.7.E.7aj#g.ja2.jaja2#L.E.n#s.s.s#I.s.s#x#I#I#x.s#I.Nbo#x#I#I.CaoaoamaObkaz.Q.z#v.8.Wbf.N#s.N#s#D.sa9.E#D#D.E.7#L#Laj#Laj#g#L#g#L#gbp#L#L#L#L#L#La2bpa2",
+"a2bpa2bpa2bpa2a2#g#La2bpa2a2bpa2#L#L#La9#L.7a9.E.7aYaY.Cam#vaZaZaobn#xbla9a9a9#s#L.n#L.n#L.n#Lajaf#Laf.na9a9ajaf#L#Laj#Laf#L#Laj#L#L#Laj.7a9.7a9#D#Dbl.NaYaY#xaY#xaY#x#U#xbn#IbnblaY#MaY.NaY#s#D.na9aja9af.7af.E#Laja9a9b.#D#s#Daw#x#I#I#x#I.Wbn.Wa0aoao.5.8.y.QazaX#3.O#3aVai#n#8aLax#O.W.Wao.8#1aB.y.5.Ca1bo.sbo#D#sb.#D.E.7aj.7.E#D.E.7.E.7.7.ja2.j#gbp.jaj.j.7#s#s#s#s.N.s#Iawaw#D.saw.N.s.s#D.s#x.W.WaoaC.8.0.y#v#v#v.d.8ao#I#Ibf.s#Db.bj.7#Dbj#L#Laj#L#L#La2aj#gaj#ga2asasa2a2a2a2#La2a2#g",
+"#ga2a2a2#ga2a2#ga2a2#ga2a2#L#ga2#L#L#L#La9.7.7a9.7.N.s#xamaF#va#.5am#x.N#D.na9.7af#Laf#Laf#Lafa9#L.n#La9.naf#Laf#Lajaf#L#Laj#Lafa2ajaf#Laf.7.7.na9.n#D.nbl#D#DawaYawaY#U#x#U#x#UaYaw.Nblaw#D#D#sa9.na9.nafajaf#Lafaj.7.na9#sa9#saY#I#I#xaC#xao.CaCavaoao#v.yaI.Qae.O#zaV.Dah#Xag#b#O.r#7#7#7.W#QaObdaB.y#vaoaqbo#Ibobf.N.Ebj.E.7.E.E.7.E.7.E.7.Ebp.j#g#g.ja2#L.j.E.7#s.nb.#s#D.saw.Naw.s#D.s#s.N.s.sbo#I.C.Wam.8bgbgamao.C.8axbcaxaoaobo.N#s#Db.#s.7.E#L#L#L#Laj#L#g#La2#gas.jasbp.j#L#g.j#g#L#g",
+"a2asa2asa2aa#ga2#g#L#g#Lbpa2#L#L#L#L#L.7.7.n.7.7a9.saYaY.Wa0amam.5am#IaYbla9a9a9aja9aja9aja9ajaf#Laf#L.na9#L.n#Lajaf#L.jafa2a2.ja2a2#Laj#Laja9#L#Laf#Lafa9.n#D#DaY#xaYaYaYawaY#U#xbnawaY.Naw#D#sa9.na9af.na9.na9.Ea9.na9.E#D#s#D#I#x#I#x.WaCaoaoao.8.8.8.y#1#1.Q#T#3bq.D#m#haibkavao#7aE.sbo.W.W.s.Wbd.GazaBbc.8##avbobfbobjbjb..7.7.E.7.E.7.E.7#g.j#g.j#g.jaja2.Eaj.n#D.nb.#sb.#D#s#s#D#s#D#s#s.s.N.N#I#x.Wam.WaC#x#I#xaCa0av.8.8.8ao.W#Ibo#s#s#Dbj.7#Lajaj#L#Laj#gaj#g#gasasaU#g#g#ga2bp#ga2#g",
+"a2a2#ga2a2#ga2a2a2#ga2aja2bp.ja2#L.7#L#L.7a9.7a9bj.N.N.N#xa0a0aCaF.5bnaY#D.na9.7af#Laf#Laf#Laf#L.n#L.na9.naf#Laf#Laja2#La2aja2#La2aja2#Laf#L.E#L#Lajafaj#La9#L.nblblbl#MblaYaYawbn#U#x#xaw.N.s#D.nafa9.na9a9a9.na9aj.7#sa9#sa9#s#x#I#x.Wbnavamaoao.8aObd.ybt#ubbag.O#3bA.iaJ#3bbav.h#7b.b.boa1#IaE#I#QaB#uaPaz.Gbcbcavavbobfb.bj.E.7.E.7.7.E.7#L.j#g#g#gaj#g.jajaf.E.n#s#s#D.E#D#s#s#D.s#Db.aW#sbf.Nbo.C.Wav.Cam#Mblaw#x#Iaoaqaoaqavavaoav.s.Nb.#D#s.7.E#L#Laj#g#Lbpa2asas.jaUaU#ga2bpa2#g.jbpa2",
+"#ga2#g#g#ga2#g#ga2#g#g#ga2#g#Lbpa2#L#L#L#L#La9.Ea9a9#saY#I.C.Wam#x#U#x#IaY.N#D#Daj#Laj.7.7a9.7.7a9#Laf#L#L#L.n#Lafafafajafaf#Laj#L#L#Laj#Laf#Laf.jaf#Laf#Laja9#Da9.na9#Da9.n#D#DawaYawawaYaY#MaY.7.n.7.n.7.Ea9.7ajaf.Ea9#s#D#D#D#Ibn#UaCaoao.8#vao.d.d.y.z.y#1bbagaX#3aAbx.caLav#7#I.s#7b.#sb.b..sbo#Iav#QaOaKbtau.GaZaFaq#Ibf.s.7.n#L.E#L.7aja3.Ebp.jbpbpajbpa3#s#D#s#s#s#s#D#sa9.n#D#s#D#s#D#s#x#Iaw#I.N#s#s#D#saY#saYaY#I#I#I#I#U.W#IaC.8ao.C#sa9#L.7.n#L#L#L.ja2.j#gasasas.jas#g.jas#gas#gas",
+"a2#ga2#ga2#g#ga2#ga2a2bp#ga2bp#Lbpa2#L#Laja9.7#La9#D#D.N#x#x.C.CbnbnbnaYaY#D#D#D#L#La9aja9.7.E#D.nafajaf.Eafafaj#Lajaf#Lafajafaf#Lafajaf#L#Laj#L#La2afaj#La9a9.na9bja9.na9#D.na9awblaYawaYawaYawa9.na9.Ea9a9.na9ajaj#L.n#D#s#s.N#U#Ibn.WamaO.8#v#OaObdbd.yaLbb.Q#8.v#3aV.abCbd.8#7#7.sb..sb..sbj#s.s.s#I.Cav.8.8#u#uaB.ybcao.Wbf#D#s#D.7.E.7.Ea3ajbpajbpajbp#L.E#s#D#s#D#s#D#s#D.n.7#s#D#s#D.s.N#x#I.NaY.s.N#s#D#s#D#M.N.s#I#x#I#x#I#x#IaCbd.8ao#s#D#s#L.7aj#L#L.j#gas#g#g.j#gas.jas#gas#g.j#g#g",
+"#g#La2#ga2#ga2bpa2bpa2#L#L#L#g#La2aj#L#L.7.7a9.7.n#D#saY.s.N#x#I#x#xawaY#Ibl.N.Naf.E#La9.7#sa9#D.n#Laf#Laf#La9afaf#Lajaf#Lafaj#Laj#L#L#Lajaf#Laf.j#Laf#Laf#La9a9a9a9.n#Da9.na9#D#D#s.N#s#D#s.N#s#D.Ea9a9.Ea9.7.na9.na9#s#D.s.N#x#Ibnbn.Waobg.8.8.d.d#vbd#v.z#1bb.QaX#3aA.kaXbcao#7.s.sb.b.b.b.#s#s#D.s.N.s#x.CavaFam#v.y#u.ybyby#Ibf.s.Nb..7.E#L.7.E#L.7.E.7.E.7#s#s#D#s#D#s#D#s#D#s#D#s#D.s.N.s#x#IaYbo.s#D#saW.n.7#s#D#s.N.s.s#I#I#I.CaCax#vaO.saw#s#D.n#Lafaja2a2.j#gas#g#g#g#g#g.j#g#gas#g.j",
+"#ga2#ga2#g#L#ga2#ga2#g#L#g#L#L#L#g#L#L#L#L.n#L.7#D#D#D#DaYaY.N.NawaY#xaY#x.NaY#Ma9.7a9.Ea9#D#Da9a9af.7af.Eafaj#Lajafafafaj#Lafaf#Lafaj#Laf#Laj#La2af.j#Laf#La9.7a9.7a9.7a9#Da9a9#s#Dbl.saY#saY#s#D#s#D.na9.Ea9.7a9.n#D#s.N.s#xbobna0aCa0am.8aOaO.8#vbd#vbd.yaL#1.Qbk.Obi#R#8#v.rbo.saE#sb.#sbjb..7.E.n.E#s.s#I#xbo.Wavbc.y#u.yanaoaq.Cbo.N#D.E.7.E.7#L.E.7.E.7#s#D#s#D#s#D#s#D#D#s#s#s.N#s.Naw.N#x#xaw.N#s#D#sbj.n.7.E#DaE#saYboaCaCaoaoaoao#Oao#Iawaw#s#D.n.7a9aj#g#L#g.j#ga2#g.jas#gas.j#gasas",
+"a2bp.jbpa2#ga2bpa2bpa2#L#Lbp#L#L#La2#L.7#L.7a9.7#s#D#D#D#D#s.NaYaYaY.s#x.s#xaYaY#D#s#D#D#D#s#D#sa9ajaf#Laf#La9af#Lajaf#Lafajafaj#L#Lafaj#L#L#L#L#L.jafa2#Laja9a9.na9a9.na9.na9#s#D#D#s#D#s#D#s#D#sa9#sa9#Da9.n#D#s#D#D.saY#xaY#IamaCamaobgaObcbdaOax#vbd#v#v.yaL#1.Qa5#3#R.vbc.W#7#s.sb.b.bjb.bj.E.7.Ea9bj#s#Daw#s.Nbo.C.8#van#ubc#v.8a0bf.s#D#sbj.7bj.7#D.7#sbjawaY#saY#s#D#s#Daw#DaY.saY.NaY.saY.saY.N.s#D#s#D.Ea9#s#s.N.sboawao.8.d.daoaC#I#x.sawbo#M#D#Daj.7#L#L.jbpa2bpa2#g#g#g.j#gas#gas#g",
+"#ga2#ga2#g#L#g.ja2#g.jbpa2aj#Lbpaj#L#Laj#Laf.7af#D#D#s#D#D#D#D#D.N.saYaY#xaY#x#IaY.N#D#D#s#D#Da9#L.na9.na9ajafajaf#Lafajaf#Laf#Lafaj#L#Lajaf#L#La2a2a2#Laf#La9a9.7a9.7#Da9bja9a9.7#sa9#D#s#D#s#D#s#D#D#s#D#s#D#sa9#s.NawaY#I.C.WaF.8b#ao.8bg#vbd.8#vbd#vbd#v.d#v#1#1.wagbi#8ao#O.saE.sb.#sb.#s.Eaf.Ea9.E.n#D#s#Db.#s.N#Iaqambca#aB.y#vaO#I.Cbf#I#s#Db.#Db.#Dbj#saYawaw#D.saY#M.N#M.N#saY.s#x.s#x.s#x.s.N#s#Db.#D#Db..N.s.N#Ibo.W.CaoaxaoaxaCaC#I#x#I#I#Iaw#s#D.n#Laj#L#Lbp#L#L#L.j#ga2#g.ja2.j#g",
+"#L#g#L#g.j#ga2bp#g#L#g#L#Lbp#L#L#La2.7#L.7.Ea9.EaY#D#D#s#D#s#D#saYbl.NawaY#UbnbnawaYawbl#D#p.na9afa9.n#La9#La9#Lajaf#Lafajafajaf#L#Laf#L#L#La2.ja2#La2#L#Laf.7a9a9a9a9.na9.na9a9.7a9#s#D.n#D#s#D#s.N#sbj#D#D#s#DblaYaw#x#I.CaCamaOaF.8.8aO#vbdaO#v.d#vaO.8aObd#v.zaBa5.O#r.Q#O.Wbo.s.sb.aEbjb.bjb.a9.E.7.n#s#D#s#D#D.s.N#Ibf.W.C#v#va#aOaF.8aoam.s#D#s#D#s#D#s.saYawaYaYawblaYaw#DaYaYaYbl.N#x#xaY.saY.N#s.N#saWawaY#I#x#I#x#IaC.C.WamaCaC.W#I#I#I#x#I#I#I.s#sa9.E#L.E#Laja2bpa2a2.j#ga2#ga2#ga2",
+"aj#g.ja2#g#L#ga2#ga2#ga2bpa2#L#L#Lajaf.Eaf.7a9.7aY#s#D#D#D#Da9a9.saY.saYbn#x#xa0#I#x.NaY#M#Da9.na9aja9a9.nafajafafafajaf#Laf#Lafaj#Lajafaja2#L#La2.3#L.jaf#L.na9.7.n.7a9bja9#D.n.7#sa9.n#D#s#D#s#D#s#D#D#s#D#s#DawaY#Ibn#Ia0aoa0#v#vaOaFaObd#vax.ybc.d.8.8.8.8bd.y#1a5aX.v#1ao.W#7.saE.s#sb.#Db.#s.7.E#D#s#D#sa9#s#D#s#D#s#D.s.saFaFamaO.y#v#v.5#I#Iawbf.s#x.s#xawaYawaYblaw#DblaY#Mbl#saYaw#x#I#x.Naw.N#sbj#s#D#I.WaC.WaC.Wamao.8aoao.W#IaY.NaY.N.N.s#D.saw#s#D.n.Ea9aj#Laj#Laj#ga2#gas.j#g.j#g",
+"a2#ga2#ga2aj#L#L.ja2a2aj#L.E#Laj#pa9a9#pa9.n#pa9#M#Dbl#Dbl#MaYaYaYawaYaYawaY#UaYa0.p.VbnaYawa9#La9a9ajaf#L#Lafaj#L#L#Laj#Laj#L#Laf#L#L#L#L#La2#La2a2#La2#La2#L#L#L#L#L.Ea9.7#s#D#La9.E#D.na9.na9.n#s#D#saw.Naw#xaw#I#x#I#U.CaCaoao.VaoaoaO.8aO.8#Oaoaxao.haC#Oao.daO#uagbibk#vav.W#I#s.E.Eaj.Ea3aj.n#L.E.7.nb.#s.N.saY.N#I.N#IaY#I#I.C.8#v.yaBaPaBa#aFa#.5aqaqaN#xbfbf.N.NaY.Naw.NaYaY.Naw.NbfaYawaYaYaw#x#I#xa1#U#I#U#I#x#I.N.s#D#s#D#Dbj#sbj.E.7.Ea9.7.7#L.7.7.7.7.E.7#L.7#Lbpa2.jas#g#gas#gas",
+"a2.ja2#L.j#L#La2a2#g#L#Laf#L.7#La9#pa9a9#pa9#pa9bl#Dbl#sbl.NblawblaYblaY#xaYaY#Ubna0b##UbnaY.n.7#s#Da9.na9.n#Laf#Lajaf#Laf#Lafaj#Lajafaj#L#L#L.j#L.j#La2af#La9a9#L.7#L#La9.7a9#Da9.Ea9.n.7.n.7#s.na9#M#Daw#x.s#xawbn#I#U.CaCaCaCaobgaCaoaOaOax#vao.hao.W.W.Wav.haoax.y#E#zagapbc.Wbo.s#s.E.Ea3.E.7aja9.Ea9b.a9.EaY.Naw.Naw.Naw.N#I#x#Ia0amaF.yaBa7#u.ya#aoaqavaq#x.C#x#I.Naw.NaYaw#x#I#I#x.s#xboaYaY#I#x#I#x#IbfblaYbl.NaY#D.N.N#Dbj#sbj.Ebj.7bja9#L.E#Laj#Laj#L.E#L#L.7aj#La3ajas#g.jas.j#g.j#g",
+"a2#gas.ja2#L#Laja2#Laj#L#L#La9.7.na9a9#Da9#Da9a9#s#D#D#s#D#s#D#Dbl#sbl#D#M#DaYaYaY#Ubga0bnaY#s#D#s#Da9a9.na9ajafaj#Laj#Laj#L#Laf#L#L#Laf#L.j#L#La2a2#La2#Lafa9a9ajafaja9a9#s#D#s#Da9.n#D#sbl#s#D#M#s#D#Maw.N#I#I#I#I#x#I#IaC.CaC.paCaCaoao#O.8ao.h.W.W.W.W.W.W.W#I#Q#v.w.Obiagbk.W.r#I#sb..E.E.Eaja9.E.n.7.n#D.saY.saY.Naw.NaY.Naw.N.s#xaCaq.8aF#Sa7a7#u.yaFam.5ao.Ca0.C#x#x#x#Ibn.R#x#x#xaY#xaY#Ibn#UaC.W#xbf.sbl#s#D#sa9.Ea9.7.E.7.7#L#L#Laj#Laj#L#L#L#L#L#L#Lbpajbp#Lbpbp#Lbp#g#gas#g#gas#gas",
+"a2.ja2#La2aja2#L#L#Laf#L.Ea9aja9a9a9a9.na9a9.na9#D.n#Da9#Da9a9.na9a9#sa9#D#D#D#saY#xaCa0#U#x.N#s#D#D.na9a9.n#La9#L.n#Laf#Laf#Lajafaj#Laj#Laf#L#Lafajafafaj#L.Ea9#La9a9.n#D#D#D#D#D#s.Nbl#D#s.N#M#D#M#D.saYawaw#IaY#I#U#I#x#IaC.WaC.CaC#IaCavao.W.Wav.W.Wbo#I.W.Wbo.W#Q.y.w.Uau#3bd.8bo.s#s#sbjb.a9.E.n.7b.#sbj#s.Naw.Naw.NaY.saY#s#s#D#I#x#Ia0aoaFa#aBaBaBa##va#aoa0aoa0aoa0aC.Ca0#xaCbn#I#xaw#xa0aCa0#x.Caw.N.Na9a9a9a9.7a9.Ebj#L#Laj#L.E#L.7#L#L#Laj#L#Laj#Lajbp#L#Lbpajbpaj#Las.j#g.jas#g.j#g",
+"a2a2a2.ja2#Laf#Lajaf#Laja9a9.7a9a9.na9a9a9a9a9a9.7a9.7.n.7.7a9.7.7#L.7a9#s#D#D#D#D#Mbnbn#x#xaY.N.s#D#D#sa9a9#Laj#L#L#Laj#Laj#L#L#Laf#Lafaj#Laj#La2a2afajafafa9a9a9.na9#Da9#s#D#D#MaYblawaYawaYbl.s.Naw#D.saYawawawaw.s#I#I.C.W.W#U#I#I#x.WaC.W.W.W#I#Ibo#xbo#I#Ibo.Wavbc.y#u.G#3.Qbc.Wbfaw.s#sbj.n.7.n.7#s#D.s#D.saY.NaY.N#M.NaYb.#D#s#Daw#Ia0#UaFaOamam.5.8.yaB.8aO.5ao.5amam.8amaCa0a0#x.C#I#Iaoam#I#xaY#D.N#Da9.7.7.7a9.7.7.7aj#L#L#L#L#Lajbp#Lbp#L#Laj#L#L#L#Lajbpaj#L#Lbp#L.j#gas#gas#gas#g",
+"a2a2.j#La2#L#L#Laf#Lafa9a9a9#D#D.7#Laf#L#Lajafaj.7aj#L#L#L#Laj.7aj#Laj#Lbj.7.7b.a9#D#D#xaCa0.W.NaYaw#D#Da9.na9af#Lafajaf#Laf#Lafaj#Laj#L#L#Laf#L.3ajaf#La9aj.7a9a9a9a9a9bl#DblaY#DaY.NawaYblawaY.NaYaw.sbl#s#Maw.N.saw#x#I#I#I.C#I#x#I#I.W#Ibo#Ibo.Wbf#Ibo#Ibfbo#Ibo.W.8#Qbc.ybkbv.Q.8#I.s.s#s#sb..nbj#s.N#sbj#saY.Naw.saY.NaY.s#D#s.Nbo.N#I#I#xaCamao.Ca0b#aobyaOaF#v#vaB.y.ya#aOaF.5aCa0aC.CaCbn#xaY#D#D#D.7#D#Laj#L#Laj#L.7#L#Laj#L#Lajbp#Laj#L#gaja2bpa2bp#g.jas#gas#gas.j#gas#g#g#g.j#g.j#g",
+"a2.ja2#L.j#Lajafajafa9a9a9#Da9.n#L#L.7#L#L#L.7#Laf#L#L#Laf#Laf#L#L#L#Laj#Laj.7.7#L.n#DaY#x.W.C.C.s.NaY#s#D#Da9#s#Laj#L#Laj#Laj#Laf#Laf#Lajafaj#Laja2afajafafa9.na9#pa9#M#Dbl#DaYaYaYawaY#xaYaYaYaw.Naw#D#sbl#s#M#s#saY.s.s#x#I#I#Iawawawbo.N.s#I.s.s.sbo.N.s.s#I#I#x#Ia1.Wao#vaLbkap.yaobo.N.N.s.7#s#sbj#s#D.sbjaY.saY.Nbl.saY.N.s.N.s.N.N#I#x.sbfbf.C.WaCaqamaq.5aoa##v.0#u#u#ua##vaOaFama0#x#xaYaY#D#Da9.7#L.Eaf#Lafaj#Lbpbp#Lbpa2bp.jbpa2#L#ga2aj#g#L.jbp.j#L#g#g.j#g.j#gas#g.j#g.jas#gas#gas",
+"a2#L.ja2a2#L#L#Lafafa9.na9a9a9#D.7#L#Laj.7#L#L#L#L#Laj#L#Laj#Lajbpaj#Lbp#L.7.7bj#L.7#DaY#xa0.C.WaYaw.N#D#D#D#sa9aj#L.Eafajaf#Laf#Laj#Laj#L#L#L#L.3#L#Laf.7#La9a9a9a9#p#Dblbl.NblawaYaYaYaYawaYawaY.NaY.sbl#sa9.n#D#D#saw.s#I#I#xaw#x.saY.s.s.N.s.N.s.Naw#D.s.N.sbn#I#Iboa1#b.d.8#Tap.Qbcbo#D#sbo.nb.#D#s.Nb.#D.s.Naw.Naw.NaY.Naw.Nbf.s.N.sbfaY.N.saY.sbf.C.Waqavbga#a#a#.yaZ.0anaBbm#vaOaobn#I#xblaY#Ma9a9af#La2#L#L#Lbp#Lbpaj#L#g.ja2bpa2aj#gaja2#g#L#g#L#g#L#g.j#gas#gas#g.j#gas#gas.j#g#g.j#g",
+"as.j#g#La2aj#Laja9ajaf#L#L.n#Laf#Laj#L#L#La2#ga2#ga2a2a2#ga2a2#g#L#Lbpaj#Laj#Laj#D.s#DblaY.VaObm.C#IaYaw#D#s#D#Dbl#Ma9a9af.7aj#Lajaf#Laf#Lajafaj#Lajafaj#Laj#L#Lajafa9a9.7#sa9#DaYaYaYaYaY#xaY#x.N#s#D#s#D#s#Db..n#sbj.n#D.sbfbo.s.s.N.s.N.s.s.N#s#D#s#D.s.N#Ibf.s#Ibo#I.Wav.8bcbta5.U#3aB.5.W.N#x#I#x.saY.s.N.N.s#D#Ma9b..E.7.nbfaw.NaY#xaY#Ibf#D#s.N.N#x.Waqavb#ambga#aO.0.y.yaoaCa0#x#xaY.N#D.Ebj.7.7.7.7.7.7#ga2#ga2#ga2#g#ga2#ga2aj#g#g#L#g#g#L.jbp#Lajbp#L#g.jas.jas#gas.j#ga2#ga2#g.jas#g",
+".ja2#Laj#L#L.7.7af#Lafajaf#Laf#Lbpa2#La2#L#L#Lbp.ja2#g#ga2#ga2#g#L#L#L#L#L#L#L#L.7#D.NaYaYaobmaZamaCbn#x.NaY.N.N#Mbla9.nafajaf.7a9#Laj#Lajaf#L#Laf#L#L#Laf#Lafaja9af.7.n#Da9bja9#xawaYaYawaYaYaw#Dbl#s#D#D#s.7.n.7b..nbj#sbj.s.saw.s#D#saw#D.s#D#s#s.s.N.sbfawbf#Ibf.sbo#Iav.8bc#uaz#3bi.G#vaq.W#I#x#I#x#x#x.s#DaY#s#D#s#D#s#Db.aY.saY.N#I#I#x#x#I#x#I.C.WaqamamaFaObm#vaBaZ#va#bna0#xaYaw#D#D#Dbj.7.7.7.7.7.7.7#g.ja2#g.j#ga2bpa2a2a2#g#La2#L#g.j#g#gajbpbp#Lbp.j#gas#g#g.j#gas#g.j#g.ja2a2#ga2",
+"#L#L#L#L#L.na9.n#Lafajaf#L#L.ja2#L#Lbp#Laj#g#L#L#gbp.j#L#gaj#ga2aj#g#Lbpajbp#Laj.7#D#sblaYb#aOa7b#amaoa0aC#x.baYbl#Mbla9#D#L.na9aj#Laf#L#Laj#Laj#Lajafaj#L#Laj#Lafajaf.7a9a9#Da9#Dblblblblblblbl#D#s#D#D.n.7.E.7.E.7.7.E#s#s#D.s.N.s#Db.#D#s#D#sbj#s#D#s.N.sbfboaYbo#Ibf.Wavbcbc.wa5au.M#3.w#v.5#Ibn#I#IaY.s.N.N#saY#s#D.s#D.s.NawaYawaY#I.C#Ibn.Wa0amamao.5.8.5#uanaB.ya#aoama0awaYaY.NaY#D#D#D#L#L#Lbp#L#L#L#Laj#gbpa2bpa2.j#g.j#L.j#L.jbp#g#Las#ga2#ga2aj#L#L#g.j#g.j#ga2#g.ja2#ga2#g#Laj#Laj",
+"#D.na9#sa9#Da9#Daj#L#L#Lajaf#L#L#g.ja2#g#g#g.j#ga2a2#g#ga2#ga2bp#ga2#ga2#ga2#g#g#Lb.a9aY#UambmaZaO.t#SaFb#a0a0#UblaY#s#D.na9.7.n.7aj#Lajaf#Laf#Laf#L#Lafaj#Laf#L#Laf.7af.7.n.7#D#M#D#D#D#D#D#D#s#D#Da9#sa9.Ea9aj.7.E.E.7.7b.#sbj.s#s#D#s.N#saW#s.N#s.Nb..N.Nbo.N#xbo#x#I.Wav.8.yaz#T#3#z#z.O#uaF.CaC.C#x#I.Naw#D.sbl.saY.s.Nbo#Ibn#U#x#Ua0#Ua0aCb#am.8a##va#aBan#u#u.0aFama0#xaY.NaY#D#s#D.7.7.7#Lbpaj#Lbpajbp#Lbp#L#L#L#Lbp#L#L#L#L#Lbp#L#Lajbpas.ja2.j#ga2bp#Laja2#L#La2aja2#L#L#L#Laj#L#Laj#L",
+"a9a9a9a9a9.na9a9#Lafajaf#L#La2a2aj#g#ga2#L#g#L#g.j#g#g.j#g#g.j#ga2#gaj#ga2#ga2#g#L#L#L#s#xb#aOa#.t#SaZaBbmbga0bnawaYblbl#Da9.n.7#Laf#L#Laj#Laj#L#Lajaf#L#L#Laj#Lajafajaf#La9a9a9#D#D.na9a9.na9a9a9.na9.7a9.E#L.Eafaj.7.E.7.nbj#s#Db.#Dbj#sbj#sbj#sbj#D#s.N.s.N#x.W#xbo#xavambcbb.O.O#a#a.Oba#3aBamaoa0.W#x.s.N#saY#saY#I#x#I#x#IaCa0aoamaob#aoamaF#v#vaB.0aB.0#ua#a#.5ao#xaY.Nbl#sbl#Da9.7.n.7.7aj#L#L#L#L#La2#Laj#Laj#L#g#L#L#Laj#Laj#L#L#Lbp#L.j#g#L#L#Laj.7#L#Laj#Laj#Laj#Laj.7aja9#La9aja9a9",
+"#Da9#s#L.n#L#L#Laj#L#L#g#L.jbpa2#ga2#g.j#gas#gas#g#g#g#g.j#g#gas.j#g#g#g#g.jas#g#gaj#L#D#xaOaZan.FbmaBaZbmaFb##UaYblawaY#s#Da9.7.n#Laj#Laf#Lafajaf#L#Lajafajaf#L.3#Laf#La9aj.7a9#Ma9a9#Da9#Da9#Da9#D#La9aj.7aj#L.E#Laj.7.Ebj.nb.#s#D#sbj#s.N#s#D.s#D#sbj.N.sbf.s.C.Wa0.Wam.8.ybb#a.O.GaPaz.M#C.faOaoaq.W#xaw#D.s#D#I.N#I#xaCamaoaFaO#vaO#S.y#S#v#v#S#va#aOaFaOaFamaoa0#xaY#D#sa9#D#Da9.7.7#L#L#La2#L#g#L#g#Lajbp#L#Lbp#Laj#Laj#L#Laf#L#Laj#Lajbp#L#Laj#L.n.7a9#sa9.n.7.nbj.nbj.na9a9a9.na9#Da9a9",
+".7#L#L#L#L#Laja2#L.jbp.j#L#g#L.j#g#g#gasas.jas#g.jas.jasasas.jas#gas.jasas#gas#gasbp#L.7awam.yan.Fbm.TaZaBaFam.R#IaYawbl.N#s#D#D#Lajaf#Laj#L#L#L#Lajaf#L#L#L#Laj#L.jafajafafafaja9#Da9a9a9a9a9.n#Lajaf.E#L#Laj.7.j#Laj#L.E.7.E#D#saW#D#sbj#sbj#Db.#DaE#D.sbf#IbfaCaq.Waoao#v.y.wbkaz.w.waz#3biau#uaOamao#xboaw.N.s#x#I#xaCambgbg#uaBa7#ua7an#ubh#vaFaOama0aCa0a0a0bn#UaY#sa9af#L#sa9.7a9aj#Lbpaj#g#L.j#gaj#g#L#Laj#Laj#L#L#Lbp#L.E#L.E#L#L#L.7#L.n.7a9#D#D.N.s.Na9#s#Da9#sa9#D.n#D#D#s#D#D#s#D.7",
+"aj.7aj#gaj#gas.ja2bpa2#L#gaja2bpas.jas#gas#g.jasasasasas.jasaU.j#gas#gas#gas#gas#g.ja2#LaYa0.0aZ.Fa#aBaZa#aFbn#UaYaY.N#MaY#D#D#Daj#L#Laf#Lafajafajaf#L#Lajafaj#L.3#La2af#L.Eaf.7a9a9.n.7a9.n.7a9af#Laf#Lafaj#L#L.j#g.E#L.E.7#s.Ebj#s#sbj#D.s#Db..N#s#D.s.sbf.s#Iaqa0ao.C.8#vbbaPbk#u.w.Q.w.wau#N.Q.yavam#I#x.sawaY#I#IaCaoaoaO#vaz.Gaz.GazaS#uanaoaCa0.Wa0.CaC.CawaY#Da9a9#La9aja9a9.7aj#L#L#Lbpaja2bpa2bpa2#Laj#L#L#L#L#Laj#Laj#La9#L.7.7.E.7.E#D#D.N.s.N.s.N#x.7.7.n.7a9#sa9#D#s#D#D#D#D.7#D#D",
+"#g#g.j#g#g#g.j#g#g.j#g.j#g#g#g.j#g#gas#gas#gas#g.jasasasas#gasasas#gas.jas#g.jas#g#g#ga2a9.C#SbhaFbgamam.8amaCa0aYaYaY#Da9.E#Laja9#Laj#Laj#L#L#L#L#Lajaf#L#Laf#Laja2ajaf#Lafa9a9.na9a9a9a9.7a9a9af.n#Lajaf.7#L.E#Lbpaj#g.n.7#s.N.s#DaY.saY.Naw#x.saYbo#x#x#I#x#I.8amaob##v#u.G.2bkaz#ubbaP.w.G.2.u.Oa#aoav#Ibfboawbo#xaoamaBan.Gba#a#ua#ao.5#Qaq.W#x#x#x#I#x#xaY#xawaYbl#D#M#Da9a9a9a9a9.7a9a9a9#L#Lajaf#Lajaf#La9.n#D#saY.NaYaY.N#sbl#D#MaY#M#D#D.n#Da9#D#D#D.n#Laj#L#L.E#Laj#L.7aj#Laj#Laj#Laj",
+"#g.j#gas.j#gas.j#ga2a2#ga2.jas#gas.j#g.jas#g.jas#g#g.j#gas#gas#g.jas#gas#gasas#g#g#La2.j.7bnaF#ub#b#amb#ama0bn.CaY#M.N#sa9.na9#Lajaf#Laf#Lafajafaj#Laf#Laj#Laj#La2afafaj#L#La9.7a9.7a9.7a9a9a9.7afafafa9#L.n#L.7ajaja2.j.7.E#D.N#Daw.Naw.N#I#x#x#I#x#I#x#IaC.CaC.5bg.8aO.0.w#T.2.G#u.ybbbb#u.GaX.e#z#SaoaC.s.W.W#I#Iaoam#v#u.G#TarazbmaoamavaN.C#x#xawaY#x#IaY.saY#Daw#D#Da9a9a9#sa9.na9a9.na9.na9a9a9#sa9#Da9#sa9a9a9#D#Mbl.NawblblaY#MaYaYaYaw#D#D#s#D#D.n#D#D.n#La9ajaf#Laf#Laj#L#L#L#L#L#L#L",
+"#g#g#g#gas#g#g#ga2.j#g.j#gas#g.j#g#gasas#g.jas#g.jas#gas.jas#gasas#gas#gas#g#gasa2aj#g#La9aYa0bmbgambgama0.C#x#xawaY.N#Da9.7#L#Laf#Laj#Laj#Laf#L#Lafaj#Laf#Laf#Laja2#Lafaf#L.na9.na9a9a9.Ea9a9.7ajafajaf#L.7#L.7bp.Ebp.Eaj.7#s.Naw.Naw.Naw#x#I.N#I#x#I.C.Wa0aoamao.5ao#vaBazal#3aB#vaF.y.yaB#u.wa6#z.w.8.C.Wam.CaoamaO#v#uaz.G.GaBaFama0#xawbfa1aY.NaY.NaYaY.NaY.N#D#D#D#Da9a9a9a9.7#D.n#D.7a9a9#D#s#D#D#D#s#D#Da9.na9a9#D#Daw.N#D#s#D#D#D#s#D#D.7.7.7.7.E.7.7.7#L#Laj#L#Laj#L#L#Laj#Lajbpaj#Lbp",
+"as.jas.j#g.jas.ja2#ga2as#g.j#gas.j#g#g.jas#g#gas#g.j#g#gas#gas#gas.j#gas.jasas.j#ga2#gaj#LaY#Uamb#ama0a0aCbn#Ibn.Nblaw#Da9aja9aj#Laj#L#Laf#L#Lafaj#L#Laj#L#Laj#L.3aj.3#L#L#La9.7a9a9.7a9a9.7a9a9afa9#La9aj#L.n#L.E.7aj#L.E#D.sbfaw#M.NaY.s#x#IaY.C.W.C.W.Caqaqao.5aoaF#v#uaz#T.o#vaO.8.8bcbcaB#ualbaa5#vaoa0avaoaF#vbm#uaz#u#uaZa0am#x#M.N.N.N.N#D.Naw.N#s#D#D#D#D#sa9#Da9.n#L#L.na9a9.7a9a9.7#s#D#D#Da9#Da9#D#s#Laf.7a9.n#Da9a9#L.7#L.7aj.7#L#Laj#Laj#L#L#Laj#L.j#L#La2#La2#La2ajbp#Lbpa2#L#ga2",
+"#g#g#g#gas#g#gas.j#g.j#g#gas#ga2#gas.j#g#g.jas.j#gas#g.jas#gas#gas#gas#gas#gas#gaa.j#g#L#LbjaY#Ua0aCa0a0#xbn#xawbl.N#D#Da9.7#L#Laf#Lafaj#Laj#L#Laf#Laf#Lafajaf#L#La2#Lajaf#La9a9.n.7a9a9a9a9a9#Lafafajafaf.7#L.7#L.7#Laja9#saY#IaY.saY.saY#I#x.s.C#xaC#x.Caoaqamao.8a##v#u.Ga5azaOaOaoao.8#v.ya5ba#z.w#vao.Wam#vaB#uaB#uaZa#aF.5#xawaYbla9.E#D#sa9#sa9#D.7.7a9#s.7a9.7.7#L#L#L#L#L#Lajaf#L#Lajafa9.7.na9a9.7a9a9.7aj#L.7#L.E#Lajafajaf#Laf#Lajaf#L#L#L#Laj#L#L#L#La2aj#gaj#gaj#g#La2.jbp.jbp.jbp",
+"as.jas#g.jas.j#ga2as#gas.j#g.j#g.j#gas#ga2#g#gas#g.jas#gas#gas.j#gas#gas#gas#gas#g#ga2bp#L.na9bla0bnbn#UaYawaYaYaYbl#Da9.n.7afaj#Laj#L#L#L#Lafaj#Laj#Laj#L#L#L#L.ja2a2a2af#L.n.7a9a9a9a9.7.n.7a9afaf#Lafaj.7af.E#Laj#L.Ea9aw#x#IaY.saY.NawbfaY#x#I#x#I.C#I.C.Wa0.8am#v.0#u.G.w#uaO#v.8#Q.8bdbb.Q.K#z#u#vaFaoaBa7a7#u#SaFaoamaCbnaYaY#Da9aja9a9bj.7a9.7a9.Ea9.7.7af.7#L#Laj#L#La2ajafaf#L#Lafafafaj#Laf#Lajaf#L#La9#L#Laj#La2a2a2#ga2.j#g.ja2a2#gaj#gaj#g#La2bp.j#g.j#ga2#ga2#g#g#g.j#g#g#ga2a2#g",
+"#g#g#g.jas#g#gas.j#g.jas#gas#ga2as.j#g.j#g.jas#ga2#g#g.jas#gasasas.jas#g.jas#g.jasaa#g#Lbp.7afajbn.RaYaYaYaYaYaYbl.N#D#D.7#L#L#Laf#Lafaj#L#L#L#Laf#Laf#L#La2#L.3#La2#L#L#Lafa9a9.n.7a9.7a9a9a9.7afaf#Laf#La9aj.7.7.7aja9#saw#x#I.N#saY#I.NaY.s#I#x#I#x#I#xaC.CaoamaO.yaB.waz#uaZ.8bc.8.8#Q.y.Q.w#4#4.wa##vaB.Qaz#vaFama0#x#x.N.s.N#D#sa9.7a9.E#D.E#L.7aj.7#Laja9aj.7#L#L#La2.ja2af#Lajafajafaj#Lafafajaf#Lafajaf#L#L#La2a2.j#ga2.jas#gas#g.jas#gasa2#g.j#g.j#g#g#g#g#g.j#g.jas.ja2#gas.ja2.j#g#g",
+"as.jas#g#gas.j#ga2as#g#gas.j#g.j#g#g#ga2a2#g#g.j#g.jas#gas.jas#g#gas#gasas#gasasa2#g.jbp#LajafafaYbnaYaYblaYaY#MaY#D#sa9a9.7#L#L#Laj#L#La2afa2#L#L#Laja2#Laf#L#La2.j#L.3aj#La9.7a9a9a9a9.n.7a9a9afaj#La9aj#L.7#L#D.na9#s.naw#x#Ibl.Naw.Naw.NaY#xawaYaw#x#I#xaC#I.8aO.yan.w.G.w#vb#by.8.8bc.ybb.Qay.Y.G#u#1a5.GaBamamaobn.s#Da9.7aY#Da9.7a9.7.7#Da9aj.7af.7af.7#L.7afaj#La2a2a2.j#Laf#Laf#Laf#Laf#La2#La2#La2a2a2.7.j#La2#gaa.jasas#gas.jasasas.j#g.j#gas#gas#gas.jas.j#gas#g#gas#ga2.j#ga2#ga2a2",
+"a2#ga2.jas#gasas#gas.j#g#g#gas#g.ja2a2a2.ja2a2#ga2#ga2.jas#gas#gas#gas.j#gas#gas#g.j#ga2bp#L#Laj#L.naY.R#xaYaY#D#Dbl#D.7#saf.7.n#L#L#L#L#Laj#L#Laja9#La9aj#L#L#La2a2a2.j#L#Lajafa9#sa9.7a9a9a9.E#Lafafajafa9.na9aj.na9#s#D.N#IaY#s.sbl.s#D#s#D#s.N#I#x.W.Cavam.5.8aF.0azal#T.w.0.8#v.8byaKbbaIaP#aba#N.O.GazaB.5#xaw.N.NaY#D#D#s.7.n.7#L#La9.7a9#L.7af.E#L.E#L#L#L#L#La2#La2bpa2#L#Laj#La2#L#Laja2aja2#ga2.jbpa2as#gas#gas#gas#g.j#g.j#g#g.j#gas#ga2.j#g.j#g.j#g#ga2#g#ga2.j#ga2a2#g#ga2#g.j#g#g",
+"#g.j#g#g#g.j#gas.j#g#gas.j#g.j#ga2a2#ga2#g.ja2a2#g.jas#g#gas#gasas.j#gas#gas.j#gasasas#g.j#g#Lbp#La9#Dbl.RaYaY#D#D#Da9#D.7a9.7#L#L#Lbp#L#Lbp#L#L#L#L#L#g#La2a2#Las.ja2a2#Laf#L.7a9.7.na9a9.7a9a9af#L#La9#Lafaja9.na9.n#D.s.s#x#I.Nbl.s#D#M#DaY.saY#I#xaC.Caqao.5bgaO#uaz.G.G#u.y#x.W.8#v#v.y.0.ybabaay.f#uaB.8a0bfaYaY.N.N#D#D#Da9.7.7af.7.7af.E.7aj.7#La9#L.n#L#L.jaf#L#gaja2#L#La2#Lafaj#La2#L#g#g#L#g#L#ga2#g#gas#gas.jas#gasasas#gas#gas#g#g.j#g#gas#ga2as#g#ga2#g#L#gbpa2bp.j#L#gajbpa2bpa2",
+"a2a2#g.jas#gas#g#gas.j#g#gas#g#g.ja2a2.ja2a2a2.jas#gas#gas#g.jas#gasas#gas#gasas#g#g#ga2#g#L#La2#La9a9#DaYbl#Dbl#Da9#Da9a9.7#L#La2#g.j#g#ga2#ga2.j#ga2.j#g#g#g#ga2a2#g#La2aj#L#L.n#Da9a9.na9a9.7#Lajafajaf.7a9.naf.na9aE.N#I#Ibn.saY.Naw.NaY.saY#x#I#x.Wa0ao.5.8aoaO#u.G.Gaz#ua##IaCaCaobg#va7azaH#zaz#uaFam#x#xaw.N.N#D#D.n#D.7.E#L#L#Laj#L#L#Laf.7#L#L.E#L#L#L#L#La2#La2#L#gaja2#L#La2#L#L#La2a2#g.j#ga2#g#L.jas#g.jas#gas#gas#g#g.j#gas.j#g.j#ga2.jas.j#g.j#g.j#ga2.j#ga2#g#L#g#gaja2bp.j#L#g",
+"a2#g.jas#g#g.jas.j#gasa2#g.j#g.ja2a2#ga2#La2a2#g.jas#gas.jas#gas#gas#gas#gas#gasas.j#ga2#gaj#Lbp.j#La9a9#D#Dbl#Dbl#D.7a9.7.7af.7a2a2a2a2a2a2.ja2bpaj#Lbp#Lbpa2#L.j#g#La2#L.7#L.7a9a9a9.7a9.7a9.n#Lafaf.7afafaja9.na9.n#D#s#I#x#IaY.sawaY.saYaw.N#I#x#I.C.W.5av.5bgaOaB.G.O.G.y.5aO.8bgaFaB.Gau#N#zaz.0aFa0#x.NaY.N.N#D.n#D.7.7a9#L#La9#L.7#L.7#L.E#L#L#L#Laf.7#L#La2#L.jbpa2#La2#La2#Lajafa2#L.j#L#g#L#gaja2#g#g#gasasas#gasasas.jasasas#gas#gasa2.j#g#gas#gas#g#ga2bpa2bpaja2aj#ga2#L#g#La2bpa2",
+"a2#ga2#g.jas#g#g#gas.j#ga2a2as#ga2aja2.j#g.j#La2#g#g.j#gas#g.j#g.jas#g.jas#g.jas#gas#ga2#g#La2#L#L#g#La2a9a9#D#D#Da9#Da9.7a9#L.7a2.j#g.ja2aja2#L#L#g#ga2.j#L.j#g#La2#Laj#L#La9.7.na9.na9a9a9a9a9#L#Lajafaja9a9.naf.n#s#s.N#I#x#U#I#x#x#I#x#I#x#I#x#I#x.Wamao.5.8ao#v#u.Garaz#ua#.y.0#u#u#aau#3alaza#b##I#xaw#D#sa9#s.7a9.7a9aj#L#La2aj#L#Laf#La2#L#La9aj.7#L#Laja2#L#g#La2#L#g#Laj#L#La2#L#La2#L#ga2#ga2#g#g#L#gas#g#gas#gasasasas#g#g.jasas.j#g#gas#g.j#g.j#ga2.jbpa2bpa2bpa2bp.jbp.jbp.jbp.jbp",
+".j#g.ja2#g.j#ga2.j#ga2.j#g.j#g.ja2#ga2a2a2a2a2#g.j#gas#g.j#gas#gas#gasas#gas#gasa2.j#gaj#g#Lbp#La2#La2#L#La9#Dblbl#Da9bja9#L.7#L#L#Laf#L#L#Laf#Laj#L#L.7#L#L#L#L#L#L#L#L#La9#L.7a9#Da9a9.7a9.Ea9#Lafaf#Lafa9.na9.na9.E#D#s#x#I#I#I#I#x#I#x#I#x#I#x#I#x.WaC.5.8.8.5aBa5#a#TaPaPbk.U#3al#3#T.G.w.0aFaC#x#x.N#D#Dbj#Dbj.7.7aj#L#L#La2#L#La2#La2aj#L.7#L#L#L#L#Laf#Lbp.j#La2bpa2aja2#La2af#L#Laja2#L#g.jbpa2bpa2#g.j#gas.jasas.j#gas#gasasas#g#gas#ga2.jas#ga2#g.j#g#L#gaja2aj#gaja2bpa2#L#L#L#g#La2",
+"a2#ga2#ga2a2#g.j#ga2#ga2a2#g#g#g.j#L.j#L.j#La2a2#gas.j#gas#g.jas#g.j#g.j#g.j#gas.j#ga2a2#gaj#L#L.ja2#g.j#g#L#Dbl#Da9a9a9.7a9.7a9a9a9a9a9a9#sa9#Da9a9.na9a9a9#Laf#Laj#L.7a9.E.7a9.n.7.n#Da9a9a9a9#Lajaf.Eaf.na9.naf#Ma9.s.s#I#x#I#x#I#x#I#x#I#x#I#x#I.CaCaq.8am#vaO#u.G.Uay#3#3bv.M#C.O#u.y.5am.C#UaYaYaw.N#D.7.7.7.7aj.7#L#Laj#ga2#ga2a2.ja2a2a2ajaf.7#L.7aj.7#La2a2bpa2aja2bpa2#L#Laja2#La2#L#ga2bpa2.j#g#ga2#gas#gas#gasasas.jas#g.j#gas.j#g.j#ga2a2.ja2a2#gas.j#L#g#L#g#L#gaj#Laj#L.j#La2aj#g",
+"#g.j#g.j#g.ja2a2#ga2.j#g.j#g.j#ga2a2a2a2#g.ja2#g.j#gas.j#gas#gas#gas#gas#gas#g#ga2#g.j#L#g#La2bp#La2#gas#g#La9bl#D#Da9bja9.7.n.7a9b.#D#s#D#D#D#s#p.nbl#p.na9a9a9#L.7#L#L#La9.7.7a9#Da9.na9.n.7a9#Laf#Laf#Lafa9.na9.n.E#s.N.s#x#U#I#x#x#I#x#x#I#x#I#xaC.Wa0.8.8.8.yaB#T#4beaM.Y#T.fa7#uaOa0bf.s.N#Mbl#s#D#D.s#DaW.E#L#L#Laj#L#g#ga2a2.ja2a2a2aja2.7#Laj#Laf#L#L#L#L#ga2#L#g#La2#L#La2#L#L#L#La2aj#ga2#g#g#ga2#ga2as#gas#gas#g#gas#gasas.j#g#gas#g#g.ja2#g#g.ja2.j#L#g#L.jbp.j#La2aj#L#Lbpaj#g#L#g",
+"a2a2a2#La2a2.j#ga2.ja2a2a2a2#ga2#ga2#ga2a2a2#ga2asaa#ga2#ga2#L.j#La2#L#Lajafa2#L.ja2#ga2#La2#L#L#L#Laf#Laj#L#L#La9bl#Da9blaYaYaYblbl#DaYaYawaYaYblblblblblblbla9#Da9#D#sa9#Da9#D.na9.7a9.7a9a9.n#Laf.Eaf.Eaf.naf.na9#M#D#saY.saw.N#s#s#D#s#s#D#s.C#I#I.C#Iao.5#v#u.OaVadbi#3#1aBbdaO.W.C#IaYbf.N#D#s.7#L#L#Laj#L#Lbp#Lbpbpa2bpa2.j#g#g#Lbp#Lbp#L#L#L.7.7.E#L.7#La2a2a2.ja2#ga2.ja2#L.3a2a2#g#g#g#L#ga2#ga2#g#ga2#ga2#ga2.j#ga2#g#gas#gas#g.jas.ja2#g#L.j#L#g#g#L.ja2a2#L#L#L.7#L#L#L#La2#L#Laj#L",
+"a2a2.j#L.j#La2a2a2a2a2a2#ga2a2a2.ja2a2.ja2#ga2a2asa2asa2.j#L#g#La2#L.jaf.3#L#La2aa#ga2a2#L#Laj#Lafaj#L#L#Lbpaj#La9#D#p#Dbl#DaYaYbl#DblaYaw#xaYaYbl#Dbl#Dbl#Dbl#Da9#sa9#D.7#D.7#D.7a9a9a9a9a9.7a9.n#Laf#Laf#La9a9.n#s#D#M#DawaY#I#s#D#s#s#D#s#D#sbf#Ibf#I#Ia0bc.y.G#zad#4aXbk#v.8bgao.C#x.N#x.N.s.7bj#L.7aj#Lbp#Lajbp.j#L#gaj#g#L#gbpa2bp#L#La2#L#L#L#Laf#La9#L#L.j#ga2#ga2a2a2a2a2#La2aj#L#g#L#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2bpa2as.j#g#g.j#ga2#g#L#Laj#Laj#Laj#L#gaja2ajafaj#L.Eafaj#L#Lajaf#L#L",
+"a2#La2a2a2.j#ga2.j#L.j#ga2a2#ga2#ga2#ga2#ga2a2asa2.jasa2#ga2#La2#La2#L#L#Laf.j#L.j#L.jafaj#Laf#Lafafaf.7#L#L#Lbpa9#pa9#D#Dbl.sbl#D#MblaYaYaYaYawbl#D#M#Dbl#D#Mblbja9bja9#D.n#Da9.na9.7a9.7a9.na9#Laf.Eaf.Ea9.n.n#D#M#saYaw#IaY#IaY.s#D#s#D#s#D#s#I#x#I#I.Cao.y#1#T#rbq.G#u.yaOaCamaC#xawaY.s.N.N.7aj#Lbp#Lbpa2#ga2#Lbp#L#g#L#g#L#ga2#gaja2bp#Lbp#Laj.7aj.7aja9#L#L#L#L#L#Laj#L#L#L.j#La2#ga2#g#g#L#ga2#g#g#ga2#g#ga2#g#ga2#g.j#g#gas#g.jasa2.j#gaj#L#Laj#L#Laj#La2a2a2#L#L#La9#Lajaf#Lajaf#Laj#L",
+"a2.ja2.ja2a2a2#ga2a2#ga2a2#g.ja2a2a2a2a2a2.ja2a2asas#ga2a2#L.j#La2aja2a2a2#Laf#Lafa2af#Laf#Lafajaf.E#Laj#L#Lbpa2a9.na9#Da9a9#D#Dblbl#DaYaYaYaYaY#Dbl#Dbla9#D#D#Da9#Da9#Da9bja9bja9.7a9a9.na9#Da9#D.na9a9a9a9#D#sbl#saYaw.s#x#I#I.saw.saY.s.Naw.N.s.s#IaCaoao#u.G#z.UaX#uaOaOao.W#x#IaY.N.N.N#D#D#L.7#Laj#La2#ga2#gbpa2bp.jbpa2bp.ja2#g#L#Laj#L#La9.7a9.7a9.7.7a9#L#L#Laj#L#L#La2af#La2#L#L#g#L#ga2#g#ga2#ga2#g#ga2#g#ga2bpa2bpa2#g.ja2#ga2#g.ja2#Laj#Laj#Laj#L#La2.j#Lajafaj#L.E#L#Laf#L#L#Laf#L",
+"a2bpa2#La2.j#ga2aja2a2a2.ja2#ga2#g.j#ga2#ga2#ga2a2aa#ga2#ga2bpa2#La2afaja2afa2#Lajafajafajafa9a9af#Laf#L#L#L#Lbpafa9a9a9a9a9#D#D#Dbl#DblawaYaYaY#D#Dbl#D#Dbl#D#Da9b.a9.7a9#Da9#Da9.na9.7#D.na9.na9a9#D.n#D#s#D#M.NawaY#I#x#I#Ia0#IaY#Iaw.Nawbo#x.s#x#I.WaF.yaz#3.a#4a5#v#vaoaC#IaYaY.saYaw#D#sbj#Laj#Lbp#L.j#g.jbpa2aj#g#L#g#L#g#g#L#g#L#g#Lbp#L.na9a9.na9a9.na9#Lajaf#L#L#L#Laj#Lafa2#L#g#L#g#g#L#ga2#g#ga2#ga2#ga2#ga2.j#ga2#g.jas#g.j#g.j#ga2aj#L#Laj#L#Laj#Laj#La2#L#Laf.7af#Laj#Lajafaj#L#L",
+"a2.ja2.j#L#ga2a2a2#ga2#ga2#ga2a2a2a2a2a2a2a2.ja2as.jasa2.j#La2#La2#La2a2#La2afajafafafafaf#pa9.n#Laf#L#L#L#L#g#Lafa9a9a9a9a9a9a9a9#DblaY#DaYawaY#D#M#D#D#M#Da9#Da9#Da9bja9.7#s.7a9.7a9.na9a9.7#D#s#D#s#D#Dbl#s.N#M.Naw#I#I#IaC.W#I#xbo#xbo.N#IaYbo.W.Wa0#vaz.Y#.aVapaOaO#O#I#I#xawbl.N#D#D.7a9.E#L#L#L#gaj#g#g#ga2bp#gbpa2bp.j#La2#g.j#L#La2#Lbpa9.7#D#D#s#Da9#D#L#L#L#L#L#L#L#L#L#La2#L.j#Lbpa2#ga2#g#g#L#ga2#g#g#ga2#gbp#g#L#g#g#g#ga2a2#g.ja2aj#Laj#L#Laj#Laja2#Lajafaj#Laj.7aj#Laf#L#L#Laf#L",
+"a2#La2#ga2.ja2#ga2.ja2a2a2a2#g.j#ga2#g.j#ga2#ga2#gaa#ga2#ga2aja2#L.j#La2#L.jafaf.3ajaf.n#p.n#pa9afajaf#L.7#L#L#L#L#La9a9#D.7a9#Da9a9bl#DblaYaYaY#D#D#D#D#D#D#D#Da9bja9a9.7#Da9#Da9a9a9#Da9#sa9a9#D#D#D#D#s#D#saYaw#I#x#IaC#x.WaC#I#I#x#I#x#I#I#xa1ao#Q.8.w#4.P.4#u#Sao.WaCa0bobfbl#s#D.na9#L.7#L#Lajbpa2a2#g.jasbpa2#L#g#g#L#gbp#ga2#g#Lajbp#Laja9a9#M#Dbl#D.na9.7a9.7a9.Ea9a9.7af.jaf#La2#L#L#g.j#ga2#ga2#g#L#ga2#ga2bpa2a2.j#g.j#g.j#g.ja2#g.j#Laj#Laj#L#Laj#L#Lajaf#L#Laf.7af#Laj#Lajafaj#Laj",
+"a2.j#L.j#La2#L.ja2a2#ga2#g.ja2a2a2a2a2a2a2a2a2a2asa2asa2a2a2bpa2af#La2afa2#L#Lajaf#pafafa9#p.n#p.7af#L#L#Laj#Lbpaf#La9.7a9a9bja9a9#D#Dbl#DaYaYaY#D#D#D#Da9#Da9#D#sa9a9bja9a9bja9.Ea9.7a9.Ea9a9a9#s#D#s#D#Dbl.s#Daw#x#IaC.WaCaCao.Wav#Ia1#I.Ca1#I.Cav.8aO.G#dbs#BaLaB.8aC#I.WaYbf#sbl#Da9a9.n#L.E#L#L.jbp.j#gasasa2bp.j#L#ga2bpa2#g#L#g#L#g#L#L#La9#Da9bl#s#p#Da9.7a9.E.7a9.7.7.n#Laf#L#L#gaj#L#g#ga2#g#gbp.j#ga2#g#ga2#g.jbp#gbpas#ga2#ga2#g.ja2.E#Laj#L#Laja2#Laja2aj#Laj#L.E#L.Eafajaf#L#Laf#L",
+"#L#L#L#L#La2bpa2#Laj#L#La2bpa2bp.L.L.jasaa#ga2#gaja2a2a2a2#La2#La2a2#L.j#La2afa2.3aj#p#Mbl#D#D.7ajaf#Laj#L#Lbp#Laj#Laf.n.7a9a9.7#pa9#p.NaYaYbl#Dbl#D#Da9#Da9.7a9a9a9a9afa9.7a9.7#Dbl#Dbl#D#D#D#D#xaYaYawaYaYaY#Ubn#I#I#I.Wao#v#vaC#I#x.W#Ibo.C.WavaoaZ.o.Yab#3.QaOaoaC.W#I#x.s.Nbl#sa9a9aj#La9#L#L#g#L#ga2#g#L.j#g#g#g#ga2bp#ga2.ja2#L#Laf#La9.7bl#DblblaYaYaYaYaj#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2a2#g#La2#La2#g#La2a2#L#L.ja2.ja2.j#L#Laj#L#L#Laj#Laj#Laj.3#Lafajaf#Lajafa9.na9a9.na9.na9",
+"#L#Laj#L#Laj#La2bp#L#gaj#L#L#Lajaa.jaaaaa2#ga2bp.3#L#L#La2#L.j#La2a2a2#La2#La2#L.3af#pblbl#Da9a9afaja2#La2#La2#L#Laf#L.7a9a9bja9a9#p#DblaYaw.Nbl#Dbl#Dbl#D#D.7a9a9afa9a9a9a9aj.7bl#D#D#sbl#Dbl#MaYawaY#xaY#xawaY#x#U#x#I.Cao.8aBaxav.W.C.Waoao.8aO#vaPay#daVbk.0#OaoaC.W#x#I.N.N#Dbl.na9a9#L.7aj#g.j#ga2bpa2#g#gasas#g.j#g#ga2#g#La2.ja2#Laja9a9a9a9bl#DaYawaYaY#La9.Eaf#L#Laj#L#L#Laj#L#L#L#L#Lbpa2#L#g#La2#g#L#gaja2#ga2#ga2#La2a2a2#La2a2.3#L.jaf.jaf.j#L.3#Laj.3aja2#Laj.3#Laja9af.n#L#Laf#L",
+"a9ajafaf#L#L#L#L#L#L#L#L#L#L#L#Laa#ga2#g.j#gbp#La2#L.ja2#La2#La2a2#La2a2a2#L.j#L.jaf.n#pbl#sa9.Eaf#Lafaj#Laj#L#Lajaf#La9a9bja9a9#Ma9bl#DaYaYbl#DaYbl#Dbl#Da9a9a9a9#p.naf.7a9.7a9.n#Da9#D#D#s#D#DaYblaY#MaY#MaYaY#MaYaw#I#IaC.8aObgaoaoao.8ambc#v#uar.M#d#4.G.y.8bgaoaC#x#I.N.N#s#pa9a9.7ajaf#L#La2bpa2.j#g#gaj#g#g#gas#ga2#g#L#La2a2#Laf#Laf#La9a9a9a9#D#Dbl.Nbl.E#L.7#L.7af.7#La9#L.7#L#L#L#L#La2#ga2#ga2#g#La2#L#ga2#L#g#L#Laj#L#Laj#Laj#Laj#Laf#L#La2afaj#Lajaf#Lajaf#Laj#Laja9afajaf#Lajafaj",
+"afaf#Lafajafajafajaf.Eaf#Laj#L#L#La2#L#L#gbpa2bp#La2#L.3#L.jafa2#La2a2#La2a2#L.3afaf#p#Mbla9a9.7afajaf#L#L#L#g#L#La9aja9a9#Da9.7#pbl#DaYaYaYbl#DaYblaY#Dbl#D#D#Dafa9afa9a9a9.7.7.7#Da9bja9#D#D#s#D#D#saYbl.NblaY#M#D.saw#I.WaOaB#vaO#v.8aOaO#v.y#3ad.Z#.#T#vav.haoaC#x#IaY.s#D#D.n#Dajaf.7#Laj#L#ga2#g#gbpa2#ga2a2as#ga2#ga2bp#La2a2a2a2a2#L#L#La9afa9#M#DblawaY#L.7af.E#Laj#L#L#Lajaf#L#L#L#L#Lbpa2#L#g#La2#gaja2#L#ga2#g#La2a2aj#L#L#L#L#Laf#L#Laj#Laj#L#Laf#Laj#L.7aj#L.Eaf.7.na9#D.n#Da9#Da9",
+"a9.na9a9a9a9#pa9a9a9a9a9a9a9a9.nafaj#L#L#L#Lbp#La2aja2#La2#La2a2#La2a2a2a2a2#La2aj#p#pbla9a9#Lajaf#Lafajafaj#L#Lajaf#La9.7.nbj#Da9blaYaY#x.N#DblaYblaY#DaY#Dbl#Da9a9a9a9.7a9.7.7a9.7.E.7.7.7.7a9#D#D#D#D#s#D#s#D.sbl#s.s#xaoaO#S.yaBaB#u#u#ubk#E#.ab#4#3.G.y.8bo#U#I#x.s.N#D#s#Da9#L.7aj#L#La2bp.jbpa2#La2#g#L#g.jas#g#ga2#Laja2#L.j#La2af#L#L#La9.7a9bj#Daw.Nbl.E#L.7#La9#L.7#L.7#L.7#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#La2bp#L#Laf#L#Lafaj.7ajaf#Laf#L#Laj#Laja9.na9.7afa9.Ea9a9a9a9a9a9.na9a9",
+"a9a9a9a9a9a9a9.n#paf#paf#p.n#p#pbl#D.na9a9#L#L#L#La2#La2#La2#La2a2a2a2#La2#La2afa9#p#M#pa9.nafa2afajaf#L#Lbp#L#L#Laf#La9a9#Da9a9#D#DaY#x#xaYaY#DblaYblaY#Dbl#Dblafa9afa9#Da9.7a9#L.7a9#Laf.7.n.7a9a9#s#D#D#D#D#D#s#D.s#x#I.8#Saz#u#u#uaZ.w.GbiaV#4.U#3ara5#vao.W#x#IaYaw#D#sa9a9#L.n#Laf#L#gaj#L#ga2#g.ja2#g.j#gas#gas#gaja2bp#La2a2a2a2#L#Laf#L#L#La9a9#Dbl.NaY.7#L.n#L.E#L#Lafaj#L#L#L#L#L#L#Lbpa2#L#g#L#ga2#ga2#ga2a2#gaja2#L#L#L#Laj.7#La9#L#L#Lajafaj#Laf#L.n.7a9.Ea9.Ea9.n#D#s#D#s#D#D#s#D",
+"a9.n#pa9.n#pa9#pa9.n#p.n#p#p#p.nblblbla9.na9#Laf#Lafa2aj.3#L.j#La2#La2#La2aja2#La9.nblbl#pa9#L.j#Laf#Laja2#La2aj#L#Laja9a9.7#D#s#p#DaY#x#x#xaY#DblblaYaYbl.Nbl#D#Dbl#D#Da9#Dbj#D.7#L.7#L.7af.7#L.7.na9a9.na9a9.n.NaYbobfaoaFaBazaz.w#uaP#3#4ad#4ap.O.O.O.w#S.8.5#Uaw#x.saY#s#D.n.7#L#Laja2aj#gas#L#gbp#gbpa2bpa2#gas.j#g#g#L#La2#La2#La2#L#L#L#L.7#L.7.7.E#D#s#D.na9#L.7af#L.7#L.7#La9#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#ga2#ga2.7a9.7#La9.7.7a9ajaf#L#Laf.7.na9#D.Ea9.7a9.7a9b.#D#D#D#D#D#D#D#D",
+".n#pa9#paf#p.n#p.n#p#p#p#p#p.n#p.b.R#Mbl#p.nafajafaja2#La2#L.3#La2a2aja2#L.3#L.ja9#pbl#Mbl.nafa2afajaf#La2#Lbp#L#Laf#La9.n#D#s#DblaYaY#xbn#xaY#DblaYblaYblaY#Dbla9bla9#D#D#D#Dbja9#La9#La9.7.7a9.7a9.7.7.7.E.7#D.N.sbf.Wam.y#uaz.Oar.Gal.Mbxadalbkbkbkbkbka7.yaF#I#IaY#s#Da9#s#Daj#Laj#L#g#L#g#g#gaja2a2a2#ga2#gas#gas#ga2#g#gaja2a2a2af#Laf#La9#Lajaf.7a9#D#s#Da9.Ea9.E#L.E#Laj#L#L#L#L#L#L#L#L#L#g#L#g#La2#ga2#ga2#ga2#L#g#La2#L#L#L.7#Laf#La9#L.E.7.7.Ea9.n.7.n.7a9.7.n.7.na9#D#D#s#D#s#D#s#D",
+"#Lafaj#L.7#L#L#Lafafajafaja9#pa9aYawaYaYawblblblafafaf#Laf#L#L#L.jaaafa2#L#Lafaf.n#F#M#pa9afaj.7#Lbp#Lbpbpaj#L.Eaf#Laj#D#D.N#D.N.naYaYbna0a0bnaY#DblaY#x#xaYaYblbl#D#Da9a9.7#L#L.7.7.7.7.7.7.E.7#Dbj#D.s.N.N#DboaY#MaY.W.8aZal#P#PaT#P#.a.ad.ObkaX.G.O#Taz#SaoaC#x#x#I.N.s#D.E.7af.7#L.E#L.Eaf#Laj#g#gbp.jbpa2aj#ga2#g#L#ga2#ga2#L#L#L#L#L#L#L#L.7#L.7a9.E#Da9#D.Ea9.7a9.7a9#La9#L.7aj#L#L#L#L#L#L#L#L#L#Lbpa2#L#L#g#L#ga2a2#ga2bpa2#La2#L#Laj#L#Laf#Laj#L.7#L.7af.7.E#L.7#L.7#L#sa9.7a9.7#L.7#L",
+".E.7.7#La9aj.7#Lafajafafafa9a9.nblbl#MaYblbl#Dblafajafaj#L.E#L#Laaa2a2aja2afajaf#p#p#pa9.naf.7#L#gaj#Lajbp.7#L.7ajafa9#D#D.NaY#xblaY#x#xama0a0aY#p#Dbl#xbnaYblaY#Dbl#Da9a9.7af.7.7.7.7.7.7.7.7.7#D#s#D.N.N.N.N.N#IaY.N#Iamanay.P.PaDaD#..M.O.G#u#u.w.GaP#u.ybgaCaC#x#IaY.N#s.7a9.7aja9#La9#L.E#L#L#ga2a2#ga2#ga2#g#L#ga2#ga2#g#g.7#L.7#L.7#L.7.7af#L#L#La9#Db.#Da9.7a9.Eaf.7a9.7#L#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#ga2a2#g#L#g#La2#ga2#g#L#ga2#La2#L.7#L.7a9aja9#L.E#La9aja9#L.n#L.na9aj#Laja9aj.7",
+"#L#Lafaj#L#Laf#Lajafaf.Eaf#sa9a9a9a9#pbl.nbl.n#p.nafa9#Laf.7#L#L#L.ja2#La2af#L.n#p#Mbla9a9aja9#Laj#Lbp#L#L#L.7.7#D#D#saYaw.N#xbf#MaYaw#xbna0a0aYblaYaY#xbn#xaYaYbl#D#D#Da9#D.7#L.7.7.7.7.7.7.7bj#s.7#D#s#D.N.sbfa0#UaoaO.yan.2.g#m.AbA#4ar#u.0#u#S#vaBaB#uaB#v.5aoamaC#x#IaY.N.na9.7.E#L.7af#L#La2#g#L#g#L#gbp#ga2#ga2#g#g#ga2#g#L#L#L#L#L#L#L#L#L.E#L.7.7a9#Da9.Ea9.7a9.7.7#L#L#L.7#L#L#L#L#L#L#L#L#L#L#Lbpa2#La2bpa2a2#ga2#ga2#L#ga2a2a2#g#La2#Laj#L#L#L#L#L#La9#L.7#L.7aj.7#La9.7#La9.7#La9#L",
+"#L#L.7#L.7#L.7#Lafaf#Laf#La9a9.na9#Da9.n#Da9#D#Dafaf#Lafaja9aj#La2a2af#Laf#Laja9#p#D#p.na9.7aj#L#L#L#L#Laj.7.7b.#D#saY.NaYbf#x#x#DaYaYaY#xbna0#xaYaYaY#xaYaYaYaY#Dblbl#D#Da9.7.7a9.7.7.7.7.7a9.7af.7#D.N.s.N#x#IaF.8amaF.0#uaybe#.ba#aaz#ua##vaOaOaO#v#v.y#uaBa#b#bga0a0awaYbl#D.Ea9a9a9.E.7a9.7#Laj#L#gaja2a2a2#ga2#g#ga2#ga2#g#L#L#L#L#L#L#L#L#L#L#L#La9.Ea9.7.7.n.7.n#La9.n.7af#L#L#L#L#L#L#L#L#L#L#L#La2bp#La2#ga2#g#La2bpa2#ga2#L#g#L#ga2#g#L#L#Laf.7#L.7#L#L#Laj#L#L#Laf#L.7#L.E#L.n#L.E#L",
+"#L#Laj#L#L#Laj#L#L#Laj#L.7.7a9.7a9a9a9#Da9a9.na9.naf.Eaf#L.7#La9ajaf#Lajaf#La9a9#M#pbla9a9#L#L.7aj#Laj#Lbjbj#sbjaY.N.Naw.N.Nawbf#DblaYaYaY#xbn.CbnaYaYaYaY#xaYa0bl#D#D#Da9#D.7#L.7#La9#La9#L.7.7a9#sblaYaYbnaCa0.5amaFaB#u#a#4abarazaBa#aO.5ao.5aoaoamaOaB#u#uaZaCa0bn#xaYaY#Dbla9a9.na9a9a9#La9#La2a2#L#g#g#L#g#g#ga2#ga2#g#ga2#ga2a2#ga2a2#La2#L#L#Laf.7.7.7a9a9.7a9.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#La2bpa2#ga2a2bpa2#ga2a2#g#La2#L#L.7#Laj#L#Laj.7af.7#La9#L.7ajaf.7#L#L#L.7af#L",
+"#L.7af.7#La9#L.7a2#L#L.7#L.n.7.na9a9.na9a9a9a9a9afaf#Laf#Laf.E#Lafajafaf#La9.na9#D#p#sa9.n.7aj#L.7#L.7a9.Ea9#Da9.NawaY.N.NaY.N.N#D#D#D#MaY#x#xa0ama0#xbnaYaYbn.CaYaYaY#D#D#D#D#Da9a9a9a9.7#Da9#s#D.NaY#x.Ca0amamaFaB.f.Oau#aazan#v#vaFam.5aCav.CavaoaoamaOaB#uan.Ca0#xawaY.s#D#s#Dbja9bja9.7a9a9a2#La2#La2a2a2a2#ga2#ga2#g#ga2#ga2#ga2a2#ga2#ga2#L#L#L.7a9.7a9.7.Ea9.Ea9.7af.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2a2#ga2#ga2#L#ga2#g#La2bpa2a2bp#L#L#L#L.7#L.7af#L#L#L#Laj#L#L#L#Laj#L#La9aj.7#L",
+"#L#L#L#Laj#L#L#Lajaf#Laja9.7.7a9.7a9a9a9a9.na9a9aja9#Laja9#L.7#Laf#Lafaja9a9#D#D.nblbla9b.#L.7.E.7.n.7.n#D#D#s#D#D#D#D#s#D#D.n#D#D#D#s#Dblawa0.Cama0a0aYaY#xa0amblaY#D.N#D#Dbj#Dbj#D#D#D#D#D#D#D.N#x#x#xbg#vbmaBbk#a#Ea7a7aZ#va#amb#ao.C.W.Cbf#IaqaoaoaoaO#SaZ#ubn#I#xaY.Na9a9.7a9a9a9a9a9a9a9a9#Lajaf#L#L#L#La2a2#g#g#ga2#ga2#ga2a2#ga2a2#ga2a2#L#L#L#L.7.Ea9.7a9.7a9#La9#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#L#g#La2bpa2#g#La2#ga2#ga2#ga2#L#L#Lajaf#L#L#L.E#L.7#L.7#L.7#L.7af.7aj.7af.7#L",
+".E.7.n#L.7#L.7af#L#L#L.7aj.7a9.Ea9a9a9.7a9a9.7a9afafafafaja9aj.7afaja9#La9a9#s#D#p#M#D#s#D.n.E.7a9.na9#D#sa9#D#D#D#s#D#D#Da9a9.n.N#D#D#Dbl#xa0ama0ambnaYaYbnama0aYaYaY.N#D#D#Dbj#D#D#D#D#s#D#Daw.C#I.Caobm.G#faG.yaBbh.l.taFb#.5a0a0aoa0#xbo#xboaqavaoamaC#Sa7an#I#x.N.s#Dbjaj#L.n#Da9#sa9a9a9a9#Laf#L#Laf#Laf#L#ga2#ga2#ga2#g#g#ga2#ga2#ga2a2#g#L#L#La9.7a9.7.7.7.n.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2#ga2#ga2a2#g#L#g#La2bpa2#L#L#L#L.7#L.7#L#Lafaj#L#Lafaj#L#L#L#La9#L.7aj#L",
+"#L#L#L#Lajafaj#Laf#Lafaf#Lafajaf#L.jafajaf#Laja9aj#Laj#L#L#L#Laj.7.7.E#Laj#L.7.7bl.NawaY.NaY.N.s#s#D#sa9bj.Ea9.Ea9.na9.n#D#s#D#Da9.n#D#D.saY.s#x.R.Rbn#x#x#xaY.NbnaYblbl.na9.7.7#D.N.N.N.Nbfbfbfavama#aSaG#z.G.0aoa0aC#xaCbn.Wbn#I#xaY#I#x#x#I#x#Ia0avao#v.0aBa7#IaYa9.7.E.7#D#Da9a9a9a9.7a9.7afa2a2a2a2a2#g#ga2#ga2#g#ga2#g#ga2#ga2#g#ga2#g#ga2a2#g#L#L#L.7a9.7.na9a9afaj#La2a2#L#Laf#L#L#La2#L#L#La2#La2#La2#La2#L#L#L#L#L#L#La2a2a2a2#g#ga2#g#La2#La2#Lajafa2.7#L.7af.7#L.7afaj#L#Lajafafaf#L",
+"#Lafajaf#L#Laf#Lajafaj#L#Laf#Laf#Laf#Lafajaf#Da9.7a9.7.7af.Eaf.7.na9a9a9.7.7.n.7awaYawaYaw.s.N#D#Da9#D.na9.7a9.7.n.7.7.7#D#D.7.7#Da9#s#D.N#x.N#x#Ua0a0bna0bn#IaYb#am#xaY.N.N.N.Nbj#D.N#I#xaqaoa0a0a#a7#fa6az.0.5bnaCbnbn#x#x#x#xaYboaYbfaw.NaY#I#x#Iao.8.5#v#u.T#I.N#sbja9bj.7bj#sa9.Ea9a9.7a9a9#L.ja2a2.j#ga2#g.j#ga2#g#ga2#ga2#g#ga2#g#ga2#g#g#ga2#L#L#La9aja9a9af.7af#L#L#L#gafa2#La2afa2#La2.3#La2#La2#La2#La2#La2a2a2a2a2#La2a2#L#g#La2bpa2bpa2#ga2#L#La2#L#L#L#L#Laj#L#L#La2a2afafaj#Lajaf",
+"#L#L#L#L#L#Laj.7af#Laf#Lajaf.Eafajaf#Lafa9a9.n#D#D.n#Da9#s#D#D#D#D#s#D#s#D#D#D#sbl#s#D.s#D#s#D#s.7aj.7#L.7aj.7#L.7af.Ea9#L.7a9.7.na9#D#D#D.NaY#xa0.Vaoamama0ambna#b#amambn#x.C.Cawbf#xa0amamaF#v#vaBazaSa7a#aq.W#x#x.s#xaw#xaw#x.N.NaY#xaY#x#I.N#I#xavam.8.yana7#U#x#D.7b..7a9#Da9a9a9a9.7a9af.7a2#La2#L#ga2#g#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.7a9a9a9#La2#La2a2#L#Lafa2#La2#La2#L#L#La2#La2#La2#La2#L#L#L#La2#La2a2a2a2#g#ga2#g#La2bpa2a2#Laj#L#L#L#L.7#L.7#L.7af#L#Laf#Laf#L#L",
+".7#L#Laj#L#La9#La9a9a9a9a9a9a9a9af#L#D.n#D.7#D.7#D#D.N.s.N.N.N.sbl.NblaYblaYawaY#M#D#Ma9#D.nbj.7#L#L#Laj#L#Laj#Laj#L#L#L.7a9.E.7a9a9a9#DaY.s.N#xaCb#a#aFa#amamam#vaFamam#xa0#xam.CaCamamaObma7aza7aZbm.tam.C.Cbfaw#xaYaY.NaY.NaY#DaY.s#xawbfaY#x#x#Iaqao.8aZ#ua7ao#xaw#Da9b..7#Da9#s.7a9af.7a9a9a2#La2#La2#ga2#ga2#g#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#g#L#L.E#L.7afa9afa9#Laf#L#ga2#La2#La2#La2#La2af#La2#La2#La2#La2#La2a2a2#La2#La2a2#La2#La2bp#g#L#ga2a2#g#La2#L#L#L#L#L#L#Lafaj#Lafaj#Laf#Laf#L",
+"a9a9a9a9a9a9a9.n.7a9.n.7a9a9.n#D.na9#s#D#D#D#D#D#D#D.sblaY#saY#DaY#MaY#saYblaY#D#D#s#D.7.n.7bj.E#L#Laj#La2#La2#L#L#L#L#L.n.7a9.7a9.E#D#D.NaY.N#Iamam#v.0a#aFa#a#bmbgamaCbna0aoa0amaF#vaBa7a7.l.TaFb#b#amam#x.Nbj#x.N.s.NaY.NaY.N.N.NaY#x.N#IaY#I#x#Iaoaq.8.ybhazb#bn.N.N.7a9#D#s.7a9a9a9.7a9#La9#Lajaf#L#L#Lbp#L#ga2#ga2#ga2#g#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.Ea9a9a9a2#L#La2#g#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#La2#La2#La2a2a2#ga2#g#ga2#ga2bpa2a2#L#L#L#L#L#L#L#L.E#L.7a9a9a9a9a9a9.7a9",
+".7a9a9a9.n.7a9a9#s#Da9#Da9#D#D#D.7#D#D#DaY.Naw.Naw.NaY.NaY.NaY#s#D#D#D#D#s#D#s#D.na9a9.n.7.7.7#L#g.ja2#g.j#g.j#g.j.3aj#L.7aja9.Ea9a9a9#D.N.s#x#x.Cb#aF.yaZa#a##Sa##SaFamamaOa#aZazazaza7a7bmaFaFa0a0a0bn#IaYaY.Naw.NaYaY.N.N.Naw.NaY.Naw#x.N#x.N#x#I.Cao.5.ya7az.5aoaY.s#D.E#D#Da9.na9.7.na9a9a9#Laf#L#L#L#L#Lbpa2#g#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2#g#L#L#Laf.7#La9afa9#L#L#La2a2#La2#La2#La2#La2#La2#L#L#L#La2#La2#La2#La2#La2#La2a2#L#g#L#g#L#g#La2a2bpa2#g.j#L#L#L#L.7af#L#L#La9.7a9a9.Ea9a9a9",
+"a9a9a9a9a9a9.na9#D#D#s#D#s#D#s#D#D#D.saY.s#xaY#x#D#M#D.nbl.nbl#Da9.Ea9.7a9.7a9.7#Laj#Laj#Laj#Laj#gas#gas#g#gas#ga2#L#La2af.7#L.7a9#s#D#D.NaYaYboa0a0aOa#a#a#aBbh.GaPa7az#uaS#TalbaaGa7aZaFaoambnaCa0#x#I#D#DaYaw.N.N.s.N.N#D.N.N.N.N#I.NaY.saY#I.N#I.C.8.5.ya7azaOb##x.N#Da9a9#sa9a9#D.na9.7a9.7a9a9.7#L#L.7bp#L#ga2#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#L#L#L#L.7a9.7.na9.7a2af#L#ga2#La2#La2#La2#La2#La2#L.3#La2#La2a2#La2#La2#La2#La2a2a2a2a2#g#ga2#ga2bp.ja2bpa2#L#Laj#L#Laj.7#L.7.na9a9.7a9a9.7a9",
+"afa9afa9.na9a9a9#s#D#D#D#D#D#D#D.saY.NaY.Naw.NaY.n#Da9a9a9a9a9#Daj.7#L#Laj#Laj#Laj#L#L#Laj.7bp.7as.jas.jas.jas.ja2.ja2#L#Laja9aja9a9#D#D.Naw.N#x#xa0am#va#a#bmaB#l#0.2.2.2#0ab.4arazaZa#aFa0.W.C#x#x.NaYaYaYblbl.N.N.N.Nbj#Dbj.NaY.NaY.N.NaY.NaY.NaY.Waqao.0#ua7aBaO.Waw#D.na9#Da9.na9a9a9a9a9af.7afa9.7#L.7.7bpa2#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#g#L#L#L.7.Eafa9afa9#L#L#La2#g#La2#La2#La2#La2#La2#L#L#L#La2#La2a2#La2#La2#La2a2#La2#L#g#L#g#L#g#La2#Lbpa2#La2#La9#L.7#Laf#L#La9.7.na9a9a9.na9",
+"#D#Ma9#Da9bl#M#DaYaYawaYblawaYaYaYawaYaYbl#D#D#s.7af.E#L.7aj.7#L#Lajbp#Lbp#L#L#L#ga2.j#g#g.j#g.j#g#g#g#g#g#g#g#g#ga2a2aj.7a9.7.7a9.na9#M#DaY.Nawbn#UaoaF#v.8am#va6a6ba#V.Z#oab.I.TbmaFaoam.C.C#I#x.s.N.N#D#D#D#DaY#DaYbl.NaY.N.s#D#M#D#D#s#D#D#s#Daw#x.CaC.5bc.yaBaZ#vam.Nbj#Db.#D#D.7a9.7#D#D.Na9a9.7a9#L#L#L#La2a2a2#ga2#ga2a2#L#L#L#L#L#L#L#L#Laf#L.na9a9#D#Da9a9a9a9#L#L#L#La2#La2#L#L#L#L#La2#La2a2a2a2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#L#L#L#L#L.7a9.7af#La9.7a9bja9#D",
+"bl#D#D#M#D#Dbl#D#MaYbl.saY.NblawaYaYaY#M#D#s#D#D.7#L.7#L#L#L#Laj#g#L#gaja2aj#gajas.jas#gas#g.j#gas.jas.jas.jas.ja2.j#L#Laf.E#D#Daja9a9#DaY.s#x#IaCamama##uazaz.G#.a..Z#Valarak#aaZ#Sa#ama0#U.C.CaYaY.NawaY#D#D#DaYaY.sbl.N.s.N.Na9a9a9a9#D#D#D#D#s.N.N#I.CaobybcbhaB#vaF.WaY.s.Nbl.s#D.na9#D#DaYafa9a9a9#L#L#L#L#ga2#ga2#gaaa2as#L#L#L#L#L#L#L#L#L#L#La9a9#D.7#D.na9#D#L#L#L#L#L#L#L#L#La2a2a2a2#L#La2#L#L#La2#La2#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L#L#Laj#L#Laja9.7.Eafaja9a9#sa9#D#D",
+"#D#M#Dbl#D#M#DblaY.NaYbl.NawaYaYaY#M#D#D#D#D.7afaja9#Lajbp#Lbpbp#Lajbp#Lbpbpa2bp#g#g#g.j#g#gas#g.j#g#g#g#g#g#g#ga2a2aj.7a9#Da9#Da9a9#s#D.s#x#I.Ca0aO#uazal.Y.A.1a.aHaGaz.Ta#bma##SaFaFbgama0.C#x.s.NaY.N.N#s#D#Dblbl#Dbl#D#D#D#D#Da9#D#D.7.E.7a9#D.saY#x.Wa0.8.5#S#uaB#S.5.C#x#x.NaYbl#Da9#D#D.Na9a9.7a9#L#L#L#La2asa2aaa2#ga2a2#L#L#L#L#L#L#L#La2af#L#La9.7a9#Da9a9.7#La9#L#L#L#L.3#La2#L#L#La2#Lafa2#La2a2#La2#La2#La2#La2#La2a2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#La2.7#L#L.7af.7a9a9a9bja9#D#D#D",
+"aYaYaYawaYaYaY.saY#M.NawblaY#Daw#Dbl#D#s#D#La9.7#L#L#L#L#L#L#Lbpa2bpa2aj#ga2bpa2as.j#gas.j#g.j#g#gbp.j#L#gaja2bp.j#Laf#L.7#s.N#sbjb..N#Ibf.Waq.8#vaz#zaHbs.m.B.BauaSa#aFaFbgama0ambga#aFamam.W.CaYaY.NawaY#D#D#D#sbl#D#D#D#D.Nb.a9a9.n.7#La9.7b.#Da9.s.Nbo.C.Cava#aZaBaBaOaOb#ao#x#IaY#D.n#Da9#Da9a9a9#L#L#L#L#La2a2#ga2#ga2#ga2bpa2#ga2a2#ga2a2#La2af#L.7a9a9.7a9a9#D#L#L#L#L#Laf#L#L#La2a2a2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#L#L#L#L#L#L#L#L#L#Laf#L#La9.7.7a9.7a9#D#D#s#D#D",
+"aYboaY#x#x#I#x#x#I#xaYawaY.NaYaY#D#M#Da9.7.7aj#L#L.E#L#Lbp#L#L#Lajbp#Lbp#Lajbpaj#gas#g#gas#gas.j#L#Lbp#Laj#gbp#L#Laj.7a9.7#Dbj.N.N.sbo.Caq.8#v#u#3adbe.A#Y#9.PbranaBb#amamaYaYaYa0am#vbmaOb#.C#x.s.N.NaY.N#Da9#D#pa9.na9#Da9.7a9.7a9.7a9.7.7.7.7a9#D#D.N.N#xbo.Cb#aOaF#vbma##vbmamam#xbl#D#D#D#Da9a9.7#Laf#L#L#L#g#La2bpa2#L#ga2a2bp#Lbp#L#Lbpa2#L#L#La9a9.7a9.7a9af.7af.7#L#L#La2#La2a2#L#La2a2#La2#La2#La2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#Laj#Laj#L.7aja9#L.na9#D#s#D#D#D.N.N",
+"#x#x#x#I#x#x#IbnaYaY#IaYaY#MaY#M#D#D#Da9.7#L#L#L#L#L#L#L#Lbp.E#Lbpa2bp.j#L#g#L#g.j#gas.j#g.j#g#g#Lbpajbp#Lbp#Laj#L#Laj.7.n.N.N.sbf.C.Caoa#.w.ObB.u#.#oa8aMabalanaBa#a#a0#xaYaYaY.Wamb##Sa#b#a0.C#xaY.NaY.s#D#D#D.nbla9a9#D.n.7a9#L#L#L#Laj#L#L.7.E.7b.a9.s.N.N.s.Camam.8aF#vaZ#uaFb##xaYaY#D#D#sa9a9a9.7#L#L#L#La2a2#ga2#ga2a2#g#L#L#L#L#L#L#L#L#La2af.7a9a9.7a9a9a9#D#L#L#L#L#La2#La2#La2#La2a2a2a2a2#La2#L.3#L#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L.7#L#Laf#L#L#L.7a9.7bja9#D#s#D.N.saY",
+".CaC.Ca0.Ca0#x.CawaYaY.Nbl.N#D#D#Da9.E.7aj#Lbp#L#L.7#Laj#L#Lbp#Lajbpaj#Lbpaj#Lbp#gas.j#gas#gas.jbpaj.7#Lajbp#Lbp#La9a9#D.N.s.N#x.WaqaO#ubk#zaHbA#Pbsbeab#a#ua#ambm.Fa0bn#xaY.N.s.Nbnb#bmaBa#aC.Caw.NaY.NaY#D#D#D#pa9a9a9a9.7a9#Laj.7#L#L#L#L#L#Lbja9bjbj#D.7.N.Nbo.C.Ca0a##vana7an#Sa0aYawbl#D#Da9a9.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Laf#La9.n.7#Da9.7afa9#L.7a2#L#g#La2#La2#La2#L#L#La2a2#La2#La2#La2#La2#La2#La2#La2a2a2a2a2a2a2#L#L#L#L#L#Laj#Lafaj#L#L.Eaf.7#La9#s#D#DaY.NawaY#x",
+".C#xa0#x.W#x#x#x#DaY#Dbl.sblaY.Na9#D#L.7#L#L#Laj#Laj#L#Lbp#L.7#Lbpa2#L#g#L#g#L#g.j#gas#g#g.j#g.jbp.7#La3#La3aj.7.7aj.7#s.N.N#Ibf.8aF.y#3ad.A.MaT.P#V#P#Tan.5.C#Ia0b#bga0#xbf#xbf.N#xa0bm.T#Sao#x#x.NaY#s.N#D#D#D#p.nafa9.na9#L.7#L#L#L#Lbpaja3#L.Ebj.E.7#sbj#sbjbf.s#xavama#aBana7aZbgbnaY#D#D.7.na9a9.7#L#L#L#L#L#L#L#Lbp#L#L#L#L#L#L#L#L#L#L#La2a2#L.7a9a9a9.7a9a9a9#L#L#L#g#La2#La2#La2#La2a2#La2#La2#La2#La2#La2#La2#La2#La2a2#La2#La2#La2a2#L#L#L#L#L.7#L.7afaj#L#L#L.7a9#LaY.Naw.Naw#x#x#I",
+"aY.saY.NaY#DaY.N.na9.na9a9a9a9aja9a9a9a9.7a9.7a9#Laf#L#Laj#L#gaj#Lajbpaj#Lajbpaj#Lafaj#L#L.7.Ea3#L.Ebj#D.s.N#Db..7.7.N.N.WamamaOakaybs#Y.maDbaaHaga7#SamamaC.C.CaYamb#aFb##xaY#D.n.Nawa0#vaZaZa##xaw.N#Daf.na9#s#Da9a9a9.7af#Laf#La2#g#g#L#Lbp#L#L#L#L#L#L.7.7.7.7bj.N.Caoam#vaZaz.fanama0aY#Ma9aY#D#Da9a9.7.7#D#L#La2#La2#L#L#La2a2a2a2a2a2a2a2.7afa9a9#D.7#D.7af#L#L#L#La2#ga2a2a2a2a2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#La2#La2#La2a2a2#La2#L#Lafa9a9a9bja9#D#D#DaY.s.N#x#Ibn#x#x#x#x#U#x",
+"aY.Naw#D#D#s#D#Da9a9a9a9a9afa9a9a9a9.Ea9a9.na9a9afajaf#La2#L#L#Lbp.7bp.7bp.7bp.7a2a2#Laj.7.E.7.E#L.E#D.s.N.Nbjbj.N.s.N#xa0aO#u#E#V#2....#KaD.YaGa7bmaFaFaoama0.CbnaCb#aOama0.N#D#Dbl#xa0bmaB#ua##x#xaY#sa9.7a9.7#D#D.7a9a9aj#L#L.j#La2bpa2#Lbp.E#Laj#L.E#L.7b.#Db.#D.s#xa0.8a##v.6azbhaOam#xaYbl#Dbl#Da9#Da9.7.7#La2#La2a2a2a2#La2a2a2a2a2a2#La2#L#L#L#D.7a9#Da9#L.3afa2#La2bpa2bp#g#L#g#La2#L#g#La2#La2#La2#La2a2#La2#La2a2a2#La2a2a2aja2#L#La2#Lafaj#La9.E#Da9#s#D#Daw.NaY#IaYaYaYawaYawaYaYaY",
+"a9a9a9a9.na9a9.na9.na9.na9.na9a9a9.7a9a9.7a9.7a9#L#L#L#L#Laj#L#Laj#Laj#Laj#Laj#L.jbp#L#L.E#L.Ea3.n#D.Nbf.Cbo.Caobf.CamaOaBaz#EaraQ#.#o.Abzay.Gana#aFaFaOamam.C.Wbna0a0b#ama0#I.N#D#M#x.CaoaZbhaBa0#IaY#Da9#s.7a9#sa9#Da9a9#Laf#L#L#ga2#g#L#Lbpbp#L#L#L#L#L.7.7.7.7#D.NaY.Cambga#a7.6#ua#b#aoa0#xbl#D#Da9.7a9#Laf#L#La2#La2a2a2a2#L#L#L#L#La2#La2.7afa9a9#D.7#D.7afaf#L#La2#L#L#ga2a2#ga2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#La2#L#L#Laf#L#Lafajaf#L#Lafa9a9a9#Db.#D#DaY#DaY.N.N.N.s#D.N#D.N#D#s#D",
+"aj.7aj.7.7.7.7.7#Da9#Da9a9a9a9.7a9#Da9#s#D#D.n#Da9a9.na9.7.7bj.7bp#L#L#L#L#L#L#Laj#Laj.E.Ebjb..N#MawaCaoaoama0.Cb##va7#a.Oaz#uaZaZanaz#e.6anaZaFaBaOaF.5amama0a0#xaCa0ama0a0#xaYbl.NaY#xa0#vaZ.lama0#x#Mbl#D.7#D#Dbja9.Ea9af#L#La2#L#La2bp.j#Lbp#Laj#Lbpaj.7bj.7#s#D.s#x.Wa0amamanaB.0a##va#bgamaYaY#Da9a9a9#L#L#L#Laf#L#L#L.7#La2a2#La2#L#La2#L#L#L.7a9.7a9#Da9#L.3#La2#L#L#La2bpa2#g#La2bpa2bpa2#La2#La2#La2#La2#La2#La2a2#La2.3#L#La2#Laf#L#Lafaja9a9.7#s#D#D#Da9.s.N.s.Naw#Dbj.7b..7b..7bjbj",
+"#L#Laf#Lajafaj#Laf.7.7.7.7.7a9.Ea9bja9#D.7a9bja9a9.7a9.7a9.7.Ebjaj#Laj.7.E.E.7.E.7.E#D.s#xbo.C.WaCamb#a#.y.0.yaB.Gazazazbhbma#aFaFa#a#aZaBa#.5.5#SaFambgama0amam#x#xbna0a0aCa0#xaYawaY#Ia0aO.lbh#vb#bnaY#s#D#s#D#Da9#Da9.7ajaf#Laja2bp#g#L#Lbp#Lajbp#L#L#Lbj.7.7#Da9#DaY#x.CaCam.5a#aOa#a##va#a##xawaY#Da9.7#L#L.7af.7#La9#Laf#L.7af#Laf#L#Laf#Laf.7a9.7a9a9#D#Daf#L#La2#L#L#L#La2a2a2#ga2a2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#L#Laf#Lafa9a9a9a9a9a9a9bj#D#D#D#D#D#D#Da9#Da9#D#s#L.7#L.7#L.E#L#L",
+"#Laj#Laj#L#L#L#L.7.n#La9aja9#L.7a9#s.7#Da9#Da9bj.n#Da9.7.E#Dbj#D#D#D#Da9#Da9#Da9.N#I#x.Wam.8.5#va#aBaP.G#a.U#4.Uaza7aZa#aFaFbmb#a#b#aFa#.8ama0ama0a0a0a0a0aC.Ca0#I#x#xa0b#a0a0a0aYaY.N.N#Iambm.lbmaFaobnaYaY#Dbj#D#s.7a9a9af#L#L#La2aj#ga2bp#Lbp#L#L#Lbp#L.7.E.7#D#D#D.saY#x.C.CaC.5am#v.5a#.0#va0bn#x.N#D#D.7.7a9.7a9.7a9.7.7a9#L#L#L.7af.7#L.7#L#L.7a9a9bja9#Da2afa2#La2#L#L#L#L#g#L#g#L#g#La2#La2#La2#La2#La2a2#L#L#La2afa2af#L#L#L.7a9.Ea9.7.n.7#Da9#s#D#D.N.N.sbj#sbjb..7bj#Laj#Laj#L#L.7#L",
+"bjbj.7bj.7.E.7.7.7.7a9.7a9.7a9.7#D#D#D#D#s#D#D#D#D#D#D#D#D.N.s.N.sbfbobf#Ibf#xboa0.8.5#v.yan.w.G#TabaMa8#cabalaZa#aFa#b#b#a0b#b#ama0aoa0a0#x#x.CawaYaY#Ubn#xaYaY#x#x#x.Rbna0a0amaYaY#D#DaY#UaF#GaZ#S.V#UaY.s#Dbj#s#Da9.n.7#La2af#L#La2#g#gajbp#L#Lbp#L#L#L.7bj.7a9#s#Dbl.N#x#x#x#x.C.Cam#va#a#.0aF.8a0#x#x#D#D#Da9#D.7#Da9a9.7.7#Laf#L#L#L#Laf#Laf.7a9a9.7a9#D#Daf#La2#La2#L#L#L#ga2#ga2a2#ga2bpa2a2a2a2a2a2a2a2#Lafa2#L#L#L#L#Laf#La9a9#La9a9a9a9#D.7#D#D#D#D#D.s.Nbja9.7.7a9.E#L.7.7.7.7aj.7aj",
+".7a9b..7.7bjbj#D.Eaf.7#L.7af.E#L#D#D#D#D#D#D#s#D#D#s#Dbj#D.s.N.N.C#x.C.C.C.W.C.Wby#vaBaz#T#4aH#..ga8bsbr.2al#TaZaFaFb#b#ama0a0a0.Cama0#xaY#x#x#xaYbl.NaYaYaYblaYbf#x#x#xbna0a0aobn#xaw#D.sa0.t#SbmbmaOa0#U.N#D#D#D#D#Da9a9#Laf#L#L#La2#L#g#L#Lbpa2ajbp#Laj.7.7.7#Dbl#DaY.N.N#Ibf.Naw.Cao.5.5a#a##va#ama0bf#D.N.N.7#Da9#D.7a9.7a9#L.7#La9#La9#L.7#L#La9.7a9bja9#Da2af#La2#L#L#L#L#g#La2bpa2bpa2#La2a2#La2#La2#La2#L#L#Laf#L.3#Laf.7a9af.7a9a9.7a9.7#D.n#D#D#D#D#Dbjbj#Dbj#s.7.E#La9.n.7.na9.7a9.7",
+"#Laj#Lafajafaj#La9#D#s#D#D#D#DaYaYaYawaYaY.NaY.N.C.C#x#IaYaY#M.namav.8.5#v.0.w.G#aau#4#4#z#3.Ga7#Z#0aM.gaTayaZa0a0a0a0#xbn#x#U#xawblawaY#D#M#D#D#D#Da9#D#sblaY#Mbl#Mblbl#DaYaYaYa0#IaY.N.NaY#Ua0.t.tbm.Fam#x.Nb.#Da9a9.7af#L#La2aj#L#L#L#L#Laj#L.7#L#L#L.7#L.7af.7.7a9.7.n#D#D.NawaYaY#x.CaCamao.0a#aB.0.taFb#.VaY#Da9a9af.7#D.N#Laf#L#L#L#L#Lafa9a9a9a9a9.7.7.7a2#La2a2a2a2a2a2a2a2a2a2a2a2a2a2#g#L#ga2a2#ga2a2a2a2a2a2#L#Laf.7#pa9a9a9#Dbj#D.N.na9a9a9b.#D#D#D#D#s#D#D#D#s#D#D.n.7#L#L#Laj#L.7",
+"aja2afaj#L.7.7#L#sa9#D#D#s#D#D.N#D#D#D.N.N.N.N#DaY.N#x#xaCamb#aF#SaZanaz.Galba.4.O#aaz#uaB.0aBan#Tbz.mab.2az.5#xa0bnaYaYaYaYaYaY#DaY.NaYbl#D#D#D#D.n#D#Dbl#Dbl.Na9bl#Dbl#DawaYaYbnaYaY#D.s.N#xaCbm.Fbm.tb#aC.N.Nbl.na9a9aj#L#L#L.7#L.7#L.E#L.7#L#L#L#L#L#L#Laj#La9aj.7.7.7#D.N#D#Dbl.N#xbn.Ca0ama##va##v#vbm#vaF#x#x#Da9a9#D#D#D#L#La9#L.7af.7#L#pa9afa9.7#D#La9#La2a2#La2#La2#La2#La2#La2#La2#La2#ga2a2bpa2bpa2a2a2a2a2a2#La9afa9.na9a9#D#D#Dbja9.nbj#D#D.NaY.saY.Nbl.sblaYaY.Na9.7#Laj.7.7#L.7",
+"#Laj#L#Laja9.E.7#La9.Ea9#D#D#s#Db.#D#D.Nbo.Caqaq.bbnbga#aZaS.G#q#t.HaQauaGar#a#a#vaOaF.5b#.8#vaB.2.A.1aDaka#amaYaYaYaYaYaYaY#D#D#D#D#s#D#D#D#D#D.7.7a9#D#D#D#Dbla9a9.n#D#D#D#Dblaw#xaw.N#DaYaYbnb#aF.taOb#.C#I.Na9a9.7a9a9#L.7#L#L#L#L#Laf#L#L#L.n#L#L#L#L#L#L#L#La9a9.7a9.Ebj#D#D#D.s.N#x#x.W.Ca0amamaFa##vbmaBb#bnaY#D#D#Da9bjaf#L#L#Laf#L#L#La9a9a9a9a9a9.7.7a2af#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#L#L#L#L#L#La2#L#Laf#La9.7a9a9afa9a9bj#s#D.Nbl.NblaY.NaY#xaYawaYawaYbl.sbl#M.7.E#L.7#L.Ea3.E",
+".7.7.E.7.Ebj.7.7.n.7a9.7#s.N.N#DaY.N#x.Cam.5a#aZaF#SaZa7arala6ay#W#W#kbhbmaFa#.5#x#x.CaCaoamaOaB#P#obsba#uam.C.NaYaYaY#D#D#D#D#Da9#Da9#D.7#Da9a9#La9.7.7a9bl#s#Da9a9a9bla9bl#D#DaY.NaYawaYaY#IaYa0aCb#.Va0a0#U.N#D#Da9.7a9.7aj#L#L#L#Laj.7#L#L#L#L#L#L#L#L#L#L.7#L#L.E#La9.7.7.7#D#D#DaY.s#x.C.C#x#Ia0aCama#a#aZa#.8a0#xaY#Da9af.7#Da9#D.7#Da9#Dafa9afa9.7a9#La9#L#L.3#L.3#L.3#L.3#Laf#L#L#L.3#L#L#L#L#L#L#L#L#L#L#L#L#La9.7a9a9a9#D.na9bl#DaY#s#x#x#x#Ia0#I#x#xawaYblaw.NaYaYaY.7#D.7.Ebja3.7.7",
+"#Db.#D#D#s.N.s.NaY.Naw.N.NaYbo#xa0b#a#bmaS#aa6.Kbaba#a.faZaFb#amb#b#ama0.C#xbf#xbobf.NaY#xao#v#u.q.qaGanamaYaY#DaY#sbl#Da9.7#L.7.7.E.7a9.E#L.7.E#L#L#La9.nbjbl#Da9a9.7a9.7#D#D#DblaY#xaYaY#IaYaY#xbna0bnbna0aCbn#sbl#Da9.7af.7a9#L#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La9.7af.7a9aj.7#D#D.N.Nbo#x.Nbl#Ia0am.5aO.0aB.0b#.CaYbla9a9a9.7a9.7a9.7a9a9a9#pa9a9a9bj.7.7#L#L#L#L#L#L#L#L#L#L#Laf#L#L#L#L#L#L#L#L#L.7#La9#Lafa9bja9#D#D#D#Dbl#DaYaYaYaYaY.C#xama0.CaC.C.C#x#xboaYaY.NaY.N#s.N#D.N.s.NaEaW",
+".N.N.s.N.Nbf#xbfaCa0a0a0a0amam.8aZbhazaGau#j.e.e.6ana#.5ambn#xaY#I#x#xbo.N.N#saW#x#Ibfaw#x.5aZ.G.q.KaBam#xaY.s#D.7#Da9.7.E#L#L#L#Laf#L#L#L#L#L#L#Laj#L#L.7#Da9#Da9.7a9#D#D#Da9#D#DawaY#IbnaYaY.Naw#xbnbnbna0bna0aY#D#D#Da9.7#L.7#L#L#L#La9#L#L#L#L#L#L#L#L#L#L#Laj#L#L#L.n.7.7.7#La9.E.7#D.N.N.N#saY.N#x.Wa0.5aF.0aZ#v.5a0aY#Da9.7#Da9bja9#D.7#Dafa9afa9.7a9#La9#La9#La9#La9#La9#La9#L.7a9af.7af.7#L.7.7#L.7af.7.7a9.7#D#D#D#D.N.saYaY#x#I#xbnbnaOaoaoamaCa0a0bn#Ibn#x#x#x#x#I#x#xaYboaY.N#xbf#x",
+"#x#xa0.CaCa0aoa0aFa##v#vaZ#uaZaZarazazanbmaF.5a0.C#x#x.N#D#D#D#D#D#D.Nblbj#D.N.sbf#x#I.CbgaBaz.2baazaF#x.n.7#Dbla9.7.7#L#L#Lajbp#L#L.E#La9#L.7#L#Lbp#L#L.7#L#D.E#L#L.E.7.7.7.7#Dbj.N#xbna0#I.N#DaYawbna0bnbn.V#U#D#D#D#D#D.7a9.7#Laja9#Laj#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#L#Laf.7#L#L#La9.7#s.N.N.7#D.N.N#x.CaCaq#vaZaBa#aF#xaYbl#D#D#D#D#D#D#D#Da9a9a9a9a9a9.7.7#L#La9.7a9a9#L#L#La9a9a9.7a9.7#L.7af.7af.7a9.7.7#D#D#D#D#D.N.NaY#x#x.Ca0b#ambgamaOb#aCa0.C#I#xaYa0a0#xbn#x#xbna0aCa0a0a0ao.CaCaq",
+"aoa0aoaO.5.8aFaO#u#uaSazaG#3araza#a#amam.C#x.s.Nafaf#La9bjaWbfbf.N.NaY#xawaYaYaY#x.C#xaCamaB#aaT.GaF.C#D#La9#L#D.7#Laj#L#Lbpbp#Lajaf#L#La2#L.j#Lbp#L#Lbpa9.7#Da9.7#La9#La9.7a9.7#Dbl#xaCbn#xaY.s#D.N#Ubnbnbnbna0bl#D#D.7a9.7#L.7a9#L#L#L#L#L#L#L#L#L#L.7#L#L#L#L#L#Laj#L.7#L#L.7a2.7#L.7.7#D.N.Nbj#D.s.N.N#I.Ca0aFaZaBaZ#vam#xaY.7#Da9#D.7#Da9#Dafa9afa9.7a9.7a9#L#Lafa9#La9#L#La9af.7a9a9a9afa9a9#L.7.7a9#L.7af#D#D#D.N.N.NaY.s#xama0.8aF#Sa##va0a0a0#xbnaYaYawbn.WbnaCbnaCa0aCaFb#aO.5aOaF.8aF",
+"aZ.ya#amaoaFaB.Taka6aGaraBaFa0#xbnaYaYaw#D#Da9#D#L.Eaf.7a9aj.7.7aja9.n.7#D#D.sbfaw.N.Wam#v.w.Ga7.C#IaY#D#s.7.n#Laja2#L#ga2#ga2#g#L#Lajafaj#L#L#Laj#L#L.na9a9.na9a9a9.na9a9#L.Ea9a9#saYaY#x.C#x#xaYbn#x#U#x#xa0aCbn#D.7#L.7a9a9#paj#L#L#L#L#L#L#L#L#L#L#L#g#L#L#L#L#L#L#L#L#L#L#Laj#Laf.Ea9.7.7a9#Da9#D#D#DaY.NawaY.pa#.0.0a#ambn.N.N#D#D#D#D#D.7a9af#L#L.7#L#L#L#L#L#La9a9.7a9#Da9a9#Da9bja9bj#D#D#D#D#D#D#D#D#D#s#D.saY#xbn.8aFaZaBaZa#aFama0aqaC#x.N#MaY#x.Ca0aFb#b#amamb#.5aFaoaOaFaOa#bmaZ.y",
+"aZa#aOa##v#vaB.T#4#z#a#uaFa0aC#xaYawaYbl#Da9#Da9.7a9.7#L.7a9.7a9af.Ea9.7#s.N.N.N#D#Ia0.8a#bkaraZ#IaY.s#D#Da9.7#Lbpa2bpa2#g.j#ga2ajaf#L#L#Laja2#Laf.7#L.7a9.7#Da9afa9a9a9a9.7a9#La9#Dbl#x#x#I#x#xawaY#U#xbn#Ia0.CbgaYa9#L#L#Lafa9#Laj#Lbp#Lbp#Lbp#Lbp#L#ga2#g#La2#L#L#Laj#Lbpaj#L#L.7#La9.7.7a9.7.E#D#D#D#D.saY.N#Ua0#va##S.0aOamaY.N#D#D#Da9#D#Dafa9a9af#L#L#L.7af#Laf#La9#Da9.7a9a9.7#D#D#D#D#Da9bja9a9#D#D#s#D.N.N#x.Ca0aoaF#vaZbmbmaOa0.W.C#x.C#xbl.NawaY.CamaCamaCamamambgamb#.5aOa##Sa#.yaZ",
+"#vaFaO#v.ybmaZazbaauazb#a0#x#xaYaYaY#D#sa9#D.E.7aj#L.7aja9aj#L.7aja9.n.7#D#D.sbfaY.WaCam#u#3a7aFaYaY#D#D.n.7ajafaj#gaj#g#L#g#Laj#L#Lajaf#Laf#Laj#L#L#La9a9#Da9a9.na9a9.7.n.7.7a9.na9aY#x#x#x#x#xaYaY#x.R#IbnbnaC.t.VaYa9.7aj#L#L#Lbp#L#Laj#La2#L.j#La2#g#g#g#gajbp#Lbp#L#L#L#Lbp#L#L#L.7a9.7.7.7a9#D#s#D#DaY.NaYaYa0ama#a#.yb#a0.N.N#D#Dbj#D#Da9a9a9.7a9bja9.7.7a9a9a9#D.7#D#D#D#D#Da9#Da9#D#D#Da9a9.n#D#DblaYaY.8b#.8aOaFaOaFaOb#bgama0#x#x#x.N#U#x#I#x#x#xaoama0bna0bnaoam.5amaOaFaFaF#va##vaZ",
+"aOaOaF#va#a#az#faS#ubmb#a0#xaY#Dbl.n#Da9a9.7#L#L#L#L#L#L#L#Laj#L#L.Ea9a9#s.N.N.s#x.Wb##v#Ebk#va0aw#D#D#Da9#L#L#Lbpa2#L#ga2#ga2#g#Laf#L#L#Laj#Laf#L.7#L.n.7#D.na9a9a9a9a9a9.7a9#La9#sbl.NaY#xaYaYblaYaw#x#x#x.C.C.Fb#bnbl#Da9.E#L#Laj#L#Lbp#Lbp#Lbp#Lbp#L#g#L#g#L#Laj#Lbp#Lbp#L#L.7#L.n#L#L.7af.7#Da9#D#D#D.NaY.saY#Ibn.5a#a#aFambf#x.NaY#D#D#D#Da9a9a9.7a9.7.7#L#D.nbj#D#D#D#D.Na9b.bl#Daw#xaYaYaYaYaY#Ia0a0aoam#uanaBa##vb#bgb#bnbnaYaYaYaYblaw#x#x#x#Ua0.Wa0a0.W.C.Wama0ambg.5aFaFa##va#a##va#",
+"b#ao#vbmaB#uaz.Gb#b#ama0#xaw.N#D#Da9a9a9.E#L#Laj#L#Laj#L#L#L#L#L.Ea9.n#D#D.N.N#x#Iao.5#u.Oazam.C#Dbl#sa9ajaf#La2.jbp.j#L#gajbpaj#Laj#Lajaf#L#Laj#L.n#La9a9a9a9#D.na9a9.Ea9.n.7a9a9#DaYaw#x.sbl#D#sblaYbl#I#x#Ua0b#bgb#bn#D#D.7#Lbj.7.7.7.7.E.7.7#L.j#La2#g#L#La2bp#L#Laj#L#Laj#L#L#L#L.7af.7.7.7a9.7#D#D#s.Nbl.NaYaY.CaCby#va#.8#xbfaY.N.s#D#Dbj#D#D#D#D#D#D#D#D#D#D#D#D.Naw.NaY#D.NaYaw#x#xa0aoamamaFaF#v.0bbanaBaZ#vaFb#am#x#xaYaYaYaY#IaY#D#D#x#x.Ca0avamama0.C#x.Ca0aoamaFa##uaZaBaZ.y#S.0.y",
+".8aOa##Sazar#ua#a0am#x#x#x.N#D.7.na9#L#L#Laj#Lbp#L#Lbp#L#Laj#Laj#La9.7.n#D.sbo#x.Wao#v.f#f.ya0bf#M#D#Da9a9#L.ja2#La2bp.j#L#ga2a2#Laf#Laf#Laj#Laf#L.7aj#Da9b.bl#Da9.na9a9a9a9.7.n#D#MaYbfaYaY#Da9#D#D#Daw.NaY#x#Ib#b#bg.VaYbl#s#L.Ebj.7b..7.7.7.7#Lbp#Lbp#L.jbp#L#L#Lbp#Lbp#Lbp#L.7aj#La9.7a9#L.7a9#s#D#D#DaY.Naw.N.s.CamamaOa#a#.W#xbf#xaY#D#D#Da9#Da9#Da9bj#Dbj#D.N.Naw.N#x#xbfaYaw#x.Ca0a0aFbma#aBaZbbaZ#uaZ.0bgb#a0am#x#x#xaYblaY#MaYaY#Dbl#DaY#xaCamamaoaqaC.C.Wamao.5a#a#.yaSazaZ#uaZ.yaOaF",
+".5aF#Sbhaza7aFa0a0bn#xaw.N#D.7.7af#L#L#L#La2#L.j#g#Lajbp#Lbp#Lbpaja9.n#D#s.N#I#I.WaF#uarazaF.W.Nbl#D.n#Laj#La2a2aj#g#L#g#L.jbpaj#Laj#L#Lajaf#Laj.7afa9.na9#D#D#Ma9#p#s#D#sa9.na9#DblawaYaw#Da9a9#D#D#saY.Naw#x#xaCb#.VaC.V#xaY#Dbj.nbja9bj#s.7.7aja2#L.j#Lbp#La2ajbp#L#L#L#L#L#L#L#L#L.Ea9.7.7a9#D.7#D#D#D#DaY.N.N.N#I.CaoaFa#aB.C#x#xbf#x.N.NaY#Dbl#D#D#D.N#D.NaY.saYaY.C.W.C.W.Caqa0.8a#aZaBan#u#uan#Sa#b#ama0bnaY#xaYaY.NaY.N#s#DaY#DblaY#Dbl#I#xam.8.5aOam.Cama0aoaFbmaBbha7#a#ea7an.y.yaF.8",
+"bc.y.wara7b#a0aoaYaYaYbl#Da9.7.7#Laja2#L#g.j#g#ga2bpa2bp.jbpaj#Laf.Ea9#s#D#I#I.C.WaOaz#EaZb#.C.N#sbla9afafaj#L.j#L#g#L.jbpa2bpa2#Lafajaf#L#L#Laf.E.7.n#Da9#D#sbl.n#D#M#s#D#s#D#s#DawaY.NaY#Da9.n#D#D#D#DaY.NaY#I.CaCam.Vb##U#xawa9bj.7b..7bj.7bj#Laj#Lbp#La2#L#Lbp#L#Lbpaj#Lbpaj.7#L.7af.7a9.7.Ea9#D#D#s#D.N.saYb..Nbf.Wa0aF.0#ua0.W.C#Ibfaw.NaY#saY.N.N.N.N.N.N.N#xaY#I#x.W#x.C.Wam.8aZ.waz#ubha#aFaFb#ambn.bblawaY#MaY.N.s.N.N#D#D#D#DaY.saY#I#xaCam.8aFbyaoaCaoamama#a7azararaya6.G.Gaz#u#v.8",
+".J.far.laobn#xaY#D#sa9#D.7a9aj#L#L#L#L#L#Lbp#Laj#g.j#ga2#L#L#Lbp.na9.7#s.N#I.Caobh#EaBaCbn.s#IaY#Ma9.n.7#L#L#L#Laj#Laj#L#Laj#L#L#L#L#L.7aja9.Ea9bl#M#D#M#DblaYblaYawaYaYawaY.NaYawaY#Mbl#D#D#D#Da9.n#D#s.Nbl.saY#x.RaY.N#xa0aFbm#IaYaY.N#s.7.E#L#L#La2#L#L#Lajbp#L#La2#L#L#L.7#La9a9a9.7#L.7.7.7#Da9#D#D#DaY.N.NaYaY#Ia0.5.8a#an.0.5bn#xbl.N#x.C#Dbl.sblaY#I#x.W.R#Ibna0aOa##vaZazararaz#ua#aFaO#x#I#x#Ibn#x#xaYaYaY#DblaY#Dbl#Dbl.NblaY.NaY#x#xaoaobnaY#xaCa#.0aOaOaOaFaFaFaFaF.l.Ta7bh.G.G#q#e",
+"araza7aFam#xaYawa9#Da9a9a9#L#L#L#L#Lbp.j#L#La2#Las#ga2#gbp#Laj#L.7.7.n#D#M#xaCaFbk#iaOaC#xblaY.Na9a9a9afaja9aj#L#L#Laf#Laf#Laf#Lajafaja9#L.7a9.Ebl.n#D#M#DawaYawbn#Ubn#I#x#I#xawaYawaYaY#D#s#D#D#D.n#D#DaY.s#x.N#U#IawaY#xbna0aF#x.W#xaw.N#D.7b.afajaf#L#Lbp#L#La2#L#L.E#L.7a9.7a9a9.na9.7a9.7.7#D#s#D#D#D.Nbl.Naw.N#x.CamaF.0.y.yaF.CaYaw#x.Caq#Ibn#x#x#x#xbna0aoamaF#vana7.wazaZan#uaZaOamamamaY.RaYaYawaYaYaYaYblaY#D#Dbl#DaY#DblaY.N#xaY#I#xbnbnawaYbnam#va#ama0a0aoamamaoam.taFbmaZ.6ar.2#4",
+".faBb#a0aY#xbl#Da9a9#D.E.7#L#L#L#g#ga2#g#g#g#g#g#g#g#ga2#L#L#L#L.n.7a9a9.N#Iam.8#f.Gb#bn#UaYaw.Na9.na9.7af#Laf#Lajafaj#Laj#Laj#Laf#Laf#L.na9a9#D#Mbl#M#DawaYaw#x#I#U#x#U#Ibn#I.NawblaY#s#D#D.N.sa9#s#D#M.NaY.s#xawaY#D.s#D.Nbnama0a0aC#x#xbl.NaY#La9#L.E#L#L#L#Laj#L#L#La9.7aja9a9a9a9#D.n.7a9.7#s#D#D.Naw.N.NaY#Dbl#I#xaC.5#va#aBaFa0aC.C.Caoa#ama0a0ambgaF#va##uan.w.wan.wanaZ#vaFb#ama0a0#x#xaYbfaY#xaY.Nbl.Nbl#D#D#Dbl#D#D#D#DaY#saY.N#x#x#xaYaYaYaY#Ia0bg.5bn#xbn#xbna0a0amaCb#ao.t#SaZar#a",
+"aFama0aY#xaY#Da9#D#Da9a9#L#L#L#g#ga2#gbpa2bpa2bpa2#ga2#gbpajbp#L#Da9.7#saYaY.W.5#EaraFa0#U.NblaYa9a9a9ajaf.E#La2#L#L#L#Laf#Lafaj#Lafaja9#D.n#D#D#s#DblawaY#I#x#Ibnbn#I#U#x#IaY.N.Rawbl#D#D#D.s.N#D#D.saY.saY#I#x.N#s#s.7bj.N#xa0aob#amaoa0#I#xaY#D.na9.7a9bpaj#L#L#L#La9.Ea9#D#D#D#D#D#D#D#Dbj#DaY.Nbl.N.N#x#xbfaw.NaY#xama0aOa#aBa#bgama0.5a#.0aFaOaF#SaZan#ua7bhazaBbhaBa#aFb#b#aCbnbn#x#xaYaw.Nblaw#D#Dbl#D#D#s#D#p#Da9#D#D#Dbl#DaY#x#xaw#x#xaY.NaY#x#x.C.C.CawaYaw#xaw#x#Ibn#x#Ua0a0amaFbmbm",
+"bn#xaYaYaY#Ma9af.7.n#L#L.7#L#ga2bp#ga2#g#ga2#ga2#ga2#L#L#L#L.7.7#s#D#s#D.N#xamaoaS.OaBam#xaYaw.N.na9a9#Laf#L#La2ajafaj#L#Laj#Lafaf.na9a9a9bl#D#Mbl#saYaw#x.b#x#x#U#Ibn#I#xawaY.saYaYbl#D#D#D.N#D#M#sblaw.N#I#x#I#D#sbj#Db..N.N.Camamb#am.pa0a0bn#D#Da9.7.7aj#Lbp#L#La9.7a9a9#s#D#MaY#D#Dbl.saY.N.N.N.s#x#xbf#I#x.NaY#I.CaCamam#vaBbm#SaF#va#a#aB#ubh#uanaBaBbmaZ.FaFb#b#a0aCbn#I#x.RaYawaYawaY.N#D#D#D#D#D#D#D#Da9#Da9#Da9#Da9a9.saYaw.Naw.N#xaY.N#x#xaY#xaC#xaYblaYaYaYaYaYaY#xaYblaY#Ua0a0.Vbn",
+".NaY#D#Da9a9a9#La9.7.7#L#L#g#L#ga2bpa2bpa2bp#gbp#g#Lbpaj#L.7.Ebjbj#D#Dbl.s#xaoa##TalaBam#x.NaY#Da9a9a9af#L#L#L#L#L#Lafaj#Laf#Lajafa9a9#p.n#D#M.NblaYaYawaY#x#I#x#Ibn#U#Ibn#I.NaYawaY#sbl#saY.s.N#sbl#s.NawaY#I#x#I.N#D#s#D.N#Ibnaoa0#Ia0a0b#aoamaw.N#Da9.7#L#L#L.7.n#L.7#s#DaW#DaYaYaY#I.NaY.N.N#I#x#xbf#x.C.C.C#x#I.Ca0amama#a#a7azaza7aZaB#uan#uan.laZ#SbmaFaF.V#Ubn#UaYaYawaYaYawaY.NaY.N#D.N.n#Da9#D.n#D.7a9#Da9bj.nbja9#s#DblaY#D#x#xaYaY#x#M.N#x#I#x#x#xaY#Dbl#DaYaYaY#xaw#x#IaYaYaY.baYaY",
+"#D#D#Da9a9#Lafaj#L#L#Laj#Lbp#ga2#g#ga2#g#ga2#ga2#g#L#Lbp.7.7.7#D#D#s#D.saY.C.8aB#4#zaZa0#xaYaw#Da9.na9#L#L#Laja2#Laj#L#Lafaj#L#L#p.n#pa9blblaYaYawawaYaY#I#x#x#Ibn#Ibn#I#x#U#x#IaYblaYaY.Nbl.saY#s#Daw#Dawbf#I#x#I#x.s.N.s#xa0aC.C.Ca0.CaCa0ambg#x.N.s#D.7aj.7aja9.7a9#sa9#D.s.NaYawaYaYaY.NaYaYbf#x.C#x.W.C.Caqavaqa0ao.5#va##vaS#W#aazazanbm#SaFaFa#aFaOaFbgb#aCbnbnaw#x#x.N.N#sbl#D#s.N.N.N.N.7.7.7.7.7.7a9.7.7.7a9.7a9.7.7.7aY#DawaY.NbfaY#x.NaY#x#x.C.WaY#D#M#DaY.NaY#x#x#x#x#x#xaYaY#Da9#D",
+"a9.7.7.7afaj#Laf#L#L#L#La2#La2#gbpa2bp#g#L#g#L#g#Lbp#L#L.7.7.7bj.s#D.NaY.Nao#v.QaD#za#am#xaY.N#D#pa9a9ajaf#Laf#L#Lafa2#La2#Lafaja9#p.na9#MblawblawaYaY#I#x#I#x#x#Ubn#Ibnaw#x#IaYaYawaY#M.saY.N.s#D#M#D.s.Naw#x#I.W#x#I.s#x.W#Ua0.Cava0.W.Ca0a0a0#I#IaY#D.7#L#L#La9.E#D#D#D.N#D.sbnbn#x#x#x#x#I#x.C#x.W.Caqamavam.C.5.5aFbya#.y.0.Gakar#e.TaBaFaF.5aFaOamb#a0aoambn#Ua0.C.Ca1bfbf.Nbl.N#D.N.N.N.Na9aj.7af#Laf#L.Eaf#L#L#L.7.n.7.n#DaYblbfaYaY#x#x.s#xbo#x.C#x.Na9#D#DaY.N#x#IaY#xama0bn#x#D#D.7#L",
+"#Laj#L#L.7#L#L#Laj#L#Lbp#g#g#g#La2a2a2a2#ga2#L#L#L#L#L#L.7a9.7a9#Da9.s#Iama##u#.bA.faFaYawaYaYbfa9a9afa9#L#L#Lajafajafafajaf#Lafafafa9a9bl#Dbl#s.RawaYaY.R#U.R#Ubn#Ubn#Ibn#U#x#x#M#D#D#Daw#D#s#DaYaw#s.n#D.s#I.Caoaoam.8.5aO##am#va#byaFbcaqav.CaFaOaFaC#x.N.saW.N#D.N.s.N#I#xbn#U#xaw.R#x#xbna0#U.Vamb#b#aFa#bmaBaZ#vaZ#v.0aB.yaFaO.5bgamamamaobn#U.C#Ua0aCbnbnawaY#MaYblaY.saY.7.n.7.na9.E.7.7#La9#Laj.7#L.7af#Lafaja9a9a9#Da9.Nbl.Naw#x.s#xaY#x#xbn#x.baYaY#Da9.na9#DaY#x#x#x#IaYaY#sbla9.na9",
+".7af.7#Lajaf.7#L#Lbp.j#L#g#L#g#ga2#ga2#g#La2#L#Laj#L#L.7a9.7.n.7#sbl.NaYaoa#azbAa6a7am.RaYaYaY#xafa9a9af#Laf#L#L#Lafaj#Laf#Lafajafaja9.n#D#M#DaYaw.R.RaY.baY#UaY#Ubn#UaYbn#x#I#x#M#D#M#D.s#D#s#D.s#Dbl#s#s#MbfavaCbgaCaoaC.5ao.5#vaOaOam.8.8amavb#b#aoaC#xaw.N.N#s.s.NaYaw#xbnbnaCa0a0a0amamaoaFaFaFa#.yan#u.G.6aBaBbmaO.5b#.5b#amaoa0a0amaCa0a0aY#xbn#Ibn#Ibn#IblawaYaY#M.Nbl.N.n.7a9.7a9.7afa9.7aj.7#L#L#L#L.7#Laf#La9a9#D.7#D#s#DaYaY.NaY#x#xbn#x#x#U#xaYawaYa9a9a9bl.NaY#x#x#xaYaYbl#Da9.7a9",
+"#L#L#L#L.7#L#L#L#La2#L#L#ga2#g#L#ga2a2a2#ga2#L#L#L.7#Laf.E.7.7#DawaY#I.CaoaBazbaaSa#.VbnawaYaY.N#pa9afa9a9#Laja9af#Lafafajaf#Lafa9#pa9blblbl#MaYaYaYaw.R#x#UaYbnaw#x.R#I.R#I#x#xaYaw.NaYaw.N.N.s#D.s.saw#I.CaoaoaO.F#vaOaO.8#vbc#va#aO#vaO.5.8aCaFaO#SaOaOao#I#x#MaYawbnbnaCa0b#a##va#a##vaZaZ#uazazbh.Galay.2alaFaOaFamaCa0aC.C#I#x#x#I#x#xaY#IaY#I#x#I#x#x#I#xbl#D#M#D#D#s#D#D.n.7.n.7.n.7.7.Eaf#L#L#L.7aj#L#Lajaf#La9.7a9a9.7bl#DaY.NaYaY#x#xaCa0#x#xbnawaY#D#Da9#D#DawaY#x#I#xaYaY#D#Da9a9a9",
+".7#L.Eaf#L#Laj#L#L#L#g#L#g#L#g#g.ja2a2#ga2bp#L#L#Laf#L.7.7a9.7#Dblaw#x.W.5az#aalaZb#a0bnaYaY#DaY#p#Da9afa9a9#L#Laja9aja9#La9aja9.na9#sbl.n.NblaYaw.R#xawbnaY#U#U#x.R#Ibn#I#x#I#xawaYaY.saY.s.N.N.s.saw.W.Waobc.yaBaB#u#S.y.y#va#aB#u.Qaz.waBaZ.yaZaB.0aBaB#vaO.5bn.Vb#am#Sa#aB#u.wbhazazbh.waz.GarazaSaz#a#a#a#ea0a0#Ubn#x#I#x#xaY#MaYblblawbl.NblaYaYaY#U#IaYaY#D#M#D#s#D#D.n#D.7a9.7a9.7a9.7a9#L#L.7af#L.7af.7af#L#L.na9a9bja9#D#D#DawaYbfaw#xbna0#x#UaYaYaYbl.n#Dbl#DaY.N#xaY#xaYaY#D#Da9a9.7",
+"#L#L#L#L.7#L#L#L#g#ga2#g#g#ga2bpa2#ga2a2#ga2#L#L.7#Laja9#La9#sa9.NaYaY.Wambk#zaraFamambnaYblaYbl#Dbla9a9.7a9.7a9a9.7a9a9.na9a9a9#Da9bl#DblawaY.N.RaYbnbnbn#Ubnbn#I#U#x#x#x#I#x#Ibl.Naw.NaYbf#I#x.s#x.WamaO.y#uazal.U#z.U#T.G.GaP#Tal#z.U#3al.Ualal#T.G#T.G#e.w.wa7#ua7a7aS.G#e#TaS.w.wanaz.wazaS#vaOa##va#aFaFam#UaY#xaYaY.NaY.s#D#D#D#s#D#D#D#s#D#saY.saY.NaY#sbl#D#M#D#D#Dbj#D.n#L.E#L.E#L#L#L.E#L#Laj#L#L#L#L#Laf#La9.7#Da9#D#D#DblbfaY.N#xaY.C#I#x#xaYaYaY#Dbl#D#D#Dblaw.NaYaYaYaY#D#pa9#La9",
+"#L#L.7aj#L#L#L#L#g#L#gbpa2bpa2#ga2asa2#g#La2#L#L#L#L#La9.7.7#D#sbl.N#Ia0#vaz#z#eam.Va0bnaYaYaYaY#Dbl#D#Da9a9.7.7a9a9a9.7#Da9#sa9bl#sbl.sbl.NblawaYbn#Ubn#Ibn.C#Ubn#x#U#x#I#x#IbfaYaw.NaY.N.saYboaYaCam.y#u#aau#4aH.4#..4aHbrbw#0.2bw.2aT.2ay.YaH#4#zal.o#T#Tal.U#aar.G.Ga4aPa4a4.ya#aZ.ya#a#a#aOa0bnaCbnaCbn#I#xblaYaY.s#D#sa9#Da9.na9a9a9.na9a9#D#D#D#D#s#D#s#D#D#s#D#D.n.7.E.7.n.7#La9#La9.E#Laf#La9#L.7#L.7afaj#L#La9a9.n#D.7bl#D#DaY.NaY#x#xbn#x.R#xaYaYaY#DaY#Dbl#D#D#DaYaYaYaYaY#D#Da9a9a9",
+"#L#Laf#L#L#L#L#La2#ga2#g#ga2#g#La2a2#ga2#ga2#L#L#L.E#L.7.n.7a9#D#D#I#xaoby.w#zaSa0aCa0bn#x.Rblblbl#D#D#D#D.7a9.Ea9.7a9a9.n.7a9a9#sbl#DblaYaw#x#x#xa0#xa0a0a0aCa0#I#U#x#I#x#I#xawaY#x#I.Nawbf#x#IaCbgaBaza6aT#P.uaybaay#3#aar.Gazaz.Gazaz.Gar#aa6.w#u#uaBaZaB#uazazazaS.0#S.0aFa#am.5aoa0am.Wam.C#I#x#x#I#x#I#xaw.N.N#s.N.N#Dbj#s#D#D.7.7.7#D#s.7a9.Ea9a9a9a9a9a9#s#p.na9bj#Dbjbj#Lajafaj#L#L#Laf.E#L#L#L#Laj#L#Laf#Laf.7a9bja9#D#D#DawaY#x.s#xaY#x#x#x#IaYaYawaYbl#D#D#DblaY#s#DaYaYaw#D#Daf.7af",
+"#L.7#L#L#L#L#L#L#L#gbpa2bp#g#L#La2#ga2a2#g#L#L#L#L#L.7a9#L.7#D#saY#x.C.8#va7albh.Ca0a0bnaY.RblblaY#Dbla9#Da9.7.7a9a9a9a9a9#D.n#Dbl#Dblaw#DaY#x#IbnbnaCa0#Ua0aCa0.CaC#x#I#x#I#Ibf#x#I#x#I#x#Ibo.C.paOa7#aay.K.K.K#Ear.faZa7#uaBaB#vbmaBaZa7an.TaZaOaF.FaFaOb#b##SaZ#va#aOama0.W#xavam.C.W.C#xaw#x#x#Ibfbf#xbf.N.N.saYaY#D.N.E#D.7a9#D#s.7#s#D#D#sa9.7a9.7.E.7.Ea9#s#D#s#D#s#D.Ea9.Eaf.E#Lajafaj#L.7#L.n.7#La9#L.E#Laf#L.na9#D.7a9#Dbl.NaY.NaY#x#x#x#U#x.RaYaYaYaY.N#xbl#D#D#D#DblaYaYaYbl#Da9a9.7",
+"#L.3a2a2a2a2asa2#ga2a2#ga2a2#ga2#ga2#ga2a2#ga2#L#L#Laj#L#L.7b..7#x#I#x#xaC#uar#e#Sa0.CaYaY#DaYaYa9#p#pa9a9a9a9a9#s#D#sbj#D#D#D#D#saYaY.Naw#x#x.Ca0aoa0a0aCbn#Ibnaw#U#U.CaCamaCaCaw#Mbn#UbnaCbgaoaZanaral.2alaPan.y.0.yaB.0a#a#a#.8aF#v.0#u.0#v.5aCam.8amaOamaoam.F.tbg#x.C.C#xaY.NaY.saY.Nawbf.N.N.N#D.s#D.N#D.Nbl#sbl#s#D#D#D.7.Ea9.7a9.7a9.7.7a9#s#D#D#Da9#D#D.na9.na9.na9a9.na9a9a9.naf#Lafaf.E#L.7#L#L#L#L#Lafaj#L#L#La9.na9bl#MblaYaY.baYaYbl#Dbl#DaYawaYaY#M#D#DaY#Dbl#D#DaYblbl#D#p#Dafa9",
+"afa2#La2a2#gaa#ga2a2bpa2#L#g#L#ga2a2#g#L#g#La2#g#L#L#Lbpaj#D.7bjaY.N.N#Iao#u#aayaFa0bnaYaYblaYaY#pa9a9blbl#D#M#D#Da9#Da9#Da9#s#Dbl#D#MaY#x#x#x.Wama0a0aCa0a0amao#Uaobg.8am.8amama0bgb#.8aFa#.0aZ#ua7#uaS#uanaBa#.8aFaOamaOamaCamb#ao.5a#.0#vaF.5a0a0aC.Ca0.Wa0am#ybgaC#xbf#I.NawaY.NaY.saY.NaYaw#D.s.N.N.N.s.N.sbl#sbl#D#D#D.n#D.7a9.7.n.7.n.7.n#D#D#s#D#s#Da9#Daja9a9.nafa9aja9aja9aja9af#L.n#L.7af.Eaf.E#L.7#Laf#Lafaf#La9.7a9blblblawaYaY.baY#Mbl#DaYaYaYaYaY.NaY#Dbl#s#Dbl#D#MaYa9bl#D#Da9a9",
+"afaf#La2a2a2#ga2#ga2a2#ga2a2#ga2bpa2a2#ga2#ga2#g#L#g#L#L#Lbj.Ebjaw#D.s#xaoana6abaOam#xaYaY#DaY.N#pa9#p#sbl#Dbl#D.n#D.na9.na9a9a9#sbl#DaY#I#x.Wbnb#bgb#amamao.8aFamaO.yaZ#u#u#S#vaZan.yaZaZ.6aSa4aBaZbma#aF.5ama0aCa0.CaCa0a0a0.Wbna0a0aoam.5aoa0#I#x#xbn#I#x#x#x.p.Vbn#x#I.NaYbl.N.NaY.N.NaY.N.NaYaY#DawblaY#DaYblaYblawaY.s#D#D.na9a9a9a9a9a9a9a9#D#D#Da9a9bja9a9.nafa9.Ea9a9.na9.na9.n#Lajaf#L.n#L.7#L#L#Laj#Lajaf#L#Laja9a9a9blblblaYaYaYaYaYbl#D#MblaYaYaYaYbl#saY#D#D#D.NaYblaYbl#D#p#Dafa9",
+"afajaf#La2a2a2a2a2#g#L#g#L#g#La2#ga2bpa2#La2bpa2aj#Lbp#Lajbj.7#s#D#Daw.C#v.GaTaD#vb#a0bnawaYaYaYaYblaYaYaYawaYaw#D#D#D#D#D#D#s#Dbl#saYaw#xa0a0a0bgamaOamaOa#a#a#.yan#u.G.Gaz.w.w#u#uan#uan.w.6.GaFaOaFaoaobn#I#x#I#x#I#x#x#I#xaY#x#I#xbn.CaC.Ca0#x#x#IaY#xawaYaw.R.bbnawblaYaw#DaY.saY.Naw.N#M.N#D#s#DaY.N.saY.NawaYaw#Dbl#DaYaY#D#s#D#s#D#s#Db.a9#D#s#D#s#D.n#Daf#L.na9aja9aja9afa9aja9afaf.7af.7#La9aj.7a9#L.7afaj#Laf#La9a9a9.na9blblaYawaYaYblbl#Dbl.saYaYawblaY#D#Dbl#DblblaYblbl#Dbl#Da9a9",
+"a9a9#L#L#L#L.jbpa2a2aja2#ga2#ga2#L#ga2#ga2#ga2#L#g#L#L#L#Lbj#s#D#saw#Iaq.y#3aH#Pa#bga0#UaYaY#xaYaYawaYaYaY#x.N#x.Naw.Naw.N.NaY.s#DblawbnaCamb#bgaFbma##S.0aB#u.yaz.w.waz.w#u.0a##SaFbma##Sa##Sa#amamaoa0#x#IaYawaYblawaYawaY#M.NaYaYawaY#I#x#x#U#x#x#xawaYaY#D#MaY#x.b#x#UaYaY#Daw#DaY#D#D#D#D#Dbl#Dbl#sblblbl#MaY.RaYaYawaY.s.Nbl#Dbl#D#Dbl#Dbl#D#s#D#D#D.7#D#Dajaf#La9.na9a9.na9.na9a9.n#Lajaf.E#L.7#La9aj.7#Lafaf#Laf#La9.Ea9a9#p.nblblaYaYaY#Dblbl.NblaYaYaY.Nbl#D#D#D#DaY#DaYblblbla9#Dafa9",
+"a9afa9ajafbpa2#L#ga2bpa2#L#g#La2bpa2a2bpa2#L#ga2#L#Lbp.7aj.7#Db.bl#x.Waobb.2a6ak#vb#a0#x.RaY#xaYaYaY.R#x#x#x#I#xawaYaYaYaY#xaw#xaYaw.Ca0b#aF#vaZaZana7.waz.G.Ga7#uaBaB.0a#aFamambnbnaCa0a0aCa0a0aoa0#IaYaw.Nbl.NaY#MaYbl#DblaY#DawaY.Nblbl#xbn.Ca0#I#xaY.N#Mbl#DawaY#Ibn#Ubn#I#x#D#D#D#D#D#D#s#D#D#saY#Dbl.s#DaYblaYaYawaYaYaYblbl.nbl.nbl.nbl.n#D#D#D#s#D#D#s#D#Lafaja9#paja9aja9af.naf.naf#Laf.7aja9aj.7#Laf.7afajaf#Laja9a9a9afa9#Dbl#sbl.Nblbl#sblaYaYaYaYaY#DaYaY#Dbl#DaYblaY#MaY#Dbl#Da9a9",
+"a9a9afa9#L#L#La2#ga2#La2#ga2a2#ga2#ga2a2#ga2a2bp#L.j#L#L.7#sbj#saY#Iaq.y.waXaraS#vb#a0#UaYaYawaYaYaYbn#x#U.Cbn.Caqaqavaqavaqaqaq#Ia0ao.5#vana7bh.Ga6al#aarbkaz#uaOamam.Cao#x#IaY#I#x#I#x#I#x#xawbn#xaw#D#D#D.sbfaY.N.saY.saY#D#D.Naw.N#saY.s.Cava0am.C#IaYaY#D#M.N#x.bbnaCa0a0#x#s#D#s#D#Da9#Da9blblbl#Mblblbl#MaYawblaYaYawaY.saYaYaYaYblblblbl#s#D#D#D#D#s#D#Daja9af.nafa9.na9.na9a9.na9#Lajaf.7af.7#L.n#L.E#Laf#L#Laf#La9a9.7a9a9a9a9#D#D#M#Dbl#Dblaw#DaYawaYaY#saYbl.Naw#DaYawblaYblbla9a9af",
+"afa9.7a9#L#L#L#L#La2#g#La2bpa2bpa2#L#g#L#g#L#ga2#Lbp#Laj.7bj.s#D.Waoao.waX#aazaSaFa0#xaYaYaYaYaYaYaY#xa0a0.Caoa0.8.8.5ao.5amaoamaCaoam#v#ubh.G#eayaTay.Gaza7aBa#aoaC.CaC.CaYaY#Mbf#x#xaY#xawaYaY.NaYaw#D#s.N#xaNaw.Nbl.Nbl.N.N#s#x.NaY#D.NaY#xaqa0aoa0#x.NaY#MaY#x#xbnbn.Vamaoam#D#D#D#s#D#sbja9.N#M.Nbl.N#M.NblblaY.RawaYaYaYaYblawblaYawaYawaY#D#s#D#M#D#D#D#Daf#L#La9a9.naf#La9af.n#L.nafafa9aj.7aj.7#L.7#L.Eafaj#Laf#La9a9a9aja9a9.na9bl#D#D#DblblaYaYaYaYaYaY#DaY#DaYblbl#DaYaYbl#sbl#Da9a9",
+".7a9a9.7a9a9.7a9#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lafa9a9#D#sbl.s.Waoan.G#Ea7aBaZ#vaFama0aCamamamb#.Va0aC.VaO.0#uaSaSazazan.Gak#a.Iay.Iar.Xar.Gazaz#uaB.yaO.5aoa0#Iaw.NaY.saY.N.N#D#s#D.N.N.N.N.s.NaY.NaY.NaY.saYa9bl#sbl#sbl.nbl#D#s#DawaY.saYawaY#x#U.CaC#xbf.N.s#I#x#Ia0aoamambf#I.N#D#DaYaY#Dbl#D#Dbl#D#Dbl#D#M#Dbl#Daw#D#M#DaYaYawaYblblaY#D.na9a9.na9.najaf.nafajaj#L#L#Laj#L.E#L.n#L.E#Lajaf#Laja9aja9.7a9#Lafafaj#L#Lajafa9a9a9bja9#D#D#sblaY#MaYaYaYaYaYaYaYawaYaYaY#xaY#UaYaYbl#Dafa9#L",
+"a9bja9a9.7a9a9.7#L#L#L#L#L#L#L#L.E#L#L#L#L#L#L.7aj#L#sa9#saY.saYbo.5.w.GazaB#San.l#vbgama0#xama0ama0a0bgaFbmanazak#aar#eazaz#aa6.e.e.XaraSazbhan#S#v#vaFaoa0aC.Cawaw.Naw.Naw.Naw#Da9#s#D.s.N.s.N.NaY.s.Naw.NaY.Nbl#saYblbl#Dbl#D#D#DaY#D.NaY.N#x#Ibna0a0a0.C#I#x#x#I#xaCamaFaOamaYaYaYaY.N.Nawbl#s#Dbl#D#sbl#D#Dbl#Daw#Dbl#Dbl#D#Mblblblaw#Dawbl.na9.na9.na9a9.naf.n#L.7aj#Laj#Laja9aj.7aja9aj.7#L.Eaf.7#L.7af.7afaj#L#Laf#Laf#La9.7a9a9b.a9#D#DaYblaYaYblaYaYaw.RaYbnaY#U#xbnbna0aYaYaYbl#Da9a9",
+"a9a9a9a9a9a9a9a9#L#L#L#L#L#Laf#Laf#Laf#L#Laf#Lafa9a9a9#D#D.Naw.N#x.8.w#e.lbma#az#uaZaFa0aC#x#x#x#x.WamamaF.y#ealayaG.G#eanaS#e#a.I#a.X.JanaZ#Sa#aOambga0.W#x#x.saY#saY.NaY.NaY.N#D#D#DaY.NaYaY#xawaYaYaYaYaY.saY#Dbl.N#M.Nawbl#D#M#D#MaYawaY#x#xbnaCam.8.5amamaCa0a0aob#aOaObm#v#x#I#x#xaY.N.NaY#Dbl#Dbl#D#Dbl#D#Dbl#Dbl#Dbl.sbl.N#Daw.NblaYblaYa9.n#p#sbl#Ma9bl.na9.na9.7.E.7.7.na9.na9a9.Ea9.n.7aja9.na9.Ea9.7af.7af#Laf#L#Lafa9a9a9#Da9#D#D#DblaYblaYawaYaY.R#xawaYaYaYbn.Cbn#xaYaYaY#D#D#D#D",
+"a9a9a9a9a9.7a9a9a9a9a9#Laf#L#L#La9.7.na9a9a9a9a9a9a9#s#D#s#D.Nbl#I#v.G.G#uaF#van#uaZ.8a0bnbnawbnavam.5#van#ealbra6#a#e.wana7#e#e.fakaz.TaBa#a#aFa0aoa0.Wbn.s#M.N#saY.sbl.saY.saY#s.Naw.Naw.N#I.N#x#I#x#x#IaYaY#IaYawaYawaYaY#xawaYaYaY.NaY#x#x#Iamb#aFa#a#aOamamamaob#b#aF#Sbmbmaoa0#x#xawbl#D#D#Dbl#D#sbl#Dbl#sbl#D#D#sbl#D#D#D#Mbl#DawblaY#saY#Mbl#Dbl#M#D#M#M#Da9#sa9.n#D#D#sa9.Ea9b..na9.7a9.na9.n.7.7a9.7a9aj#Lafaj#Lafaj#La9.Ea9.7#D.E#D#DblaY#MaYaYaYaYaYaY.R#x.R#xbn#U#xbnbnaYaYbl#Dbl#D",
+"a9a9a9a9afa9afa9af.nafaf#Lafa9a9afa9a9a9a9.na9.n#D#D#D#D#D#Daw.N#I.y.GazaZb#aOa#anaBa#aoa0aCbna0a0.5.8an.G.2.K#P#q#e.6anan.wazakazbha7aZaFam.8am#xaC.C#I#IaY#D#saY#saY.NaY.NaY.NblaYblaYaY#I#x#x#x#x#I#x#x#x#xaYaYbn#xbn#U#x.baY#x.s#x#x#I.Ca0.CbgaF#vbma#a#aOambgamb#aoaFaFaOaF#va0#x#I#x.Na9#D#s#Dbl#D#Dbl#D#Dbl#Dbl#D#Dbl#Dbl#DaYblaY#Dawbl#DaYaY#MaYawaYawaY.nbl#p#sa9#sa9#D#s#D#Da9#D.n#D.na9.na9a9.n#Da9#D#Lajaf#Laf#Laf#La9a9a9#Da9#Da9#DaYblaYaYblaYawbnawaYaYaYaYbn.Cbna0.Cbn#xaYaY#Da9",
+"#pa9a9a9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9a9a9a9#Da9#D#s#D#s#DaY.NaYaCaZ.6az.0aOaF#van#uan#vamamamamaOa#analba.g#P#P#a#Tan.y#uaZaza7an.laZa#bgama0.C#U.C#U#I.N#s#s#D#s.Naw.N#M.NaY.saYaw.Naw#x#x#x#U#x.baYbnaw#xawaY#Ubn#U#x#Ubn#xbn#xbn#Ia0a0a0aCa0b#.t.tbma#aFaFb#amamamam.Vb#b#.V#Sbga0#x#xbl#D#Dbl#Dbl#Dbl#s#Dbl#D#M#D#Dbl#sbl#Dblaw#DawblaY#DaYawaYaYaY#Ibn#Ibn#Mbl#s#D#D#Db.#D#sa9#s#s#s#D#s#D.n#D.na9#D#D#s#Dafafaf#L#Laf#L#La9a9.7.nbja9bj#DblawblaYaYaYaYaYaYaY#x.R#x#xbnbnbnawaYaYbl#Da9a9",
+"a9a9#pa9#pa9#pa9a9a9a9a9a9a9#pa9a9.n#p.nbl.n#pa9#D#D#D#D#D.Nawbfbn#vazaS#SaF.8#vaZ.6aBa##va##v.0a7.faG#PaD#V.Kay.XazanaB.0#vbm#SbmaZ#vamama0aC#xa0.W#x#x#I.N#D#s.N#M.NaY.NaY.saYaYaYaYaYawbn#x#x#x#xbn#Ibn#x#x#xbn#xa0bna0bnaCbn#xa0#x#xbn.Ca0am.V.Vb#aOaFb#bgamaC.C.CaCa0a0aCa0a#aFbgbnaY.N#D.7#D#M#D#Dbl#Dbl#D#D#Dbl#D#Dbl#D#D#M.NblaY#DawblaYaY#Ibn#Ibn#Ubn#IaYawaYawaYawaY.s#D#s#Da9#sa9#s#D#sa9#Dbl#s#D#D#Daj#L#Lafaj#Lafaja9a9a9#Da9#D#Da9blaYblaYawaY.R#xaY#M.RaYawbna0#IaYbl#Da9a9afafa2",
+"#pafa9afa9a9a9a9#pa9#pa9afa9a9a9#p#p#D#pbl#p.na9#D#D#D#DaY.NaY#Ia0#v.Gaz.0#vaF#vanaz.w#u.0#u.waP#A.f.Xa6.Ia6akaSanaZa#aFaoaFaOaF#SaFaFama0aC#x#x.Wa0.W#Ibf.N#sbj#M.N.saY#s.NaY.NaYaYaw#xaY#x#I#x.R#x#x#x#xaYbnaY.Cbnbn#xbn#x#xbn#x#I#xbn#xa0.Ca0.pb#b#aFb#aFb#.V.C.C#x.CaCa0#xa0.FaFaOa0aYbl#D#sbl#D#Dbl#Dbl#s#Dbl#D#M#Dbl#D#M.Nbl#DaYblawaY.saY#UaYbn#x#U#x#Ubnaw.Rawblaw.NawaY#s#s#s#s#D#s#D#sbl#Mbl.n#Dblbl#Dafaj#Laf#Laf#L#La9.7a9.7#s.7#DbjblaYblaYaYaYaYaYblaY#xaY#x#xbnaYbla9#p#p.naf#La2",
+"#L#La9a9a9afa9af.j#L#La2af#La9a9#sa9#s#D#DaYaYblawaYaY#I#xbn.Ca0#Ubg.laz#uaBanaBa6#a.Xa6#aak#ebh#Sbm.Fa#aFb#amaoa0aCa0aoa0amb#.8b#aoa0aCa0#xaC#x#I#xaY.N#M#D#D#s#D#sa9.7a9.7.n.7#D#D#D#s#DaYaYaY#sbl#Mbl#Dbl#D#Dawbl.Naw.NaYaYawaYaYaYaw#DaYbl#DaY.RaYaYbnbna0a0#Ubnbn#x#x#x#I#xa0bgaBb#a0.s.s#L.NaY.N.saY.N.NaYbl.NblaY#I#x#x#x#Mbl#MaYaY#x.b#x#xbn.Wambgamamam#Ua0bnaCa0a0amaoaw#x#x#x#I#Iaw#Mblbl#sblbl#D#D#Da9#pa9a9a9a9#Laf.na9a9a9a9#paf#pa9a9#MaYaY#x#xbnaw.RaYbna0a0a0aY#D#pa9a9#La9#L#L",
+"#L.7#Laf.7a9.7a9#Laf#Laf#La9.7#Da9a9blbl.Nbl#DaY#xaYaY#xaCa0amam.t#uazar#e#T#a#zacbaayaraS#uaZa#aFaFaFb#amaoama0a0a0aCa0a0ama0amaoa0a0a0aC#xaC#xbn#I.saY.s#D#sa9a9#sa9a9.Ea9.7a9#D#s#DaY#D#D#s.Nbl#D#D#D#D#Dbl#DaY#DaY#Dblbl#DaY#D#Dbl#DaYbl.NaY.baYaYaYa0#Ia0a0#x#UaY#x#U#x#xaYbnam.FaOa0#x.s.7aY.saY.NaY.NaY.sblawaY.N#x#Ibn#xaYawaY#xawbnaY#U#x#IaCa0aCbg.paobn#U#Ua0aCaCaCb#aCaC.C.Wa0.C.baYawawaYblaw#D.s.Nbla9#p.nafa9ajafa9#pa9#pafa9a9a9#pa9blaYaY.b#xaYaYawa0#xa0a0#UaYbla9a9a9a9#L.7#L",
+"#Laf#La9.7af.7af#L#Laja9.7a9a9bj#D#D#D#MaY.NaYaY#MaY#Ua0amam.5.5aSal#PabbrayaTaTaGara7aZaZaZbm#vb#amamaCa0#x.C#x#I#x#x.CaC.CaC.5b#aob#aCamaC#xbn#I#xaY.s#D#sa9#s#Da9.Ea9.7a9.Ea9#D#D#D#D#s#D#D#D#Dbl#D#M#Dbl#sbl#DaYblaY.saY#DaY#MaY.Nbl.sbl#D#DaYaY.baYaYbn.CbnbnaYaYbn#x#x#x#xaYbnam#Sama0.N#s.NaY.Naw.Naw.NaY.NblaYaw#x#x#x#IaYaYawbl#x#I#xa0#Ia0aC.pbgb#bgb#.pa0.V.pb#.Vb#bgbm.taOaFaFao#U#x.bbn#IaYaYaY.NaYbl#Dbl#Da9a9a9a9a9a9a9a9a9a9.na9a9a9bl#DblaY#x#xaY.R#xaCama0#x#xbl#s#Daf.7af.7#L",
+"#L#L.7a9.7a9a9.7af#La9a9a9#D#D#D#D#MaYaY.N#x#I#x#xaY#x#xamaO.0bbaT#PaD#VaTaRar#eaBaZbmaFaFamb#ama0aCama0.C.C#x#I#xaY#I#x#x.W.CaCaOaFaob#aoamaC.C#I.b.NaY#s#Da9.7.n.7a9.7.n.7a9.7#D#D#D#D#D#D#D#D#D#M#D#Dbl#D#Dbl#D#D#sbl#Dbl#D#D#D#D#Dbl#D#Dbl#DaYaYaYbn#x#x#x#IaYbnaY#IaY#xaY#IaYbna0aBbmao#x.NaY.saY.NaY.NaY.saYaw.NaY#x#I#x#xaw#x.N#I.C.CavaCaFaOa#aBa##vbm#Sbm.taFbmbmaZaBbh#kbhbhaZ#Sa#b#a0aCa0a0#U#xaYaw.Nbl#Mbl.n#D.n.7a9a9.na9a9#sa9#Da9a9a9.n#D#D#xaY#xawaYbnama0ambnaYblbl#Da9#Da9#L.7",
+"a9a9a9afa9#La9a9.na9a9bj.n#D#D#saY.NaY#x#x#x#x#x#Ubnambga#.0#u#uaH#4#aazanaBaZbm#SaFaOb#bgamamama0.C.C.W.C#Ibf#xbf#I#x#x.C.Cao.8a#aOaOamaoa0.Wa0aY#xaw.N#D#s.7a9.7.n.7a9.7#L.7aj#D#D#s#D#D#D#s#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#Dbl#D#Dbl#D#D#D#DblaY.NaYawaY#xbn#xaYaYaYbn#x#x#x#x#U#xamaBaBaBa0.Caw#xaY#IaY#xaY#x#x#x#Ibn#xa0.Wa0.CaoamamaCamao.5azaz.G.Gar#e.G#a#eaz#ear#e#a.X#a#jaGak.faSaZ#vb#ambga0a0a0#I#x#xaw#xblaY#Da9#Da9#D#D#Da9#Da9#Da9.na9a9#D#DblaY#x.Rbna0.Cama0#x#xbl#Dbla9#D.7.7a9",
+"a9.7a9.7a9.na9.7a9.7#s#D#D#D#D.N#x#x#x#I#x#x.Ca0amaOa#.yanaBan#u.6aBa#amb#a0b#amamb#amamamaoa0aoa0aCambn.C.C#x#Ia0.C.CaCamao.5aO#vaFaOb#aoa0a0.WaYaw.NaY#s#D.7.n.7a9.7.n.7a9.7a9#D#D#D#D#D#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#D#D#D#Dbl#D#D#D#Dbl#D#D#sbl#D.NaYaYaY#xaYaYaY#xaYaYaY#xaYa0a0bmaz#uaOam.C.W.C.C.C.C.W#x.W#xamamamaoam.5aoaF#v.y.0#uaB.wal.2ayal.2aya6aTa6alaR.2ayayaT#P#t.K.e.X.GaSaZaBaFb#amaoa0a0bna0aYaYawblbl#sa9bj.n.7#D.7a9bja9#Dafa9afa9bl.Naw.N#U.CaCaFaoamama0aYaY#D#D#Da9#L.7",
+"a9a9.na9.7a9a9a9a9#D#D.N#s#DaY.saY#x.C.Ca0aoamao.0aZaBaZaB.0aBa#amb#a0aCaC.pa0a0aob#ama0am.C.Ca0.5b#amaCam.W.C.CaCa0ao.5amaOaF#vaF.8amamama0aqa0aYaw.Naw#D#Da9.7.n.7a9.7.7af.E#L#Da9#Da9#Da9#Da9#Da9#Da9#Da9#Da9a9a9afa9afa9afa9a9a9a9a9a9a9a9a9bl#D#Dbl.N.NaYaYaY.RawbnaY#x#I#xawa0b##Sazbha##vamaqao.Cavamao.5ao.5.8.8aF#v.0.yaZaB.waza7az.G.G#aararar.X#a.Xar#eazazaralalalayayaya6.Ial.XaSaS#va#aFaO.5aC.CaC#xbnaY.N#M#D#D#D.7a9.7.Ea9.7.7.Eaf#La9#D#D.N.NaYbnbnamamb#aoama0aYawblaY#D#D#D.7",
+".7a9.7a9a9a9.Ea9bja9#s.NaYaw.NaYa0.Wa0aCamamao.5a7az.waZa#aFaFaFamamaC#xbn#xam.5amamamaoama0aoa0aOaFaoambgamaCam.8aFaOaFaOaFaF#vaFaFaOb#aoamaCamawaY.Naw#D#D.Ea9.7a9.7.n.7.7a9.7#D#D#D#D#D#D#D#D#D#Dbl#D#Mbl#D#Ma9a9a9a9a9a9a9a9.na9a9.na9a9.na9#D#D#D#DblaY.saYaYaYaY#xaY#xaY#xaYbnaObmazaZ#Sa#.8.8.8.5am.8.5.8a##va#.ybbbb.w#uazarar#a#eazaSaz#ua7aZaZaZaZ.Tbm#SbmbmaZan#uaSaz#aalaR.2.IaGaraSaZaBa#aFaoama0aC.R#IawaYbl#D#D#Da9.7.7a9.7.7a9.7af#L.na9#D#s.N.NaYaCamaoaFamama0aYaYaY#D#D#Dbj#D",
+".N.N.N.N#D#D#D#DawaY.Nbf#xaqaqavamamaF#v.0#u.w#e#va#b#.5amamamaF#I#x#x#x#Ia0#x#x#x#I#x#xa0ao.5amamaoaFa#a#aBaZaZ.TaBaZ#SaFaFaF.5ao.5aoam.C.W#x#xaYaY.saY.N#s#D#Dajafaja9a9a9.7a9#Da9bja9#D.7#Da9#Dbl#Dbl#D#Dbl#D#Da9.7a9.7a9a9bja9#Da9#D#D#Dbl.Nbl#Dbl#D#D#Dbl.NaYaYaYaYaYawaYaY.Nbfa0b#bmaBana#bma#bm#u.6#T.oaR.Gararal#aalalal#Taraz.6#uan.0.0b#.8b#aob#aoambgamam.8aoamaO.8aFaBbhaz.Gar.X.X#abhazan.TaZbmbma#aCa0#xaYbfaY#s#D.s.N#D#D#sa9.7.7#s.7.7.7a9a9#D.7#DaYam.5aOa#amambf.N.N#s#D.NaYbf",
+"aYaYaY.saY#s#D#D#D.s#x.Wao.8aq.5.yaB#uanaBan#uanaFaOamaob#aoamaobn#x#U.Ca0.C.C.Wbna0a0aoaF.5#va#.ya#.yaBaZaBbh#u#SaBaZaOa#.8aFbg.5aoamaobn.Cbn#x.sbl.NaY#D#Da9#Daf#L#La9.7a9a9.7#D#D#D#D#D#D#D#Dbl#Dbl#DaY#DaY#D#Da9a9.7a9#D.7a9a9a9a9#Dbl#D#D#D#D#D#D#D#D#D#D#DaYaYaYaYaYaYaYaY.N#x#xbgaFaZ#ua#bgaF#vanaz#ealalazazaz.Garaz#q#ebhananaZaZa#a#a#aCama0a0aoa0ama0aqaoamamaFaoam.8a##SaZ#uana7aSbhaBaZaZbmaOaFaOaFb#ambnbn#IaY.NaY#D#D#D#D.7.7b..7#D#Da9.7#s#D.n#D#MaY#Iama#aFaoa0#x.saY#D#Dbl.N#x",
+".Nbo.N.N#xbf#xbf#x#Ia0a0aOa#aBaz.GaP.wan.ya#a#a#aCamambgama0a0a0.Wa0.C#xa0a0a0amamaoaFama#a#.0#vaSazbh#uanaBanaZa#aOaFaO.5aOaqamaoama0.C.C#Ibn#IaYaYaw#D#s#D.E.7#Laf#La9a9.7a9a9.7a9.7a9.7a9.7a9#D#D#D#D#Dbl#D#Da9.7#Da9.7a9.7#Da9.na9a9#D#Dbl#Dbl#Dbl#Dbl#D#D#p#D#D#D#D#D#D#D#D.N#DaYa0b##SaBaZamamaF#v.0#u.6.wan#u#uaSananaZaBa##vaFaFaoamamama0a0aCa0bna0#xaCa0a0.Cao.CaoamaoaF.5aOaFaFa#aFaFaF.5aoamaFamaFaob#bga0aobnbn#x#x#M#Dbl#s#Da9.7a9.s#D#D#D.N#DaY.N#Daw#xa0aoaF.5b##IaYaY#DawaYaw#x",
+".N.N#Ibf#x.W.C.W.5#v.yaZ.G#z.Kba.o#e.w.0a#a##va#amamaOaFaOaFbgamama0amaoam.8.5.5a#aFaFa#aBan#ubh#a.Xar.Gbh#uaZaBaO.5aoamamaC.C.Wa0a0.W.C#I#x#x#xaY#saY#D#D.7af.7af#L#La9a9.7#D.7#Da9.7a9.7a9bja9a9a9a9a9a9a9a9afa9.7a9.7#L.7a9afa9a9a9a9a9#Da9#D#Dbl#D#D#D#p#D#D#D#D#Dbl#Dbl#Dbl.s.NaY#xa0a#aB.0amamamaFa#a#a#a#aBaZaZaZ#va#.0a#b#b#bgamambn.Cbn.Wa0.C.C.C.Wa0.C.C.C.Wa0.Ca0.Ca0aoamama0a0bn#Ubn.Wa0.Ca0.W.C#U#xb#.Vb#b#a0ama0a0aYaY#D#D#D#s#D#saYaY.s.NaYaw.NawaYaY#Ia0amamaOam.C#x#xaYaw#x#x.C",
+".C.W.Caqaq.5.5.5anaP.o.Ya8#obs.g#TaS.wan.0#va##v.0bm.0a#.0a#a#.yamaoaFamaOa#aOa##va##S.0aZ#uaSaz#aaG#a.Gaz#uan#u#vaOam.8aCaq.W.C.C.Wa0#x#x#x#IaYawbl#D#sa9a9#L#Lajaf#L.na9a9.7a9.7a9#D.7#Da9.7a9a9a9af.7afa9.7a9.7af#L#Laf#La9.7afafa9.na9a9bl#Da9.na9a9a9a9a9afa9.na9a9.7a9a9a9.N#D.N#M#xaOaZaBamaOam.8am.8a#.5a##va#aoaFaFamamaoa0a0bnaC#x#x#x#x#I#xaY#xaY#xaY#I#x#x#x#I#x#I#xa0bn#I#xawbl.Nbl.Naw.NaY.NaY#xaYaCa0ao.Vbgb#b#b#awbnaYaYblblaYbl.NawblaY.NaYaYaYawaY#x#Ia0bga#aOamaC.C#xa0.Wa0am",
+"aoaFa#aOa##v.y.ya4.2#4.4a8aDaTaRanananaZaBaFaFaF#v.0#v.0#v.0#v.0amb#aob#amam.5aFamaOaFa##v.0.yaZaz.wanazaz.w.w.waO#vao.5aoamaCam.Wa0#x#xaw#xaYaY#D#M#Da9a9.E#L#L#L#Laf.7a9.7#Da9.7a9#L#L#L#L.7#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#Lafajafafa9a9a9afa9a9a9a9a9afa9a9a9.7a9.7a9a9.7a9.N#D#D#DaYam#SaZaF.5aFamamamamaoaFamamb#amamaoa0a0bnaC#x#x#xaY#IaYaYaYaYaYaYaYaY#xaY#IaYaYaYaYaY.s#xaY#D#D#D.7.n#D#D#D#M#D.N.saY#xa0a0amamambgambnbn#UaY#x#xaY.saY#x.NaYaw#x#I#x#x#I#xa0a0aF#vaZ.5a#amaCa0am#v.5",
+"an#uan#uan#ua7#uaz#a.Gaz.GaSaZaZ#vbybca#.5aoamb#.5b#amb#amb#amb#aCama0amamaob#amaCa0a0aoaFaFa#byaOby#v.yaZaB#u#ua##v#S#v.5ao.5aoa0#I#xaY#x#IaYaw#Dbla9#s#L#L#La9#Laf#La9#La9.7a9#L#L.7af.7af#Laf#L#L#L#L#L#L#L#Laf#Lafa2af#L.3#Lafafafafa9afa9a9#Laf#Laf#L#Laf#L#L#L#L#L#L#L#L#L.s#D#s.7#DaCa##ua#.0.5.5amama0a0amaoamaCamaCa0#xbn#x#x#x#xawbfaY.N.N.N.s.N.N.s.Nbl.Nbl.NaY.NaY.Nbl#D#D#s.7.7#D.7a9.n#p#Dbl#DblaY#x#x#xbnbnama0am.Vama0b#aCa0#x#xbn#I#x#x#xbnbn#x.Ca0a0aCam#van.wan#vbyaF#va#.yan",
+"alal.Ga7bhaZaZaZa##Sa#aFb#ao.5.8aFaFamama0amamaobn#Ubn#Ua0#Ibn#Ua0a0a0aCa0amamao#x#xaCa0aoamao.5avam.8.8#v.yaB#u#SaBaB#u#S#vaO.8amaCbn#x#I#xawaYbl#sa9a9#La9.7ajafaj#La9#L.7#Da9.7#Laf#L#L#L#L.7a2#ga2a2a2a2a2a2#La2#L#La2#L#L#La2af#Laf.na9a9a9af#Laf#La9af.7af#L#L#L#L#Laj#L#L#D#D.7#s#D.CaBbhbb.y.0aOama0aoa0ama0ama0bnbn#xaYaCbnbn#x#xaYaY.Naw.NaY.NaY.NaY.NaY#DaY#M#Dbl#M#D#Da9.7a9#Dbjb..7afa9.na9bl#DaY.N#Ibf.W#xaC.Ca0amamb#b#a0ama0ama0#xbn#x#U#x#U.C#UamaCama0ao.0.w.6.wan.yan.yan.waP",
+"#q.6a#aF.5aCa0a0bnbna0aCa0amb#am#U.Vbnbn#xa0.C#x#x.NaY.NaY.N.N.N#D#s.NaY.NawaY.N#M.s.N#x.C.Wamaq#UaCaCb#bgaOa##vbg#v#v#u.w#uaZ.yaO.5aoama0.RaYaw#D#D.7.n#Laj#L#L#L#La2#La2#La2#g#Laf#L#L#L#La2#La2#L#La2#La2#L#La2af#L.3#Laf#Lafajaf#La2#La2#La2#L#L#Laf#La2#L#L#L#La2#L#Laf#L#La2#La9#D#x#xaoaO.Xbha#ama0#x#x.CaC.Ca0aC.C#x#IbnaYaYawaYaYaYaYaY.N#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D.7.E.7.7.7af.7.7aj#L#L.7.E.N.N.NaY.N.N.N.NaY.NaYbl#IaYbna0aoaFaOamaoamamamaFaF.5b#aOa#a#aZ#u#a.2.waP.w.w.waZan#u",
+".GanaB.5a0a0#xaCbn#Ibna0a0a0amam.Va0bnbn#x#x#I.C.NaY.Naw.N#s#D#D#D#D#s#D#D#D#saY#D#DaY.saY#x.W.Cbn#Ua0aCaoamaOaFaob##v#uaB.y#vaOa#aO.5bga0#U#x.R#D#D.n.7.7#Lbp#L#La2#L#g#L#g#La2#L#L#Lafa2a2#La2#L#La2#La2#La2#Lafa2#L#La2#La2#Laf#L#Laf#Laf#L#L#Laf#L#La2#La2#La2af#Lafa2#L.3#L.j#La9#DaY#xa0#v#aa7a#b#a0bn#x.C#x#x#x#x#xbn#x#x#IaYaYaYaYaYawaY#D#D#D#D#D#D#D#D#Da9#D#D#Dbj#Da9a9#La9af.E.7a9#Laf#Laf.7a9#D.N.N.saY.Nbl#DaY#D.NaYaYaY#xa0b#.5aFbga#aFaFbma#.ybm#vaZ#SaBan.G#q.2.w#u.6#uan.y.0.0",
+".6#u.0b#a0#x#xa0bnbn#x#xbn#Ibn#x.RawaY#x#I#x#xbfaYaw.N#D#D.7.7.7a9#D#Da9#Da9#D#Da9a9#D#D.N.N#x#x#I#x#Ia0ao.8am.8aCa0bg#v#vaOb#aoaFaOaFama0a0#Ubn#s#D#Da9.E#L#Lajbpa2#ga2a2aja2#gafa2#La2#La2#La2#Laf#La2#L#Laf#La2#Laf#Laf#Laf#L#Laf#L#Laf#La2afa2#La2af#La2#L.3#La2a2#L#L#L#L#La2#La9#s.N#xa0bg.Xana#aFamam.C#xbn#xbn#x#x#x#xbnaYaYaYawaYaYaYaY#Da9#Da9#Da9#Da9.7#D.7a9.7a9a9.7.7.7.7.7a9#L.7.n#L#Laja9a9#D.saY#D.N#D#D#D#D.saY#DaYaYa0a0amb#aFbm#SbmaBaB#ubha7aB#u#uazaz#Tal#q#uanaB.0a#.0a##u",
+"azaBa#aobn#x#x#x#x#x#Ibn#xaY#xaYaYaYaYaY.NaY.NaY#D#D#D#D#D.7a9.7#sa9a9bja9.7#D.Ea9bj.n#D#D.NaY.N#MaYaY#Ia0aoaoam#IaCa0ao.5ao.CaCbg.5b#aoa0aC#xa0aYaY#s.7a9#Lbp#La2bpa2#L#g#L#ga2#Laf#L#La2#La2#La2#La2#La2#La2#Lafa2#Laf#L#L#L.3aj#L#La2ajaf#L#La2#L#La2#La2#La2#La2#La2a2a2afa2#La2#L#DblaY#IamazaSaBaFama0#x.C#xaY#xaY#x#U#x#xaYaYaYaYaYaYaY#D#D#D#Dbj#D#Dbj#Da9a9a9.7a9a9bja9.7afa9aja9.7af.7#Lafa9a9#D#D#D#D#D#D#D#D#D#D#D.NaY#I#xbnaoamam.5a#bma#aZaZaZaZ#uaZanaz#q#TaR.o#q#uaB.0a#.0#uaZ#u",
+"an#vb#a0#x#x#xaYaYblaYaYaYaYaYaYaYaYaYblaY.N.N.sbl#D#Da9#D.7a9#L#D.7#sa9.7a9.7#Da9a9#Da9a9#s#D.Naw#Daw#xaCa0.C#x#U#xaCaoaCa0#Ibna0a0aoa0aCa0a0#UaY#M#D#Da9.7#L.7a2a2#ga2a2#ga2#g#La2#La2#La2#La2#La2#La2#Laf#L#Laf#Lafaj#Laf#L#Lafa2af#L#La2#Lafa2#Laf#La2#La2#La2#La2#L#La2#L#La2#Laj#Dbl.NaY#UaZ.TaBaFam.C.C#xaYaYaYaYaYaY#x#xawaYaYaYaYaY#Dbl#D.Ea9a9.7a9a9.7#D.7#Da9bja9.7a9a9.n.7a9a9a9.na9a9a9a9.na9a9a9#D#D#D#D#D.7#D#D#DaY#x#x#xbna0aCamaFaOa#bma#bmaBaZaZaB.6.Gal.o#e.GazanaBaZ#u#u#uan",
+"#vaFama0awbnaYaYaY.NaY#D#DaY#D#M#Dbl#s#D#D#s#D#D#Dbl#D.n#Daf.E.7a9a9.7a9a9a9a9a9.7a9.7a9.7a9a9a9#D.n#D.N#x#I#I.W.C#I.Caoam#U#xaw#Ia0#I#x#x#I#x#IaYaY#Dblbja9a9#L#La2bpa2bpa2#La2#Laf#Laf#La2#La2af#L#La2#La2afa2#Laf#L#Lafaj#Laf#L#L#La2#Laf#La2#L#La2#La2#La2#L#La2#La2#L#La2#L#L#Lafa9#sblaY#xb#bm#SaFambn#xaYaYaYaYaYaYaYaYaYaYaYaYawaYaY#Dbl.7a9bja9.7a9bja9#L#L#La9.7a9a9.7a9.7a9a9.7a9.7a9a9a9a9a9a9a9a9a9#D#Da9#D#Da9#Da9.N.NaYaY#x#x#xaYa0ama0am.5aF.5a##vaZan#TaR.Gazana7.wan#uaZan#uaZ",
+"b#a0#xaYaYaYaY#x#DaY#D#D#M#Da9a9#D#D#D#D#Da9#D#p#Da9#D.7a9.7#L#La9a9a9.7#L#L.7a9.na9a9.7af#L#L#L#La9.7#s.N#I#x#x.C.CaCa0.W.W#xawaYawaYawaY.NaYaYaYawaY#sbl.7#D.7#L.ja2#ga2#ga2#g#La2#La2#Laf#L#L#La2af#L#L#L#Laf#Lajaf#Laf#Laf#Lajafaf#Laf#L#La2#Laf#Lafa2#La2#La2#L#L#L.3#Laf#La2#L#La9a9#D#MaY.b#yaFbgam#x.N#saYaYaYaYaYaYaYaYaYaYaYaYaYaY#Dbla9.7#L#L.7#L#L#L.7af#La9#La9#La9afafafafa9a9a9a9a9.na9a9a9.n#pa9.n.7a9.7a9.7a9.7#D#D#D#s#DblaYblaY#x#xaCa0aCa0amaOaZ#u#q.G.6#uaBana7azaZaZaZaZa#",
+"a0a0a0aYblaYaY#xaYaY#Dbl#Da9a9af.7.7#Da9a9a9a9a9a9a9.n#Da9.7#L#L#La9.7af#L#Lafa9.7a9#L#Lajafa2aj#L.7.n#D.N#xbo#I#x.Waq.8aoa0#I.Nawbl#sbl#DaY#saYawaYaYbl#D#Da9a9#L#Lbpa2#L#g#La2#Laf#Laf#La2#L.3#Laf#L#Lafaf#Laf#Laf#L#Laf#L#Lafaf#L#Laf#Laf#Lafa2#La2#L#La2#Laf#L#L.3#L#L#L#L#L#L#L#L.na9a9blblbn#Hbga0#xaYaYa9blaYblaYblaYblaYaYawaYaYaYaYbl#Da9a9a9a9a9a9a9a9#L#L#L.7a9.7a9a9#La9a9a9a9af.nafa9#pa9#pa9#pa9a9#Da9#D.7#Da9bja9a9.7a9a9a9#D#Dbl#D#saYaY#x.Cbn.WaF#San.Ga4aZa#a#aZ#uanaZaBa#bma#",
+"bnaYaYawaYaY#M.N#D#D#D#D#D#D#Da9a9#D.nbja9.7a9.7a9.7.7a9#La9a9a9.7a9#L#L.7af.7a9#Laf#Lafa9.7a9a9#L.7#La9a9#DaY#Ua0#UaCa0#I#x#I#I.N#s#D#D#sa9#D#Da9#D#s#D#Daw#DaYajaf#L#L#Laf#L#La2a2a2#La2#La2#L#La2a2a2a2bpaj#Lajaf#Lajaf#Lajafaja9ajafajaf#L#Lafafafafa2#L#L#La2#L#L#L.3#L.3#L#La2#L#Lafa9.na9aYbnb#b#am.C.NaWa9bj#D#Dbj#D.N.NaYaY#DawaY#DaY#D#D.7a9.7a9.7a9a9#Laf#Laf#Laf#L#Lafafaf#La9#D#D#D#L#Lafajaf#Laf#L#L#L#L#L#L.7.7.7a9a9.7a9#D#D#D#DaYaY.N#x#Ia0.Ca0aF#vaF#vaOb#aob#aoaFaBaZ.0a#.5am",
+"#U#x.RaYaYaYbl#D#D#D#D#s#D#Da9#D#D.7#Da9.7a9bja9.7a9af.7a9a9.7a9af.7a9af#L#L#La9a2afaj#L#La9.7a9aj#L#La9.nblaYaY#Ia0aC.W#x#I.N.s#D#s#D.n#D#D#D#sa9a9a9#Dbl#D#D.Na9a9a9a9a9#La9#L#Laf#Laf#Laf#Laf#Laj#L.7aj#L#L.7afajafaf#Laf#Laf#Laf#L#Laf#L#Lafafafaf#Lafa2#L#L#L#La2af#L#L#L#La2a2af#L#La9bja9.Rawa0.8a0.C.Nbj#Da9a9#Da9#D#DaY#DaYbl.Nblaw#Dbl#D.7a9a9.7a9a9bjaf#Lajaf#L#Laf#Lafafafa9a9#Da9#D#Laf#Laf#L#L#Lafaj#L#L.7#L.7af.7#La9a9.7#D#D#D#D#D.NaY#x#x.C.CaoaFaFaOaOamamamamaCaF#v#v.0#vb#am",
+"bnbnawaYaYaY#Dbl.n#D#D#Da9bja9bj.n#D.7a9#D.7a9a9a9.7a9a9#La9a9a9#L#L#L#L#Laf#L#La2a2a2af#La9a9a9#L#Laf.7a9#D#IaY#UbnaC#xaY.N.saY.s#D#Db.#D.n#D.7a9a9#Da9#D#D#D#Da9bja9#Da9#Da9#Da9a9a9a9a9a9a9a9#Laf#L#Lafafajaf#La9#Lajaf#Lajaf.7#Laf#L#Lajaf#Lajafaf.3#L#L#L#Laf#Laf#La2a2#La2#La2#La2af.Ea9.naY#xaCamam#x.Nbj#s.7#D#D#D#Dbj#D#Dbl#Dbl.Nbl#Dbla9a9a9a9a9a9a9a9afafafafajafafajafaf.na9a9a9#D#D#Lajaf#L#Lafa2#L#Laf#L#L#La9.7a9a9.7a9a9#Da9#D#D#D#MaY#x#x.CaCa0aFaOaFamaFaCa0a0bnaCb#aOaFaOama0",
+"#IaYaYaYawaYaw#D#D#D#s#D#sa9#sa9.7a9a9a9.7a9#L.7#La9af.7a9a9.Ea9afaj#Laf#L#La2#La2a2a2#La2#La9#L#L#Laja9a9blaYaY#I#U#xaw.Naw#D#Da9#sa9#sa9.7a9.7ajaf.Ea9a9.7a9#D#D#D#D#Dbj#D#D#Da9#D#D#D#sbl#D#sa9a9a9a9a9#Da9#Dafajafaf.Eaf.7afajaf#Lajafaf#Lafafafajaf#Laf#L#L#Laf#L#L#Lafa2#La2a2af#L#La9a9a9aw#x.Vaoa0#x.Nbja9#D#D.7#D#D#D#Dbl#DaY#DblaYaY.Na9a9a9a9a9.7a9a9#La9afa9afa9af#pafa9#pa9a9a9.7a9#Laf#Laf#L#L#L#Laf#L#Laf.7a9#D.7a9.7a9.7#D#Dbj#Dbl.NaY#x#I.Ca0aqbgaFamaoambn.Cbn#U#xbna0aCama0a0",
+"aYaY#IaYbl.N.N#D#s#D#D#D#D#D#Da9a9a9.7a9a9a9a9#Laf#L#Laf#L#Laf#L#Lafa2a2a2a2a2a2a2a2a2a2a2#L#Lafa2#L#La9a9#DaY#Ubn#I#xaYaw#D#s.sa9bj.n#Da9.Ea9.7#L.7#L#L.7a9.7#L#Da9#Da9#Da9#Da9#Dbl#Dbl#D#Dbl#Dbl#s#D.na9#s#D#Ma9a9.n#Laf#Lajaf#Laf#Laf#L#Lafajafafafaf#Laf#L#L#La2#L.3#L#L#Lafa2a2#L#Lafa9.na9#Dawa0bga0#x.N#s#Da9#D#D#D#D#D#D.Nbl#DaYaYaYawaYa9.na9#La9afa9afa9a9a9a9a9a9a9a9a9#pa9a9a9a9a9a9#L#Lafaj#L.3#La2afafa2af#La9a9a9afa9.7a9#D#D#D#D#DaY.N#x#xa0a0aoaFbgama0a0a0aCa0aYaY.baYbnbnaC#x",
+"aYaYblbl#D#Da9.7a9a9a9a9.na9a9.7ajafaj#L#L#La2#L#L#L#L#Lafaj#Lafa2a2#L.j#La2#La2a2a2a2#La2af#L#L#L#L#L#La9#MaYaY#Ibn#MaY#D.s#D#s.7.na9.Ea9.7aj#La2aj#L#Laj#L#L.7.7a9.7.7a9.7a9.7#M#Dbl#MblblaYbl.sbl#Dbl#D#Dbl#Daf.Ea9af.Eafa9af#Lafaj#L#Laf#Lafafafafafaf#Laj#L#Laf#L#La2afa2#La2#L.3#L#L.7#Da9#DaYaCama0#Ibla9#Dbj#D#Da9#D#D.N#MaY#DblawaYaYaY#pa9a9a9#pa9a9a9afa9afa9#p.na9a9#Mbla9a9a9#La9.7afaj#Laf#L#Laf#Laf#Laf.7afa9afa9a9.7a9#D.7#D#D#D#Dblaw#x#x.WamamaOb#aOa0aC.Cbn.C#U.RaYaY.b#xbna0",
+"aYaY#D#D#D#s.7.7a9.7a9.7a9a9.7a9#Laf#Laf#Laf#Lafa2a2a2a2#La2a2aja2a2.3a2a2a2a2a2aaaaa2a2a2a2a2#La2#L#La9a9#DaY#I.RaYaw#D#M#D#s#D.n.7a9.n#L.7af#La2a2a2#La2#L#L#La9a9.7a9a9.7a9a9a9#pa9a9a9.n#pblaYaY#IaY#IaYaw#x.na9af#Laf#Laj#Laf#La9afajaf#L#Lafafafaj#Laf#L#Lafa2#L.3#L#L#L#La2a2#L#Laf.na9.n#D.NbnaCaobn#D#s#D.n#D#D#D.N.NaY#DaY#Dbl.NaYaYaw#D#pa9#p.n#pa9#pa9a9.n#pa9#pa9#pa9#D#pa9afafajaf#Laf#L#Laf#L#Laj.3af.3afafa9a9a9.7a9.7a9#D#D#D#D.NaY.N#xa0ama0aob#ama0a0a0bn#Ibna0#x.bbnaY#Uamam",
+"#MaY#s#D#D.7#La9#L.7.na9a9.7a9a9#L#L#L#La2#La2#La2a2a2aja2#La2afa2aja2#La2a2a2a2#gaaa2a2a2a2a2a2a2#L#La9a9blaYaYaY#MaY#M.N#D.n#D.na9.n.7#L.E#L#L.ja2a2a2#g#L#L#L#Lajaf#Lajaf#L#La9a9#pa9#pbla9.naYawaYaYaY.RaYaY.na9.na9aj.7af.n#Lafaj#Laf#Lajafafajafafaf#L#L#L#Laf#L#La2afa2af#L#La2af#L.7a9a9.7aw#xaCa0#IaYa9#D#D#D#D#D.NaY.saY#Dbl#DaYaYaYaY.na9#pa9a9#p.na9af#p#pa9a9a9#pa9#Dbl#Da9.na9#L#Laf#L#Lafajaf#Lafafafafafafafa9a9afa9a9bja9bj#D#D#D#DaY#x.Wa0av.5.pamaCa0#Ua0#x#xa0bnaYaw.R.Cb#am",
+"amam#xbla9a9a9a9a9a9.7a9.7afa2#Laf#Laf#La2#La2#La2a2a2a2a2a2a2a2#Laf#Laf#La2#L.3a2a2a2a2asa2#La2#gafa9blaYawaYaYawbn#IaYawaw#D#Da9.Ea9#Lafaf#L#L#L#La2a2a2a2a2a2a2a2#La2af#L#Lafajaf#L.na9bja9#D#p#pbl#M#x#Ia0bn#I.NaY#D#Da9a9.7af.Eafa9aja9#Lafa9a9a9a9#Lafa9afajafafafaf#Lafafa2.ja2afajaf#L.na2a9aY.Cbgam#x#Ma9.n#Lajafa9.N.N#pa9bl.N#MaYaYaY#p#pa9#pa9#pa9#p#pa9#p.n#p#p.n#pa9#pa9a9#paf#pa9a9.n#pafafafafafafafa9afa9afa9a9.na9a9a9a9a9#D#D.n#paYaYa0amb#amb#a0a0a0.Ca0#I#xaw#xaY#x#xaCa0aC",
+"ama0#xbla9.na9a9bja9#Da9a9ajaf#La2aj#Lafa2#La2#La2a2#La2#La2#La2af#Lafa2#Laf#L#La2a2a2asa2a2a2a2a2#La9blaYaYaYawaYaY#xawaY.N#s#Daja9#Lafajaf#Laf#L.j#La2#La2#La2#La2#La2#L#L#L#L#L#Laf.7a9#D.n#Da9.nblblaYaY#xaC#x#IaY.s#D#sa9.na9a9a9a9a9a9a9a9a9afa9afa9a9#La9afafaj#Lafaf#Lafa2#La2#Lafafaj#La2.naw.CamaC#xaY#D#D#La9a9#sbl.Na9#M#DblaYaYaY#xbla9#p#pa9#pa9#pa9#pa9#p#pa9#p#p#pa9.n#pa9a9a9af#pafa9afa9a9afa9#La9af.7afa9afafa9afa9a9.na9#Dbl#p#pblbn#U.5bg.5a0aoa0a0#Ua0#xbnaYaYaY#U#xbn#xa0",
+"amaCaYaYaw#Dbl#sa9#D.7a9.7af#L#Lafaf#L#La2#La2#La2a2a2a2a2a2a2a2#L#L#Lafaja2#L.3a2a2a2#La2a2a2a2#ga9#D#MaYaY#UaY#xaw#Ibl.Naw#D#Dafafaja9#L#Laf#La2#La2a2a2a2a2a2a2.jafa2#Laf#Laf#Laf#La9a9.7#Da9a9a9#sblawaY#x#x#IaY.NaY#D#D#D#D#sbl#s#D#sa9a9.na9.na9a9.nafa9afafafafafafafajafa2#L.3#L#Laja9#Daj#DaY.Ca0aoa0aY#D#Ma9.na9#D#DaYblblblaYaYaYaYaYbl#pa9#pa9#pa9#pa9#p#Ma9bl#p#D#pa9a9#pa9#pa9#pa9#pa9#pa9#paf#pa9afa9afa9afa9afa9a9a9a9a9a9a9#Da9bla9awaYa0a0ama0b#a0a0a0#x#U#x#xaw#xaw#xbn#I#xa0",
+"b#b#aCaYaYbl#Dblbja9#D.na9#Lajaf#L#L#Lafa2#La2#La2a2#La2#La2#La2afafaj#L#Laf#L#La2#La2a2a2a2#La2#La9blaYbnbn.R#IaY#U#xaYaw.N#D#s#L.Eaf#Lafaj#L#L#La2#La2#La2#La2afa2a2a2#L#L#L#Lafajaf.7.n#Da9b.afa9a9a9#DaY#I#x.NaY#saY#s#D#s#DaYaYaYblaY#DaY#Dbla9a9a9a9a9a9a9.na9a9.na9a9a9a9#La2aj#Lafa9a9a9af#Mawa0aCa0a0bn.NaYbl#D#M#DaY.NaYaYaYawaYaYawaYbl.na9#pa9#pa9#pblbla9#p#pa9#p.na9#pa9.n#pafa9af.naf#pajafafafafa9a9a9afa9af.7afaf.nafa9a9af#D#DblblaYaY#xaCa0.Ca0aobnaCbn#xawaYaY.RaYaYaY#xbn#x",
+"a0bnbnbnaYaYbl#D.n#D#sa9a9#Laf#L#L.3#L#L#La2#Lafa2a2a2a2a2a2a2a2#L#Lafaf#L#La2#L#La2#L#L#La2#L#Laf.nblaY.bbn#U#x#Ubn#Ibl.NaYa9.7a9afaja9#Lafaf#La2a2aja2a2a2a2a2a2a2a2a2af#Laf#L#L#L#La9a9.7#Da9#Laja9#D#D.NaYaY#s#D#D#DaY.NaY.saY.saY.NblaY#DaY#sbl#sbla9#Da9#Da9a9.na9a9afa9ajafaf#Lafa9a9#D#sa9blaY#Ua0aob#aC#xaYaw#D#DblaY#IaYawaYaYaYaYaYaYbl#pbla9#pa9#pa9bl#M#p#D#p#M#p#pa9#pa9#pa9a9#pa9#p#pa9#p#pafafaf.nafa9a9#La9afafa9afa9a9afa9#Da9bl.NaYawbn#x#x#x#Ubna0#xbnaY#xaYawaYaw#xawaY#x#U",
+"#Ubn#Uam#UaYaYbl#Da9bja9a9#L#Laf#L#Laf#Laf#La2#La2a2#La2#La2#La2af#L#L#L#Laf#La2af#L#La2#L#La2#Lafa9bl.Ra0.pa0bn#U#xawaY#M.N#s.7.na9#Lafaj#L#Lafa2a2a2a2#La2#La2a2a2a2a2#L#L#L#Laf#Laf.7a9#D.7#Dafaf#L.na9#Daw.N.n#D#D#s#Daw#DaYaYaYaYawaYaYawbla9bla9bla9.n#D#Ma9a9a9#Da9#sa9#p#Laf#La9.7.n#D#D#DaYawa0a0aob#amaCa0aYaYaY#DaY#xaYaYaYaYaYbl#Dbl#p#pa9#pa9#pa9#p#pbl#p#pa9#pa9bl#p.na9a9#pa9#pa9af#pafa9af.na9afa9a9aja9a9afa9#Laf.7afa9.7afbl#D#D#DaYaYaY#xaY#xa0bnbn#U.RawaY.baYaYblaY.R#IaYaY",
+".Rbnb#a0a0#xaYbl#s#D#sa9.Eaf#L#La2#Laj#La2a2#L#La2a2a2a2a2a2a2a2#La2afa2afa2#Laf.7af#La9a9#Lafa9a9a9.R.Ra0.V#UbnaYaYaY#D#D#D#D.7afajaf.Eafaf#L#La2#La2#La2a2a2a2a2a2#La2#L.3.7#Lafaj#La9a9.n#Da9#Laj.7a9.7#D.N.Na9.n#D#DaY.NaY.sbl#Mblbl#Dbl#Dbl#D#Dbl#s#Dbl#Dbla9#Da9.nbla9a9#Dajaf.na9#D#D#D#sblawaY#x#Ub#b#aO.5a0aCaYaYawaY#x#xaYaYaY.sblbl.na9#pa9#pa9#pa9#pblbla9#M#p#Dblbl.n#p#p.na9#p.n#p.na9#pa9#pa9af#pa9afa9a9af#Laf#Lafafa9afa9a9#Da9bl#D#M.NaY.Naw#x#UbnbnaYaYaY#xaYbl#MblaYaYaYaY#I",
+"#Fbn.Vaoa0bnaYblbja9#Da9a9#Lajaf#Laf#Laf#L#L.3#La2a2#La2#La2#La2af#L#L#L#Lafaj#La9#L#La9a9#L#Lafa9blaw.R#Ua0bnbn#IaYaw#D#s#Da9#s#La9#Laf#L#L#L#La2a2a2.j#L#La2#La2a2a2a2#L#Laf#L#Laf#Laf.7#D.7#s#L#L#La9.7#D.sbf.n#Da9#Daw#DaY.N#pbl#M#D#p.n#pa9#sbl#D#D#Dbl#D#D.na9#Dbl.n#Da9a9af#La9.7a9#s#DaYaY#x.baYbnaoamaFaFaoa0#IbnaYaY.R#x#xaYaYbl#Da9#pa9#pa9#pa9#pbla9#M#pa9#pa9#p#Mbl#pa9a9a9#pa9a9#pa9#paf.naf#pafafa9a9a9afa9af.7afa9#L#La9a9af#D#D#D#DaY#D#DaY.NaYbnbn#U#x.baYaYaw#paY#D#MaY#IaYaY",
+"blaw#xa0ambn#xaYawblbl#D#pa9afafa2a2a2a2a2a2#La2#L#La2#La2#La2#La2a2a2afa2#La9a9a9a9a9#D#D#D#D#D#pbl#paY.Rbn#I#x#pa9a9a9a9.7.7a9afajaf.n#Laf#L#L#L#L#La2a2a2#ga2a2bpa2#L#L#L#L.7af#Laf.7a9a9a9#Da9a9#sa9#D#D#D.Na9a9a9#sbl#D#Ma9bl#Dblbl#Dblblbla9a9a9afa9a9a9a9a9a9afa9a9a9a9.nafa9a9.na9a9#D.naY.RaYbna0a0b#aobgb#bg.Va0aCaY#D#Mbl#Mbl#Dblbl#Dbl#Dbl#Dbl#Dblbla9#pbla9#p#pa9#p#p#p#p#p#pa9#pa9#p#p#p#pa9a9afa9aja9afaf#Lafaf#La9afa9#Lafa9a9af#sa9#Dbl#DaYbl.N#UbnbnbnaYaY#IaYaY#MaY#xaYaYaYaY",
+"aYaYbn.Ca0a0#I#xaYaYblbl.naf#Lafaja2#La2#La2a2a2#La2#La2#La2#La2a2a2#L#L#L#L#L#Lafa9af#D#p#Dbl#D#F.nblblaYaYaYaYa9.n.7a9a9.7a9.7afafaf#L#L#L#L#La2#ga2#ga2bpa2#L#ga2a2#L#L#L#L#L#Laj#Laf.7a9bja9.7#D.7#D#D#D.Naw#D#M#D#p#D#p#D#Dbl#sbl#Dblbl#Dbla9.na9.naf#paja9afa9.na9a9afa9a9afajafa9a9a9blblaYawaY#Ua0aC.5am.V.Vb#ama0aYaY#xblaY#DaYbl#M#Dbl#Dbla9bla9bla9bl#D#p.n#pbla9bl#p#p.na9#p.na9#p.na9bl.na9afa9a9a9a9afa9#La9af.7afa9a9#Laf#Lafa9a9a9a9a9#D#DaY#saYbnbn#U#x#UaYaYaYaYaYaYawaYaYaY#x",
+"aY#xbna0a0a0a0bnaYaY#Mbla9a9a9af#L#Laf#L#L#L#Lafa2#La2#La2#La2a2#La2afa2af#L.7#La9a9#D#D#D#D#DaY#pblbl#MaYaYbl.Na9a9a9.7a9#L.Eaf.naf#Laf#L#L#L#La2a2bpa2#ga2#ga2a2#L#L#L#L.7a9a9a9a9afa9a9#D#D#sa9.nbl#DaYblaYaYbl#D#D#D#M#Dbl#sblbl#Dbl#sbl#D#Ma9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9.n#pa9a9#D#sbl#saYaY.RaY#xa0a0aCa0#Ua0aCbnaYaYawbl#sbl#M#Dblbl#D#pa9a9a9a9a9a9a9#p#p#D#p.n#pa9.n#p#p#pbl#pa9a9#p#pa9#p#pa9a9afa9af#Lafaf#Lafaf#La9a9afa9af#La9afa9a9bl#D#p#DaY#DbnaCbnbnaYaY#IaYaYaw#xaYaYbn#I.R",
+".Raw#xa0aC.Ca0a0.baYaYblbla9a9af#Laf#L#La2afa2#L#La2#Lafa2#La2a2a2a2a2#L#L#Laf#L#D#p#Dbl#DblaYaY#pblblbl#Dbl#D#Dafa9af#L#La9#L.7afaf#Lajaf#L#L#L#L#ga2a2#La2bpa2#L#L#Laf#La9.7#Da9a9a9#D#Dbl#DaYblblaYaYaYawaYaY#xawaYaYaYaYaYaYaYaYaYaYaY.NblaYa9a9#pa9a9#pa9#p.n#Da9a9a9#Da9#D#pa9bl.na9blaYblblaYaY#IaYbnbna0#Ua0b#b#a0aYaYblblbl.Nblbl#Dbl#Da9a9afa9afa9afa9#Ma9#pa9#pbl#pbl#p#p#pa9#pa9#pa9a9bl#p.na9a9a9a9#La9af.7afa9#La9afa9a9af.7afafafa9a9a9#D#D#DblaYbnbn#Ibn#IaY.RawaYaYaYaYaYaY#x#x",
+"bnbnbnbna0a0a0amaYaYaYaY#D.na9a9afa9afa9#L#L#Laf#L#L#La2#La2#L#La2#L#Laf#L#L#Laf#D#Dbl#DblaYaYaYa9.nblbl#D#D#Dblafaf#L#L#L#L#L#L.naf#Laf#L#L#L#L#ga2bpa2#ga2a2#gaf.3af.7afa9a9.n#D#Dbl#sblbl.NaYaYaYaYawaY#x#xaYaYaYaYaYawaYawaYaYawaYawaYblaYblblbl#Dbl#M#Dblbl#Dbl#D#Dbl#s#Dbl.n#pa9blawblawaYaw.RaY.RaY#U#xbn#UbnaCaOama0aYbl#Dbl#Mbl.Nblbl#Da9.na9a9a9a9a9a9a9#pbl#pa9#pa9#p#p#p#M#p#p.n#pa9.n#pa9#pa9a9afa9#Lafa9afa9#Lafafa9afafa9af#La9#La9af#Dbl#Daw.NawbnbnbnbnaYaY#xaYbn.baY.RaY#xbnbn",
+"ama0bna0#Uambgb#aY.RawaYbl#Da9a9a9.7a9.7a9af.7#L#La2af#Laf#L#L#La2a2#La2#Laf#L.7#pblblaYaYblaYaYblblbl#Da9a9a9.7afajaf#L.3#L#L#L#Lafaf#L#L#L#L#L#L#ga2a2bpa2bpa2#La9#Lafa9af#D#D#Dbl#DaYaYaw#xaYaYawaYaY#xbnbnaYawaYaYaYaYbnaYaYaY.RaY.RaY.baYawbl#Mblblblbl#Mblbl#D#D#M#Dbl#D#D#pbl#MblblaYaYaY.RaYaYawbnaYbnawaYaYa0aO.Fa0#x.R#Dbl.Nbl#Mbl#sbla9a9a9a9afafafaf#p#p.na9bl.nbl#p.n#p#pa9#pa9a9#p#pbl#pa9a9a9a9a9#La9afa9a9afa9#Laf#La9afa9af#Lafa9a9#D#Dbl#DblaYbna0#Ubn#I.RawaYawaYaYaY#UbnaCbn",
+".Va0bna0.V.Vb#.5bn#xaYaYaY#Da9a9a9#La9#La9#L#Laf#L#L#La2#La2afa2#La2#Laf#La9a9a9blaY#MaYaYaYaYaYbl#Dbl#Dafa9#L#Lafa2a2a2a2a2#L#Lafaj#Laf#L#L#L#La2a2bpa2#ga2a2#gafafafa9a9a9bl#pbl#DblaYaYaYaY#xaY.Rbnbn#Ua0a0a0aYaYaYaYaYaYaY#U.R.b.R.R#U.Rbn.RaYaYawblaYblaYbl.N#MaY#DaYblaYbl#sblblblawblaYaYawbnaY.RaYaw.RaY#IbnaCb#aOb#.Vbn#DblblawaYblbl#Da9a9a9a9.7a9.7a9#D#pbl#p#p#pa9#p#p#p#pbla9#pa9a9#pa9.n#pa9.na9a9afafa9a9afa9#Laf.7af#La9afa9#Lafa9a9a9bl#s#DaY#sbnbnbnbnaYaY#x.Rbnbnbnbnbn#xa0a0",
+"a0.Vbn.bbna0b#b##UbnaYaY#D#Ma9a9.Ea9a9a9.7a9.7#Lafa2a2#La2af#L#La2a2#L#L#Laf.7.7blblaYblaYaYaYaY#DaYa9a9a9#La2#La2a2#La2#L#ga2#Lafafafa2#L#L#L#L#L#ga2#g#La2bpa2afafa9af#p#Da9#D#DaY#D#DaYaYaY#x.RaYaYbnbna0a0a0aYaYaY.RaY#UaYaYaYaYaYaYaYaYaYaYawblaYaYaYblaYblaYbl.NblaY#s.Nblblbl#MblaYawaYaY.Raw.RawaY.b#x.baY#xa0aob#bga0bnbl#sblaYaYbl#sbla9.n.7a9.n.7a9a9#pa9#pa9#p#D#pbl#p#p.na9#p.na9#p.n#pbl#pa9a9a9af.7a9afa9.na9a9afaf#Lafa9afa9af#La9.nbl#D#D#DblaYbnbn#UaYaYaYawaY.RaY.Rawbnbna0a0",
+"aYaYaYaYaYaY.N#xaYaYawbnaYaYaYaYbl#Dafa9afa9.7#L#L#L#L#L#L#L#L#L.3a2afafa9#D#DaY.R.R#x.RaYawaYaYa9.7a9#L#L#Lafa2a2a2a2a2#g#L#L#Lafafajafafa2#L#L#L#L.7#L#L#L#L#L#L#L#Laf.7#La9a9a9.7a9#D#D#D#D#Dblbl#IaY#xaY#xaYaYaYaYawaYaYaYaYaYawaYaYawaYaYaw#Fbl#M#FblaYaYaY.R.R.R.R.R.R.R.RawaYaYaYaYaYaYawaYbl.NaYaYaYbn#Ibn.baY#Ua0aOb#.Vbg#HaY.bbla9a9.na9a9a9a9.7a9a9.Ea9#p.na9a9.n#pa9#pbl#p#pa9#p#pa9#p#pa9#pa9#pa9a9#pa9.na9afafaf#L#Laf#L#L#L#L#Lafa9a9a9#pblbl.Nbl#x.R#xaY.R#x#xaYaw.RaYaYaYaYaY#D",
+"aYblaYaYaY#IaY.NblawaYaYaYaYaYaY#Dbla9a9a9a9a9#L#L#L#L#L#L#L#L#L#Laf#Lafa9#Dbl.N.R.Raw.RaYaYaYaY.7#Da9.7af#La2#La2#ga2#ga2#L#L#Lafafafaf#L#L#L#L.7#L#L#L#L.7#L.7a2a2#L#Laf#La9bja9#D.7#D#D#D#D#D#D#DaYaYaYaYaY#xaYaYaYaYaYaYaYaw#xaY#xaYaYawaYaYbl#FblaY#MaYblaw.R.b.R#MaY#FaY#FaYaYaYblaY#MaYaYblawaY.RawaYawaYbnaY#Ibnao#SaBaF.p#H#U.RaY#Ma9#Da9a9.7a9a9a9a9a9a9a9a9#pa9#pa9.na9#pa9a9#pa9#pa9#p#D#p#s#pa9a9afa9af#pafafafafaf#L#L#Lafaj#Lafaja9#pa9a9#Dbl#DblaY#UaYaYaw#x#xbnaYblaw.RaYaY#Dbl",
+"blaYblaYaY#D.NaY#pblblaY.RaYaYaYbl#Dbl#Da9a9.7a9#L#L#L#L#L#Laf#Laf.nafa9#D#DaYaYbn.RbnaYaY.R#xaYa9.7a9#L#L#La2#La2a2#g#L#L#L#L.7afajafaf#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2#L#L#L#L#L#La9.7#Da9bj#DblblaYaYaYaYaYaYbl#Dbl#D#Dbl#Dblbl#Mbl#MaYblaY#Mbl.nbl#pa9aYblaYblaYaYaY.RawaYaY#M#F#M#Fbl#F#F#M#p#p#p#MblaYaYaY#UbnbnaCam#SaBbm#H.p.p.RaYaYbla9.na9a9.na9a9a9a9a9#pa9a9#pa9#pa9#pbla9#pa9#pa9#pa9#p#p#pa9#pa9#pa9#pa9a9afafafaf.3afajafafafafafa9.n#pa9#p#Dbl.N.RbnaY.RaYbnaY#x.b.RaYaYblbl#Dbl",
+"#DblblaY#Dbl#D#Dbl#DawaYaYawaYaYaYaYbl#Dbl#D#Da9#Da9#Da9#Da9.7a9a9#p#Dbl#DaYaYaw.R.RaYbnaYaY#xaY#D#Da9.7#L#L#L#La2#ga2#L#L#L.7afafafafafaj#L#L#L#L#L#L#La2#L#L#La2a2a2#La2#L.7#La9#L.7a9.7#D#D#D.N#Dbl.sbl#D#Dbl#D#D#D#Dbl#D#D#Da9#D#D#Da9#D.n#D#pa9#pa9a9blblblblaYblblblblblbl#p#Fbl#p#pbl#pbl#p#M#pblbl#Faw#FbnbnaCamaCaF#SaZ#Hb#bgbnaw.Raw#Da9a9a9a9a9a9.na9afa9a9#p.na9a9#p.na9#pa9#pa9#pa9#M#p#D#p.na9a9a9af#pajafafafafaf#Lafa9afa9a9afaf#paf#p.n#Dbl#DblbnaYbn#Ubn#x#U#xbn.baYblaY#DaY#D",
+"blblaY#DaY#D#D#Dbl#Dbl#DblaYaYaYaYaYaYaY#M#Dbla9#D#D#D#D#D#D#D#Dbl#Dbl#DaYaYaYaYbn.R#U.RaY.R#xaY.7a9.7#Laf#La2#La2a2#L#L#L#La9.7afafafaf#Laf#L#La2#g#L#g#L#ga2a2a2a2#La2a2#La2#L#L#Laf.7a9a9#Da9#DblaYaYbl.Nbl#Da9a9a9a9a9a9a9a9.na9.na9a9.na9a9ajafa9.na9a9.na9blblbl#Dblblblbl#M#p#p#p#p#p.n#p#p#p#p#M#pblbl#MbnbnbnaCa0aF#SaZ.V.V.VbgbnaYaYaYbl#D#D#D#D#D#Dbla9#p.na9#pa9#pa9#pbla9#pa9#pa9#pa9#pa9#pa9#pa9af#pa9#pafafaf#Lafa9a9a9a9a9afa9a9afafa9#p#Dbl#saY#x.bbn#xbn#I#xbnbnbnbnawbl#Dblbl",
+"a9#pa9bl#M#Dbl#Da9a9#D#D#D#D#D.Nbn#U.RaYaYaY#D#Dbl#D#Dbl#D#Dbl#DaYblaYaYaYawaYaYaY.RaYbn#xaw#xaY.7a9#D#L.7a2#Laf#L#Laf#La9a9#Da9afafajaf#L#L#L#Lbpa2a2a2#ga2a2bpa2a2a2a2a2a2#La2.3#L#L#La9.7a9.7bl.NaYaY#D#pa9#pa9a9a9afafa9a9a9afafafajafafafafafajaf#La9a9a9bj.na9#D.n#Da9#s#D#p#p#p#p.n#pbl#p#p.n#pa9bl#Mblbl#UaY#U#x#Ub#aB.l.V.V.V.VaCbnaY.R#D#Mblbl#Mblblbla9#pa9#pafa9a9#pa9#p#pa9#pa9#pa9#pbl.n#D#pa9#pa9afafafafafafafafafa9#p.na9a9a9a9afafafa9#p#DaYaY.Rbn#x#Ubnbn#xaCa0aCbnaYaYblbla9",
+"#pa9#p#Dbl#Da9#Da9afa9bla9bl#DblaYaYbnaYaYaYaYaYblaYblaYblaYaYblaYaYaYaYaYaYaYaY.Rbn.R#xaY.RaYaYa9.7a9#Laf#L#L#Lafaf#Lafa9a9a9.nafafafaf#Laf#L#Laa#ga2#ga2a2#ga2aaasa2a2#La2a2#L#L#L.3#La9.7a9#DaYblaYblbla9a9ajaf#Laf#L#Lafajaf#Lafafaf#Laf#L#La2#L#L#L#L#L.7.7a9a9a9a9a9.na9a9.na9a9a9a9a9a9.na9a9.n#D#D#D#D#D#MblawawbnaC.F.t.Fb#.Vb#.Vbnaw#xaYaYaYaY.NaY#D#Da9#pa9a9#p.n#pa9.nbla9#pa9#pa9#pa9#p#p#pa9.na9afafafafafafafafafa9a9afa9af#pafafafafa9#p#Dblblaw#xbn#Ubn#x#IbnaCb#aCbnawaY#D.na9",
+"#pa9#pa9a9#Dbla9a9a9af#D#Da9#D#D#xbn#xbnaYaYblaYaYaYaYaYaYaYaYaYbnaYaYaYaYaYaYaY.R.R.RbnaYaYaYaY#D.7#Da9#La2#Lafajafafa9a9a9a9#Dafafafaf#La2#L#La2a2#ga2a2#gaaa2asaaa2a2a2a2a2a2a2#L#L#La9a9.7a9#D.saY#D.n#pafaf#Lafaj#L#Laf#L#Laf#L#L#L#L#Lafaja2a2a2a2#L.E#L#La9a9a9.7a9a9a9a9a9.7a9.na9a9a9a9.E#L.7.7#D#s#D#s#Fblbl#M#xbnbg.t.F.t.V.V.VaCa0aY#DaYaYaYaY.Nblbl.na9#p.na9a9#pa9#p#pa9#pa9#pa9#pa9#p#D#pa9#p#pa9afafafaf#Lafafa9af#pa9#pa9afa9afafaf#pa9a9#D#DaYbnbn#xbn#Ua0bna0bg.Va0aYblbl#pa9"
+};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/namedcolors.xpm b/tests/benchmarks/gui/image/qimagereader/images/namedcolors.xpm
new file mode 100644
index 0000000..f6485d5
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/namedcolors.xpm
@@ -0,0 +1,18 @@
+/* XPM */
+static char *xman[] = {
+/* width height ncolors chars_per_pixel */
+"8 8 3 1",
+/* colors */
+"e g4 black c pale turquoise 4",
+"f m white c light golden rod yellow g4 grey",
+"g g white c lemon chiffon m black",
+/* pixels */
+"eeeeeeee",
+"ffffffff",
+"gggggggg",
+"gggggggg",
+"gggggggg",
+"gggggggg",
+"gggggggg",
+"gggggggg"
+};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/negativeheight.bmp b/tests/benchmarks/gui/image/qimagereader/images/negativeheight.bmp
new file mode 100644
index 0000000..875887a
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/negativeheight.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/noclearcode.bmp b/tests/benchmarks/gui/image/qimagereader/images/noclearcode.bmp
new file mode 100644
index 0000000..1a5ca9c
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/noclearcode.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/noclearcode.gif b/tests/benchmarks/gui/image/qimagereader/images/noclearcode.gif
new file mode 100644
index 0000000..27784d6
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/noclearcode.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/nontransparent.xpm b/tests/benchmarks/gui/image/qimagereader/images/nontransparent.xpm
new file mode 100644
index 0000000..00c21ef
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/nontransparent.xpm
@@ -0,0 +1,788 @@
+/* XPM */
+static char *dummy[]={
+"8 8 777 2",
+"#R c #000000",
+"fn c #000001",
+".e c #000069",
+".f c #00006d",
+".g c #00006e",
+"#d c #0042b4",
+"aJ c #010101",
+"g0 c #010102",
+"dr c #010202",
+"gd c #010203",
+"#J c #0157bb",
+"e. c #020202",
+"du c #020304",
+"fR c #030303",
+"jJ c #040404",
+"hf c #040608",
+"fE c #040609",
+"cO c #04070a",
+"k# c #050505",
+"gC c #050709",
+"ka c #060606",
+"br c #06080a",
+"dY c #06090d",
+"hI c #070707",
+"in c #07090b",
+"cL c #070a0e",
+"cd c #070b0f",
+"e0 c #080808",
+"gZ c #080b0e",
+"eu c #080b0f",
+"dz c #080c10",
+"hD c #090909",
+"fq c #090d11",
+"cH c #090e13",
+"jB c #0a0a0a",
+"#U c #0a0d0f",
+"a4 c #0a0d10",
+"g3 c #0a0d11",
+"fu c #0a0f14",
+"cj c #0a1016",
+"kb c #0b0b0b",
+"#n c #0b0d0f",
+"a1 c #0b0e10",
+"g8 c #0b0f13",
+"f4 c #0b0f14",
+"hE c #0c0c0c",
+"bf c #0c0f12",
+".X c #0c28a0",
+"bT c #0d0d0d",
+"ax c #0d1014",
+"hr c #0d1217",
+"dH c #0d141b",
+"jy c #0e0e0e",
+"aW c #0e1115",
+"eH c #0e141b",
+"bE c #0f0f0f",
+"ar c #0f1317",
+"g5 c #0f1419",
+"hg c #0f151a",
+"fh c #0f151c",
+"dJ c #0f171f",
+"gI c #101010",
+".z c #101094",
+"h. c #10161b",
+"gm c #10161c",
+"eL c #10171f",
+"hK c #111111",
+"at c #11161b",
+"fC c #111820",
+"dA c #111922",
+"aj c #1163c4",
+"bJ c #121212",
+"#Z c #12161a",
+"ba c #12171c",
+"ho c #12181e",
+"jK c #131313",
+"iq c #13191d",
+"cA c #131e2a",
+"c7 c #141414",
+"dR c #141e29",
+"jr c #151515",
+"aA c #151a1f",
+"hq c #151c23",
+"fl c #151e28",
+"eV c #151e29",
+"d4 c #161616",
+"hw c #161e25",
+"jk c #171717",
+"bs c #171d23",
+"g9 c #171f27",
+"eC c #17212b",
+"b9 c #172432",
+"d5 c #181818",
+"as c #181e24",
+"bn c #181f25",
+"bS c #191919",
+"gr c #19232d",
+"ed c #1a1a1a",
+".d c #1a1a6e",
+"gB c #1a242e",
+"eK c #1a2531",
+"dQ c #1a2633",
+"hL c #1b1b1b",
+"g1 c #1b242d",
+"g# c #1b252f",
+"eJ c #1b2734",
+"d1 c #1b2937",
+"bW c #1c1c1c",
+"gW c #1c262f",
+"ci c #1c2b3b",
+"cs c #1c2c3c",
+"e# c #1d1d1d",
+"#3 c #1d232a",
+"f8 c #1d2833",
+"fI c #1d2936",
+"eO c #1d2a38",
+"cw c #1d2e3f",
+"jR c #1e1e1e",
+"a2 c #1e262e",
+"eP c #1e2b39",
+"dE c #1e2d3d",
+"cF c #1e2f41",
+"aO c #1e6ec9",
+"c4 c #1f1f1f",
+"gx c #1f2a36",
+"c# c #1f3043",
+"j2 c #202020",
+"bk c #202931",
+"ht c #202c36",
+"eF c #202f3e",
+"b7 c #203245",
+"cB c #203246",
+"hG c #212121",
+"aE c #212932",
+"bp c #212a32",
+"hl c #212d38",
+"cc c #213347",
+".M c #214eb7",
+"hF c #222222",
+"#7 c #222a32",
+"fw c #223040",
+"eU c #223141",
+"jC c #232323",
+"bb c #232c35",
+"ga c #23303d",
+"cv c #23364a",
+"cn c #23364b",
+"jl c #242424",
+"gj c #243240",
+"cm c #24374c",
+"c. c #24384d",
+"bF c #252525",
+"be c #252f39",
+"gt c #253341",
+"dU c #253649",
+".Y c #256cc9",
+"jG c #262626",
+"h8 c #26333d",
+"hb c #263440",
+"gs c #263443",
+"cr c #263b51",
+"cW c #272727",
+"aC c #27313b",
+"a9 c #27313c",
+"fk c #273748",
+"eR c #27384b",
+"cq c #273d55",
+"jV c #282828",
+"#5 c #28313b",
+"b0 c #2877ce",
+"gL c #292929",
+"#Y c #29323c",
+"hu c #293744",
+"fK c #293a4d",
+"jP c #2a2a2a",
+"#w c #2a323b",
+"bg c #2a3540",
+"dF c #2a3f55",
+"jn c #2b2b2b",
+"a6 c #2b3641",
+"jY c #2c2c2c",
+"h5 c #2c3b47",
+"hp c #2c3c4a",
+"gp c #2c3c4d",
+"cx c #2c445e",
+"bU c #2d2d2d",
+"h# c #2d3e4c",
+"dS c #2d435b",
+"e5 c #2e2e2e",
+"cG c #2e4762",
+"jF c #2f2f2f",
+"aG c #2f3b48",
+"gU c #2f3f4e",
+"ck c #2f4966",
+"j0 c #303030",
+"a0 c #303d4a",
+"he c #304251",
+"cQ c #307ace",
+"e4 c #313131",
+"ew c #31465d",
+"dW c #314862",
+"ce c #314b68",
+"jm c #323232",
+"bm c #323f4d",
+"k. c #333333",
+"e3 c #343434",
+"hi c #344757",
+"eT c #344b64",
+"b8 c #34506f",
+"dj c #347fd1",
+"bX c #353535",
+"f9 c #35485c",
+"ac c #363636",
+"#V c #36434f",
+"fv c #364c64",
+"dV c #36506d",
+"c2 c #373737",
+"ev c #37506a",
+"bI c #383838",
+"bw c #384655",
+"h4 c #384b5a",
+"hk c #384c5d",
+"ea c #393939",
+"bh c #394857",
+"gX c #394d5f",
+"#e c #3981d2",
+"e6 c #3a3a3a",
+"eS c #3a546f",
+"em c #3a81d2",
+"#F c #3b3b3b",
+"eQ c #3b5571",
+"dT c #3b5776",
+"cI c #3b5c7f",
+"gJ c #3c3c3c",
+"hX c #3c5060",
+"fi c #3c546f",
+"gG c #3d3d3d",
+"jv c #3e3e3e",
+"az c #3e4e5e",
+"fL c #3e5772",
+"bK c #3f3f3f",
+"gD c #3f576f",
+"fJ c #3f5874",
+"d2 c #3f86d5",
+"jx c #404040",
+"#8 c #404e5d",
+"bv c #405161",
+"cf c #406389",
+"jL c #414141",
+"iG c #415561",
+"im c #415663",
+"gz c #415971",
+"et c #415d7c",
+"cz c #41658c",
+"f# c #418ad7",
+"jT c #424242",
+"gy c #425b74",
+"fs c #425d7a",
+"#K c #4288d4",
+"jQ c #434343",
+"eX c #438cda",
+"j8 c #444444",
+".L c #44449a",
+"eZ c #454545",
+"#s c #455362",
+"fx c #45617f",
+"cK c #456b94",
+"aP c #458cd5",
+"ab c #464646",
+".n c #46469f",
+"aH c #46586a",
+"gV c #465f74",
+"d0 c #46678c",
+"c9 c #474747",
+"aF c #47596c",
+"a3 c #475a6d",
+"ex c #476687",
+"jU c #484848",
+"by c #485b6e",
+"gq c #48627d",
+"dI c #486b91",
+"cC c #48709b",
+"js c #494949",
+"#2 c #495a6b",
+"ih c #49606f",
+"hm c #49637a",
+"gk c #49647f",
+"j7 c #4a4a4a",
+"dt c #4a6e94",
+"ak c #4a8dd7",
+"b1 c #4a90db",
+"c1 c #4b4b4b",
+"bx c #4b5f72",
+"fr c #4b698a",
+"dG c #4b6e95",
+"co c #4b75a2",
+"fW c #4b91db",
+"bD c #4c4c4c",
+"hc c #4c687f",
+"j6 c #4d4d4d",
+"#Q c #4d5f71",
+"ik c #4d6676",
+"hH c #4e4e4e",
+"#0 c #4e5f72",
+"aD c #4e6277",
+"b. c #4e6377",
+"gN c #4e91dc",
+"c0 c #4f4f4f",
+"bj c #4f6378",
+"dZ c #4f759e",
+"cD c #4f7aa9",
+"hN c #4f8dcd",
+"kd c #505050",
+"#S c #506275",
+"#6 c #506376",
+"ge c #506e8c",
+"af c #515151",
+"b# c #51667b",
+"dk c #5195df",
+"cT c #525252",
+".c c #525280",
+"bq c #52677d",
+"iH c #526b79",
+"fj c #527397",
+"eW c #52769d",
+"dy c #527aa5",
+"hJ c #535353",
+"#x c #536476",
+"eG c #53789f",
+"jM c #545454",
+"#r c #546577",
+"bz c #546a80",
+"dM c #547ca8",
+"fP c #5499e2",
+"jp c #555555",
+"iK c #556f7e",
+"bM c #565656",
+"fB c #56799f",
+"dC c #567fab",
+"gE c #569be2",
+"cU c #575757",
+"h7 c #57748b",
+"gc c #577797",
+"fN c #577ba1",
+"dx c #5780ad",
+"cg c #5787bb",
+"i4 c #585858",
+"iF c #587483",
+"hy c #587792",
+"g2 c #587893",
+"fy c #587ca3",
+"eA c #587ea7",
+"jW c #595959",
+"bu c #597087",
+"ia c #5984b2",
+"ae c #5a5a5a",
+"#t c #5a6c7f",
+"bd c #5a7189",
+"ij c #5a7789",
+"eI c #5a81ab",
+"bR c #5b5b5b",
+"ch c #5b8dc3",
+"en c #5b9be1",
+"ke c #5c5c5c",
+"cP c #5c8fc5",
+"j5 c #5d5d5d",
+"iN c #5d7fa0",
+"gl c #5d80a3",
+"fp c #5d83ac",
+"cl c #5d8fc6",
+"b2 c #5d9de6",
+"c8 c #5e5e5e",
+"hh c #5e7f9c",
+"hn c #5e809d",
+"i3 c #5f5f5f",
+"#1 c #5f758c",
+"a8 c #5f7890",
+"g7 c #5f819e",
+"cJ c #5f93cc",
+"jz c #606060",
+"ct c #6094cd",
+"bO c #616161",
+"eN c #618cb9",
+"jH c #626262",
+"iW c #627c8d",
+"hd c #6285a3",
+"ey c #628dbb",
+"dO c #6290c4",
+"ca c #6297d1",
+"jI c #636363",
+"eM c #638fbd",
+"jN c #646464",
+"fH c #648db9",
+"eE c #648fbe",
+"cb c #649ad5",
+"hA c #64a8e2",
+"jw c #656565",
+"#k c #65798f",
+"fF c #658eba",
+"fA c #658fbb",
+"fa c #65a4e7",
+"b3 c #65a6e8",
+"jX c #666666",
+"hW c #6688a3",
+"gh c #668cb2",
+"aI c #6696cb",
+"dN c #6697cc",
+"bA c #6699ce",
+"cu c #669edb",
+"#C c #676767",
+"f3 c #678db4",
+"dl c #67a6eb",
+"kc c #686868",
+"cS c #696969",
+"dK c #699bd2",
+"cN c #69a2e0",
+"cy c #69a3e1",
+"fX c #69a6e8",
+"jD c #6a6a6a",
+"av c #6a84a1",
+"ds c #6a9cd3",
+"dL c #6a9cd4",
+"jt c #6b6b6b",
+"fo c #6b97c6",
+"cE c #6ba5e4",
+"jS c #6c6c6c",
+"aV c #6c88a4",
+"ir c #6c8ea4",
+"il c #6c8fa5",
+"eD c #6c9bce",
+"dB c #6c9ed7",
+"dq c #6c9fd8",
+"cM c #6ca7e7",
+"cp c #6ca8e8",
+"eo c #6cabed",
+"i2 c #6d6d6d",
+"#T c #6d869f",
+"#W c #6d87a0",
+"gY c #6d94b5",
+"aa c #6d9bcb",
+"eB c #6d9dd0",
+"dw c #6da0d9",
+"dD c #6da1da",
+"b4 c #6dacee",
+"h9 c #6dafe2",
+"i6 c #6e6e6e",
+"bt c #6e8aa7",
+"fM c #6e9bcb",
+"dP c #6ea3dc",
+"b5 c #6eabee",
+"jd c #707070",
+"ix c #7088a2",
+"hx c #7098ba",
+"f7 c #7099c3",
+"dv c #70a5df",
+"b6 c #70adef",
+"iy c #70aff1",
+"dm c #70aff2",
+"jE c #717171",
+"#m c #7188a0",
+"#u c #7189a1",
+"aY c #718eac",
+"gO c #71aced",
+"jq c #727272",
+"gb c #729cc6",
+"hO c #72afee",
+"ib c #72afef",
+"e7 c #737373",
+"#y c #738ba4",
+"#A c #739eca",
+".j c #747474",
+"#9 c #748fab",
+"hs c #749ec1",
+"f6 c #749fca",
+".i c #757575",
+"#q c #758da6",
+"a5 c #7593b1",
+"bo c #7594b2",
+"ii c #759bb3",
+"fb c #75b3f4",
+"ep c #75b4f3",
+"is c #75b8e2",
+"ag c #767676",
+"fz c #76a6da",
+"ez c #76a9e0",
+"dX c #76adeb",
+".h c #777777",
+".m c #777794",
+"iX c #77a6b3",
+"dn c #77b1f4",
+"gK c #787878",
+"#4 c #7894b0",
+"fG c #78a9dd",
+"j# c #797979",
+"bV c #7a7a7a",
+"do c #7ab4f4",
+"jA c #7b7b7b",
+"io c #7ba3bc",
+"dp c #7bb5f5",
+".k c #7c7c7c",
+"bc c #7c9cbd",
+"gi c #7caad8",
+"aQ c #7cb0e7",
+"fY c #7cb8f9",
+"iM c #7cbee2",
+"j1 c #7d7d7d",
+"aX c #7d9ebf",
+"fm c #7db0e7",
+"j4 c #7e7e7e",
+".8 c #7ea5ce",
+"#D c #7f7f7f",
+"hv c #7facd3",
+"gn c #7faedd",
+"eb c #808080",
+"er c #80bdf9",
+"j3 c #818181",
+"hz c #81afd6",
+"gu c #81b0e0",
+"eq c #81bbf9",
+"fc c #81bbfc",
+"#b c #828282",
+"iE c #82aac0",
+"i5 c #838383",
+"ha c #83b1d9",
+"es c #83bcf9",
+"ad c #848484",
+"go c #84b5e6",
+".v c #858585",
+"#p c #85a0bc",
+"bN c #868686",
+"hZ c #86b3d6",
+"fD c #86bcf6",
+"fO c #86bcf7",
+"gP c #86c1ff",
+"di c #878787",
+"ft c #87bdf8",
+"bH c #888888",
+"iT c #88cfe2",
+"jZ c #898989",
+"#z c #89a5c3",
+"g. c #89bbee",
+"fg c #89c0fc",
+"fd c #89c2fd",
+"hP c #89c3ff",
+"jb c #8a8a8a",
+"#o c #8aa6c4",
+"jc c #8b8b8b",
+".S c #8baccf",
+"iI c #8bb6ce",
+"al c #8bb9e8",
+"hj c #8bbde7",
+"gw c #8bbef2",
+"ff c #8bc3ff",
+"fe c #8bc4ff",
+"fZ c #8bc6ff",
+"ec c #8c8c8c",
+"gv c #8cbff3",
+"jO c #8d8d8d",
+"a# c #8dadce",
+"ic c #8dc7ff",
+"#H c #8e8e8e",
+"a. c #8eaed0",
+"#L c #8ebae8",
+"hY c #8ebee3",
+"g4 c #8ec1ec",
+"iO c #8ecbff",
+"ju c #8f8f8f",
+"bi c #8fb5da",
+"h6 c #8fc0e5",
+"f5 c #8fc4f9",
+"jf c #909090",
+"bl c #90b6dc",
+"i1 c #90dfe2",
+"bC c #919191",
+"aB c #91b5dc",
+"aZ c #91b7dd",
+"hV c #91c2e8",
+"gf c #91c6fc",
+"gg c #91c7fd",
+"f0 c #91c8ff",
+"i7 c #929292",
+"gA c #92c8fe",
+"iz c #92ccff",
+"iU c #939393",
+"a7 c #93b9e0",
+"f2 c #93c9ff",
+"gQ c #93ccff",
+"e8 c #949494",
+".y c #9494b0",
+"h1 c #94c6ec",
+"f1 c #94caff",
+"j9 c #959595",
+"#X c #95b7da",
+"cX c #969696",
+"ay c #96bbe3",
+"#f c #96bde8",
+"aR c #96c3ee",
+"gR c #96cfff",
+".J c #979797",
+"hQ c #97cfff",
+"fT c #989898",
+"#j c #98b6d7",
+"#l c #98b7d8",
+"iJ c #98c7e1",
+"g6 c #98cffd",
+"jj c #999999",
+"aS c #99c4ee",
+"h3 c #99ccf4",
+"gS c #99d0ff",
+".l c #9a9a9a",
+".b c #9a9aa4",
+"aw c #9ac1ea",
+"gT c #9ad1ff",
+"dg c #9b9b9b",
+".N c #9bbee8",
+"aq c #9bc1eb",
+"am c #9bc4ee",
+"eg c #9c9c9c",
+"au c #9cc3ed",
+"ao c #9cc5ee",
+"c5 c #9d9d9d",
+"aT c #9dc7ef",
+"hU c #9dd2fb",
+"hR c #9dd3ff",
+"dh c #9e9e9e",
+"#v c #9ebee0",
+".Z c #9ec3e8",
+"#M c #9ec3ed",
+"#N c #9ec5ed",
+"ap c #9ec5ef",
+"aU c #9ec7f0",
+"h2 c #9ed4fd",
+"id c #9ed6ff",
+"df c #9f9f9f",
+"an c #9fc5ee",
+"h0 c #9fd5fe",
+"aM c #a0a0a0",
+"hT c #a0d6ff",
+"jh c #a1a1a1",
+"hS c #a1d7ff",
+"ji c #a2a2a2",
+"#P c #a2c7ed",
+"i8 c #a3a3a3",
+"#O c #a3c8ed",
+"iA c #a3daff",
+"j. c #a4a4a4",
+"je c #a5a5a5",
+"#g c #a5c8ed",
+"ip c #a5dafb",
+"iv c #a6a6a6",
+".F c #a6bed4",
+"de c #a7a7a7",
+"#h c #a7c9ed",
+"if c #a7ddff",
+"ie c #a7deff",
+"eh c #a8a8a8",
+"#i c #a8caee",
+"iL c #a8dbf8",
+"ig c #a8deff",
+"iP c #a8e0ff",
+"iY c #a8e2e6",
+"hC c #a9a9a9",
+".0 c #a9caed",
+"#B c #aaaaaa",
+"fU c #ababab",
+".5 c #abc9e9",
+"iB c #abe3ff",
+"e2 c #acacac",
+".6 c #accaea",
+"jo c #adadad",
+".1 c #adcbed",
+".7 c #adccec",
+"iD c #ade2ff",
+"iC c #ade3ff",
+"fS c #aeaeae",
+".4 c #aecded",
+"db c #afafaf",
+".A c #afbbe7",
+".2 c #afccee",
+".3 c #afceee",
+"d6 c #b0b0b0",
+"iQ c #b0e9ff",
+"bG c #b1b1b1",
+"jg c #b2b2b2",
+"#E c #b3b3b3",
+".O c #b3d1ed",
+"gF c #b4b4b4",
+"cY c #b5b5b5",
+"iR c #b5ebff",
+"hM c #b6b6b6",
+"iS c #b6ecff",
+"d9 c #b7b7b7",
+".U c #b8b8b8",
+".u c #b9b9b9",
+"dd c #bababa",
+".P c #bad4ee",
+"bL c #bbbbbb",
+".Q c #bbd4ef",
+".R c #bbd5f0",
+"e9 c #bcbcbc",
+"c3 c #bdbdbd",
+"f. c #bebebe",
+"d8 c #bfbfbf",
+".o c #bfc2e8",
+"iZ c #bffdff",
+"iw c #c0c0c0",
+"iV c #c1c1c1",
+"i0 c #c1feff",
+"ei c #c2c2c2",
+"ej c #c3c3c3",
+"#a c #c4c4c4",
+"el c #c5c5c5",
+"d7 c #c6c6c6",
+".r c #c6cbda",
+"ek c #c7c7c7",
+"aN c #c8c8c8",
+"#G c #c9c9c9",
+"aL c #cacaca",
+"ai c #cbcbcb",
+".B c #cbddf2",
+"bZ c #cccccc",
+".C c #cce0f3",
+"dc c #cdcdcd",
+"ah c #cecece",
+"da c #cfcfcf",
+".E c #cfe1f3",
+".D c #cfe1f4",
+"#I c #d0d0d0",
+"cV c #d1d1d1",
+"fQ c #d2d2d2",
+"bB c #d3d3d3",
+"#c c #d4d4d4",
+"d# c #d5d5d5",
+"aK c #d6d6d6",
+"cZ c #d7d7d7",
+"c6 c #d8d8d8",
+"gH c #d9d9d9",
+".W c #dadada",
+"gM c #dbdbdb",
+"bQ c #dcdcdc",
+"e1 c #dddddd",
+"cR c #dedede",
+"d. c #dfdfdf",
+"bP c #e0e0e0",
+"i# c #e1e1e1",
+"bY c #e2e2e2",
+".K c #e3e3e3",
+"ee c #e4e4e4",
+"d3 c #e5e5e5",
+"ef c #e6e6e6",
+".p c #e6e9f6",
+"fV c #e7e7e7",
+"eY c #e8e8e8",
+".a c #e9e9e9",
+".q c #e9edf8",
+".V c #eaeaea",
+"## c #ebebeb",
+"Qt c #ececec",
+".w c #ededed",
+".x c #eeeeee",
+"#. c #efefef",
+".# c #f0f0f0",
+".9 c #f1f1f1",
+".I c #f2f2f2",
+".T c #f3f3f3",
+"ja c #f4f4f4",
+"i9 c #f5f5f5",
+"hB c #f6f6f6",
+".H c #f7f7f7",
+".G c #f8f8f8",
+"i. c #f9f9f9",
+"kg c #fafafa",
+"kf c #fbfbfb",
+".t c #fcfcfc",
+".s c #fdfdfd",
+"it c #fefefe",
+"iu c #ffffff",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt"};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/pngwithcompressedtext.png b/tests/benchmarks/gui/image/qimagereader/images/pngwithcompressedtext.png
new file mode 100644
index 0000000..01b2270
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/pngwithcompressedtext.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/pngwithtext.png b/tests/benchmarks/gui/image/qimagereader/images/pngwithtext.png
new file mode 100644
index 0000000..5d93799
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/pngwithtext.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
new file mode 100644
index 0000000..78868b0
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
new file mode 100644
index 0000000..107eab7
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
new file mode 100644
index 0000000..c314bae
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
new file mode 100644
index 0000000..4f820f6
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
new file mode 100644
index 0000000..ddeec38
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
new file mode 100644
index 0000000..50a3024
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/runners.ppm b/tests/benchmarks/gui/image/qimagereader/images/runners.ppm
new file mode 100644
index 0000000..fda1c97
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/runners.ppm differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/task210380.jpg b/tests/benchmarks/gui/image/qimagereader/images/task210380.jpg
new file mode 100644
index 0000000..fd045ea
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/task210380.jpg differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/teapot.ppm b/tests/benchmarks/gui/image/qimagereader/images/teapot.ppm
new file mode 100644
index 0000000..b8ab85f
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/teapot.ppm
@@ -0,0 +1,31 @@
+P6
+256 256
+255
+\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[7 eOLjQLmSMoTMnSMlRMhPL_9 \�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�nSMtVMzYN~[N~[N\N\O�\O�]O�]O�]O�]O�\O�\O}[NyYNtVM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�G-wXN}[N�]O�^O�_O�`O�`O�`O�`O�aO�aO�aO�aO�aO�aO�aO�aO�`O�_O�^O\N\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�aMLyYN�_O�aP�bP�cP�cP�dP�dP�dP�dP�dP�dP�dP�dP�dP�eP�eP�eP�eP�eP�dP�cP�_OpUM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�wXN�_O�dP�fP�gQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�fP�`O\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJiQL�bP�hQ�kQ�mR�nR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pS�qS�qS�rS�rS�rS�qS�oR�jQ�]O\KK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�fOLrUM�cP�lR�qS�tS�uT�wT�xT�xT�yT�yT�zT�zU�zU�zU�zU�zU�yT�xT�wT�tS�mR�aOhPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�a0	cNLqUM�\O�fQ�pS�wV�zV�|V�}V�V�VǀVɂW̅[Տe�w���ꪅĈg�qT�fQ{ZNYIK9\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�O1{G#�JkRMqUMtVN�iS�v\��d��b�zZ�vU�uT�sS�qS�nR�jQ�eP�^OrUM�Hh>!T4\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�G-V5wE"~I#�M%�U+�e7�l:�g2�b*�a(�`(�^(�])�^-�]1�S,qC$`9 R3G-\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@)J/i>!pA"tD"wF$yH&xH&tE$wE#yG%}M+�T4S5mE*Z7!K/B*;'\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��aO�oR�{UǀVυX<(F-a: e<!h>!j@#k@$h>"d<!c=$hD-fF2[<)K0@);'5$˂VǀV�|U_LKYIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��_O�xTɂW����֒k�|X�>�f-�^(�Z'�W&�T&�N>)F-J/b; g>#nD(jB&c<!b=%jH2_A/I0!<(8&5$�J�Y�S%8&;'?)E,<:HA=HE?IJAISFJYIKXIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��nR�}Uܘqʊe�vU�e,�V&�V�C
�@|>y<u:r9o7l6
+j5
+h4
+g3
+5$D,K/b; h>"wM1tK.e="a<#cA,U8&E-<(9&.!a0	b1	c1				
+
++3#@)46G<:HMCIXHK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�U*�vT�~X�{Y�k+�W&�N$|>u:p8k5
+f3
+a0	_/	].	[-	�I�\*�_(�LkRMmSMmSMnSMnSMD,R3W5mA"|O0|P1j?"c<!a=%Y7"N1F,;'NCJNCJNDJODJODJODJh>!a: X/K%���������&4$+2F=;HPEJL&\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��lR�xT�sT�d)�O$w;m6
+g3
+a0	Z-	\/T*Q(�H�m8kRMmSMnTMoTMpTMpUM15G15G05G04G04GpUMpTM5^9 d<!yF#�O+�N,rC#qB"pB#k?"a: Z7 6ODJPDJPEJQEJQEJREJREJREJRFJSFJSFJSFJSFJe<!X/����������������- '0F�qS�gQ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fP�tS�mR�R%�Bf3
+^/	V+Q(L&I$r9�TlRMnSM46G47G47G46G46G46G46G46G36G36G25G25G15G04G/4F.3F���oA"�N$�O%�S)�R)�T&�T%�R%�O$�J#xE#�PDJQEJREJRFJSFJTFJTFJTGJUGJUGJUGJUGJVGJVGJVGJVGJVGJVGJY6N'����������������t;�O$�dP�oR�dP\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��pS�kQ�S%x=[-	R)I$E"@ ����M�]'pTM68G78G78G78G78G78G78G78G78G68G67G67G57G57G47G36G36G25Gp98eOLpUMtVMn7�f+�i,�i*�i*�h*�B
�`O~[NqUM[-	�HUGJUGJVGJVGJVHJWHJWHJWHKWHKXHKXHKXHKXHKXHKXIKXIKXIKXIKXIKh>!Y0�����������W+].	s=�M$�dP�lR\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�oTM�oR�dPvE"V+K%A 99����F�['qUMtVM99H:9H:9H:9H:9H:9H:9H:9H:9H:9H99H99H99H99H99H99H:9H;:H>;HB=HPDJ\JKmSMwXN|ZN�y[ᦆ֘u�{W�yU��]��b�tU�nR�hQ�aO{ZNvWNtVMvXNwXNyYNzYN{ZN|ZN}[N}[N~[N~[N~[N~[N~[N~[N~[N}[N}[N{ZNzYNxXN�L$f3
+���I$L&P(U*\.	�J#\O�jQ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��kR�aOo9
L&C!:4���f3
+�X&pUMuWMwXNxXN<:H<:H<:H<:H<;H<;H<;H<;H=;H=;H=;H=;H>;H>;H?<H@<HA=HC>HG@ILBIREJ[JKcNLjQL�pR�uT�zU�~VȁW˂X֎c�sҎe�{V�vT�pS�kR�gQ�bP�_O�^O�]O�\O�\O�\O�\O�]O�]O�]O�]O�]O�]O�]O�]O�]O�]O�]O�\O�\O~\N}[N|ZNxXN�T%H$���G#K%Q(W+zG#nTM�iQ\�\�\�\�\�\�\�\�\�\�\�\�dOLrUMuWNwXNyYN{ZN}[N{ZNwXNsVM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��`O�cPnA"M&@ 8F#���m6
+�W&rVMvWNyYNzYN|ZN}[N}[N><H?<H?<H?<H?<H?<H@<H@<H@<HA=HA=HB=HC>HE?IG@IIAIKBIODJSFJWHK�hQ�lR�pR�b(�i*�n+�|7�|6�r,�q+�p-�l+�g)�b(�sS�pS�lR�iQ�gQ�eP�cP�aP�aO�`O�`O�_O�_O�_O�_O�_O�_O�_O�_O�_O�_O�^O�^O�^O�^O�]O�]O�\O~[N{ZN�T%���F#B!Y,L&U*~I#�^O�`O\�\�\�\�cNLrUMzYN\O�^O�`O�bP�cP�dP�eP�fP�fP�fQ�fQ�fQ�eP�cP�aP~[N�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fPsVM^/	C!7
�������Q%tVMwXNzYN|ZN}[N\N\O�\O�]O�]O�]O�]OA=HB=HB=HB>HC>HC>ID?IE?IF@IG@IIAIKBI�cP�dP�eP�gQ�iQ�lR�nR�\'�d)�i*�m+�s/�s/�o+�n+�l*�i*�g)�c(�_(�qS�oR�mR�kQ�iQ�gQ�fP�eP�dP�cP�bP�bP�bP�aP�aP�aO�aO�aO�`O�`O�`O�`O�`O�`O�_O�_O�^O�^O�]O\O}[N�Q��D"?D"K%_/	kRL�fPODJSFJ�_O�bP�cP�eP�fQ�gQ�iQ�jQ�kR�lR�mR�nR�nR�oR�oR�oR�nR�mR�lR�iQ�eP�_O\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�B+�ePI#L&90���y<�PxXN{ZN}[N\N�\O�]O�]O�^O�^O�^O�_O�_O�_O�_O�`O�`O�`O�`O�aO�aP�bP�bP�cP�dP�eP�fP�gQ�hQ�iQ�kR�mR�Z'�_(�e)�h)�k*�n,�n,�m*�l*�j*�f)�e)�c(�_(�]'�pR�nR�mR�kR�jQ�iQ�gQ�gQ�fP�eP�dP�dP�dP�cP�cP�cP�bP�bP�bP�bP�bP�aP�aP�aO�aO�`O�`O�_O�_O�^O�]O�_(�@���B!I$B!N'w=�eP`LKbNLeOL�kR�mR�nR�oR�pS�qS�rS�sS�tS�tS�tS�uS�uS�tS�tS�sS�rS�pS�mR�jQ�bPjQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��bPpTME"5����������M$tVM{ZN}[N\O�]O�^O�^O�_O�_O�_O�`O�`O�`O�`O�aO�aP�aP�bP�bP�bP�cP�cP�dP�dP�eP�fP�gQ�hQ�iQ�jQ�kR�lR�mR�Z'�`(�d)�g)�g�j*�j*�i*�i*�g)�d)�c(�a(�_(�\'�pR�oR�nR�mR�kR�jQ�iQ�iQ�hQ�gQ�gQ�fP�eP�eP�eP�dP�dP�dP�cP�cP�cP�cP�cP�bP�bP�bP�bP�aP�aO�`O�_O�^O\N�Q����@ <G#_LK�cPlSMnTMpUMsVM�tS�uT�vT�wT�wT�xT�xT�wT�wT�vT�uT�tS�sS�qS�pS�oR�nR�kR�hQ�bPeOL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�wXN\NJ%0������1�JvWN}[N\O�]O�^O�_O�_O�`O�`O�`O�aO�aP�aP�bP�bP�bP�bP�cP�cP�dP�dP�dP�eP�eP�fQ�gQ�gQ�hQ�iQ�jQ�kQ�lR�mR�Y&�]'�`(�c(�e)�c�\�\�\�]�]�^�a(�`(�^'�['�['�oR�nR�mR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�eP�eP�dP�dP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�]O�O������G#7F#uWM�^OwXNxXNzYN{ZN|ZN�yT�yT�xT�wT�uT�sS�pS�mR�jQ�gQ�dP�bP�aP�aP�bP�cP�eP�cP|ZN\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[JK�bP^/	101|>wXN}[N�]O�^O�_O�`O�`O�aO�aP�aP�bP�bP�bP�cP�cP�cP�cP�dP�dP�dP�eP�eP�fP�fQ�gQ�gQ�hQ�hQ�iQ�jQ�kQ�kR�lR�mR�Y&�]'�`(�b(�[�g�i�h�f�d�e�c�U�_(�]'�['�Z'�nR�nR�mR�mR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�gQ�fQ�fQ�fP�fP�eP�eP�eP�eP�eP�dP�dP�dP�cP�cP�bP�bP�`O�^O�D
�����4M&�dPnSM|[N|[O|[OzZOxXN�rS�nR�hQ�cP�^OvXNiQL^KKRFJMCJJAIKBISFJ\JKnSMxYN�_O�\OaMK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�B!qUM�aPC!/00a0	uWN}[N�]O�_O�`O�`O�aP�aP�bP�bP�cP�cP�cP�cP�dP�dP�dP�eP�eP�eP�fP�fQ�fQ�gQ�gQ�hQ�hQ�iQ�iQ�jQ�jQ�kR�lR�lR�X&�['�^'�`(�Z�d�f�i�g�d�c�c�a�_�T�\'�['�Z'�Y&�nR�mR�mR�lR�lR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�fP�eP�eP�eP�dP�dP�cP�bP�aO�^Ox<�������:�aP�]Oj8sVMmSMfOL^KKUGJIAIQEJ?<H*1F(
+
+	
+@%<-$G?@�pfdNLuWM\NdNL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�TFJvWN�aP./01�E}[N�]O�_O�`O�aP�bP�bP�cP�cP�cP�dP�dP�dP�eP�eP�eP�eP�fP�fQ�fQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�jQ�jQ�kQ�kR�lR�lR�Y&�\'�^'�^�b�c�e�i �g�c�b�a�`�^�]�X�['�Z'�Y&�mR�mR�mR�lR�lR�lR�kR�kQ�kQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�eP�eP�dP�cP�aP�O�������������`O�`OoTMQEJC>IeZY638* B\�\�\�\�\�,4	.G1!\TU��rsVM{ZN`MK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[JKyYN�bP/0�������N$�]O�_O�`O�bP�bP�cP�cP�dP�dP�dP�eP�eP�eP�fP�fP�fQ�fQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�jQ�jQ�kQ�kR�kR�lR�O�Z'�\'�^'�V�a�b�e�i!�f�b�a�`�_�]�\�Z�['�Z'�Y&�Q�mR�mR�mR�lR�lR�lR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fP�dP�cP�W&�������������dP�aPrUM
+ B\�\�\�\�\�\�\�\�\�\�%7!!C*F#P){dY�ze��p�\OgPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ`LKvWN�aPm6
+���X,uWM�]O�`O�bP�cP�dP�dP�dP�eP�eP�fP�fP�fQ�fQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�kQ�kQ�kR�lR�lR�Z'�\'�]'�_�`�a�b�e�i"�e�a�`�_�_�]�\�\�Y�Z'�Z'�Z'�mR�mR�mR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�fQ�dP�_Oq8����������gQ�`OuWM�T%\�\�\�\�\�\�\�\�\�\� B B!!T,c5�F�T3ț~Ɠq�^OfOL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XHK_LKsVM�`O�cP������	�S%�]O�bP�cP�dP�eP�eP�fP�fQ�fQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�kQ�kR�kR�lR�lR�lR�\'�]'�^'�V�`�a�b�f�i"�e�a�`�_�_�]�\�\�R�Z'�Z'�['�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�gQ�eP�Sq8�������aO�gQ�`OtVM�X&\�\�\�\�\�\�\�\�\�\� B B Bl@!{A�L$�Y'��a�fP�aO]KK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�ODJ[JKaMKqUM\O�cP�^O������vE"�]O�aP�dP�eP�fP�fQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�^'�^'�_(�W�a�a�c�g �i"�e�a�`�_�_�^�\�\�R�['�['�]'�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kR�kR�kR�kR�kQ�kQ�kQ�jQ�jQ�iQ�hQ�eP�W&M&���oTM�iQ�eP�_OtVMmSMdOL\�\�\�\�\�\�\�\�\� B B B�J�Z'�_(�kQ�iQ�`OSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�TFJ\JKcNLlRMzYN�`O�ePzZN���	�\N�`O�dP�fQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�lR�lR�mR�a(�`(�`(�[�a�b�d�h!�i"�d�a�`�_�_�^�]�]�S�\'�]'�_(�nR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kQ�iQ�ePt:�������kQ�hQ�cP�]OtVMlSMa2
\�\�\�\�\�\�\�\�\� B B
+$5 �`(�e)�nR�jQ�^OJAI\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XIK^KKdNLhPLuWM�]O�bP�fQ�eP
m6
+�`O�cP�fQ�hQ�hQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�g)�c(�c(�b(�V�c�e�i!�i!�d�b�`�`�_�_�^�Q�]'�_(�`(�f)�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�mR�mR�nR�mR�mR�mR�mR�kR�hQ�Ga0	�bP�mR�jQ�fQ�aP}[NrUMmSM�L$\�\�\�\�\�\�\�\� B B
#C, 8&H.Z7 �pR�jQ{ZN\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�QEJ[JK`LKdNLhQLqUM{ZN�_O�cP�gQ�hQ���
+�bP�eP�hQ�iQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�nR�j*�g)�e)�d)�d�X�g�h�e�c�b�b�b�U�`(�a(�a(�c(�i*�oR�oR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�mR�jQ�Q%Z-	�jQ�nR�lR�hQ�dP�_OuWMpTMnSMkRLa: \�\�\�\�\�\�\� B B&D2
@*S6#G@IPDJ�hQmSM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ]KKbMLeOLiQLlRMvWN\O�aO�eP�hQ�jQ�gQ�oTM�gQ�iQ�kQ�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�l*�l+�j+�g)�f)�e)�d)�e)�e)�e)�e)�f)�i*�s0�s.�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pR�pR�pR�pR�pS�pS�pS�qS�qS�qS�qS�pS�qS�pS�nR�lR�I�hQ�pR�oR�mR�iQ�eP�aP�\OsVMpTMnTMlRM�X)\�\�\�\�\�\�\� B%C)D$;J/[8"LBITGJYIKWHK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK_LKcNLgPLjQLlRMpUMzYN�^O�bP�eP�hQ�kQ�lR�fQ- �hQ�jQ�lR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pR�pR�p�y-�w-�w-�y.�{-�u�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�qS�qS�qS�qS�qS�qS�qS�qS�qS�rS�rS�rS�rS�rS�rS�rS�sS�rS�qS�oR�iQ�iQ�qS�qS�pR�mR�jQ�gQ�cP�_O{ZNtVMpUMoTMmSMjQL_9 \�\�\�\�\� B"C(D#*A$[<)d<!QEJWHKXHKD>I\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JKaMKeOLhPLkRLmSMoTMuWM}[N�_O�bP�eP�hQ�kR�mR�nR�kR!-E�kR�mR�nR�oR�pR�pR�pS�pS�pS�pS�pS�pS�pS�pR�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�sS�sS�sS�sS�tS�tS�tS�tS�tS�uS�tS�sS�rS�nR�oR�sS�sS�rS�pR�mR�jQ�gQ�dP�aO\OyYNuWMqUMoTMnSMkRLo8
\�\�\�\�\� B'D+E$(1J/jH1NCJUGJYIKUGJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XHK]KKbNLfOLiQLkRMmSMoTMqUMxXN\N�_O�bP�fP�hQ�kQ�mR�oR�pS�pR�hQ�mR�oR�pS�qS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�tS�tS�tS�uS�uS�uT�uT�uT�uT�uT�vT�wT�vT�vT�uT�tS�mR�tS�uT�uS�tS�rS�pR�mR�kQ�hQ�eP�aP�^O\N{ZNvXNqUMpTMnSMlRM�P%\�\�\�\� B#C*E$.E- .!G$Y:%d<"SFJYIKZIKNCJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�PDJZIK_LKdNLgPLjQLlRMnSMpTMqUMuWMyYN�\O�`O�cP�fP�hQ�jQ�mR�oR�qS�rS�rS�rS�mR��rS�sS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�sS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�uS�uS�uT�uT�vT�vT�vT�vT�vT�wT�wT�wT�wT�xT�xT�xT�yT�yU�xU�\'�qS�vT�wT�wT�vT�uT�tT�rS�oR�mR�kQ�hQ�eP�bP�`O�^O�\O|ZNxXNtVMpTMoTMmSMjQLh7\�\�\� B(D"-E*1F, 4#K)pL5PEJWHK[JKXHK:9H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�UGJ\JKaMLeOLhPLkRLmSMoTMpUMrVMvWNyYN|ZN�]O�`O�cP�eP�hQ�jQ�lR�nR�pS�qS�sS�tS�uS�tS�sS�mR^/	�vT�vT�vT�wT�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�wT�wT�wT�wT�wT�wT�wT�xT�xT�xT�xT�xT�xT�xT�yT�yT�zU�zU�{U�{V�|V�gQ�rS�wT�xT�yU�yU�zV�yV�xV�vU�tT�qS�oS�mR�jQ�hQ�eP�cP�bP�`O�_O�]O}[NyYNuWMpUMoTMmSMkRL}H#\�\�&D -E(1F/!2#8	W7"iA&UGJ[JK\JKREJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�MCIXIK^KKcNLfOLiQLkRMmSMoTMqUMsVMwXNzYN}[N�\O�^O�`O�bP�eP�gQ�jQ�kR�mR�oR�qS�rS�tS�uS�vT�vT�wT�wT�uT�sS�lR�_(�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�xT�xT�xT�xT�xT�xT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�zT�zT�zU�{U�{U�{U�|U�|U�}V�~V�WÀY�iQ�rS�wT�yT�zU�|V�}X��Z]��]��]�~[�zY�wW�tU�qS�nS�lR�jQ�gQ�fP�eP�cP�bP�`O�_O�]O~\NzZNvXNqUMoTMnSMlRMiQLg=!\�
+!C+E'0F.4F7%8%U/lG.SFJZIK]KKZIKB=H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�REJZJK`LKdNLgPLjQLlRMnSMpTMqUMtWMxXN{ZN~[N�]O�^O�`O�aO�bP�dP�gQ�iQ�kQ�lR�nR�pS�rS�sS�tT�uT�vT�wT�xT�yT�yT�yT�yT�yT�xT�vT�rS�nR�hQ�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�}U�}U�}U�}U�}U�}U�}U�~U�~U�~V�~V�VŀWƁX�a(�lR�rS�vT�yT�zU�|U�~V�XƂ[Ɇ_΋dӑjԓmԓnБlʌhĆd��_�{[�vW�sU�pS�nR�kR�iQ�hQ�gQ�fQ�eP�dP�bP�aO�_O�^O�\O|ZNxXNsVMpTMnTMmSMjQL�C B)D&/F-3F47G6%>"Y7 kA$YIK]KK^KKSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ\KKbMLeOLhPLkRLmSMnTMpTMrUMuWNyYN|ZN\N�]O�_O�`O�aP�bP�cP�eP�fP�hQ�jQ�lR�nR�oS�qT�sT�uU�vU�wV�xV�yV�yU�zU�zU�{U�{U�{U�|U�|U�|U�|U�|U�{U�{U�{U�zU�zT�yT�yT�xT�wT�vT�vT�vT�vT�wT�wT�wT�xT�yT�zT�zU�{U�{U�|U�|U�}U�VŀWǂYɄ\͈_ьdٔl�u�|쩂ſt명榁ޟ{՗sˎl†d�^�yZ�uW�qU�oS�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O}[NyYNuWMpTMoTMmSMkRLgPL&D#.E,3F46G;'<(D"iB(VGJ]KK`LK[JKB>H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^LKcNLfOLiQLkRMmSMoTMqUMsVMvXNzYN}[N�\O�^O�_O�`O�aP�cP�dP�eP�fQ�gQ�hQ�iQ�kR�mS�oT�rU�tW�wY�zZ�}\�]��^��^��^‚^\��Z�Y�X�~W�~W�~V�~V�~V�~V�~U�~U�~U�~U�U�U�V�V�V�V�VƀVƀVǀWǁWȂXɃZ˅[͇^ЊaӍdؒiܗn�t�z�����������������驅�~֘vˏmÇf��`�z[�vX�rU�pT�oS�nS�lR�kR�kR�jQ�iQ�hQ�fQ�eP�dP�cP�bP�`O�_O�]O~[NzYNvWNpTMoTMnSMkRMhQLo7,2F36G99HC+@ ]8 nA"\JK`ML_LKSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JK`LKdNLgPLjQLlRMnSMpTMqUMtVMwXNzZN}[N�]O�^O�_O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lR�mS�oU�rW�vZ�{]��a��fŊjˏnГqӕsՖsՖrՖqՔoӒmяjύg͊cˈaɆ^Ȅ\ǂ[ƁYŀXŀW�W�W�V�V�WŀWƀWǁXȂYɃ[ʅ\͇_ϊaҍeՑhٕmݙq�v�z�}꧀멃몄騃奀ߠ|ٛwӕȑmƉh��c�~^�yZ�vX�tW�sV�qU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fP�eP�cP�bP�aO�_O�^O\N{ZNwXNsVMoTMnSMlRMiQL~I#26G99G?<HA*E$	i@$ZIKaMLbML[JK;:H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�WHJ]KKbMLeOLhPLjRLlSMnTMpTMrUMuWMxXN{ZN~\N�]O�^O�`O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�kR�lS�mT�oU�rW�uZ�y]�~a��fŠl˒sԚzܡ�㧆諉뮋������묈訄�~ߞyڙt֕oҐjΌfˈbȅ_ƃ\ŁZĀY�X�W�~W�~W�~W�XÀXĀYŁZƃ\Dž^Ɇ`ˈb̊d͋f΍gΎiΎjΎj͎jˌiljgÆd��a�^�}]�|\�{[�yZ�xY�vX�tW�sV�qU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fP�eP�dP�bP�aO�_O�^O�\O|ZNxXNtVMpTMnSMmSMjQLgPL99G?<HG-E&b;!YIK`MLdOM`LKNCJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��lR�yT�~UʂXʃY�X�{W�tU�W'�[(�hQ�lR�cP�\OhQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^LKcNLfOLiQLkRLmSMoTMqUMrVMvWNyYN|ZN\N�]O�_O�`O�aP�bP�cP�dP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pU�sW�vZ�z]�b��gŠlɑsИy؞ޤ�㩊譍챐ﳑﳑ뭊穅⣀ݞzؘtғn΍iɉdƅ`Â]��[�~Y�}X�|W�|V�{V�{V�{V�{V�{V�|W�|W�}X�}Y�~Z�~Z�~Z�}[�}[�}[�~\�~\�~]�~]�~]�~]�}]�|\�z[�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O}[NyYNuWNpTMnTMmSMkRLhPL|H$D>IQ2P+XHK_LLfQOcNLXIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��qS�yT�~VΈ`遲ޜv��]�qS�L�G|>g3
+S)?*%.�hQ�hQ�eP�`OuWM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JK`LKdNLgPLjQLlRMnSMoTMqUMsVMwXNzYN}[N�\O�^O�_O�`O�aP�bP�dP�eP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pV�sX�vZ�z^�b��gËmʒsјz؟�ޤ�㩊譍ꯏ및ꯎ謋娇ं۞|֙wѓq̎lljgÅb��_�\�}Z�{X�zW�yV�yU�xU�xU�xT�xT�xU�xU�xU�yV�yV�yW�zW�{X�{Y�|Z�}[�}[�}\�~\�~]�~]�}]�|\�{\�z[�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�]O~[NzZNvWNrUMoTMmSMlRMiQLeOLJAIJ(h>!]KKfQOgQN_LKD>I\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��iQ�tS�yT�{U�YΌeרּ���՗u�|\�Z'�L�D
|>����������������eP�oR�qS�oR�mR�jQ�eP�^OhPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�WHJ\KKaMLeOLhPLjQLlRMnSMpTMqUMtVMwXNzZN}[N�]O�^O�_O�`O�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�kR�mS�nT�qV�sX�w[�{_��c��hČn˒tҙz؟�ޥ�㩉筍ꯎꯎꮍ竊䧆ߣ�۞|՘vГpˎkljfÅb��_�\�}Y�{X�zW�yV�xU�xU�xT�xT�xT�xU�xU�xU�xU�yV�yV�zW�zX�{Y�|Y�|Z�}[�}[�}\�}\�}\�}\�|\�{[�zZ�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�^O\N{ZNwXNsVMoTMnSMlRMiQLfOLJ(V.]KKePNkUQcNLQEJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��]O�mR�qS�rS�tS�vT�wT�xU�{WĆbғqךxʏo
+����������������K�rS�vT�wT�vT�uT�sS�qS�nR�kQ�gQ�`OuWNY,\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^KKbNLfOLhQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N�]O�^O�_O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�kR�mS�oT�qV�tX�w[�|_��d��iČn˓tҙz؟�ޥ�㩉笌鮎ꮎ魌檉㧅ߢ�ڝ{՗uϒpˍjƈf…b��^�\�|Y�{X�zV�yV�xU�xU�xT�xT�xT�xU�xU�xU�xU�yV�yV�yW�zW�{X�{Y�|Z�|Z�|[�}[�}\�}\�|\�|[�{[�zZ�xY�wX�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�jQ�iQ�hQ�gQ�fP�dP�cP�bP�aO�_O�^O�\O|ZNxXNtVMoTMnSMlRMjQLgPLzG#\JKcOMoXUgPMZIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fP�gQ�gQ�hQ�iQ�kQ�lR�nR�pR�qS�sS�tS������:"r<zYN�sS�yT�|U�~WƄ^ˊeˋgƈe��a�z[�tV�pS�mR�kQ�gQ�bPzYNkRL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�RFJZJK`LKcNLfPLiQLkRMmSMoTMqUMrVMvWNyYN|ZN\N�]O�^O�`O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lR�mS�oU�qV�tY�x\�|`��d��iōo˓uҙ{ٟ�ޥ�㩉笌鮍鮍謋婈⦄ޡٜzԗtϑoʌjƈe„a��^�~[�|Y�{X�zV�yV�xU�xU�xT�xT�xT�xT�xU�xU�xU�xV�yV�yW�zW�zX�{Y�{Y�|Z�|Z�|[�|[�|[�|[�{[�z[�yZ�xY�wX�vW�tW�sV�rU�pT�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�fP�eP�dP�bP�aP�`O�^O�]O}[NyYNuWNqUMnSMlSMkRLhPLcNLbNLpYVlUP`LK>;H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��jQ�`O{ZN�^'�^'�`(�e)�h)�k*�o+�b(�nR�yT�~UǁXҍd�w��詅ݟ}Ԙvȍm��e�}_�x[�y\�x[�tW�qT�mR�jQ�gQ�bP}[NlRM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ\JKaMKdNLgPLjQLlRMnSMpTMqUMsVMvXNzYN|[N\O�]O�_O�`O�aP�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lS�mS�oU�rW�uY�x\�|`��d��jōo̓uҚ{٠�ޥ�㩉欋譍譌竊婇᥃ݠ~؛yӖtΑoʌjňe„a��^�~[�|Y�{W�zV�yV�xU�xU�xT�xT�xT�xT�xU�xU�xU�xU�xV�yV�yW�zX�zX�{Y�{Z�{Z�|Z�|[�|[�{[�{[�zZ�yZ�xY�wX�uW�tV�sV�rU�pT�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O~[NzYNvWNrUMnSMmSMkRLiQLeOLoXUu]XdOLKBI\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�:9H\N�hQ�}\�uU�sT�tT�tS�qS�nR�nR�nR�lR�jQ�iQ�hQ�hQ�gQ�fQ�eP�eP�hQ�kR�mS�pU�tX�uY�sW�qU�mS�jQ�gQ�B�S%jQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�LBIXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMtVMwXNzYN}[N�\O�^O�_O�`O�aP�bP�cP�eP�fP�fQ�gQ�hQ�iR�kR�lS�nT�pU�rW�uY�y]�}`��e��jŎp̔vӚ{٠�ޤ�⨉櫋笌笋櫊䨆ंܟ~ךxҕsΐnɌiŇe��a��^�~[�|Y�{W�yV�yV�xU�xU�xT�wT�wT�wT�xT�xU�xU�xU�xV�yV�yW�zW�zX�zY�{Y�{Z�{Z�{Z�{Z�{Z�zZ�yZ�yY�xY�vX�uW�tV�sU�rU�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�_O�]O\N{ZNwXNsVMnSMmSMkRMiQLfOL_LKhQMUGJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� (6BFP>=DKHMqjk�trwf`~kc�nd�qe�se�te��{�w`�v[\N�_O�cP�fP�iQ�jR�lS�oT�qV�qV�oT�lR�iQ�^�`O�Q%hPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�QEJZIK_LKcNLfOLiQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N�]O�^O�_O�`O�aP�cP�dP�eP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pU�rW�uZ�y]�}a��e��kƎp̔vӚ{ٟ�ޤ�⨈媊櫋櫊婈⦅ߣ�۞}֚xѕr͐mȋićd��a��]�~[�|Y�zW�yV�yU�xU�xU�wT�wT�wT�wT�wT�xU�xU�xU�xU�xV�yV�yW�zX�zX�zY�zY�{Y�{Z�{Z�zZ�zZ�yY�xY�wX�vX�uW�tV�sU�rU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�]O\O|ZNxXNtVMoTMmSMlRMjQLgPLbML[JK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�%5 (6$/79CEEKjgkrc_��{�uf��{�w_��q�]O�`O�cP�fQ�hQ�jR�lR�nT�oT�nT�kR�hQ�dP�]'�Q%\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�UGJ[JK`MKdNLgPLiQLkRMmSMoTMqUMrUMuWNxXN{ZN~[N�]O�^O�_O�`O�bP�cP�dP�['�d)�gQ�hQ�iQ�jR�kR�lS�nT�pU�rW�vZ�y]�~a��f��kƎp̔vӚ{؟�ݤ�ᧇ䩉媊媉䨇᥄ޡ�ڝ|՘wДȑmȊhĆd��`��]�}[�|Y�zW�yV�xU�xU�xU�wT�wT�wT�wT�wT�wU�wU�xU�xU�xV�xV�yW�yW�yX�zX�zY�zY�zY�zY�zY�yY�yY�xY�wX�vW�uW�tV�sU�qU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�_O�^O�\O|[NxYNtWMpUMmSMlRMjQLgPLcNLA;=\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�#*6+.8;:AHEJmgjd\]�pe��}�xc�w^��p�^O�aP�eP�gQ�iQ�lR�mS�nT�mS�jR�gQ�h*�X&�M$\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�C+WHJ]KKaMLdOLgPLjQLlRMnSMoTMqUMrVMvWNyYN|ZN\N�]O�^O�_O�aO�bP�cP�Y&�_(�c(�gQ�hQ�iQ�jR�kR�lS�nT�pV�sX�vZ�z^�~b��f��kƎp̔vҚ{؟�ݣ�ই㩉䩉䩈⧆ःܠ؜{ԗvϓqˎlljgÆc��`�]�}Z�{Y�zW�yV�xU�xU�wU�wT�wT�wT�wT�wT�wT�wU�wU�xU�xV�xV�xV�yW�yW�yX�yX�yY�zY�yY�yY�yY�xY�wX�wX�vW�uV�tV�rU�qU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�_O�^O�\O}[NyYNuWNqUMmSMlRMjQLhPLdNL\1\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�+.775;ICFphh�zt�re��}�ya�vZ�]O�aP�eP�gQ�iQ�kR�lS�nT�lS�iQ�q.�b*�S%zG#\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�MCJXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMsVMvWNyYN|ZN\N�]O�^O�`O�aO�bP�U&�\'�a(�g)�r/�hQ�iQ�jR�kR�mS�nT�pV�sX�v[�z^�~b��f��kƎp̔vҙ{מܣ�আ⨈㨈㨇ᦅޣ�۟~כyӖuΒpʍkƉg…c��_�]�}Z�{X�zW�yV�xU�xU�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�xU�xV�xV�xW�yW�yW�yX�yX�yX�yY�yY�xX�xX�wX�vW�uW�tV�sV�rU�qT�pT�oS�nS�mR�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�`O�^O�]O}[NzYNvWNrUMmSMlRMjQLhQLeOL_LK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�,)/ZTVXON�uq�od��}�yb��s�]O�aP�eP�gQ�iQ�kR�lR�lS�kR�hQ�g*�\(�Q%`LK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� B B_LKcNLfOLiQLkRLmSMoTMpTMrUMtVMwXNzYN}[N\O�]O�_O�`O�aO�Q%�Y&�^'�b(�i*�{8�hQ�iQ�jR�kR�mS�nT�qV�sX�v[�z^�~b��f��kƎp̔vҙ{מۢ�ߥ�ᧇ⧇ᦆऄݢ�ڞ}֚xҕt͑oɌjňf…b��_�\�}Z�{X�zW�yV�xU�xU�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�xV�xV�xV�xW�xW�yW�yX�yX�xX�xX�xX�wX�wW�vW�uW�tV�sU�rU�qT�pT�oS�nS�mR�mR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�dP�cP�bP�aP�`O�^O�]O~[N{ZNvXNrVMnSMlRMjRLhQLeOLaML+O�+O�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�HFLXQRTJH~pm�la��}�zc��t�tT�aP�dP�gQ�iQ�jR�lR�lS�jR�|:�e*�V&�N$\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� B B`LKdNLgPLiQLkRMmSMoTMpUMrUMtVMwXNzYN}[N�\O�]O�_O�`O�aP�W&�['�_(�d)�l,݃@�t.�iQ�jR�kR�mS�oU�qV�sX�w[�z^�b��g��kƎp̔uљz֝~ڡ�ޤ�ॆআॅޣ�ܠ؝{ՙwєs̐nȌjňf��b��_�~\�|Z�{X�yW�yV�xU�wU�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�wU�wV�xV�xV�xW�xW�xW�xW�xX�xX�wX�wW�vW�uW�uV�tV�sU�rU�qT�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�hQ�gQ�fP�dP�cP�bP�aP�`O�^O�]O~[N{ZNwXNsVMoTMlRMjRLiQLfOLbML+O�+O�+O�+O�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�6./fZXeVRHAIZIKiQLuWM�tU�aO�dP�gQ�jQ�kR�lR�kR�iQ�n/�b,�R%rC"\�\�\�\�\�\�\�\�\�\�\�\�"Fx"Fx!Fx!Fx B B BdNLgPLjQLlRMmSMoTMqUMrUMtWMwXNzZN}[N�\O�^O�_O�`O�S%�X&�\'�a(�g+�s2�{9�j*�iQ�jR�kS�mS�oU�qV�sX�w[�z^�b��g��kƎp˓uИy՜}٠�ܢ�ޤ�ߤ�ޣ�ݡ�ڟ~כzӗvϓrˏmNjiće��a��^�~\�|Z�zX�yW�xV�xU�wU�wT�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�wU�wV�wV�xV�xW�xW�wW�wW�wW�wW�vW�vW�uV�tV�sU�sU�rT�qT�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�cP�bP�aP�`O�_O�]O~\N{ZNxXNsVMoTMlRMjRLiQLfPLbNL	+O�+O�+P�+P�+P�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@89dWT@<HE?IXHKiQLvWN�]O�bP�eP�hQ�jQ�lR�lR�kR�p+�f*�[)�O$\�\�\�\�\�\�\�\�:^�:^�:^�:^�"Fx"Fx"Fx B B B BeOLhPLjQLlRMnSMoTMqUMrUMuWMxXN{ZN~[N�\O�^O�_O�O$�V&�Z'�]'�d+�g+�}<�h*�hQ�iQ�jR�kS�mS�oU�qV�tY�w[�z_�b��g��kōpʒtЗyԛ}؟�ۡ�ݣ�ݣ�ܢ�۠؝|՚yҖuΒpʎlƊhÆd��a��^�~[�|Y�zX�yW�xV�xU�wU�wT�wT�wT�vT�vT�vT�vT�vT�vT�vT�wU�wU�wU�wU�wV�wV�wV�wV�wW�wW�wW�vW�vW�uV�uV�tV�sU�rU�qT�qT�pS�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNxXNtVMpTMlRMjRLiQLgPLcNL\JK+P�+P�+P�+P�+P�+P�,P�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�D::hZUC>IIAI\JKlRMyYN�^O�cP�gQ�iQ�kR�lR�kR�iR�t3�d-�S%I#\�\�\�:^�:^�:^�:^�:^�:^�:^�:^�:^�"Fx"Fx B B B BeOLhPLjRLlSMnSMpTMqUMrVMuWMxXN{ZN~[N�]O�^O�_O�S%�W&�['�^(�k2�i+�{:�gQ�hQ�iQ�jR�kS�mT�oU�qV�tY�w[�{_�b��f��kčoʒtϖxӚ|ם~٠�ۡ�ۡ�۠�ٞ~כ{ԘwДs̐oɌkʼng…c��`�]�}[�{Y�zX�yV�xV�wU�wU�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�wU�wU�wV�wV�wV�wV�vV�vV�vV�uV�uV�tV�tU�sU�rU�qT�pT�pS�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNxYNtWMpTMlRMjRLiQLgPLcNL_LK+P�+P�+P�,P�,P�,P�,P�,P�Nr�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�]QNl\VG@IMCI_LKoTM|ZN�`O�dP�gQ�jQ�kR�lR�kR�hQ�h*�^,�P%X3:_�:_�:_�:_�:_�:_�:_�:_�:^�:^�:^�:^�"Fx B B B BfOLiQLkRLmSMnTMpTMqUMrVMuWNxYN{ZN~[N�]O�^O�P%�U&�X&�['�`)�n4�n/�j*�gQ�hQ�iQ�jR�kS�mT�oU�qW�tY�w[�z^�~b��f��jČoɑsΕwҙ{՜}؞ٟ�ڟ�ٞ~ל|՚yҗvϓrˏnNjjĈf��c��`�]�}[�{Y�zW�xV�xU�wU�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�vU�vU�vV�vV�vV�vV�vV�uV�uV�uV�tU�sU�rU�rT�qT�pT�oS�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNyYNuWMpUMlRMjQLiQLgPLdNL_LK,P�,P�,P�,P�,P�Nr�Nr�Nr�Nr�Nr�Nr�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�aSOD>IJAIQEJbNLrUM~[N�aO�eP�hQ�jQ�kR�lR�jR�s0�e,�T&�K$;_�;_�;_�;_�;_�;_�;_�:_�:_�:_�:_�:_�:_� B B B BgPLiQLkRLmSMoTMpTMqUMsVMuWNxYN{ZN~[N�]O�M$�S%�V&�Y&�\'�e-�j/�z:�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�tY�w[�z^�~b��f��jÌnȐr͔vјyԛ|֝~מ~؞~ם}՛{ӘxЕt͒qʎmƊiÇe��b��_�~\�|Z�{Y�yW�xV�xU�wU�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�vU�vU�vU�vV�vV�uV�uV�uV�tU�sU�sU�rU�qT�qT�pS�oS�nS�nR�mR�lR�kR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\O|ZNyYNuWMqUMlSMjQLhQLfPLdNL_LK,P�,P�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�dUOG@IMCITFJeOLtWM�]O�bP�fP�iQ�kR�lR�kR�iQ�j,�c/�P%[JK;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_� B B B BgPLiQLkRMmSMoTMpTMqUMsVMvWNyYN{ZN~[N|H#�Q%�T%�W&�Z'�]'�m5�f*�v5�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�sY�v[�z^�~b��e��i‹nǏq˓uϖxҙzԛ|֜}֜|՛{ԙyіvϓs̐oȍlʼnh†e��a��_�~\�|Z�zX�yW�xV�wU�wU�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�uU�uU�uU�uU�uU�tU�tU�tU�sU�rU�rT�qT�pT�pS�oS�nS�mR�mR�lR�kR�jR�jQ�iQ�hQ�gQ�fQ�fP�eP�cP�bP�aP�`O�_O�^O\O|ZNyYNuWNqUMmSMjQLhQLfPLdNL`LKNr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�2#TB<JBIODJXHKiQLxXN�^O�cP�gQ�jQ�lR�lR�kR�o,�d+�U'�L$;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_� B B B BgPLiQLkRMmSMoTMpUMrUMsVMtVMyYN|ZN~[N�O$�S%�U&�X&�['�_(�s;�h+�`�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�sY�v[�z^�}a��e��i��mŎpʒt͕wЗyҙzӚ{Ԛzәyїwϔt͒qʏnNjjĈg��d��a�^�}\�{Z�zX�yW�xV�wU�wU�vT�vT�vT�vT�vT�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uU�uU�uU�uU�uU�uU�tU�tU�tU�sU�sU�rT�qT�qT�pS�oS�oS�nS�mR�mR�lR�kR�jQ�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\O|ZNyYNuWNqUMmSMiQLhPLfOLdNL`LKkPANr�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�#Gy#GybSNP<3NCJRFJ^LKoTM}[N�aO�eP�iQ�kQ�lR�lR�iQ�m-�g2�Q%]8 ;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�!2 B B B BgPLjQLlRMmSMoTMpUMrUMsVMtVMyYN|ZN�M$�Q%�T%�V&�Y&�['�b+�q8�r3�eP�fQ�gQ�hQ�iR�jR�kS�mT�oU�qV�sY�v[�y^�}a��d��h��lčoȐr˓uΖwЗxјyјxїwϕu͒rːpȍlŊi‡f��c��`�~]�|[�{Y�yX�xW�wV�wU�vU�vT�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uU�uU�tU�tU�tU�tU�sU�sT�rT�rT�qT�qT�pS�oS�oS�nS�mR�lR�lR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\N|ZNyYNvWNqUMmSMiQLhPLfOLdNL`LKZIKNs�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�#Gy#Gy#Gy#Gy#GyhVPKBIQEJUGJeOLtVM�]O�bP�gQ�jQ�lR�lR�kR�gQ�d*�X)�N$;`�;`�;`�;`�;`�;`�;`�"Gy"Gy"Gy!2 B B B B BjQLlRMnSMoTMpUMrUMsVMtVMyYN�K$�P%�S%�U&�W&�Y&�\'�i2�h.�x8�eP�fQ�gQ�hQ�iQ�jR�kS�mT�nU�qV�sX�v[�y]�|`��d��g��kËnƏqʒs̔uΕvϖwϖvΕu͓sˑqɎnƋkÈh��e��b��_�~]�|[�zY�yW�xV�wV�wU�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�sT�sT�rT�rT�qT�qT�pS�pS�oS�nS�nR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\N|ZNyYNuWNqUMmSMiQLgPLfOLcNL`MKZIKOs�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GyYE<NDJTFJYIKkRLyYN�_O�dP�hQ�kQ�lR�lR�jR�o.�h2�R%c; <`�<`�#Gy#Gy#Gy#Gy"Gy"Gy"Gy* B B B B BjQLlRMnSMoTMqUMrUMsVMtVM~I#�N$�R%�T%�V&�X&�Z'�^(�q9�e*�j+�eP�fQ�gQ�hQ�iQ�jR�kS�mT�nU�pV�sX�uZ�x]�|`�c��f��j��mōpȐrʒt̓u͔u͓t̒sˑqɏonjlĊi‡f��d��a�^�}\�{Z�zX�xW�wV�wU�vU�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�tT�tT�sT�sT�sT�rT�rT�rT�qT�pS�pS�oS�oS�nS�mR�mR�lR�kR�kR�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�`O�_O�]O\N|ZNyYNuWNqUMmSMhQLgPLeOLcNL`LKZIK,P�,P�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��v��v��=a�#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GygUOT>3REJVGJ`LKpTM}[N�aO�eP�iQ�kR�lR�lR�hQ�e)�^.�P%^8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMrUMsVMxF#�M$�Q%�S%�U&�W&�Y&�['�a+�s;�g+�dP�eP�fQ�gQ�hQ�iQ�jR�kS�lS�nU�pV�rX�uZ�x]�{_�~b��e��i��kÌnƎpȐrʑs˒sˑrʐqɏoǍmŋkÈh��e��b��`�~^�|[�{Z�yX�xW�wV�vU�vU�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�tT�tT�sT�sT�sT�sT�rT�rT�rT�qT�qS�pS�pS�oS�nS�nR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�cP�bP�aO�`O�^O�]O\N|ZNxXNuWMqUMmSMhPLgPLeOLcNL`LKZIK,P�,P�,Q�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��v��v��v��w��w��=a�=a�=a�#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GymYPODJUGJXIKeOLtWM�]O�cP�gQ�jQ�lR�mR�kR�p.�g0�T&�N$]8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMrUMv>�L$�P%�R%�T%�V&�X&�Z'�\'�f0�m5�q3�dP�eP�fQ�gQ�gQ�hQ�jR�kS�lS�nT�pV�rX�tZ�w\�z_�}a��d��g��j��lČnƎpǏqȏqȏpǎoƍmŋkÉi��g��d��a�_�}]�|[�zY�yX�xW�wV�vU�vU�uT�uT�uT�uT�uT�uT�uS�uS�tS�tS�tS�tS�tT�tT�tT�tT�tT�sT�sT�sT�sT�sT�rT�rT�rT�qT�qS�pS�pS�oS�oS�nS�mR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aO�`O�^O�]O~\N{ZNxXNuWMqUMiQLgPLfOLeOLbNL_LKZIK,Q�,Q�,Q�,Q�,Q�Ot�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��w��w��w��w��w��w��w��w��=a�=a�=a�=a�=a�#Gz#Gz#Gz#Gz#Gz#Gz#GzgUOS=2RFJWHJ[JKlRMzYN�`O�eP�iQ�kR�mR�lR�iQ�h*�h4�R%�N$^9 [JK#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMI#�L$�O$�Q%�S%�U&�W&�X&�Z'�](�l5�f,�t5�dP�eP�fP�fQ�gQ�hQ�iR�kR�lS�mT�oV�qW�tY�v[�y^�|a�c��f��h��k��lÌnōnōoōnŌmċk‰i��g��e��c��`�~^�|\�{Z�yY�xW�wV�vU�vU�uT�uT�uT�uT�uT�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sT�sT�sT�sT�rT�rT�rT�rS�qS�qS�pS�pS�oS�oS�nS�nR�mR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�eP�dP�cP�bP�`O�_O�^O�]O~[N{ZNxXNtVMqUMhPLgPLfOLdNLbML_LKbE6,Q�,Q�,Q�,Q�-Q�-Q�-Q�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�w��w��w��w��w��w��w��w��w��w��w��w��w��w��=a�=a�=a�=a�=a�=a�=a�#Hz#Gz#Gz#Gz#Gz#Gz#GzmYPPDJUGJYIKbMLqUM\N�bP�fQ�jQ�lR�mR�lR�p,�e+�\+�R%�N$b; ]8 [7 XHKO+N1L/L/L/K/K/e<!�J#{=�J$�L$�N$�O$�P%�S%�T%�V&�X&�Y&�['�`+�m7�d)�h*�dP�dP�eP�fQ�gQ�hQ�iR�jR�lS�mT�oU�qW�sY�v[�x]�{`�~b��e��g��i��j��lŠlËlÊlŠk��i��h��f��c��a�_�}]�{[�zY�xX�wW�wV�vU�uU�uT�uT�uT�tT�tT�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�^O�]O~[NzZNwXNtVMpTMgPLfOLeOLcNLaMK^KKbE6,Q�-Q�-Q�-Q�-Q�-Q�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@d�@d�@d�w��w��w��w��w��w��w��w��w��w��w��x��x��=b�=b�=b�=b�=b�=b�=b�=b�#Hz#Hz#Hz#Hz=a�=a�gUOS=2RFJWHKZJKiQLvXN�^O�cP�hQ�kR�mR�mR�kR�m-�j3�W(�R%�O$e<!c; a: ^9 ]8 [7 X6X6X6�K$�M$�_(yF#�U&�N$�N$�O$�P%�R%�S%�U&�W&�X&�Z'�\(�d.�j2�f*�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�mT�nU�pW�sX�uZ�w\�z_�}a�c��e��g��i��j��j��j��j��i��g��f��d��b��`�~^�|\�zZ�yY�xX�wW�vV�uU�uU�uT�tT�tT�tT�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�gQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�\O}[NzYNwXNsVMoTMgPLfOLdOLcNL`MK]KKaE6-Q�-Q�-Q�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@d�@d�@d�@e�@e�@e�@e�@e�w��w��w��x��x��x��x��x��x��x��x��>b�>b�>b�>b�>b�>b�>b�>b�=b�=b�=b�=b�=b�=b�=b�=b�YE<bJ>UGJYIK_LKnSM|ZN�`O�eP�iQ�lR�mR�mR�iQ�g*�j4�W'�R%�Q%h>!g=!f=!d<!c; b; `: �N$�`(�b(�d)�f)|H#�X&�X&�W&�Q%�R%�T%�V&�W&�Y&�['�](�d.�e,�n1�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�pV�rX�tZ�v\�y^�{`�~b��d��e��g��h��h��h��h��g��f��d��b��a�~_�|]�{[�yZ�xX�wW�vV�vU�uU�uT�tT�tT�tT�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aO�`O�^O�]O\O}[NyYNvWNrVMoTMfOLeOLdNLbML`LK\KKaE6Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Qu�Qu�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�-R�-R�.R�.R�~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@e�@e�@e�@e�@e�@e�@e�@e�Ae�Ae�Ae�x��x��x��x��x��x��x��x��x��x��>b�>b�>b�>b�>b�>b�>b�$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�>b�gVOS=2RFJWHK[JKeOLsVM�]O�bP�gQ�jQ�lR�mR�lR�r/�g*�h2�U&�S%�R%�Q%�Q%�P%�['�]'�`(�b(�d)�f)�g)�i*�j*I#�Z'�Z'�Z'�Z'�Z'�['�['�\'�]'�_)�d,�d)�q3�bP�cP�dP�eP�fQ�fQ�gQ�hQ�iR�kS�lS�mU�oV�qW�sY�u[�x]�z^�|`�~b��d��e��f��f��f��f��e��d��b��a�~_�}^�{\�zZ�yY�wX�wW�vV�uU�uU�tT�tT�tT�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�pS�pS�pS�oS�oS�oR�nR�nR�mR�mR�lR�kR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�cP�bP�`O�_O�^O�]O\N|ZNyYNuWNrUMnSMjQLdNLcNLaMK_LK[JK`D6Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�-R�-R�.R�.R�Rv�Rv�Rv�~��~��~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@e�@e�@e�@e�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�x��x��x��x��x��x��x��y��y��>b�>b�>b�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�>b�YD<W?3UGJYIK\JKjRLxXN�_O�dP�hQ�kR�mR�mR�kR�p.�h,�f/�[(�X&�X&�Z'�\'�^'�`(�c(�e)�g)�i*�j*�l*�m*�o+�\'�\'�\'�\'�\'�]'�]'�^'�_(�a)�c*�e*�i+�bP�cP�dP�dP�eP�fQ�gQ�hQ�iR�jR�kS�mT�nU�pW�rX�tZ�v[�x]�z_�|`�~b��c��d��d��d��d��c��b�a�~_�}^�{\�z[�yZ�xX�wW�vV�uU�uU�tT�tT�tT�tT�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�pS�oS�oS�oR�nR�nR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O~[N{ZNxXNtWMqUMmSMiQLcNLbML`LK^KKbR_D5Pt�Pt�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�-R�-R�-R�-R�-R�-R�-R�.R�.R�Rv�Rv�Rv�Rv�Rv�~��~��~��~��~��~��~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�y��y��y��y��y��y��y��Ae�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�Q@:R<2fL@WHJZJKaMKoTM|ZN�`O�eP�iQ�lR�mR�mR�jR�o-�i-�h0�`)�]'�]'�`(�b(�d)�f)�h)�j*�k*�m*�n+�p+�q+�r,�]'�]'�]'�^'�_(�_(�`(�`(�b)�c)�i.�`O�aP�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�oV�qW�sY�uZ�w\�y]�{_�|`�}a�~b�b�b�b�a�~`�}_�|^�{]�z[�yZ�xY�wX�vW�uV�uU�tU�tT�tT�sT�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�pS�oS�oR�oR�nR�nR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�dP�cP�bP�aO�`O�_O�]O\O}[NzYNwXNtVMpTMlRMhPLcNLaMK_LK]KKbR]C5Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�-R�-R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv���������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�y��y��y��Af�Af�Af�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�WD<V>3TFJXHK[JKfOLsVM�]O�bP�gQ�jQ�lR�mR�mR�kR�m,�i,�j/�d+�c)�c(�e)�f)�h*�j*�l*�n+�o+�q+�r+�s,�t,�K$�^(�_(�_(�`(�a(�a)�b)�d*�f+�m1�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�kS�lT�mT�oV�pW�rX�tY�v[�w\�y]�z^�{_�|`�}`�}`�}`�}_�|^�{^�{\�z[�yZ�xY�wX�vW�uV�tU�tU�tT�sT�sT�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�pS�pS�pS�oS�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�jQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O\N|ZNyYNvWNsVMoTMkRLgPLbML`LK^KK\JK~aR[B5Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Af�Af�Af�y��Af�Af�Af�Af�Af�Bf�$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c�>c�>b�>b�O?:[E<dK?UGJYIK\KKjRLxXN�^O�cP�hQ�kQ�lR�mR�mR�t.�q.�j+�k-�i,�h*�h*�j*�k*�l*�n+�p+�q+�s,�t,�u,�v,�w,�`(�`(�a)�b)�c*�d+�f+�g,�k0�m1�`O�aO�bP�cP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�oV�qW�sX�tZ�v[�w\�y]�z^�z^�{^�{^�{^�{^�z]�z\�y[�xZ�wY�vX�vW�uV�tV�tU�sT�sT�sT�sT�sS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�pS�pS�pS�pS�oR�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�aP�`O�_O�^O�\O~[N{ZNxYNuWNqUMmSMiQLeOLaMK_LK]KKlN>|aRZA5-Q�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rw���������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Af�Af�Af�Af�Af�y��y��y��z��z��z��Bf�Bf�Bf�Bf�Bf�$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c�>c�>c�>c�VC<T=3}cVWHJZIKaMLoTM|ZN�`O�eP�hQ�kQ�lR�nR�nS�t.�v2�m+�l+�l+�l+�m+�n+�o+�p+�r+�s,�u,�u,�v,�w-�x-�y-�b*�c+�e,�g-�i/�k0�m2�p4�i-�_O�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jS�lT�mT�nU�pV�qW�sY�tZ�v[�w[�x\�y]�y]�y]�y]�y\�y\�x[�xZ�wY�vX�uW�uW�tV�tU�sU�sT�sT�rT�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pR�oR�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�jQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtVMpTMlRMhPLdNL`LK^KKmO?kN>^C6W@5-Q�-Q�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�Rv�Rw�Rw�Rw��������ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Af�Af�Af�Af�Af�Af�Af�Af�z��z��z��z��z��z��z��z��z��z��z��Bf�Bf�Bf�Bf�$I{$I{$I{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$HzYE<W?4�gYXHKZJKfOLsVM\N�aO�eP�iQ�kR�mR�nS�nS�mS�|7�s/�o,�o,�p+�q+�r,�s,�t,�v,�w-�x-�y-�z.�{/�|/�e-�g/�j1�m3�o5�o5�r7�n3�c)�_O�`O�aP�bP�cP�dP�dP�eQ�fQ�gQ�hQ�iR�jR�kS�lT�mU�oV�pV�qW�sX�tY�uZ�v[�w[�w[�w[�w[�w[�wZ�wZ�vY�vX�uW�tW�tV�sU�sU�sT�rT�rT�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�dP�dP�cP�bP�aO�`O�_O�^O�]O~[N{ZNyYNvWNsVMoTMkRLgPLbML^LKnP?lO?iM>\C6T>4-Q�-Q�-Q�-R�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Rw�Sw���ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Af�Af�Bf�Bf�Bf�z��z��z��z��z��z��z��z��z��z��z��z��z��z��z��Bf�Bf�Bf�$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$H{$H{$H{$H{?c�?c�?c�?c�$H{$H{$H{SB;R<2zbVUGJXIK[JK[JKuWN�\O�aP�fP�iQ�lR�mR�nS�nS�pT��9�9�w2�w0�v/�v.�x/�z0�z0�|1�~2�3�5�6�8�8�m4�o7�q8�u;�s9�s8�j0�]O�^O�_O�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jS�kS�lT�nU�oV�pV�qW�rX�sY�tY�uY�uZ�uZ�vZ�vY�uY�uX�uX�tW�tV�sV�sU�sU�rT�rT�rT�rS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pR�pR�oR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtVMqUMnSMiQLeOL`LK]KKmP?kN?|aSZA5P<4-R�-R�-R�-R�-R�-R�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R���׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀��Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�\�\�Bf�z��z��z��z��z��z��z��z��z��z��z��z��z��{��{��{��{��{��{��Bf�Bf�Bf�%I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{?c�?c�?c�?c�?c�?c�?c�?c�?c�$H{$H{$H{jXP^H=}dXUGJXHKZIKkRLwXN�]O�bP�fQ�iQ�kR�mR�nS�pT�qU�rU�;�>�?�<�9�;�=��=��>�A��D��H��K��E�r:�t;�t;�t<�t:�n4�f,�]O�^O�_O�`O�aO�bP�cP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lS�mT�nU�oV�pV�qW�rW�rX�sX�tX�tX�tX�tX�tX�tW�sW�sV�sV�rU�rU�rT�qT�qT�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pS�pS�pR�pR�oR�oR�oR�oR�nR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�cP�cP�bP�aO�`O�_O�^O�]O~[N{ZNyYNvWNsVMpTMlRMgPLcNL�gU�eUlO?~bT{`SW@5-R�-R�-R�-R�-R�-R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Ei�Ei�Ei���׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�z��z��z��z��z��z��z��z��{��{��{��{��{��{��{��{��{��{��{��{��{��Bg�Bg�Bg�%I{%I{%I{%I{%I{%I{%I{@d�?d�?d�?d�?d�?d�?d�?d�?d�?c�?c�?c�?c�$I{$I{L=:WD<v_T�gZuZLWHKYIKmSMyYN�^O�cP�fQ�iQ�kQ�mR�nS�pT�qT�sV�wX�8��C��I��J��N��R��T��U��V��Z��_��S�u=�t=�s;�q9�o6�h.�a)�\O�]O�_O�_O�`O�aP�bP�cP�dP�eP�eQ�fQ�gQ�hR�iR�jR�kS�lT�mT�nU�oU�pV�pV�qW�rW�rW�rW�rW�rW�rW�rV�rV�rU�rU�qU�qT�qT�qT�qS�qS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pR�pR�pR�oR�oR�oR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtWMqUMnSMjQLeOL�iV�fU�eUcT|bTcK>`KA-R�-R�-R�.R�.R�.R�.R�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Ei�Ei�Ei�Ei�Ei�Ei���ׁ�ׁ�ׁ�ׁ�ׁ�ׁ��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�z��z��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��|��Cg�Cg�%I{%I{%I{@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�?d�?d�?d�?d�?d�?d�$I{$I{dUPYE<xaVlSGw]OVHJbMLoTMzYN�^O�vR�eP�hQ�jQ�mR�nR�pS�qT�uV�yZ�{[�^��a��cʌiΏlђn��X��_��a��S��U�q:�n7�k3�h0�c*�^(\N�]O�^O�_O�`O�aO�bP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jR�kS�lS�mT�mT�nU�oU�pV�pV�qV�qV�qV�qV�qV�qU�qU�qU�qT�qT�pT�pT�pS�pS�pS�pS�pS�pS�pS�pS�pS�pR�pR�pR�pR�pR�pR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�dP�cP�bP�aP�`O�_O�^O�]O�\O~[N{ZNyYNvWNrVMoTMlRM|WBwUA�hV�fVlO@~cTzaTaI>XG@-R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.S�Ei�Ei�Ei�Ej�Ej�Ej�Ej�Ej���ׁ�ׁ��Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ei�Ei�Ei�\�\�\�\�\�\�{��{��{��{��{��{��{��{��{��{��{��{��{��{��|��|��|��|��|��|��|��|��|��Cg�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�?d�$I{$I{RA;P<3zcXnVI�uh�~pdNLpUM��w�zZ�vS�eP�gQ�jQ�lR�mR�oS�pT�uV�vW�xY�|\��_ÆdƉgȊhʌi̎kΏl��R�F�k4�g1�d-�b+�_(�Z'}[N�\O�]O�^O�_O�`O�aP�bP�cP�cP�dP�eQ�fQ�gQ�gQ�hR�iR�jR�kS�kS�lT�mT�nT�nU�oU�oU�pU�pU�pU�pU�pU�pT�pT�pT�pT�pS�pS�oS�oS�oS�oS�oS�oS�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fP�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O~\N|[NzYNwXNtVMpUM�pY�oXzWBuUB�gVlP@jO@|bUx`TcMB3!.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�.R�.R�.R�.R�.R�.R�.R�.R�.R�.S�.S�.S�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej���؁��Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�\�\�\�\�Bg�{��{��{��{��{��{��{��|��|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�|��@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{;0/SB;R=4fODpXL�xk��r�vb��z��x�{[Ïl�dP�gQ�iQ�jQ�lR�nR�pS�qT�rT�tU�wW�{Z�}\�|\�}\�~]�]�}+�~6�d.�a+�_)�^(�\'zYN|ZN~\N�]O�^O�_O�_O�`O�aP�bP�cP�dP�dP�eQ�fQ�gQ�gQ�hR�iR�jR�jS�kS�lS�lT�mT�mT�nT�nT�nT�oT�oT�oT�oT�oT�oS�oS�oS�oS�oS�oS�oS�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O\N}[NzZNxXNuWMrUM�rZ�pY|XCxVCsTBmQAkOA~cVzaU`I>\IARv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�.R�.R�.R�.R�.R�.S�.S�.S�.S�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���؂�؂�؂�؂�؂��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�\�\�Bg�{��|��|��|��|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�}��@e�@e�@e�@e�@e�@e�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{<1/J82^I@gQFqYN�xl��s�vc�{d��y�{\�wUči�eP�gQ�hQ�kQ�mR�mR�nR�oS�pS�rT�tU�tU�tU�tU�tU�tU�t.�L&�](�['�Z'�Y&xYN{ZN}[N\N�]O�^O�_O�`O�aO�aP�bP�cP�dP�eP�eQ�fQ�gQ�gQ�hR�iR�iR�jR�kS�kS�lS�lS�mS�mS�mS�nS�nS�nS�nS�nS�nS�nS�nS�nS�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kR�kQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O\O}[N{ZNxYNvWNsVM�s[�rZ~ZD�nY�kYqSBkPAiOA|cVbK?\G>NB?Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�.S�.S�.S�.S�.S�.S�Fj�Fj�Fj�Fj�Fj�Fj���؂�؂�؂�؂�؂�؂�؂�؂�؂�؂��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Cg�Cg�|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�}��Ae�Ae�Ae�@e�@e�@e�@e�@e�@e�@e�@e�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{@d�@d�<1/H72\I@ePGpYN�xm��t�vc�{e��z��u‘p�wU�uQ�eP�gQ�iQ�jQ�jQ�lR�mR�nR�nR�oR�oR�oR�oR�oR�gb; �Z'�Y&�W&�S%vXNyYN{ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�dP�dP�eQ�fQ�gQ�gQ�hQ�iR�iR�jR�jR�kS�kS�lS�lS�lS�lS�mS�mS�mS�mS�mS�mR�mR�mR�mR�mR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O}[N{ZNyYNvXNtVM�u\�]E�[E�oZ�mZ�kYnRBjOB}cVdL@`I?XGARv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�.S�.S�.S�.S�/S�Fj�Fj�Fj�Fj���ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ق��Cg�Cg�|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�}��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�@e�@e�@e�@e�@e�@e�@e�@d�%I{%I{%I{%I{%I{@d�@d�<10F61o]Vye]�oe�xm��u�ud�{e�}d�|a��t��pÏl�uQ�dP�eP�fQ�gQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ_9 �X&�V&�T%rUMuWMwXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�bP�bP�cP�dP�dP�eQ�fQ�fQ�gQ�hQ�hR�iR�iR�jR�jR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O~[N{ZNyYNwXNtVMrUM�^F�]F�q\�o[�lZqTD�fX}dWeMAbK@O=6NB@Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�/S�/S�Fj�Fj�Fj���ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ك�ك�ك��Cg�Cg�Cg�}��}��}��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�%I{%I{%I{%I{%I{%I{%I{%I{%I{@d�@d�E:9D61m\Vwe]lXOuaX�k_��z��|�|e�|c�|`�z]�yXnÏlĎkĎi�dP�eP�fP�fP�fP�fP�fP�fP�fP[7 �U&�T%�P%pTMsVMuWMxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�bP�bP�cP�dP�dP�eP�eQ�fQ�gQ�gQ�hQ�hQ�iR�iR�jR�jR�jR�kR�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O~[N|ZNyYNwXNuWMrUM�`G�^G�r]|ZFxXFtVE�gY~eY{cXbLA[H?REA.R�.R�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx���ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ك�ك�ك�ك�ك��Cg�Cg�}��}��Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�%I|%I|%I|%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{@e�@e�B99B51k[Vud]iWPr_Wye]��y��|��}�|e�|c��w�{^�z\�yZ��p�xW�wU�wU�wU�wUÎlÎlŽlŽlkD(�S%�P%nSMoTMqUMsVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�cP�dP�eP�eQ�fQ�fQ�gQ�gQ�hQ�hQ�iQ�iR�iR�jR�jR�jR�jR�kR�kR�kR�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kQ�kQ�kQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�cP�cP�bP�aP�aO�`O�_O�^O�]O�\O~[N|ZNyYNwXNuWMrUM�w_�v_�t^~\GzYGvWF�j[fZ|dYybX\I@VGB5/2.R�.R�.R�.R�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Fk�Fk�Fk�Fk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��Fk�Fk�Fk�Fk�Fk�Fk�Fk�Fk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��}��}��}��}��Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{%I{%I{%I{%I{@e�@e�<68?31gYVpa\bRMjYTq`Z�j`��z��}��}��|��{��z��x��w�z^��t��s��s��s��r��r��r��r�h2�O$�L$mSMnSMnTMoTMtVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�cP�dP�dP�eP�eQ�fQ�fQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ�kR�kR�kR�kR�kR�kR�kR�kR�kR�kQ�kQ�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�bP�bP�aP�`O�`O�_O�^O�]O�\O~[N|ZNyYNwXNtWM�z`�y`�w`�u_�]I|[HwXG�l\�i[}eZycYr_WjZU;23.R�.R�.R�.R�.R�.R�.R�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��Gk�Gk�Gk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��}��}��}��}��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh���Af�%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{Ae�Ae�Ae�?89H=<gZXpb_aSPi[Vud]��x��{�uf�wf�yf��|��|��{��y��y�zb�zb�za�ya�ya�ya^=%�V)kRLlRMmSMmSMnSMoTMoTMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�`O�aP�bP�bP�cP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�cP�bP�aP�aO�`O�_O�^O�^O�]O\O}[N{ZNyYNwXNtVM�{b�za�xa�wa�_J~\IyZItWH�j]g[dNDr`Xj[VOCB.R�.R�.R�.R�.R�.R�.R�.R�.S�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��~��~��~��~��~��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�������Dh�%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|Ae�Ae�Ae�4285.0G??g\[XMK`TRg[Y�yt{h`�lb�od�re�uf�vf�wf�we�we��{��{��{��z��zbD.�T+�\EkRLkRMlRMmSMnSMnSMsVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�_O�`O�aO�aP�bP�cP�cP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fQ�fP�eP�eP�dP�dP�cP�cP�bP�bP�aP�`O�`O�_O�^O�]O�]O\N}[N{ZNyYNvXNtVM�fL�dL�cL�bL�vb�ta�r`�o_pVHkSGcOE]KDj[WNCB���.R�.R�.R�.R�.R�.S�.S�.S�.S�.S�.S�Sx�Sx�Sx�Sx�Tx�Tx�Tx�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��~��~��~��~��~��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh���������������Di�&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|Ae�Ae�Ae�-*.3-0G@Ae\]jabs`Ssjk|qo�vrtd_{ha�lc�mc�mc�nc�nc��y��y��y��y\A.~ZE�[F�]G�^GkRLlRMlSMmSMqUMsVMuWNwXNyYN{ZN}[N\O�]O�]O�^O�_O�`O�`O�aP�aP�bP�cP�cP�dP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fQ�fP�eP�eP�eP�dP�dP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O\O~[N|ZNzYNxXNvWNsVM�gN�fM�dM�cM�wc�ub�sb�parWIkSHbOF]KEj\X_UT@<?.R�.R�.R�.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�Tx�Tx�Tx�/S�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��~��~��~��~��~��~����Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Di�Di����������������ր�ր�ր��Ei�Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|('.,*/>:?YUY`QGfVLudXjeitlm{po|qp}rp~rpsqsq�tq�r_=1+xJ)�o[~[F�\G�^H�_I�`IkRLlRMnSMpTMrVMuWMwXNyYN{ZN}[N~\N�\O�]O�^O�_O�_O�`O�`O�aP�bP�bP�cP�cP�cP�dP�dP�eP�eP�eP�fP�fQ�fQ�fQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�eP�eP�eP�dP�dP�dP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O�\O~\N}[N{ZNyYNwXNuWM�iO�hO�gO�eO�ze�yd�wd�tc�rbtYKjTIaOG[KFj]Y^UU?;@.R�.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ�ۅ�ۅ������������������Dh�Dh�Dh�Dh�Di�Di�Di�Di�Di��������ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��Ei�Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|Af�Ae�Ae�%J|%J|%J|%I|%I|%I|%I|���#-#%.()1MEAQIEUMI]SL]TM=4.1+(=.#6,&5( 1%"�lY�n[�p\�r]�]H�_I�`J�wa�ybkRLmSMpTMrUMtVMvWNxXNzYN|ZN}[N\N�]O�]O�^O�_O�_O�`O�aO�aP�aP�bP�bP�cP�cP�dP�dP�dP�eP�eP�eP�eP�fP�fP�fQ�fQ�fQ�fQ�fQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fQ�fQ�fP�fP�eP�eP�eP�eP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O�]O\O}[N|ZNzYNxXNvWN��g��g��g�hP�fP�|f�zf�xe�vd�scsYLiTK_NHYKFh\Z]UV=;@.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�/S�/S�/S�/S�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ������������������Di�Di�Di�Di�Di�Di��ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�׀�׀�׀��Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Af�Af�Af�Af�Af�%J|%J|%J|%J|%J|%J|%I|%I|%I|,
+,!.! "`E6�iY�lZ�o\�q]�s^�^J�va�wb�yc�zd�{e�}foTMqUMsVMuWNwXNyYN{ZN|ZN~[N\O�]O�]O�^O�_O�_O�`O�`O�aO�aP�bP�bP�cP�cP�cP�dP�dP�dP�dP�eP�eP�eP�eP�eP�eP�eP�eP�fP�fP�fP�fP�fP�fP�fP�eP�eP�eP�eP�eP�eP�eP�dP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�`O�_O�_O�^O�]O�]O\O~[N|[N{ZNyYNwXN��i��i��i��i��h�hR�fQ�dQ�bP�wfx]O�pdkbtd_m`]OEDG?A;:@.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�/S�Gl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܅�܅��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܅��������������������Ei���ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�׀�׀�׀�׀�׀�׀��Bg�Bg�Bg�Bg�Bg�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Af�Af�%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|���
+,YA5jPBpSD�l[�o]�q^�t`�_K�wb�yc�ze�{f�}g�h��i�lSrVMtWMvWNxXNyYN{ZN|[N~[N\O�]O�]O�^O�_O�_O�`O�`O�`O�aP�aP�bP�bP�bP�cP�cP�cP�cP�dP�dP�dP�dP�dP�dP�dP�dP�eP�eP�eP�eP�eP�dP�dP�dP�dP�dP�dP�dP�cP�cP�cP�cP�bP�bP�bP�aP�aO�`O�`O�`O�_O�^O�^O�]O�]O\O~[N|[N{ZNyYNxXN��j��j��j��j��j��j�hS�gS�eR�cR|`Q�sf�oe}jcrd`k_]LCDC=@,,3(4F(4F.S�.S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty����Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl����Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Ch�Ch��ր�ր�ր�ր��Ei�Ei�Ei���ր�ր�ր�ր�ր�ր�׀�׀�׀��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|#5H71O;3V?4iOBoSDsVF�o]{[I^K�`L�bN�dO�{f�}g�~h��j�kT�mU�oV�qW�rWwXNxXNzYN{ZN}[N~[N\O�]O�]O�^O�^O�_O�_O�`O�`O�`O�aO�aP�aP�bP�bP�bP�bP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�bP�bP�bP�bP�aP�aP�aO�`O�`O�_O�_O�_O�^O�^O�]O�\O\N~[N|ZN{ZNyYN�oT�oT�oT�nT��l��l��l�jU�iT�hT�fT�cS�vi�rg�nfyidqdah^^HBD?<@)+3OZkMYk(5F(5F(5F/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Ty�Uy���܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Dh�Dh�Dh�Ch�&K}&K}&K}&K}&K}&K}Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|&J|&J|&J|&J|&J|Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|A99N?;L:2T>4gNBlRD�k\�n^z[J~^L�aN�cO�dP�fQ�gR�hT�jU�lV�nW�pX�rX�sY��q��q��r��r��r��s�z[�z[�z[�{[�{[�{ZœrŒqŒqŒpŒpőo�yV�xV�xU�wT�wT�aP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�aP�aP�aP�aP�aO�aO�`O�`O�`O�_O�_O�^O�^O�^O�]O�]O�\O~\N}[N|ZNzYN�pT�pU�pU�pU�oV�oV�nV�mV�lV�kV�jV�hV�fU~cU�uj�qh~mfugdkaad\^E@D98?$(2minffm^blV^lMYk(5F(5F/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy���܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|Ae�Ae�;GY<68I=:I82Q=4XA6~fZ�j\�m^�p`|]L�`N�cP�eQ�gS�j��l��m��n�oX�qY�rZ�t[��r��s��s��t��t��t�z]�{]�{]�{\�{\�{\�{[ēsērĒrĒqĒpđp�yWĐoÐnÏmÏlŽlŽk��k�aO�aO�aO�aO�aO�aO�aO�`O�`O�`O�`O�`O�`O�_O�_O�_O�_O�^O�^O�]O�]O�]O\O~\N}[N|ZN��l��l��m�qV�qV�qV�pW�pW�oW��n��n��n��n��n�~n�eW�xl�tk�piykfodcf_`JDG@>C*,5$1MYk�tr~tstmolinadmX_lNZkMZkTx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy���݆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm���݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J}&J}&J}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Af�Af�Af�Af�;GY;GY;GY1'!D:9N?;N;3]I?zdY�h[�l^�oa�sc�ue�bQ�dR�fT�l��m��n��o��p��q��r��s�v]�w]��u��u��u��u��v�{^�{^�|^�|]�|]�{\�{\�{[�{[�zZ�zZ�yY�yX�xXonn��m��m�uT�uS�tS�tS�tR�sR�sQ�_O�_O�_O�^O�^O�^O�^O�^O�]O�]O�]O�rS�rS�rS��k��l��l��m��m��m��n��n�qW�qX�qX��o��o��p��p��p��p�p�}o{cXv`Vp]U}nishfhaba\_DAF::B$)4�MYkMYkMYk�tc�tq\QPPIKFDI;>H/8GMZkTx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy���݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm�Hm�Hm�Im�Im�Im�Im�Im���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�&K}&K}&K}&K}&J}&J}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;GY;GY;GY;GY;,#I=:H82YF?^JA|e[�j]�n`�qc�te�wg�yi�|k�~l��n��o��p��q��s��s�u]�v^�w^�x_�y_�z_�z_�{_��w��w��v��v��v“u“u“t�{\�{\�z[�zZ�yZ�yY�xX��p��o�wW�vV�vV�uU�uU�uT�tT��l��k��k��k��k��k��k�sT�rT�rT�rT�rT�rU�rU�rV��n��n��n��o��o��o��p��p�qY��q��q��r��r��r��r��q�gZ{dYvaXp^WiYU`TRVNOb]aEBH<<D36@MYkMYkMYkMYkMZk-.1W>+[NL^SQWNNKFJ?AI2:HTx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Im�Im�Im�Im���݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Ch�&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HY;GY3("D::B41RB=YG@wcZ}g\�k_�nb�rd�ug}aR�dT�gV�iX�kY��q��r��s��t�p^�q^�w`�x`�y`�z`�za�{a��x��x��w��w��w��v��v��v��u��u��t��s��s��r��r��q��q��p��p��o��o�vW��n��n��n��n��n��n��m�tV�sV�sV�sV�sV�sW�sW�sX�sX��p��p��p�sY�sY�rZ�r[�r\�q\�p]��t��t��s��s�h\{e[vbYo^XhZV`USXPQNJMECJRS[47A+((MYkMYkMYkMZk(5F(5F(5FOHJT=+YML_SRZQQMGJABI2:H/T�Uy�Uy�Uy�Uy�Uy�Uy���݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ��'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HY>DM>DM;HY89<:+#9&B52I94ZHAxd[}g^�k`�nc�rey_R}bT�eV�gX�iY�k[�l\�n]�o^��v��v�va�wa�xa�yb�zb�{b�{a��x��x�|a�|a�|`�{`�{_�{_�{^�z^��u��t��t��s��s��r��r�wZ�wZ�vY�vY�vY�uX�uX�uX�uX��p��p��p��p��p��p��p��q��q�tZ�t[�s\�s\�s]�r]�r^�q^�p^�o^�n^�l^�j^h]{f\ub[n^YgZW_UTWPQOKOEEKST]JNY>=?JJIMYkMYk(5F(5F(5F(5F(5F)5G)5GK=4S<*XMLbWVYPPLGJ@AI/T�/T�Uy�Uy�Uy���އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ��'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|&J|&J|&J|&J|Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HYCIR>DMCIR;HYCIR.$0"8&?*G/V=+w[F{g^�kanXMs\Px_S{bU~dW�fY�hZ�j\�l]�m^��v��w��x��y��y��z��z��z��z��z�{b�{b�{b�{b�{a�{a�{`�{`�z_�z_�z^��u�y]�y]�x]�x\�w\�w[�w[�v[�v[�v[�v[��r��r��r��s��s��s��s��t��u��u�t^�s_�s_�r_�r`�q`�p`��w��v��v��u�~twd]sb[l^ZeYW]TUUORLJOYYaRU^JOZ>>@!$)RXaMYk39B-3<-3<(5F)5G)5G)5G)5G)5GFDJK9*^K=YONg\\TLMIFJ:>I0T�0T�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�In�In�In�In�In�In���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈��In�In�In�In�In���߈�߈�߈�߈�߈��'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Di�Di�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J}&J}&J}&J}&J|&J|&J|&J|&J|Bg�Bg�Bg�Bg�Bg�Bf�Bf�<HZ<HZ<HZ<HZ;HY;HYCIR>EM>EMCIR;HY;HYCIRCIR)6&8&@*H0I1!\B0}_JhTKjM8q[Pt]Sw`U{cW~eY�g[�i\�k^�m_��v��w��x��y��z��z��{��{��{��{��{�zd�zd�zc�zc�zc��y��y��y��x��x��x��w��w��w��w�w_�w_�w_��v��v��v��v��w��w��w��w��w��w��x��x��x��x��x��x��x��x��w��v�~v�|t�ys�vrh\YcXX[TUSNRIHOUXaNS^JFE>>A')+"%(4:C(5F(5F3:B3:B-3<-3<)5G)5G)5G)5G)5G)5GE:4O:*TKLbXWcZZPIKDCJIm�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈��In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn���߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߉�߉�߉�߉�߉��Jn���߉�߉�߉�߈�߈�߈�߈��'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J|&J|&J|Cg�Cg�Cg�Bg�Bg�Bg�<HZ<HZ<HZ<HZ<HZMS\CIR>EMCIRCIRCIR888DGNCJRCIRBBB(0 8&<)G0M5"X@0z^K�bF�kUlXPp[Rs^TvaVzcX}fZg\�i]��u��v��w��x��y��z��z��{��{�ve�ve�we�we��|��|��{��{��{��{��{��{��z��z��z��z��z��y�vb�vb�vb�ub�ub�uc�tc�tc�sb�sc�rc�qc��y��y��y��x��x��w�w�|u�yt�vs~sqyooslmVQTOLR[\dQU`KHHAAD:<@68; &�Z`i-4<%');AJ4:C4:C4:C-4<)5G)5G)5G)5G)6G)6G@84H8-N?5YPQmccoghd`dIn�In�In�In�In�In���߈�߈�߈�߈�߈�߈�߈�߈�߈��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��Jn�Jn�Jn���߉�߉�߉�߉�߉�߉��'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei�Ei�Ei�Ei�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Ch�Ch�Ch�&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J}Cg�Cg�Cg�Cg�<IZ<IZ<HZ<HZ<HZ<HZ?EN?ENCJRCJRCJRCJRCJRUU\CJRCJRBDG''''''(. 9(:(B-O8'kUFt[I�hQyic}le�og�rj�tl�wn�yp�zq�|s|g]~h_�j`�ka�la�ob�pc�qd�rd�rd�se�te�te�ue��|��|��|��|��|��|��|��|�ue�ud�ud�td�td�sd�sd�rd�rd�qd�qd�pc�oc�nc��y��y��x�~w�}w�{v�yu�vs}srxopqknkgkdbhGGOVYcPLLBCF;>B9;>68;����Z`iZ`iMZk)5G4:C-4<4:C4:C-4<;BJ)5G)6G)6G)6G)6G)6GC6-L;.leg�{{ypqhbeVYcJn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉�߉��������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn����������������'L~'L~'L~'L~'L~'L~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}Cg�Cg�Cg�<IZ<IZ<IZ<IZ<IZ<IZ?ENDJSDJSDJS?EN?EN?EN<HZ04?'.6'.6&(+'''''',)1#7&;)M8)S;+mVG�dKseawhc{kfnh�pj�rl�tm�votaZvc[wd]yf^zg_{h`|i`~ja�kb�lb�mc�nc�od�pd�pd�pd�pd�pe��{�pe�pe�pe�pe�pd�od�od�nd�md�mc�lckc}jc|jbyhb�}w�{w�yv�wu�ut}sryqqunpojmhfkKKRDFOD><535=AG=?D?AD<?B&(+"$'����������KRZTZcMZkKOVRYaSYb.4=.4=4:C.4=4:C)6G)6G)6G)6G)6G)6GWMFaRGhbe{su�}}kde_^dJn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�������������������������������������������������Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�������������Fj�Fj�Fj�Fj�Fj�'L~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}Cg�>==<IZ<IZ<IZ<IZ<IZMT\DJS?ENDJS?EN?EN?EN")1")1C5+//3(.7&),'''''''''"""
., 7(8'A1&F4(L8*oXIw]Jpdasfcvhexkg{mi~oj�qll\Xn^Yp`Zpa[qa\rb]rc^sc^sd_ue`wf`xgayhayhayhb�x�y�y�y�y�y�y�~ywgbvfateasd`qd`pc`nb_la_�ut|ssxqrunpZUXVRWROUMMSHIRIC@967-/3'+0(*-ACF?AD;=@#%(������������JMPU[dSYbKPVW]fY`hSYbSYb.4=4;C4:C.4=)6G)6G)6GCPaCPaCPaFED]PGdaesmo���mefb_dJn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn����Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Ko�������������������������������������Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�������Fj�Fj���ك�ك�ك�ڃ�ڃ�ڃ�ڃ��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}@K[=IZ<IZ<IZ<IZ<IZNT]DJS?ENDJS#)2#)2#)2#)2#)2'.6A4+028(.7'),)))######"""6$nP?
.+>1(B3)B2&F4'E4)gTGlXJs^OzcTzaPqfethgvjhbVTcWUdXVeYWfZXg[Yh\Zi]Zi][j^\�us�ususts~tt~tt}tt|st{stut~tt|sszrsyqrwpquoqsmpqloXTXTQWPOULLSSJEA<:=99757335./2113)+.'),)+.8:="(���3@Q���������������JMPV\eT[cNZlNZlZ`iZ`iZ`iZ`iSYbY`h4;C.4=)6GCPaCPaCPaCPaCPaEQbZOGa_emhk���nfgeaeJn�Jn�Jn�Jn�Jn�Jn����������������Jo�Jo�Jo�Jo�Jo�Jo�Jo�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko������ኮኮኮኮኮኮ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Ej�Ei�Ei�Ei�Ei�'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}Di�Di�Di�Di�Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}$.>=I[=I[<IZ<IZ<IZ?FN'.6#)2#)2#)2#)2#)2#)2(.7#)2,=@<A348)/8"$'"$'######""""	kF+;(
"6*#5*">2)>0&A2'C3(I8-^OFbRHfUJjXMq^RwcVzfYfRDfQCdN@zdTqijrjksklrklrklrklqjmpjmpjmojmojmnimmimkhliflscYm`Xg\VbYT^VRE>;A<:>98:77645:873220/0,-/)+.*,/#%( &������15;5BS������������������KKKJMP]dlU[dNZlNZlZ`iTZcZaiZaiZ`iZ`iSZb���LS[V]eDPbDPbDPbDPbDPbDPbWMF^^diei����rkeaeJo�Jo�Jo�Jo����������������������������Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ኯኯኯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ڃ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ۄ��Gk�'L~'L~'L~'L~'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Di�Di�Di�Di�Di�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}%/> ,>=I[=I[ ,> ,>#)2(.7#)2(.7#)2#)2#)2#)2(.7(.7(.767@D>A214$+3#%("$'###""""""&&&888888cB*}\I@!%+%!5*$:/(;0)<1*>3+@4+>1(bUKN@6OA6L=3QB8M?4_RKaTLbUMcVNcVNcVObVOaVOaUO`UO_UO^UO^TO\SOYRNWPNUOMWPKYSOWRN;63953:76755333,/2'),%(+"%(!'			���"&,KXi04:������������������JMP]_b^emU[dNZlNZlT[cU[dU[dU[d[aj���������������W]fDPbDPbDPbDPbDPbDPb�nS��w�|m����qjKo�Ko�Ko������������ኮኮኮኮኮኯኯኯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��Gk�Gk�Gk�Gk�Gk�Gk�'L~'L~'L~'L~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Di�Di�'K}'K}'K}'K}Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}*2? ->=I[=I[ ,> ,> ,>#)2#)2#)2(.7(.7#)2#)2(.7(.7(.7(.7/28:79G@A<89',4#%(#%(######""""""8888888887'vS:�jW;)�
+
&3#.$-% .% .& /&!,#,#@70A71XNHXNHWNHWNHZRLYQLYQLXQLWQLWPLUOLSNLQMKOLJMJJ0//.-.,,-&(+"(!'			���15;6CT37=������������������������MMMKMP^ad_enY`hNZlNZlU\dV\e���������������������������������DQbDQbDQbDQbDQbMUc����yl��|�oiKo���ኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp���⋯⋯⋯�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ڄ�ڄ�ڄ�ڄ�ڄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۅ�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}HO\=J[=J[=J[ -> ,> ,>(.7#)2#)2(.7(.7(.7#)2(.7(.7(/7(/7)/8/28114H7,99@.05&,5$&)$$$######"""(((8888888888888884"nO9�gX�jZE/ (�-"

+%' %$#" ! !$


						���48>7CU:GX���������������������������JJJLLLKMPagp_enNZlLPV������������������������������������������������DQbDQbDQbDQbNVc�uo�rjѼ������ዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⋰⋰⋰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gk�Gk�Gk�Gl�Gl�Gl���܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}Dh�Dh�Dh�IP\=J[=J[=J[=J[ -> ->(.7#)2#)2(.7(.7(.7#)2(.7(/7(/7)/8)/8)/803966:E?AC>A856,07%'*%')$$$######(((DDDBBB8888888880 cF1w]O�cS{`QS;+57'


* 															��	
	;?E7CU;HY=I[���������������������������������JJJMMMKMPacfbhq������������������������������������������������������������������EQcHScNVd������ȵ������ዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⋰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅��Gl�Gl���܅�܅�܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇��Dh�Dh�Dh�Dh�=J[=J[=J[=J[=J[=J[ ->(/7#)2#)2(.7(.7(.7#*2(/7)/8)/8)/8)/8)08*0903:56:88@KBB=;@348*08&(+'(*%%%$$$(((EEE(((&&&���">-"bF3oXMs[Ow]Py^P�qbpXMdH5R<,Q;, &%%#'-"'-&3DS_qP\nR_p>J\?K]<AG������������������������������������������%%%DDDACF��������������������������������������������������������������������������������������������������⋯⋯⋰⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅�܅�܅�܅�܅�܅�܅��Gl�Gl���܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇��Dh�Dh�=J[=J[=J[=J[=J[=J[=J[(/739B#)2(.7(/7(/7#*2$*3)/8)/8)/8)08*09+19(-5*.5/16437D>AG@B::@66:-29'),)'%BBBFFFEEE)))))))))&&&���������������																					������������������������������������������@@@FFFACFZ\_[ajagp������������������������������������������������������������������������EQcGRcKTdPWd��������⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌰�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq���㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆��Hl�Hl�Hl�Hl�Hl���܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇��Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�ށ��>J\>J\=J[=J[=J[=J[FLU39B#*2(/7)/7)/8$*3$*3$*3)/8)08*09*09*19',5(-5*.6.17338@<=G@BH@BXW]UUXLPWFHKDFHKKKHHH+++%%%%%%$$$###!!!!!!777777777777777777777AAAFFFACFACF\^aeltbhqDQbDQbDQb������������������������������������������������������������ERcERcERcERcHScLUdRXd|nj��⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌰㌱㌱㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hl�Hl�Hl�Hl�Hl���݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ށ�����������>J\=J[=J[FLUFLU(/7(/7*08*08%+3$*3$+3$+3*09*09*19&,5&,5'-6).6*/7-18NPURRVXUVc]^f^_[X]\XYTUZLQYKMPFHJ)))(((&&&%%%%%%$$$$$$###!!!!!!!!!777777777BBBEEEACGADGFIL\ckZ`iTZcDQbDQbDQbagpbiqcircir������������������������������������������������Y`hY_hERcERcERcGSdJTdNVdTYeLp�Lp���㌰㌰㌰㌱㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq���㍱㍱㍱䍱䍱䍱䍱䍱䍱䍱䍱䍱䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm���އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ށ��������������������FLUFLUFLU)/8+08+08&+3&+3%+4%+4%+4*19+1:&,5'-5'-6(.6FLTHMTINUKOVOQWSTXYWX`[^lbac]_f_\a_aY\aRX_,.1*,.*+-***((('''&&&%%%%%%$$$$$$$$$###!!!!!!!!!!!!!!!%%%%%%%%%%%%"""""""""KKKJJJFFFGIL]_b^dm\bkV]eDQbEQcEQcEQccirdjsdksektdjsdjscir���������������������������������������[ajZ`iOU^ERcERcFRdFRdITdLUdPWeVZeLp�Lq�Lq�Lq���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱䍱䍱䍱䍱䍱䍲䍲䍲�Mq���䍲䍲䍲䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr���܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�އ��Hm�Hm�Hm���އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ށ��������������������������������-18,18',3',4',4&,4%,4+1:,2:'-5DJSEKSEKTFLTFLUHMUINVKOWLPWQSYTUZWWZpjje^`offb\_h`]eaaCCG8;A27?-/2+-/.+)******)))((('''&&&&&&%%%%%%$$$$$$$$$$$$$$$$$$######???EEEEEEEEE((((((###&&&%%%HJMHJMHJMHJM_en]dlZ`i_enEQcEQcEQcEQcbhqektflufluflufluektektdksdjscjr������������������������������\ckQW`[ajZaiOU^FRdFRdFRdHSdKUdNVeRXeX\fLq�Mq�Mq�Mq�Mq���㍱㍱㍱㍱㍱䍱䍱䍱䍱䍲䍲䍲䍲䍲䍲䍲䍲䎲䎲䎲䎲䎲�Mr�Mr�Mr�Mr�Mr���䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲厲厲厲厲厲厲厲厲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ��Hm�Hm�Hm�Hm�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ނ�����������������������������������PT[KOVJOV(-4(-4'-5'-5JOXEKSEKSEKTFLTFLTGMUGMUHNVIOWKPWLQXMRYPTZTV[\]a_^asljd^azporjkE@CLEBIEFEDG29A28A17@135,.1+-0+,/./1..0'),)))++++++++++++***FFFFFFACFACFEEEACFACF���JLOJLOKQZ_en]clY_hU[dEQcEQcEQcEQcEQcagp[aj\bk\bkgnvgnvgmvgmvfluflueltektdksdjscjrcir���������������TZcSYbRYaRXaQW`[bj[ajZ`iFSdFSdGSdJTdLVePXeTZfZ]fMq�Mq�Mq�Mq�Mq�Mq�Mq���䍲䍲䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���厲厲厲厳厳厳厳厳厳厳厳厳厳厳厳厳厳厳厳右右右右右右右�Nr�Nr�Nr�Nr�Nr���右冪܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈�߈�߈�߈�߂��������������������������������������LPVLPWKPW���������������FLTFLTFLUGMUGMUHMVHNVINWIOWKPXLQYMRYNSZTX`X[a[]b]^c__ccacib`JDGi__aYYPJLD@C=;AKEDTQR@?A>>A;<A17@06?/6>/5>.4=-4<IOXHOWMS\������������������������QX`EQcEQcEQcEQcEQcEQc`fo[bj\bk]cl]dl^dm^dm]dlhnwhnwgnvgmvgmvfluflueltektdksdjscircir������V\eU[d_fn^emSYbRXaQX`[bjPV_OV^FSdGSdITeLVeNWeRYfW[f\^gMq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲厲厲厲厲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右右右右右右右右右右右右右右右右右右右右右右右�Ns���右右右�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm���އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߉�߂�����������������������������������������������������������������������������������������JPXJPXKQYQW_RW_SX`TY`UZaW[bZ]c\^c^_dCDHDDHTRSWQO@=BNHKbYZ^VWUNPMGJFAEgcgcaf���������������������������������������������EQc`go[aj]cl]cl^dm^em_en_en_en_en^em^dm^dmioxhnwhnwgnvgmvgmvfluflueltektdjsdjscir���W]fagp`go`fo_enSYbRXa\ck[bj[ajFSdGSdITeKUeNWeQXfTZfY]g``gMq�Mq�Mr�Mr�Mr�Mr�Mr�Mr�Nr���厲厲厲厲厳厳厳厳厳厳右右�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns���右右右右右揳揳揳揳揳揳揳揳揳揳揳揳援援援援援援援援�Os�Os���援援�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm���އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈�߈�߈�߈�߉�߉�߉�߉�߉�߉�߉�߉�߂��������������������������������PRWOQWTW\���������������������������������������������������������������������������������������`dkbek^af_ag`bgabgiko_en^emhnw������������������������������������������������������`fo`fo`fo`fo`fo`fo`fo_fn_fn_en_en^em^dm^dmioxhowhnwgnvgmvgmvflufluektekt������������ahpagp`foTZcSYbRYa\ck\bkPV_GSeITeKUeMWePXfSZfW[f\^gdbhMr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右右右右�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os���援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴�Os�Os�Os�Os�Os���搴�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߃��������������������CPaCPaOVbRSWQRWPRWUW]���������������������������������������������������������������������������������������U[dU\dW]eW]eX]eV\e������������������������������������������������������������������agpagp`go`go`fo`fo`fo`fo_fn_en_en^em^dmioxioxhowhnwgnvgmvgmv���������������������������`foTZcSZbRYaQX`\bkGSeITeKUeMWfPXfSYfV[gZ]g_`hNr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os���搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴�Os�Os�Os�Os�Os�Os�Os�Os�Os�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�������������������CPaCPaCPaCPaCPaQWcYY\XX\RSXWX]bdi���������������������������������������������������������������������������������������U[dU[dU[d���������������������������������������������������������������������������agpagpagp`go`go`fo`fo`fo_fn_en_en_enipxioxioxhowhnw������������������������������������TZcSYbRYa\ck\bjIUeKVeMWfOXfRYfU[gX\g\^gcbhNr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Ns�Ns�Os���援�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot���琴琴琵琵琵琵琵琵琵琵琵琵琵琵琵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�����������������������������������KQZFLUFMUCPaCPaCPaCPaSXcRWcddgddhddiceicej������������������������������������������������������������������������������������U[d���������������������������������������������������������������������������������������agpagpagp`go`fo`fo`fo_fn_en_enjpyipxiox���������������������������������������������SYbRXa]ckIUeKVfMWfOXfQYfT[gX\g[^h_`hgdiNr�Nr�Ns�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os����Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In����������������������������������CPaCPaKQZFMUKRZKRZCPaCPaCPaCPaUYcTXcRWceeheeieeiefjefk���������������������������������������������������������������������������Z`iZ`iZ`iU[d���������������������������������������������������������������������������������������agpagpagp`go`fo`fo`fo_fn_enjpy���������������������������������������������������������JUfKVfMWfOXfRYgTZgW\g[^h^`hcbijfiNs�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os���搴搴搴琴�Os�Os�Os�Ot�Ot�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt���瑵瑵葵葵葵葵葵葵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈�߈�߈�߉��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�������������������������CPaCPaT[cKQZFMUKRZKRZLR[GMV@BDCPaDPbWZcVYcTXcSXcgfi\[_ggjggkfgl������������������������������������������������������������������ioxioxipxjpyjpyjqy`fo���������������������������������������������������������������������������������������agpagpagp`go`fo`fo���������������������������������������������������������������������NWfPXgRYgT[gW\gZ]h^_hbaigdimgjOs�Os�Os�Os�Os�Os�Os�Os�Os�Os���琵琵琵琵琵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu���蒶蒶蒶蒶�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉��Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�������������Jn�Jn�CPaCPaU[dKRZGMVLR[LR[LR[GMVGNVHNWDPbDPbY[dWZdVZdUYcTYchgi]\_hhkhhl]^b������������������������������������������������������jowjpxjpxjpxjpyjpykqykqzkqzkqz`fo���������������������������������������������������������������������������������������agpagpagp������������������������������������������������������������������������������RZgU[gW\hZ^h]_haaiecijfjOs�Os�Os�Os�Os�Os�Os�Ot�Ot���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu���蒶�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn����Jn�Jn�Jn�CPaCPaCPaKRZV\eGMVLR[LR[LR[GNVHNWHOWIOXIOXDPb[\dZ[dX[dWZdVZdUYd_]__]`jil_^b__c���������������������������������������������lpwlpwlpxlqxlqylqylqylqylqzlrzlrzlr{lr{agp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W\hZ^h]_i`aidciiejmgjOs�Ot�Ot�Ot�Ot�Pt�Pt���瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶葶�Pt�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu����Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��������In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኮ�Jn�Jn�AFLCPaDPbLR[LR[V]eLR[LR[LS[HNWHOWIOXIPXJPYKQZBFL^]d\]d[\dY[dX[dWZdVZd`^``_akjma`ca`d���������������������������������mpvmpwmqwmqxmqxmqxmrymrymrymrzmrzmrzmr{ms{ms{ms{ahpms|������������������������������������������������������������������������������ahpagplr{������������������������������������������������������������������������������������������`aiccihejlgjpikPt�Pt�Pt�Pt�Pt���瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv���铷铷铷�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�����������������������������In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኮኮኯኯኯ�Jn�DPbDPbLR[LR[W]fLR[LS[MS\HNWIOXIPXJPYKQZLR[PRUQSVDQb^^e]]e\]eZ\dY[dX[dWZdb_ab`bb`cbad���������������������������cekcfkoqwoqworxorxoryoryosyoszoszoszns{ns{ns{ns{chpchqchqchqnt|���������������������������������������������������������������������bhqms|ms|ls{lr{lr{������������������������������������������������������������������������������������������gejlgkohkPt�Pt�Pt�Pt���葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv���铷ꓷꓷꓷꓷꓷꓷ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�\�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉��������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኯኯኯኯዯዯዯᄑ�DPbDPbV\eW]fLR[GNVHNWHOWIOXJPYQW`RXaSYbRYaTUXTUXBFLa_e`^e^^e]]e\]eZ\eY[eX[dW[dnlmomndbd���������������eeiefjefkefkegleglegmpsxpsypsypszptzptzpt{pt{pt{pt{pt|diqdiqdiqdiqdiqdiqot}���������������������������������������������������������bhqbhqms|ms|ms|ls{lr{lr{krzkqzkqz���������������������������������������������������������������������������������������nhkqjkPt�Pt���蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷钷钷铷铷铷铷铷铷铷铷�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�\�Im�Im�Im���߉�߉�߉�����������������������������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኯዯዯዯዯዯዯዯዯᄑ�������U\dV]eLS[HNWHNWIOXOU^JQYQW`RYaTZcagpacfmjiflugnvaVPb`ea_e_^e^^e]]e[]eZ\eZ\eY[epmnpnoece������fehffigfjggjggkgglghlghmghmghnrtyrtzrtzrtzru{ru{ru{qu{fjpfjqfjqejqejqejqejqejrdjrou}������������������������������������������������mt|bhqms|ms|ms|ls{ls{lr{lr{krzkqzkqzjqyjpy���������������������������������������������������������������������������������������Pu���蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓷ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�\�\�\�\�\�\����������������������������������������������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯዯᄑ����������LR[GNVHNWHNWIOXOU^[ajRXaSYbU[dahpcirektgmvioxjpyBGMbWPc`fb`f`_e_^e^^e]]e\]e[\eZ\eY[erop���gegsqssqtsruhgjhhkhhlhhlhimhimhinhjnhjosuzsu{su{sv{hjphkqgkqgkqgkqgkqgkqfkrfkrfjrfjrejrpu}���������������������������������������mt|bhqbhqbhqms|ls{ls{lr{lr{krzkqzkqzjqyjpyjpyioxiox���������������������������������������������������������������������������������sklQu�Qu���钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸ�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Rw�Rw���딸딸딸딹딹딹딹딹딹딹딹딹딹땹땹땹땹�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�\�\�\�\�\�\���������������������������������������������������������������������������ኮኮኮኮኮ�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯዯዯዯ⅑�������������HNWHNWIOXOU^\bk]cl^emU\dbhqdjsfluhnwipxkqzlr{ahpeXPdWPdafc`fa`f`_f__f^^e]^e���������������ifgtrsurtusuutvjiljiljimjjmjjnjjnjkojkojkpikpikpikpikqikqikqhkqhkqhkqhkrgkrgkrgkrgkrfkrqv}������������������������������bhqbhqbhqahpahpagpagplr{lr{krzkqzkqzjqyjpyjpyioxiox]cl\ckgnv������������������������������������������������������������������������pjlrklulmQu�Qu�Qu���铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Sx�Sx�Sx�\�\�\�\�\�\�\������������������������������������������������������ኮኮኮኮኮኯኯኯኯኯኯኯ�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋰⅑�������������������NT]OV^[bj]cl_enagpX^gdksfmuhnwjpykrzagpbhqahphZQfYQgcfebfdafc`fb`f������������������������jghkgivsuvtvvtwvuwkjmkjmkknkknkkovwzvw{vw{vw{klpjlqjlqjlqjlqilqilqilqhkrhkrhkrhkrgkrgkrfkr������������������bhqbhqahpahpbhpagpagp`go`go`fokqzkqzjqyjpyjpyipxioxiox]cl\ck\bk[bjfmuflu���������������������������������������������������������������nilpjlrklulmQu�Qu�Qu�Qu�Qv���铷ꓷꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딸딸딹딹딹딹딹땹땹땹�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹땹땹땹땹앹앹앹앹앹앹앺앺앺앺앺앺앺앺앺앺앺�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�\�\�\�\�\�\�\������������������������������������ኮኮኮኮኮኯኯኯኯኯኯኯዯዯዯዯዯዯ�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰→����������������������[aj]cl_enagpX^gZ`i\bkioxjqylr{ahpbhqahpagp_fnj[QiZQhcg������������������������������������kghlhiwtuxuvxuwxvxxvxmkmxwyxwzxwzxw{ww{ww{ww{wx|klqklqklqjlqjlqjlqjlqilqikqhkqhkqhkqgkqgjq���������eiqeipdipdipchpchpbhobgoagoafo_en_en_enjpyipxioxiox]cl]cl\bk\bk[aj[ajfluZ`iY_hZ_h������������������������������������������������������lhlnilpjlrkmtlmwnmQv�Qv�Rv�Rv�Rv�Rv�Rv���ꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딸딹딹딹딹땹땹땹땹땹땹땹땹땹땹땹땹땹땹�Sx�Sx���앺앺앺앺앺앺앺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺�Tx�Tx�Tx�Tx�Tx�Tx�Tx�\�\�\�\�\�\�\�\������������ኮኮኮኮኮኯኯኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Jo���ዯዯዯዯ⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⅒�������������������������QX`_emagpY_gZai\bk^dm`folr{ahpahpchpbgolqyhnwl\Q���������������������������������������������\]fmiimijmjknjknklnkmnkmywyywzywzyx{xx{xx{xx{xx{wx|llpklpklqklqjlqjlqjkqikqikqhkpsv|sv|su|ru{fipfipeipeiodhodhocgocgnbgnbfnafn^dm^dm]dliox]cl^cl]ck]bk\bj[aj[aifltektY_hX_gIVgMXhNXh���������������������������������������������lhmojmqjmpjmskmtlmvmmRv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꔸ딸딸딹딹딹딹땹땹땹땹땹땹땹땹땹땹땹땹앹앹앹앺앺앺앺앺얺�Tx���얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺햺햺햺햺햺햺햺햻햻햻햻햻햻햻햻�Ty�Ty�Ty�Ty�Ty�\�\�\�\�\�\�\�\���ኮኮኯኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Jo�Jo�Jo���⋯⋯⋯⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⋕����������������������������choZ_g\ai^dk^dm`folr{ls{agpdipchomqx���������������������������������������������������������]^f]^f\^fzvvzvwoklokmolmolnnlnzxzzxzyxzyx{yx{xx{xx{xx{llpllpklpklpvw{uw{uv{tv{tv{���������ruzfiofhnehnehndgncgmcgmbfmbfmaellpxlpwkpwkov^cj^cj]bj]bihmugltgltfksKWhKWhOYhPYhQZhR[iS[iU\i���������������������������������limojmrknslmtlmrkmvmmvmnyonRv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw���땹땹땹땹땹땹땹땹땹땹앹앹앹앺앺앺앺얺얺얺얺얺얺얺얺�Tx�Tx�Tx�Tx�Tx���햺햺햺햺햻햻햻햻햻햻햻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�\�\�\�\�\�\�\�\�\���ኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ⋯⋯�Jo�Jo�Jo�Jo�Jo���⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰→����������������������������������^bi`dkbfmdhokrzlr{lr{qt{psy������������������������������������������������������������������__g^_g^_g]^g{vv{ww{wxolmolmolmolnzxzzxzzxzyxzyxzmlomlollolkowwzvwzvvz���������������������rtyqsyegmegmdglorxoqwnqwmqwmpvlpvlovkouknu_bijntimtimthlsNXhNXhPZhQZhR[iS[iT\iU\iW]iX^jY^j[_j������������������������njnpkorlotmnumnvmnvnnwnnxnnyonRv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹앹앹앺앺앺얺얺얺얺얺얺얺얺얺얺얺얺얺햺�Tx�Tx�Tx�Ty�Ty�Ty�Ty�Ty���헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�\�\�\�\�\�\�\�\�\���ዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯�Jo�Jo�Jo�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㏗�������������������������������������dglfhnru{krzsu{rtz������������������������ª�Ĭ�©����������������������������������������baga`g``g``g__g^_g]_gpkkpklpll{wx{wx{wyzwynlmnlnnlnmknmknlknlkn������������������������������fglegkefkdfkoqvoqvnpunpumoumou`ci`bh_bh_bhPYhPYhQZhRZiS[iT[iU\iV]iW]iX^jY^jZ_j[_j\`j^ak`bkack���������������okormpunpvopwoownoxnnxonyonzon{pn{poRw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx���얺얺얺얺얺얺얺얺얺얺얺햺햺햻햻햻햻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy���헻헻�Vz�\�\�\�\�\�\�\�\�\�\���ዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌱㌱㌱㌱㌱㑘�������������������������������������rtyhjotv{���������������������������������Ȯ�ϳ�ϳ�ǫ����������������������������������������dbhcbhbahaaha`h``h_`g__g^_g]_gokkokk{wxzwxzwxzwxyvxmjl���������������������������������������efjeeideioptoptnotbchachabgS[hS[hS[iT[iU\iU\iV\iW]iW]iX^jY^jZ_j[_j\`j]aj_ak`bkbckcdkeelgfligm������qlptoqwpryqrzqqzppzppzpozpo{po|po|qo|qoSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx���얺얺얺햺햺햻햻햻햻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz����\�\�\�\�\�\�\�\�\�\���ዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⋰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰㌰㌰㌰㌱㌱㌱㌱㌱㌱㍱㍱㍱㌇����������������������������������������������������������������������������������ͱ�ҵ�ҳ�а�������������������������������������������fciechdbhcbhbahbahaahaah``h_`h_`h^_h]_hzvvzvv������������������������������������������������qptppsV\iV\iV\iU\iU\iV\iV]iW]iX]iX^iY^jZ_jZ_j[_j\`j]`j^aj_ak`bkbckcckddkeelgfligmkinnjoqlp���wpszst}tu~tt}ss}rr|rq|qp}qo}qo~qo~ro~roSw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx���햻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz����\�\�\�\�\�\�\�\�\�\�\�\���⋰⋰⋰⋰⋰⋰⋰⋰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㔚����������������������������������TYeSYekjmvvy���������������������������������Ÿ�Ĭ�ҳ�ұ�ұ�Ѱ�������������������������������������������iejhejfdieciecidbicbicbhbahaahaah������������������������������������������������������������Y^iX^iY^iY^iY^iZ^iZ_i[_j\_j\`j]`j^aj^aj_aj`bkabkbckcdkddkfelgflhfljgmkhmnjnplo������������¹��xx�wv�vu�ustrsqrprpsp�sp�sp�spSw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy���헻헻헻�Uy�Uy�Uz�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����\�\�\�\�\�\�\�\�\�\�\�\�\���⋰⌰⌰⌰⌰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㗛����������������������������VZeVZeVZeVZeVZeVZeVZe���������������������������̾���Ģ��ұ�Ԭ�ή�Ѱ����������������������������������������������milkgljfkhejgejfdjfdieci���������������������������������������������������������������������]`j]`j^`j^aj^aj_aj`aj`bjabkbckcckcdkddkedkfelgflifljglkhmmimnjnpkosmp���������ż�Ⱦ�ʿ�ɾ�Ƚ�ǻ��wu�us�tr�tq�tp�tp�tp�tp�tpSx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy����Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�V{�W{�W{����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���⌰⌰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱䍱䍱䍱䙜�������������������Y\eY\eX\eX\eX\fX\fX\fX\fX\fY\fY\f������������������ŷ��þ�������źֲ�Ū�ɬ�̮�ٲ����������������������������������������������rmqpkoojnmimkhl������������������������������������������������������������������������������bcjbckcckcckddkedkeekfekgelhflifljgljglkhmmimnjmpknrlotnpwpr������ż��������������¿���ʾ�ɼ�Ǻ��vr�uq�uq�up�up�uq�uqTx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz����Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp���㍱㍱㍱㍱䍱䍱䍱䍱䍲䍲䍲䍲䛞�������������[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]fa`g���������������˼��������ɾ���꽛������ĥ�˭�Ѱ�ӳ�������������������������ú�Ļ�ż�Ľ�ü�������ztvxru���������������������������������������������������������������������������������������hfkhfkiflifljglkgllhllhlmimnimojmpjmqknsmovopyqr|st¹�Ƽ����������������������������̾�ʼ�ɺ�ȹ��vq�vq�vq�vq�vq�vqTx�Tx�Tx�Tx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz����Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�W|�������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp���䍱䍱䍱䍲䍲䍲䍲䍲䎲䎲䎲䘜�������]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^fdbghdhmfh������õ�����������÷ؾ�������������������ͮ�ղ�������������������������Ĺ�ƽ�ɿ���������ň����ƿ�ý����������������������������������������������������������������������������������������nilnilnilojmpjmqkmrkmslntmnvnowopzqq}ss�wvǽ��������������������������������ÿ���;�˼�ʺ�ɺ�ɹ��wq�wq�wq�wqTx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䛞�]^f^^f^_f^_f^_f__f__f__f__f__g__g__g__g__g__gfchkehoghtjizmjƶ��ü����Ǽٿ�۾�������������������������������������������������ö�Ź�Ȼ�˿�������������������������������ž�º����������������������������������������������������������������������������slmtlmumnvnnwnoyoo{qp|rrts�vu�zx����������������������������������������½Ͽ�ͽ�̼�˻�˺�˺�˺��xr�xrUy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�������W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䎲䎲䎲䎲䎲䎲䎲䎲�Lp�[]f^^f__f``f``g``ga`ga`ga`ga`ga`ga`gbagbagbaghdhmfiqiivki|ok�vp��z����¶پ������搴濱����������������������������������������´�ö�ŷ�Ǻ��zw�~z��~���������������������������������ɿ�ƽ�ú�������������������������������������������������������������������zpo|qo}rptr�us�xu�{x�~{�������������������������������������������ľ���п�ν�μ�ͼ�ͻ�ͻ�ͻ�ͻ��xrUy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{������������W{�W{�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䎲䎲䎲䎲䎲�Lp�Lp�Lq�Lq�]^f__f``ga`gbagbagcagcagcagcagdbgdbhdbhechieiogisjixljpk�xq��z��}���ۿ��°��搴搴濱�������²�²�³�³�³�³�³�³�ó�ó�ô�ô�ĵ��tp�vr�xt�{w�~z��}�������������������������������������¿˿�ȼ�ƺ�ĸ�¶����������������������������������������������µ�ö�ķ��vs�xu�{w�~y��|����������������������������������������������ž�¼���о�Ͻ�Ͻ�ϼ�ϼ�ϼ�μ�ͼ����Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{���������������X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���厲厲�Lq�Lq�Lq�Lq�Lq�Lq�__fa`gb`gcagcagdbgdbgebgebhfchfchhdihejlgkqikukjzmj�qk�xq��z��y�}o�}m��搴搴搴搴搴����²�ó�ó�Ĵ�Ĵ�Ĵ�Ŵ�Ĵ�Ŵ�Ŵ�Ŵ��rl�sm�sn�to�up�wq�ys�{v�}x��{��~����������������������������������þ���Ϳ�˽�ɻ�ǹ�Ƹ�ŷ�ŷ�Ķ�Ķ�Ķ�õ�õ�Ķ�Ķ�ŷ�Ʒ�Ǹ�ȹ�ɺ�ʻ�̼�ξ��~y��{�������������������������������������������������ƿ�ü���ҿ�Ѿ�Ѿ�Ѿ�ѽ�н�н�Ͻ����Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{������������������X|�X|�X|�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq����Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�``gbagcagdbgebgfchfchgchgdhhdijfjlhlpjnumnxml|ol�qk�wp��y��v�|n�}nNr�Nr���琴琴琵琵琵����ij�Ŵ�Ŵ�Ƶ�Ƶ�Ƶ�Ƶ�ǵ��sl�sl�sm�sm�tm�tn�uo�vp�wq�ys�{u�}w�y��{��}��~����������������������Ŀ�ý������ξ�̽�˼�ʻ�ʺ�ɹ�ɹ�ȸ�ȸ�ȸ�ȸ�ȸ�ɹ�ʹ�ʺ�˻�̼�ν�Ͽ�����¼��|������������������������������������������������ǿ�ļ�º���ӿ�ӿ�ҿ�Ҿ�Ҿ�Ҿ�Ѿ����Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{������������������������Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq���厳右�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�a`gcagdbgebhfchgchhdhidhjeikgjnjmqmpzrr}rq~qn�rl�wo��w��u�|n�~nNr�Nr�Nr�Nr���琵瑵瑵瑵瑵�Ĵ�Ŵ�Ƶ�ǵ�ȶ�ȶ��tl�tm�tm�tm�tm�tm�tm�un�un�vo�wo�xp�yr�zs�|u�}w�x��y��{��{�ſ�ƿ�ƿ�ſ�ľ�ý�¼������п�ν�ͼ�ͼ�̻�̻�˺�˺�˺�˺�˺�̺�̻�ͼ�ν�Ͼ�ѿ�����»��z��}������������������������������������������������ǿ�ż�ú������������Կ�Կ�ӿ�ҿ�����V{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|���������������������������������Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�Z�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq���右右右右右右�Mq�Mq�Mq�Mq�Mq�Mq�Mq�a`gdbgfchfchhdhhdhjehkfilgjpknups~vw�wv�uq�sm�vn�u��u�|nNr�Nr�Nr�Nr�Nr�Nr�Nr���瑵瑵瑵瑵盖�ŵ�Ƕ�ȶ��tm�tm�um�um�um�um�um�um�um�vn�vn�vn�wo�wo�xp�yq�zr�{s�|t�}v�~w�w��x�û�ü�û�»�º������ҿ�ѿ�о�Ͻ�Ͻ�μ�μ�μ�λ�λ�μ�μ�ϼ�н�Ѿ�ҿ�����º��y��z��|������������������������������������������������Ⱦ�ż�ú�¹���������������������Ѿ����������W{�W{�W{�W{�W|�W|�W|�X|���������������������������������������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�Z�Z�Z�[�[�[�[�[�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq���右右右右右右右右右�Mq�Mq�Mq�Mq�Mq�[QIbagebhgchhdhidhjehkfimgjqkmwqs~wz�~}�{w�uo�vm�}r��t�|nNr�Nr�Nr�Nr�Nr�Ns�Ns�Ns���瑵瑵葵葶葶�ql�sl�tm�um�um�um�vm�vm�vm�vn�vn�vn�vn�wn�wn�wo�xo�xo�yp�yq�zq�{r�{s�|t�}t�}u�~u������������������ӿ�ҿ�Ҿ�Ѿ�ѽ�ѽ�н�н�н�ѽ�ѽ�Ѿ�Ҿ�ӿ���������w��x��z��|��~����������������������������������������������Ⱦ�Ƽ�ĺ�ù�¸�¸�������������������������������W|�W|�X|�X|�X|������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z�Z�Z�Z�[�[�[�[�[�[�[�[�[�[�[�[�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq���右右右右右右右揳揳揳援�Mq�Mq�Mq�Mq�Mq�]^gcahechgdhiehjeikfimgioikvoq�yz������{u�vn�zp��t�|nNr�Nr�Nr�Ns�Ns�Ns�Ns�Os�Os�Os���葶葶�Os�Os�Os��rl�tm�um�vm�vm�vn�wn�wn�wn�wn�wn�wn�xn�xn�xo�xo�xo�yo�yp�zp�zq�{q�{r�|r�|s�|s�}s������Կ�Կ�Կ�Կ�ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Կ�Կ��������v��w��x��y��{��}��~����������������������������������������ʿ�Ƚ�ƻ�ź�Ĺ�ø�ø�¸�¸�¸�¸���������������������X|�X|��������������������������������������������������������������������Z�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[��[��[��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�Mq���右右右右右揳揳揳援援援援援搴搴�Mq�Mq�Mr�Mr�^_gdbhfchhdhjeilfimgiohjslm|uw��������|�xp�yo��t�}o�{nNs�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot��sm�um�vm�vn�wn�wn�xn�xn�xn�xn�xo�xo�yo�yo�yo�yo�yo�zp�zp�zp�{q�{q�{q�|r�|r�|r�|rտ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�����������t�u��v��w��x��z��{��}��~������������������������������������ɾ�Ƚ�ƻ�ź�Ĺ�ĸ�ø�ø�ø�ø�ø�¸�������������������X|�X|������������������������������������������������������������������������������[�[�[�[�[�[�[��[��[��[��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���右右揳揳揳援援援援援搴搴搴搴搴搴搴搴�Mr�Mr�Nr�_`gdbhgdhieikfimgiohjqjkxpq�|}�������}v�xn�}r�~q�{nNs�Ns�Os�Os�Os�Os�Os�Os�Os�Os���蒶蒶�Os�Ot�Ot�Ot�Pt�Pt��tm�vn�wn�wn�xn�xn�xn�yo�yo�yo�yo�zo�zo�zo�zo�zp�zp�{p�{p�{p�{q�|q�|q�|q�|q�|r�|rֿ��������������������������������������~t�t��u��v��v��w��x��z��{��|��}��~���������������������~�˿�ʾ�ɽ�ȼ�ǻ�ƺ�Ź�Ĺ�ĸ�ĸ�ĸ�ĸ�ø�ø�¸������������������X}�X}�Y}�Y}���������������������������������������������������������������������������������������[��\��\��\��\��\��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���揳揳揳援援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴�Nr�Nr�Nr�``hechhdijeilfingipijtlm~uv��������~�yp�{o�r�{nOs�Os�Os�Os�Os�Os�Os�Os���蒶蒶蒶蒶蒶�Ot�Pt�Pt�Pt�Pt�Pt�Pt��un�wn�xn�xn�yo�yo�yo�zo�zo�zo�zo�{o�{p�{p�{p�{p�{p�|p�|p�|q�|q�|q�}q�}q�}q�}r�}r�������������������������������s�s��t��t��u��v��v��w��x��y��z��{��|��}��}��}��~��}��}��}��|��{��z�ȼ�Ȼ�ǻ�ƺ�ƹ�Ź�Ź�Ź�Ź�Ĺ�Ĺ�Ĺ�ù�������������������Y}�Y}�Y}�Y}�Y}�Y}�Y}���������������������������������������������������������������������������������������������\��\��\��\��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���援援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵�Nr�Nr�aahechheikfimgiohjrjkxop�}|�������~v�yn�r�|oYTROs�Os�Os�Os�Os�Os���蒶蒶蒶钶钷钷钷铷�Pt�Pt�Pt�Pt�Pt�Pt�Pt��vn�xn�xo�yo�zo�zo�zo�{o�{p�{p�{p�|p�|p�|p�|p�|p�|q�}q�}q�}q�}q�}q�}q�~q�~r�~r����������������µ�¶�s�s�s��s��t��t��u��u��v��v��w��x��y��y��z��{��{��{��{��{��{��{��{��z��y��x��x�Ǻ�Ǻ�ƺ�ƹ�ƹ�ƹ�Ź�Ź�Ź�Ź�Ĺ��������������������Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Z~��������������������������������������������������������������������������������������������������\��\��]��]��]��]��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq���援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琵琵琵琵琵瑵瑵瑵�Nr�aahfciieilfingjpijtlm}tu��������~�zp�|p�q�znOs�Os�Os�Os�Os���蒶蒶钶钷钷钷铷铷铷铷铷�Pt�Pt�Pt�Pt�Pu�Pu�Pu��wn�xo�yo�zo�zo�{p�{p�|p�|p�|p�|p�}p�}q�}q�}q�}q�}q�~q�~q�~q�~q�~r�~r�r�r�r�µ�µ�¶�¶�s��s��s��s��s��t��t��t��u��u��v��v��w��w��x��x��y��y��z��z��z��z��y��y��y��x��x��w��w��w�Ǻ�Ǻ�ƹ�ƹ�ƹ�ƹ�ƹ�Ź�Ĺ��������������������Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������������������������������������������������������������������������������������]��]��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq���搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵�X\gbahfdiieilgjohjqjkvno�{{�������v�zo�r�|oOs�Os�Os�Os���钶钷钷钷铷铷铷铷铷铷铷铷铷ꓷ�Pu�Pu�Pu�Qu�Qu�Qu�Qu��xo�yo�zo�{p�{p�|p�|p�|p�}p�}q�}q�~q�~q�~q�~q�~q�~q�r�r�r�r�r�r��r��r��r�ö��s��s��s��s��s��t��t��t��t��u��u��u��v��v��v��w��w��x��x��x��x��y��y��x��x��x��x��w��w��w��w��w��v�Ǻ�Ǻ�Ǻ�Ǻ�ƺ�ƺ�ź���������������������Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�������������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵蝡�bbigdijeimgjohjskl{rr��������~�{q�|p�~q�ynOs���钶钷钷钷铷铷铷铷铷铷铷铷铷ꓷꓸꓸꓸ�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu��xo�zp�{p�{p�|p�}p�}q�}q�~q�~q�~q�~q�q�r�r�r�r��r��r��r��r��r��s��s�Ķ�Ķ��s��s��s��s��t��t��t��t��t��u��u��u��v��v��v��w��w��w��w��x��x��x��x��x��x��x��w��w��w��w��w��w��w��w�Ⱥ�Ǻ�Ǻ�Ǻ�ƺ�ĺ�����������������Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[����������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���搴搴搴搴搴琴琴琴琵琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葶葶蠢�cbigdijfjmgjpikvmn�yy�������v�zo�r�|o��钷钷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꔸꔸꔸꔸꔸ�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv��yp�zp�{p�|q�}q�}q�~q�~q�~q�q�r�r��r��r��r��r��r��r��s��s��s�Ŷ�Ŷ�Ŷ�ŷ�ŷ��t��t��t��t��t��t��u��u��u��u��u��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�Ⱥ�Ǻ�ƺ�����������������Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[�[��[��\�����������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���琴琴琴琵琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葶葶葶葶蒶蒶蒶蠢����hdikfjnhjrjlyqr���������{q�|p�´Լ���铷铷铷铷铷铷铷铷ꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸ딸�Qu�Qu�Qv�Qv�Qv�Rv�Rv�Rv��zp�{p�|q�}q�~q�~q�q�r�r��r��r��r��r��r��s��s��s��s�Ŷ�ŷ�ŷ�Ʒ�Ʒ�Ʒ�Ʒ�Ʒ��t��t��t��u��u��u��u��u��u��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�ǻ���������������Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\�����������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒍����������lgjohktlnvw��������wվ��µ���ʸ���铷铷铷铷ꓷꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹땹땹�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv��zp�|q�}q�~q�~r�r�r��r��r��r��s��s��s��s��s�ŷ�Ʒ�Ʒ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ǹ�Ǹ�Ǹ��u��u��u��u��u��u��u��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��x��x��x��x��xY}��������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\��\��\��\��]��������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蚟����������lgjpikwoq�������Կ�����õ־���铷铷ꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹땹땹땹땹땹땹�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw��|q�|q�~r�~r�r��r��r��r��s��s��s��s�Ʒ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ȸ��u��u��u��u��v��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��xY}�Y}�Y}�Y}��������Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\��\��\��\��]��]��]��]��]�����������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷霡�������������rkm����������ûԾ��µ���л���ꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹�Rv�Rv�Rv�Rv�Rw�Rw�Sw�Sw�Sw�Sw��}r�~r�r��r��s��s��s��s�ŷ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ȸ�ɹ�ɹ�ɹ�ɹ��v��v��v��v��v��v��v��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��x��xY}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��]��^�����������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���葵葵葶葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷钷铷锜�������������mhkunq���������Ӿ�����öؿ���ꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺얺얺�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw��r��s��s��s�ŷ�ŷ�Ʒ�Ʒ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ɸ�ɹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʹ��v��v��v��v��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��x��xY}�Y}�Y~�Y~�Z~�Z~����������Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��]��^��^��^��^��^��������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷闞�������edjifknilzsu���������Ծ��ö���Խ���ꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Tx�Tx�Tx��ķ�ŷ�ŷ�Ʒ�Ʒ�Ǹ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ɸ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʹ�ʺ�˺�˺��v��v��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��y��y��yY}�Y}�Y~�Y~�Z~�Z~�������������������[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��^��^��_��������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷铷铷铷铷鍙����\_iabjfdjjfkpkn~xz������ҽ�����ķ�����ꔸꔸ딸딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺햺햻햻�Sw�Sw�Sw�Sw�Sx�Sx�Tx�Tx�Tx�����ŷ�Ʒ�Ƹ�Ǹ�Ǹ�ȸ�ȸ�ɹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʺ�˺�˺�˺�˺�˺�̺��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��y��y��y��y��yY}�Y~�Y~�Z~�Z~�Z~����������������������������[�[�[��[��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��^��_��_��_��_��_��_��������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���蒶蒶蒶钶钶钶钷钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷ꓷ�Pt�PYhW]i]`ibbjfekkgltnr������{tӾ��ĸ�µվ���딹딹딹땹땹땹땹땹땹땹땹땹앹앺앺얺얺얺얺얺얺얺얺햺햻햻헻헻헻�Sw�Sx�Sx�Tx�Tx�Tx�Tx�����ɸ�Ǹ�ȸ�ȹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʺ�ʺ�˺�˺�˺�˺�̺�̻�̻�̻�̻��w��w��x��x��x��x��x��x��x��x��y��y��y��y��y��yY}�Y}�Y~�Z~�Z~�Z~�Z~�������������������������������������\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��_��_��`�����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���钶钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸ�Pt�Pt�JVhRZhX]i]`jbcjgekmimwru�~�|w�yp�·�ķ�����땹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺얺햺햻햻헻헻헻헻헻헻헻�Tx�Tx�Tx�Tx��������ɹ�ɹ�ʹ�ʺ�ʺ�˺�˺�˺�˺�̺�̻�̻�̻�ͻ�ͻ�ͻ�ͻ��x��x��x��x��x��x��y��y��y��y��y��yY}�Y}�Y~�Y~�Z~�Z~�Z~�Z~����������������������������������������������\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��_��`��`��`��`��`��`��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸ�Pt�Pt�Pt�JVhMXhT[iY^i^ajccjgeknjo}uw�zw�xq�{r��v���ֿ���땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx������������̺�˺�˺�̻�̻�̻�̻�ͻ�ͻ�ͻ�ͼ�ͼ�μ�μ��x��x��x��y��y��y��yY}�Y}�Y}�Y}�Y~�Z~�Z~�Z~�Z~�Z~�Z~����������������������������������������������������]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��`��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷铷铷铷铷铷铷ꓷꓷꓷꓸꓸꓸꓸꔸꔸ�Pt�Pt�Pt�Pu�JVhJVhOYiU\iZ_j_ajcckhflpkput�vq�xp��w��s�}p��땹땹땹앹앺앺앺얺얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx�Tx�������������������򕓒�м�Ѽ�ѽ�ѽ�ѽ�����X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������������������������������������������]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��`��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷ꓷꓷꓷꓸꓸꓸꓸꔸꔸꔸꔸ�Pt�Pu�Pu�Pu�Pu�Pu�JWhJWhJWhQZiV]i[_j`bkddkhglunp�sq�vp�u��v�~qQv���앹앺앺얺얺얺얺얺얺얺얺얺햺햻햻헻헻헻헻헻헻헻헻�Tx�Tx�Ty�Ty�Uy�������������������������������������������Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z����������������������������������������������������������������������^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸ�Pu�Pu�Pu�Pu�Qu�Qu�Qu�JWhJWhJWhJWhR[iW]j\`jabkedknjmzpo�to�|t��y�~qRv�Rv�Rv���얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx�Ty�Ty�Uy�Uy�Uy�Uy���������������������������������������������������Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�������������������������������������������������������������������������������^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꔸꔸꔸꔸꔸꔸꔸ�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�JWhJWhJWhKWiKWiS\iX^j]`kackgeltlnro�yr��z�rIMSRv�Rv�Rv���얺얺얺얺햺햻햻헻헻헻헻헻헻헻헻�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy��������������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z����������������������������������������������������������������������������������������_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꔸꔸꔸꔸ딸�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�KWiKWiKWiKWiKWiOZiT\jY_j^akbcknimzon�vp��|��s��qRv�Rv�Rv�Rv�Rw���햻햻햻헻헻헻헻헻헻헻헻�Tx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz����������������������������������������������������������������������Z~�Z�Z�������������������������������������������������������������������������������������������������_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��a��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���딹�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�KWiKWiKWiKWiKWiMXiQ[jV]jZ_k_akbclumn�tp��|��t��rRv�Rv�Rw�Rw�Rw�Sw�Sw���헻헻헻헻헻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������������������������������[����������������������������������������������������������������������������������������������������������`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�KWiKWiKXiKXiKXiKXiNYjS\jW^k\`k_bkqkm~ro��{��vRw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw���헻헻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������������������������������������[�������������������������������������������������������������������������������������������������������������`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�KXiKXiKXiKXiKXiKXiLXiPZjT]jY_k]akmim{po��z��uRw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw����Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{������������������������������������������������������������������������������[�[�[�[��������������������������������������������������������������������������������������������������������������a��a��a��a��a��a��a��b��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�KXiKXiKXiKXiKXiKXiLXjMYjQ[jV]kZ`kigmwnn��|��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{��������������������������������������������������������������������������[�[�[�[��\��\��\��������������������������������������������������������������������������������������������������������������a��a��a��b��b��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�KXiKXiLXjLXjLXjLXjLXjOZjS\kW^kigm�tp��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|���������������������������������������������������������������������[�[�[�[��\��\��\��\��\��\��������������������������������������������������������������������������������������������������������������b��b��b��b��b��b��b��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rv�Rv�LXjLXjLXjLXjLXjMYjR[kW^k]alro��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|������������������������������������������������������������������[�[�[��[��\��\��\��\��\��\��\��]��]��������������������������������������������������������������������������������������������������������������b��b��b��c��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rw�Rw�LYjLYjLYjLYjT]kZ_lhfm�uqSw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty����Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|������������������������������������������������������������[�[�[��\��\��\��\��\��\��\��]��]��]��]��]��]��������������������������������������������������������������������������������������������������������������c��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rw�Rw�Rw�Rw�Sw�Sw�Sw�ddmaclupr��{Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy����Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�Y}�Y}�������������������������������������������������������[�[�[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��������������������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�����Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}����������������������������������������������[�[��[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^�����������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy��������Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~����������������������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy����������Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~����������������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_�����������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�������������Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz����������������W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[����������������\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`�����������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz��������������������W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�[�[�[�[�[�[�������\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a�����������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz���������������������������W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz���������������������������������X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�[�[�[�[�[�[�[��[��\�����������\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b�����������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�����������������������������������������X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\�����������������]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b�����������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��������������������������]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����������������������������������������������������������Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\�����������������������������������^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c�����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Vz�Vz�Vz�Vz�Vz�Vz����������������������������������������������������������������������Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��\�����������������������������������������^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��c��d��������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Vz�Vz�Vz�V{����������������������������������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��������������������������������������������������^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d�����������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�V{�������������������������������������������������������������������������������������������Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\�����������������������������������������������������������_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��\��\��\��������������������������������������������������������������������_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��c��d��d��d��d��d��d��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���������������������������������������������������������������������������������������������������������[�[�[�[�[�[��[��\��\��\��\��\��\��\��������������������������������������������������������������������������`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������[�[�[�[��[��\��\��\��\��\��\��\��\��������������������������������������������������������������������������������`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\������������������������������������������������������������������������������������������������������������������[��\��\��\��\��\��\��\��\��]�����������������������������������������������������������������������������������������a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������������������\��\��\��\��\��]��]��������������������������������������������������������������������������������������������������a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������\��\��]��]��]��������������������������������������������������������������������������������������������������������b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������]��]�����������������������������������������������������������������������������������������������������������������b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������]�����������������������������������������������������������������������������������������������������������������������c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������]��]��]��������������������������������������������������������������������������������������������������������������������������c��c��d��d��d��d��d��d��e��e��e��e��e��e��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������]��]��^��^��^��^��������������������������������������������������������������������������������������������������������������������������d��d��d��d��d��e��e��e��e��e��e��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������^��^��^��^��^��^��^��������������������������������������������������������������������������������������������������������������������������d��d��d��e��e��e��e��e��e��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������^��^��^��^��^��^��^��^��_��_��������������������������������������������������������������������������������������������������������������������������e��e��e��e��e��f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������^��^��^��^��^��^��^��_��_��_��_��_��_��������������������������������������������������������������������������������������������������������������������������e��e��f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������^��^��^��^��^��^��_��_��_��_��_��_��_��_��`�����������������������������������������������������������������������������������������������������������������������������f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��������������������������������������������������������������������������������������������������������������������������f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�
\ No newline at end of file
diff --git a/tests/benchmarks/gui/image/qimagereader/images/test.ppm b/tests/benchmarks/gui/image/qimagereader/images/test.ppm
new file mode 100644
index 0000000..05d627c
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/test.ppm
@@ -0,0 +1,2 @@
+P6 10 10 1023
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
diff --git a/tests/benchmarks/gui/image/qimagereader/images/test.xpm b/tests/benchmarks/gui/image/qimagereader/images/test.xpm
new file mode 100644
index 0000000..5fcf075
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/test.xpm
@@ -0,0 +1,260 @@
+/* XPM */
+static char * test_xpm[] = {
+"256 256 1 1",
+" 	c grey",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                ",
+"                                                                                                                                                                                                                                                                "};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/transparent.xpm b/tests/benchmarks/gui/image/qimagereader/images/transparent.xpm
new file mode 100644
index 0000000..5ddcf0b
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/images/transparent.xpm
@@ -0,0 +1,788 @@
+/* XPM */
+static char *dummy[]={
+"8 8 777 2",
+"#R c none",
+"fn c #000001",
+".e c #000069",
+".f c #00006d",
+".g c #00006e",
+"#d c #0042b4",
+"aJ c #010101",
+"g0 c #010102",
+"dr c #010202",
+"gd c #010203",
+"#J c #0157bb",
+"e. c #020202",
+"du c #020304",
+"fR c #030303",
+"jJ c #040404",
+"hf c #040608",
+"fE c #040609",
+"cO c #04070a",
+"k# c #050505",
+"gC c #050709",
+"ka c #060606",
+"br c #06080a",
+"dY c #06090d",
+"hI c #070707",
+"in c #07090b",
+"cL c #070a0e",
+"cd c #070b0f",
+"e0 c #080808",
+"gZ c #080b0e",
+"eu c #080b0f",
+"dz c #080c10",
+"hD c #090909",
+"fq c #090d11",
+"cH c #090e13",
+"jB c #0a0a0a",
+"#U c #0a0d0f",
+"a4 c #0a0d10",
+"g3 c #0a0d11",
+"fu c #0a0f14",
+"cj c #0a1016",
+"kb c #0b0b0b",
+"#n c #0b0d0f",
+"a1 c #0b0e10",
+"g8 c #0b0f13",
+"f4 c #0b0f14",
+"hE c #0c0c0c",
+"bf c #0c0f12",
+".X c #0c28a0",
+"bT c #0d0d0d",
+"ax c #0d1014",
+"hr c #0d1217",
+"dH c #0d141b",
+"jy c #0e0e0e",
+"aW c #0e1115",
+"eH c #0e141b",
+"bE c #0f0f0f",
+"ar c #0f1317",
+"g5 c #0f1419",
+"hg c #0f151a",
+"fh c #0f151c",
+"dJ c #0f171f",
+"gI c #101010",
+".z c #101094",
+"h. c #10161b",
+"gm c #10161c",
+"eL c #10171f",
+"hK c #111111",
+"at c #11161b",
+"fC c #111820",
+"dA c #111922",
+"aj c #1163c4",
+"bJ c #121212",
+"#Z c #12161a",
+"ba c #12171c",
+"ho c #12181e",
+"jK c #131313",
+"iq c #13191d",
+"cA c #131e2a",
+"c7 c #141414",
+"dR c #141e29",
+"jr c #151515",
+"aA c #151a1f",
+"hq c #151c23",
+"fl c #151e28",
+"eV c #151e29",
+"d4 c #161616",
+"hw c #161e25",
+"jk c #171717",
+"bs c #171d23",
+"g9 c #171f27",
+"eC c #17212b",
+"b9 c #172432",
+"d5 c #181818",
+"as c #181e24",
+"bn c #181f25",
+"bS c #191919",
+"gr c #19232d",
+"ed c #1a1a1a",
+".d c #1a1a6e",
+"gB c #1a242e",
+"eK c #1a2531",
+"dQ c #1a2633",
+"hL c #1b1b1b",
+"g1 c #1b242d",
+"g# c #1b252f",
+"eJ c #1b2734",
+"d1 c #1b2937",
+"bW c #1c1c1c",
+"gW c #1c262f",
+"ci c #1c2b3b",
+"cs c #1c2c3c",
+"e# c #1d1d1d",
+"#3 c #1d232a",
+"f8 c #1d2833",
+"fI c #1d2936",
+"eO c #1d2a38",
+"cw c #1d2e3f",
+"jR c #1e1e1e",
+"a2 c #1e262e",
+"eP c #1e2b39",
+"dE c #1e2d3d",
+"cF c #1e2f41",
+"aO c #1e6ec9",
+"c4 c #1f1f1f",
+"gx c #1f2a36",
+"c# c #1f3043",
+"j2 c #202020",
+"bk c #202931",
+"ht c #202c36",
+"eF c #202f3e",
+"b7 c #203245",
+"cB c #203246",
+"hG c #212121",
+"aE c #212932",
+"bp c #212a32",
+"hl c #212d38",
+"cc c #213347",
+".M c #214eb7",
+"hF c #222222",
+"#7 c #222a32",
+"fw c #223040",
+"eU c #223141",
+"jC c #232323",
+"bb c #232c35",
+"ga c #23303d",
+"cv c #23364a",
+"cn c #23364b",
+"jl c #242424",
+"gj c #243240",
+"cm c #24374c",
+"c. c #24384d",
+"bF c #252525",
+"be c #252f39",
+"gt c #253341",
+"dU c #253649",
+".Y c #256cc9",
+"jG c #262626",
+"h8 c #26333d",
+"hb c #263440",
+"gs c #263443",
+"cr c #263b51",
+"cW c #272727",
+"aC c #27313b",
+"a9 c #27313c",
+"fk c #273748",
+"eR c #27384b",
+"cq c #273d55",
+"jV c #282828",
+"#5 c #28313b",
+"b0 c #2877ce",
+"gL c #292929",
+"#Y c #29323c",
+"hu c #293744",
+"fK c #293a4d",
+"jP c #2a2a2a",
+"#w c #2a323b",
+"bg c #2a3540",
+"dF c #2a3f55",
+"jn c #2b2b2b",
+"a6 c #2b3641",
+"jY c #2c2c2c",
+"h5 c #2c3b47",
+"hp c #2c3c4a",
+"gp c #2c3c4d",
+"cx c #2c445e",
+"bU c #2d2d2d",
+"h# c #2d3e4c",
+"dS c #2d435b",
+"e5 c #2e2e2e",
+"cG c #2e4762",
+"jF c #2f2f2f",
+"aG c #2f3b48",
+"gU c #2f3f4e",
+"ck c #2f4966",
+"j0 c #303030",
+"a0 c #303d4a",
+"he c #304251",
+"cQ c #307ace",
+"e4 c #313131",
+"ew c #31465d",
+"dW c #314862",
+"ce c #314b68",
+"jm c #323232",
+"bm c #323f4d",
+"k. c #333333",
+"e3 c #343434",
+"hi c #344757",
+"eT c #344b64",
+"b8 c #34506f",
+"dj c #347fd1",
+"bX c #353535",
+"f9 c #35485c",
+"ac c #363636",
+"#V c #36434f",
+"fv c #364c64",
+"dV c #36506d",
+"c2 c #373737",
+"ev c #37506a",
+"bI c #383838",
+"bw c #384655",
+"h4 c #384b5a",
+"hk c #384c5d",
+"ea c #393939",
+"bh c #394857",
+"gX c #394d5f",
+"#e c #3981d2",
+"e6 c #3a3a3a",
+"eS c #3a546f",
+"em c #3a81d2",
+"#F c #3b3b3b",
+"eQ c #3b5571",
+"dT c #3b5776",
+"cI c #3b5c7f",
+"gJ c #3c3c3c",
+"hX c #3c5060",
+"fi c #3c546f",
+"gG c #3d3d3d",
+"jv c #3e3e3e",
+"az c #3e4e5e",
+"fL c #3e5772",
+"bK c #3f3f3f",
+"gD c #3f576f",
+"fJ c #3f5874",
+"d2 c #3f86d5",
+"jx c #404040",
+"#8 c #404e5d",
+"bv c #405161",
+"cf c #406389",
+"jL c #414141",
+"iG c #415561",
+"im c #415663",
+"gz c #415971",
+"et c #415d7c",
+"cz c #41658c",
+"f# c #418ad7",
+"jT c #424242",
+"gy c #425b74",
+"fs c #425d7a",
+"#K c #4288d4",
+"jQ c #434343",
+"eX c #438cda",
+"j8 c #444444",
+".L c #44449a",
+"eZ c #454545",
+"#s c #455362",
+"fx c #45617f",
+"cK c #456b94",
+"aP c #458cd5",
+"ab c #464646",
+".n c #46469f",
+"aH c #46586a",
+"gV c #465f74",
+"d0 c #46678c",
+"c9 c #474747",
+"aF c #47596c",
+"a3 c #475a6d",
+"ex c #476687",
+"jU c #484848",
+"by c #485b6e",
+"gq c #48627d",
+"dI c #486b91",
+"cC c #48709b",
+"js c #494949",
+"#2 c #495a6b",
+"ih c #49606f",
+"hm c #49637a",
+"gk c #49647f",
+"j7 c #4a4a4a",
+"dt c #4a6e94",
+"ak c #4a8dd7",
+"b1 c #4a90db",
+"c1 c #4b4b4b",
+"bx c #4b5f72",
+"fr c #4b698a",
+"dG c #4b6e95",
+"co c #4b75a2",
+"fW c #4b91db",
+"bD c #4c4c4c",
+"hc c #4c687f",
+"j6 c #4d4d4d",
+"#Q c #4d5f71",
+"ik c #4d6676",
+"hH c #4e4e4e",
+"#0 c #4e5f72",
+"aD c #4e6277",
+"b. c #4e6377",
+"gN c #4e91dc",
+"c0 c #4f4f4f",
+"bj c #4f6378",
+"dZ c #4f759e",
+"cD c #4f7aa9",
+"hN c #4f8dcd",
+"kd c #505050",
+"#S c #506275",
+"#6 c #506376",
+"ge c #506e8c",
+"af c #515151",
+"b# c #51667b",
+"dk c #5195df",
+"cT c #525252",
+".c c #525280",
+"bq c #52677d",
+"iH c #526b79",
+"fj c #527397",
+"eW c #52769d",
+"dy c #527aa5",
+"hJ c #535353",
+"#x c #536476",
+"eG c #53789f",
+"jM c #545454",
+"#r c #546577",
+"bz c #546a80",
+"dM c #547ca8",
+"fP c #5499e2",
+"jp c #555555",
+"iK c #556f7e",
+"bM c #565656",
+"fB c #56799f",
+"dC c #567fab",
+"gE c #569be2",
+"cU c #575757",
+"h7 c #57748b",
+"gc c #577797",
+"fN c #577ba1",
+"dx c #5780ad",
+"cg c #5787bb",
+"i4 c #585858",
+"iF c #587483",
+"hy c #587792",
+"g2 c #587893",
+"fy c #587ca3",
+"eA c #587ea7",
+"jW c #595959",
+"bu c #597087",
+"ia c #5984b2",
+"ae c #5a5a5a",
+"#t c #5a6c7f",
+"bd c #5a7189",
+"ij c #5a7789",
+"eI c #5a81ab",
+"bR c #5b5b5b",
+"ch c #5b8dc3",
+"en c #5b9be1",
+"ke c #5c5c5c",
+"cP c #5c8fc5",
+"j5 c #5d5d5d",
+"iN c #5d7fa0",
+"gl c #5d80a3",
+"fp c #5d83ac",
+"cl c #5d8fc6",
+"b2 c #5d9de6",
+"c8 c #5e5e5e",
+"hh c #5e7f9c",
+"hn c #5e809d",
+"i3 c #5f5f5f",
+"#1 c #5f758c",
+"a8 c #5f7890",
+"g7 c #5f819e",
+"cJ c #5f93cc",
+"jz c #606060",
+"ct c #6094cd",
+"bO c #616161",
+"eN c #618cb9",
+"jH c #626262",
+"iW c #627c8d",
+"hd c #6285a3",
+"ey c #628dbb",
+"dO c #6290c4",
+"ca c #6297d1",
+"jI c #636363",
+"eM c #638fbd",
+"jN c #646464",
+"fH c #648db9",
+"eE c #648fbe",
+"cb c #649ad5",
+"hA c #64a8e2",
+"jw c #656565",
+"#k c #65798f",
+"fF c #658eba",
+"fA c #658fbb",
+"fa c #65a4e7",
+"b3 c #65a6e8",
+"jX c #666666",
+"hW c #6688a3",
+"gh c #668cb2",
+"aI c #6696cb",
+"dN c #6697cc",
+"bA c #6699ce",
+"cu c #669edb",
+"#C c #676767",
+"f3 c #678db4",
+"dl c #67a6eb",
+"kc c #686868",
+"cS c #696969",
+"dK c #699bd2",
+"cN c #69a2e0",
+"cy c #69a3e1",
+"fX c #69a6e8",
+"jD c #6a6a6a",
+"av c #6a84a1",
+"ds c #6a9cd3",
+"dL c #6a9cd4",
+"jt c #6b6b6b",
+"fo c #6b97c6",
+"cE c #6ba5e4",
+"jS c #6c6c6c",
+"aV c #6c88a4",
+"ir c #6c8ea4",
+"il c #6c8fa5",
+"eD c #6c9bce",
+"dB c #6c9ed7",
+"dq c #6c9fd8",
+"cM c #6ca7e7",
+"cp c #6ca8e8",
+"eo c #6cabed",
+"i2 c #6d6d6d",
+"#T c #6d869f",
+"#W c #6d87a0",
+"gY c #6d94b5",
+"aa c #6d9bcb",
+"eB c #6d9dd0",
+"dw c #6da0d9",
+"dD c #6da1da",
+"b4 c #6dacee",
+"h9 c #6dafe2",
+"i6 c #6e6e6e",
+"bt c #6e8aa7",
+"fM c #6e9bcb",
+"dP c #6ea3dc",
+"b5 c #6eabee",
+"jd c #707070",
+"ix c #7088a2",
+"hx c #7098ba",
+"f7 c #7099c3",
+"dv c #70a5df",
+"b6 c #70adef",
+"iy c #70aff1",
+"dm c #70aff2",
+"jE c #717171",
+"#m c #7188a0",
+"#u c #7189a1",
+"aY c #718eac",
+"gO c #71aced",
+"jq c #727272",
+"gb c #729cc6",
+"hO c #72afee",
+"ib c #72afef",
+"e7 c #737373",
+"#y c #738ba4",
+"#A c #739eca",
+".j c #747474",
+"#9 c #748fab",
+"hs c #749ec1",
+"f6 c #749fca",
+".i c #757575",
+"#q c #758da6",
+"a5 c #7593b1",
+"bo c #7594b2",
+"ii c #759bb3",
+"fb c #75b3f4",
+"ep c #75b4f3",
+"is c #75b8e2",
+"ag c #767676",
+"fz c #76a6da",
+"ez c #76a9e0",
+"dX c #76adeb",
+".h c #777777",
+".m c #777794",
+"iX c #77a6b3",
+"dn c #77b1f4",
+"gK c #787878",
+"#4 c #7894b0",
+"fG c #78a9dd",
+"j# c #797979",
+"bV c #7a7a7a",
+"do c #7ab4f4",
+"jA c #7b7b7b",
+"io c #7ba3bc",
+"dp c #7bb5f5",
+".k c #7c7c7c",
+"bc c #7c9cbd",
+"gi c #7caad8",
+"aQ c #7cb0e7",
+"fY c #7cb8f9",
+"iM c #7cbee2",
+"j1 c #7d7d7d",
+"aX c #7d9ebf",
+"fm c #7db0e7",
+"j4 c #7e7e7e",
+".8 c #7ea5ce",
+"#D c #7f7f7f",
+"hv c #7facd3",
+"gn c #7faedd",
+"eb c #808080",
+"er c #80bdf9",
+"j3 c #818181",
+"hz c #81afd6",
+"gu c #81b0e0",
+"eq c #81bbf9",
+"fc c #81bbfc",
+"#b c #828282",
+"iE c #82aac0",
+"i5 c #838383",
+"ha c #83b1d9",
+"es c #83bcf9",
+"ad c #848484",
+"go c #84b5e6",
+".v c #858585",
+"#p c #85a0bc",
+"bN c #868686",
+"hZ c #86b3d6",
+"fD c #86bcf6",
+"fO c #86bcf7",
+"gP c #86c1ff",
+"di c #878787",
+"ft c #87bdf8",
+"bH c #888888",
+"iT c #88cfe2",
+"jZ c #898989",
+"#z c #89a5c3",
+"g. c #89bbee",
+"fg c #89c0fc",
+"fd c #89c2fd",
+"hP c #89c3ff",
+"jb c #8a8a8a",
+"#o c #8aa6c4",
+"jc c #8b8b8b",
+".S c #8baccf",
+"iI c #8bb6ce",
+"al c #8bb9e8",
+"hj c #8bbde7",
+"gw c #8bbef2",
+"ff c #8bc3ff",
+"fe c #8bc4ff",
+"fZ c #8bc6ff",
+"ec c #8c8c8c",
+"gv c #8cbff3",
+"jO c #8d8d8d",
+"a# c #8dadce",
+"ic c #8dc7ff",
+"#H c #8e8e8e",
+"a. c #8eaed0",
+"#L c #8ebae8",
+"hY c #8ebee3",
+"g4 c #8ec1ec",
+"iO c #8ecbff",
+"ju c #8f8f8f",
+"bi c #8fb5da",
+"h6 c #8fc0e5",
+"f5 c #8fc4f9",
+"jf c #909090",
+"bl c #90b6dc",
+"i1 c #90dfe2",
+"bC c #919191",
+"aB c #91b5dc",
+"aZ c #91b7dd",
+"hV c #91c2e8",
+"gf c #91c6fc",
+"gg c #91c7fd",
+"f0 c #91c8ff",
+"i7 c #929292",
+"gA c #92c8fe",
+"iz c #92ccff",
+"iU c #939393",
+"a7 c #93b9e0",
+"f2 c #93c9ff",
+"gQ c #93ccff",
+"e8 c #949494",
+".y c #9494b0",
+"h1 c #94c6ec",
+"f1 c #94caff",
+"j9 c #959595",
+"#X c #95b7da",
+"cX c #969696",
+"ay c #96bbe3",
+"#f c #96bde8",
+"aR c #96c3ee",
+"gR c #96cfff",
+".J c #979797",
+"hQ c #97cfff",
+"fT c #989898",
+"#j c #98b6d7",
+"#l c #98b7d8",
+"iJ c #98c7e1",
+"g6 c #98cffd",
+"jj c #999999",
+"aS c #99c4ee",
+"h3 c #99ccf4",
+"gS c #99d0ff",
+".l c #9a9a9a",
+".b c #9a9aa4",
+"aw c #9ac1ea",
+"gT c #9ad1ff",
+"dg c #9b9b9b",
+".N c #9bbee8",
+"aq c #9bc1eb",
+"am c #9bc4ee",
+"eg c #9c9c9c",
+"au c #9cc3ed",
+"ao c #9cc5ee",
+"c5 c #9d9d9d",
+"aT c #9dc7ef",
+"hU c #9dd2fb",
+"hR c #9dd3ff",
+"dh c #9e9e9e",
+"#v c #9ebee0",
+".Z c #9ec3e8",
+"#M c #9ec3ed",
+"#N c #9ec5ed",
+"ap c #9ec5ef",
+"aU c #9ec7f0",
+"h2 c #9ed4fd",
+"id c #9ed6ff",
+"df c #9f9f9f",
+"an c #9fc5ee",
+"h0 c #9fd5fe",
+"aM c #a0a0a0",
+"hT c #a0d6ff",
+"jh c #a1a1a1",
+"hS c #a1d7ff",
+"ji c #a2a2a2",
+"#P c #a2c7ed",
+"i8 c #a3a3a3",
+"#O c #a3c8ed",
+"iA c #a3daff",
+"j. c #a4a4a4",
+"je c #a5a5a5",
+"#g c #a5c8ed",
+"ip c #a5dafb",
+"iv c #a6a6a6",
+".F c #a6bed4",
+"de c #a7a7a7",
+"#h c #a7c9ed",
+"if c #a7ddff",
+"ie c #a7deff",
+"eh c #a8a8a8",
+"#i c #a8caee",
+"iL c #a8dbf8",
+"ig c #a8deff",
+"iP c #a8e0ff",
+"iY c #a8e2e6",
+"hC c #a9a9a9",
+".0 c #a9caed",
+"#B c #aaaaaa",
+"fU c #ababab",
+".5 c #abc9e9",
+"iB c #abe3ff",
+"e2 c #acacac",
+".6 c #accaea",
+"jo c #adadad",
+".1 c #adcbed",
+".7 c #adccec",
+"iD c #ade2ff",
+"iC c #ade3ff",
+"fS c #aeaeae",
+".4 c #aecded",
+"db c #afafaf",
+".A c #afbbe7",
+".2 c #afccee",
+".3 c #afceee",
+"d6 c #b0b0b0",
+"iQ c #b0e9ff",
+"bG c #b1b1b1",
+"jg c #b2b2b2",
+"#E c #b3b3b3",
+".O c #b3d1ed",
+"gF c #b4b4b4",
+"cY c #b5b5b5",
+"iR c #b5ebff",
+"hM c #b6b6b6",
+"iS c #b6ecff",
+"d9 c #b7b7b7",
+".U c #b8b8b8",
+".u c #b9b9b9",
+"dd c #bababa",
+".P c #bad4ee",
+"bL c #bbbbbb",
+".Q c #bbd4ef",
+".R c #bbd5f0",
+"e9 c #bcbcbc",
+"c3 c #bdbdbd",
+"f. c #bebebe",
+"d8 c #bfbfbf",
+".o c #bfc2e8",
+"iZ c #bffdff",
+"iw c #c0c0c0",
+"iV c #c1c1c1",
+"i0 c #c1feff",
+"ei c #c2c2c2",
+"ej c #c3c3c3",
+"#a c #c4c4c4",
+"el c #c5c5c5",
+"d7 c #c6c6c6",
+".r c #c6cbda",
+"ek c #c7c7c7",
+"aN c #c8c8c8",
+"#G c #c9c9c9",
+"aL c #cacaca",
+"ai c #cbcbcb",
+".B c #cbddf2",
+"bZ c #cccccc",
+".C c #cce0f3",
+"dc c #cdcdcd",
+"ah c #cecece",
+"da c #cfcfcf",
+".E c #cfe1f3",
+".D c #cfe1f4",
+"#I c #d0d0d0",
+"cV c #d1d1d1",
+"fQ c #d2d2d2",
+"bB c #d3d3d3",
+"#c c #d4d4d4",
+"d# c #d5d5d5",
+"aK c #d6d6d6",
+"cZ c #d7d7d7",
+"c6 c #d8d8d8",
+"gH c #d9d9d9",
+".W c #dadada",
+"gM c #dbdbdb",
+"bQ c #dcdcdc",
+"e1 c #dddddd",
+"cR c #dedede",
+"d. c #dfdfdf",
+"bP c #e0e0e0",
+"i# c #e1e1e1",
+"bY c #e2e2e2",
+".K c #e3e3e3",
+"ee c #e4e4e4",
+"d3 c #e5e5e5",
+"ef c #e6e6e6",
+".p c #e6e9f6",
+"fV c #e7e7e7",
+"eY c #e8e8e8",
+".a c #e9e9e9",
+".q c #e9edf8",
+".V c #eaeaea",
+"## c #ebebeb",
+"Qt c #ececec",
+".w c #ededed",
+".x c #eeeeee",
+"#. c #efefef",
+".# c #f0f0f0",
+".9 c #f1f1f1",
+".I c #f2f2f2",
+".T c #f3f3f3",
+"ja c #f4f4f4",
+"i9 c #f5f5f5",
+"hB c #f6f6f6",
+".H c #f7f7f7",
+".G c #f8f8f8",
+"i. c #f9f9f9",
+"kg c #fafafa",
+"kf c #fbfbfb",
+".t c #fcfcfc",
+".s c #fdfdfd",
+"it c #fefefe",
+"iu c #ffffff",
+"#RQtQtQtQtQtQt#R",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQt",
+"#RQtQtQtQtQtQt#R"};
diff --git a/tests/benchmarks/gui/image/qimagereader/images/trolltech.gif b/tests/benchmarks/gui/image/qimagereader/images/trolltech.gif
new file mode 100644
index 0000000..f674369
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/trolltech.gif differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/tst7.bmp b/tests/benchmarks/gui/image/qimagereader/images/tst7.bmp
new file mode 100644
index 0000000..6d3ac92
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/tst7.bmp differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/tst7.png b/tests/benchmarks/gui/image/qimagereader/images/tst7.png
new file mode 100644
index 0000000..96efae4
Binary files /dev/null and b/tests/benchmarks/gui/image/qimagereader/images/tst7.png differ
diff --git a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
new file mode 100644
index 0000000..276ac33
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
@@ -0,0 +1,27 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qimagereader
+
+SOURCES += tst_qimagereader.cpp
+
+!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
+!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
+!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
+!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
+QT += network
+
+wince*: {
+   addFiles.sources = images
+   addFiles.path = .
+
+   CONFIG(debug, debug|release):{
+   imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*d4.dll
+   }
+
+   CONFIG(release, debug|release):{
+   imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*[^d]4.dll
+   }
+   imageFormatsPlugins.path = imageformats
+   DEPLOYMENT += addFiles imageFormatsPlugins
+}
+
diff --git a/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp b/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
new file mode 100644
index 0000000..3f38d19
--- /dev/null
+++ b/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
@@ -0,0 +1,244 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QBuffer>
+#include <QDebug>
+#include <QFile>
+#include <QImage>
+#include <QImageReader>
+#include <QImageWriter>
+#include <QLabel>
+#include <QPixmap>
+#include <QSet>
+#include <QTcpSocket>
+#include <QTcpServer>
+#include <QTimer>
+
+typedef QMap<QString, QString> QStringMap;
+typedef QList<int> QIntList;
+Q_DECLARE_METATYPE(QImage)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QSize)
+Q_DECLARE_METATYPE(QColor)
+Q_DECLARE_METATYPE(QStringMap)
+Q_DECLARE_METATYPE(QIntList)
+Q_DECLARE_METATYPE(QIODevice *)
+
+//TESTED_FILES=
+
+class tst_QImageReader : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QImageReader();
+    virtual ~tst_QImageReader();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void readImage_data();
+    void readImage();
+
+    void setScaledSize_data();
+    void setScaledSize();
+
+    void setClipRect_data();
+    void setClipRect();
+
+    void setScaledClipRect_data();
+    void setScaledClipRect();
+
+private:
+    QList< QPair<QString, QByteArray> > images; // filename, format
+};
+
+tst_QImageReader::tst_QImageReader()
+{
+    images << QPair<QString, QByteArray>(QLatin1String("colorful.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("font.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("crash-signed-char.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("4bpp-rle.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("tst7.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("16bpp.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("negativeheight.bmp"), QByteArray("bmp"));
+    images << QPair<QString, QByteArray>(QLatin1String("marble.xpm"), QByteArray("xpm"));
+    images << QPair<QString, QByteArray>(QLatin1String("kollada.png"), QByteArray("png"));
+    images << QPair<QString, QByteArray>(QLatin1String("teapot.ppm"), QByteArray("ppm"));
+    images << QPair<QString, QByteArray>(QLatin1String("runners.ppm"), QByteArray("ppm"));
+    images << QPair<QString, QByteArray>(QLatin1String("test.ppm"), QByteArray("ppm"));
+    images << QPair<QString, QByteArray>(QLatin1String("gnus.xbm"), QByteArray("xbm"));
+#if defined QTEST_HAVE_JPEG
+    images << QPair<QString, QByteArray>(QLatin1String("beavis.jpg"), QByteArray("jpeg"));
+    images << QPair<QString, QByteArray>(QLatin1String("YCbCr_cmyk.jpg"), QByteArray("jpeg"));
+    images << QPair<QString, QByteArray>(QLatin1String("YCbCr_rgb.jpg"), QByteArray("jpeg"));
+    images << QPair<QString, QByteArray>(QLatin1String("task210380.jpg"), QByteArray("jpeg"));
+#endif
+#if defined QTEST_HAVE_GIF
+    images << QPair<QString, QByteArray>(QLatin1String("earth.gif"), QByteArray("gif"));
+    images << QPair<QString, QByteArray>(QLatin1String("trolltech.gif"), QByteArray("gif"));
+#endif
+#if defined QTEST_HAVE_MNG
+    images << QPair<QString, QByteArray>(QLatin1String("ball.mng"), QByteArray("mng"));
+    images << QPair<QString, QByteArray>(QLatin1String("fire.mng"), QByteArray("mng"));
+#endif
+}
+
+tst_QImageReader::~tst_QImageReader()
+{
+}
+
+void tst_QImageReader::init()
+{
+}
+
+void tst_QImageReader::cleanup()
+{
+}
+
+void tst_QImageReader::readImage_data()
+{
+    QTest::addColumn<QString>("fileName");
+    QTest::addColumn<QByteArray>("format");
+
+    for (int i = 0; i < images.size(); ++i) {
+        const QString file = images[i].first;
+        const QByteArray format = images[i].second;
+        QTest::newRow(qPrintable(file)) << file << format;
+    }
+}
+
+void tst_QImageReader::readImage()
+{
+    QFETCH(QString, fileName);
+    QFETCH(QByteArray, format);
+
+    QBENCHMARK {
+        QImageReader io("images/" + fileName, format);
+        QImage image = io.read();
+        QVERIFY(!image.isNull());
+    }
+}
+
+void tst_QImageReader::setScaledSize_data()
+{
+    QTest::addColumn<QString>("fileName");
+    QTest::addColumn<QByteArray>("format");
+    QTest::addColumn<QSize>("newSize");
+
+    for (int i = 0; i < images.size(); ++i) {
+        const QString file = images[i].first;
+        const QByteArray format = images[i].second;
+        QSize size(200, 200);
+        if (file == QLatin1String("teapot"))
+            size = QSize(400, 400);
+        else if (file == QLatin1String("test.ppm"))
+            size = QSize(10, 10);
+        QTest::newRow(qPrintable(file)) << file << format << size;
+    }
+}
+
+void tst_QImageReader::setScaledSize()
+{
+    QFETCH(QString, fileName);
+    QFETCH(QSize, newSize);
+    QFETCH(QByteArray, format);
+
+    QBENCHMARK {
+        QImageReader reader("images/" + fileName, format);
+        reader.setScaledSize(newSize);
+        QImage image = reader.read();
+        QCOMPARE(image.size(), newSize);
+    }
+}
+
+void tst_QImageReader::setClipRect_data()
+{
+    QTest::addColumn<QString>("fileName");
+    QTest::addColumn<QByteArray>("format");
+    QTest::addColumn<QRect>("newRect");
+
+    for (int i = 0; i < images.size(); ++i) {
+        const QString file = images[i].first;
+        const QByteArray format = images[i].second;
+        QTest::newRow(qPrintable(file)) << file << format << QRect(0, 0, 50, 50);
+    }
+}
+
+void tst_QImageReader::setClipRect()
+{
+    QFETCH(QString, fileName);
+    QFETCH(QRect, newRect);
+    QFETCH(QByteArray, format);
+
+    QBENCHMARK {
+        QImageReader reader("images/" + fileName, format);
+        reader.setClipRect(newRect);
+        QImage image = reader.read();
+        QCOMPARE(image.rect(), newRect);
+    }
+}
+
+void tst_QImageReader::setScaledClipRect_data()
+{
+    setClipRect_data();
+}
+
+void tst_QImageReader::setScaledClipRect()
+{
+    QFETCH(QString, fileName);
+    QFETCH(QRect, newRect);
+    QFETCH(QByteArray, format);
+
+    QBENCHMARK {
+        QImageReader reader("images/" + fileName, format);
+        reader.setScaledSize(QSize(300, 300));
+        reader.setScaledClipRect(newRect);
+        QImage image = reader.read();
+        QCOMPARE(image.rect(), newRect);
+    }
+}
+
+QTEST_MAIN(tst_QImageReader)
+#include "tst_qimagereader.moc"
diff --git a/tests/benchmarks/gui/image/qpixmap/qpixmap.pro b/tests/benchmarks/gui/image/qpixmap/qpixmap.pro
new file mode 100644
index 0000000..e8330bd
--- /dev/null
+++ b/tests/benchmarks/gui/image/qpixmap/qpixmap.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qpixmap
+
+SOURCES += tst_qpixmap.cpp
diff --git a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
new file mode 100644
index 0000000..9ffbefb
--- /dev/null
+++ b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
@@ -0,0 +1,227 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QPixmap>
+#include <QBitmap>
+#include <QPainter>
+
+class tst_QPixmap : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QPixmap();
+
+private slots:
+    void fill_data();
+    void fill();
+
+    void scaled_data();
+    void scaled();
+    void transformed_data();
+    void transformed();
+    void mask_data();
+    void mask();
+};
+
+Q_DECLARE_METATYPE(QImage::Format)
+Q_DECLARE_METATYPE(Qt::AspectRatioMode)
+Q_DECLARE_METATYPE(Qt::TransformationMode)
+
+tst_QPixmap::tst_QPixmap()
+{
+}
+
+void tst_QPixmap::fill_data()
+{
+    QTest::addColumn<bool>("opaque");
+    QTest::addColumn<int>("width");
+    QTest::addColumn<int>("height");
+
+    QTest::newRow("opaque 16x16") << true << 16 << 16;
+    QTest::newRow("!opaque 16x16") << false << 16 << 16;
+    QTest::newRow("opaque 587x128") << true << 587 << 128;
+    QTest::newRow("!opaque 587x128") << false << 587 << 128;
+}
+
+void tst_QPixmap::fill()
+{
+    QFETCH(bool, opaque);
+    QFETCH(int, width);
+    QFETCH(int, height);
+
+    const QColor color = opaque ? QColor(255, 0, 0) : QColor(255, 0, 0, 200);
+    QPixmap pixmap(width, height);
+
+    QBENCHMARK {
+        pixmap.fill(color);
+    }
+}
+
+void tst_QPixmap::scaled_data()
+{
+    QTest::addColumn<QSize>("size");
+    QTest::addColumn<QSize>("scale");
+    QTest::addColumn<Qt::AspectRatioMode>("ratioMode");
+    QTest::addColumn<Qt::TransformationMode>("transformMode");
+
+    QTest::newRow("16x16 => 32x32") << QSize(16, 16) << QSize(32, 32)
+                                    << Qt::IgnoreAspectRatio
+                                    << Qt::FastTransformation;
+    QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
+                                        << Qt::IgnoreAspectRatio
+                                        << Qt::FastTransformation;
+    QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
+                                        << Qt::IgnoreAspectRatio
+                                        << Qt::FastTransformation;
+    QTest::newRow("80x80 => 200x200") << QSize(137, 137) << QSize(200, 200)
+                                      << Qt::IgnoreAspectRatio
+                                      << Qt::FastTransformation;
+
+}
+
+void tst_QPixmap::scaled()
+{
+    QFETCH(QSize, size);
+    QFETCH(QSize, scale);
+    QFETCH(Qt::AspectRatioMode, ratioMode);
+    QFETCH(Qt::TransformationMode, transformMode);
+
+    QPixmap opaque(size);
+    QPixmap transparent(size);
+    opaque.fill(QColor(255, 0, 0));
+    transparent.fill(QColor(255, 0, 0, 200));
+
+    QPixmap scaled1;
+    QPixmap scaled2;
+    QBENCHMARK {
+        scaled1 = opaque.scaled(scale, ratioMode, transformMode);
+        scaled2 = transparent.scaled(scale, ratioMode, transformMode);
+    }
+}
+
+void tst_QPixmap::transformed_data()
+{
+    QTest::addColumn<QSize>("size");
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<Qt::TransformationMode>("transformMode");
+
+    QTest::newRow("16x16 rotate(90)") << QSize(16, 16)
+                                      << QTransform().rotate(90)
+                                      << Qt::FastTransformation;
+    QTest::newRow("16x16 rotate(199)") << QSize(16, 16)
+                                       << QTransform().rotate(199)
+                                       << Qt::FastTransformation;
+    QTest::newRow("16x16 shear(2,1)") << QSize(16, 16)
+                                      << QTransform().shear(2, 1)
+                                      << Qt::FastTransformation;
+    QTest::newRow("16x16 rotate(199).shear(2,1)") << QSize(16, 16)
+                                                  << QTransform().rotate(199).shear(2, 1)
+                                                  << Qt::FastTransformation;
+    QTest::newRow("100x100 rotate(90)") << QSize(100, 100)
+                                        << QTransform().rotate(90)
+                                        << Qt::FastTransformation;
+    QTest::newRow("100x100 rotate(199)") << QSize(100, 100)
+                                         << QTransform().rotate(199)
+                                         << Qt::FastTransformation;
+    QTest::newRow("100x100 shear(2,1)") << QSize(100, 100)
+                                        << QTransform().shear(2, 1)
+                                        << Qt::FastTransformation;
+    QTest::newRow("100x100 shear(2,1) smooth") << QSize(100, 100)
+                                               << QTransform().shear(2, 1)
+                                               << Qt::SmoothTransformation;
+    QTest::newRow("100x100 rotate(199).shear(2,1)") << QSize(100, 100)
+                                                    << QTransform().rotate(199).shear(2, 1)
+                                                    << Qt::FastTransformation;
+}
+
+void tst_QPixmap::transformed()
+{
+    QFETCH(QSize, size);
+    QFETCH(QTransform, transform);
+    QFETCH(Qt::TransformationMode, transformMode);
+
+    QPixmap opaque(size);
+    QPixmap transparent(size);
+    opaque.fill(QColor(255, 0, 0));
+    transparent.fill(QColor(255, 0, 0, 200));
+
+    QPixmap transformed1;
+    QPixmap transformed2;
+    QBENCHMARK {
+        transformed1 = opaque.transformed(transform, transformMode);
+        transformed2 = transparent.transformed(transform, transformMode);
+    }
+}
+
+void tst_QPixmap::mask_data()
+{
+    QTest::addColumn<QSize>("size");
+
+    QTest::newRow("1x1") << QSize(1, 1);
+    QTest::newRow("9x9") << QSize(9, 9);
+    QTest::newRow("16x16") << QSize(16, 16);
+    QTest::newRow("128x128") << QSize(128, 128);
+    QTest::newRow("333x333") << QSize(333, 333);
+    QTest::newRow("2048x128") << QSize(2048, 128);
+}
+
+void tst_QPixmap::mask()
+{
+    QFETCH(QSize, size);
+
+    QPixmap src(size);
+    src.fill(Qt::transparent);
+    {
+        QPainter p(&src);
+        p.drawLine(QPoint(0, 0), QPoint(src.width(), src.height()));
+    }
+
+    QBENCHMARK {
+        QBitmap bitmap = src.mask();
+        QVERIFY(bitmap.size() == src.size());
+    }
+}
+
+QTEST_MAIN(tst_QPixmap)
+
+#include "tst_qpixmap.moc"
diff --git a/tests/benchmarks/gui/image/qpixmapcache/qpixmapcache.pro b/tests/benchmarks/gui/image/qpixmapcache/qpixmapcache.pro
new file mode 100644
index 0000000..e0d7543
--- /dev/null
+++ b/tests/benchmarks/gui/image/qpixmapcache/qpixmapcache.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qpixmapcache
+TEMPLATE = app
+# Input
+SOURCES += tst_qpixmapcache.cpp
diff --git a/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp b/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
new file mode 100644
index 0000000..1031ba7
--- /dev/null
+++ b/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
@@ -0,0 +1,226 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QPixmapCache>
+//TESTED_FILES=
+
+class tst_QPixmapCache : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QPixmapCache();
+    virtual ~tst_QPixmapCache();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void insert_data();
+    void insert();
+    void find_data();
+    void find();
+    void styleUseCaseComplexKey();
+    void styleUseCaseComplexKey_data();
+};
+
+tst_QPixmapCache::tst_QPixmapCache()
+{
+}
+
+tst_QPixmapCache::~tst_QPixmapCache()
+{
+}
+
+void tst_QPixmapCache::init()
+{
+}
+
+void tst_QPixmapCache::cleanup()
+{
+}
+
+void tst_QPixmapCache::insert_data()
+{
+    QTest::addColumn<bool>("cacheType");
+    QTest::newRow("QPixmapCache") << true;
+    QTest::newRow("QPixmapCache (int API)") << false;
+}
+
+QList<QPixmapCache::Key> keys;
+
+void tst_QPixmapCache::insert()
+{
+    QFETCH(bool, cacheType);
+    QPixmap p;
+    if (cacheType) {
+        QBENCHMARK {
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                QString tmp;
+                tmp.sprintf("my-key-%d", i);
+                QPixmapCache::insert(tmp, p);
+            }
+        }
+    } else {
+        QBENCHMARK {
+            for (int i = 0 ; i <= 10000 ; i++)
+                keys.append(QPixmapCache::insert(p));
+        }
+    }
+}
+
+void tst_QPixmapCache::find_data()
+{
+    QTest::addColumn<bool>("cacheType");
+    QTest::newRow("QPixmapCache") << true;
+    QTest::newRow("QPixmapCache (int API)") << false;
+}
+
+void tst_QPixmapCache::find()
+{
+    QFETCH(bool, cacheType);
+    QPixmap p;
+    if (cacheType) {
+        QBENCHMARK {
+            QString tmp;
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                tmp.sprintf("my-key-%d", i);
+                QPixmapCache::find(tmp, p);
+            }
+        }
+    } else {
+        QBENCHMARK {
+            for (int i = 0 ; i <= 10000 ; i++)
+                QPixmapCache::find(keys.at(i), &p);
+        }
+    }
+
+}
+
+void tst_QPixmapCache::styleUseCaseComplexKey_data()
+{
+    QTest::addColumn<bool>("cacheType");
+    QTest::newRow("QPixmapCache") << true;
+    QTest::newRow("QPixmapCache (int API)") << false;
+}
+
+struct styleStruct {
+    QString key;
+    uint state;
+    uint direction;
+    uint complex;
+    uint palette;
+    int width;
+    int height;
+    bool operator==(const styleStruct &str) const
+    {
+        return  str.state == state && str.direction == direction
+                && str.complex == complex && str.palette == palette && str.width == width
+                && str.height == height && str.key == key;
+    }
+};
+
+uint qHash(const styleStruct &myStruct)
+{
+    return qHash(myStruct.state);
+}
+
+void tst_QPixmapCache::styleUseCaseComplexKey()
+{
+    QFETCH(bool, cacheType);
+    QPixmap p;
+    if (cacheType) {
+        QBENCHMARK {
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                QString tmp;
+                tmp.sprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200);
+                QPixmapCache::insert(tmp, p);
+            }
+
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                QString tmp;
+                tmp.sprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200);
+                QPixmapCache::find(tmp, p);
+            }
+        }
+    } else {
+        QHash<styleStruct, QPixmapCache::Key> hash;
+        QBENCHMARK {
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                styleStruct myStruct;
+                myStruct.key = QString("my-progressbar-%1").arg(i);
+                myStruct.key = 5;
+                myStruct.key = 4;
+                myStruct.key = 3;
+                myStruct.palette = 358;
+                myStruct.width = 100;
+                myStruct.key = 200;
+                QPixmapCache::Key key = QPixmapCache::insert(p);
+                hash.insert(myStruct, key);
+            }
+            for (int i = 0 ; i <= 10000 ; i++)
+            {
+                styleStruct myStruct;
+                myStruct.key = QString("my-progressbar-%1").arg(i);
+                myStruct.key = 5;
+                myStruct.key = 4;
+                myStruct.key = 3;
+                myStruct.palette = 358;
+                myStruct.width = 100;
+                myStruct.key = 200;
+                QPixmapCache::Key key = hash.value(myStruct);
+                QPixmapCache::find(key, &p);
+            }
+        }
+    }
+
+}
+
+
+QTEST_MAIN(tst_QPixmapCache)
+#include "tst_qpixmapcache.moc"
diff --git a/tests/benchmarks/gui/itemviews/itemviews.pro b/tests/benchmarks/gui/itemviews/itemviews.pro
new file mode 100644
index 0000000..be0ee55
--- /dev/null
+++ b/tests/benchmarks/gui/itemviews/itemviews.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qtableview
diff --git a/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro b/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
new file mode 100644
index 0000000..02bc530
--- /dev/null
+++ b/tests/benchmarks/gui/itemviews/qtableview/qtableview.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qtableview
+
+SOURCES += tst_qtableview.cpp
+
diff --git a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
new file mode 100644
index 0000000..a84d8b5
--- /dev/null
+++ b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
@@ -0,0 +1,367 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QDebug>
+#include <QTableView>
+#include <QImage>
+#include <QPainter>
+
+//TESTED_FILES=
+
+class QtTestTableModel: public QAbstractTableModel
+{
+    Q_OBJECT
+
+
+public:
+    QtTestTableModel(int rows = 0, int columns = 0, QObject *parent = 0)
+        : QAbstractTableModel(parent),
+          row_count(rows),
+          column_count(columns) {}
+
+    int rowCount(const QModelIndex& = QModelIndex()) const { return row_count; }
+    int columnCount(const QModelIndex& = QModelIndex()) const { return column_count; }
+    bool isEditable(const QModelIndex &) const { return true; }
+
+    QVariant data(const QModelIndex &idx, int role) const
+    {
+        if (!idx.isValid() || idx.row() >= row_count || idx.column() >= column_count) {
+            qWarning() << "Invalid modelIndex [%d,%d,%p]" << idx;
+            return QVariant();
+        }
+
+        if (role == Qt::DisplayRole || role == Qt::EditRole)
+            return QString("[%1,%2,%3]").arg(idx.row()).arg(idx.column()).arg(0);
+
+        return QVariant();
+    }
+
+    bool insertRows(int start, int count, const QModelIndex &parent = QModelIndex())
+    {
+        if (start < 0 || start > row_count)
+            return false;
+
+        beginInsertRows(parent, start, start + count - 1);
+        row_count += count;
+        endInsertRows();
+        return true;
+    }
+
+    bool removeRows(int start, int count, const QModelIndex &parent = QModelIndex())
+    {
+        if (start < 0 || start >= row_count || row_count < count)
+            return false;
+
+        beginRemoveRows(parent, start, start + count - 1);
+        row_count -= count;
+        endRemoveRows();
+        return true;
+    }
+
+    bool insertColumns(int start, int count, const QModelIndex &parent = QModelIndex())
+    {
+        if (start < 0 || start > column_count)
+            return false;
+
+        beginInsertColumns(parent, start, start + count - 1);
+        column_count += count;
+        endInsertColumns();
+        return true;
+    }
+
+    bool removeColumns(int start, int count, const QModelIndex &parent = QModelIndex())
+    {
+        if (start < 0 || start >= column_count || column_count < count)
+            return false;
+
+        beginRemoveColumns(parent, start, start + count - 1);
+        column_count -= count;
+        endRemoveColumns();
+        return true;
+    }
+
+    int row_count;
+    int column_count;
+};
+
+
+
+
+class tst_QTableView : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QTableView();
+    virtual ~tst_QTableView();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void spanInit();
+    void spanDraw();
+    void spanSelectColumn();
+    void spanSelectAll();
+    void rowInsertion_data();
+    void rowInsertion();
+    void rowRemoval_data();
+    void rowRemoval();
+    void columnInsertion_data();
+    void columnInsertion();
+    void columnRemoval_data();
+    void columnRemoval();
+private:
+    static inline void spanInit_helper(QTableView *);
+};
+
+tst_QTableView::tst_QTableView()
+{
+}
+
+tst_QTableView::~tst_QTableView()
+{
+}
+
+void tst_QTableView::init()
+{
+}
+
+void tst_QTableView::cleanup()
+{
+}
+
+void tst_QTableView::spanInit_helper(QTableView *view)
+{
+    for (int i=0; i < 40; i++) {
+        view->setSpan(1+i%2, 1+4*i, 1+i%3, 2);
+    }
+    
+    for (int i=1; i < 40; i++) {
+        view->setSpan(6 + i*7, 4, 4, 50);
+    }
+}
+
+void tst_QTableView::spanInit()
+{
+    QtTestTableModel model(500, 500);
+    QTableView v;
+    v.setModel(&model);
+    
+    QBENCHMARK {
+        spanInit_helper(&v);
+    }
+}
+
+void tst_QTableView::spanDraw()
+{
+    QtTestTableModel model(500, 500);
+    QTableView v;
+    v.setModel(&model);
+    
+    spanInit_helper(&v);
+    v.show();
+    v.resize(500,500);
+    QTest::qWait(30);
+
+    QImage image(500, 500, QImage::Format_ARGB32_Premultiplied);
+    QPainter painter(&image);
+    QBENCHMARK {
+        v.render(&painter);
+    }
+}
+
+void tst_QTableView::spanSelectAll()
+{
+    QtTestTableModel model(500, 500);
+    QTableView v;
+    v.setModel(&model);
+    
+    spanInit_helper(&v);
+    v.show();
+    QTest::qWait(30);
+    
+    QBENCHMARK {
+        v.selectAll();
+    }
+}
+
+void tst_QTableView::spanSelectColumn()
+{
+    QtTestTableModel model(500, 500);
+    QTableView v;
+    v.setModel(&model);
+    
+    spanInit_helper(&v);
+    v.show();
+    QTest::qWait(30);
+    
+    QBENCHMARK {
+        v.selectColumn(22);
+    }
+}
+
+typedef QVector<QRect> SpanList;
+Q_DECLARE_METATYPE(SpanList)
+
+void spansData()
+{
+    QTest::addColumn<SpanList>("spans");
+
+    QTest::newRow("Without spans")
+        << SpanList();
+
+    QTest::newRow("With spans")
+            << (SpanList()
+                  << QRect(0, 1, 1, 2)
+                  << QRect(1, 2, 1, 2)
+                  << QRect(2, 2, 1, 5)
+                  << QRect(2, 8, 1, 2)
+                  << QRect(3, 4, 1, 2)
+                  << QRect(4, 4, 1, 4)
+                  << QRect(5, 6, 1, 3)
+                  << QRect(6, 7, 1, 3));
+}
+
+void tst_QTableView::rowInsertion_data()
+{
+    spansData();
+}
+
+void tst_QTableView::rowInsertion()
+{
+    QFETCH(SpanList, spans);
+
+    QtTestTableModel model(10, 10);
+    QTableView view;
+    view.setModel(&model);
+
+    foreach (QRect span, spans)
+        view.setSpan(span.top(), span.left(), span.height(), span.width());
+    view.show();
+    QTest::qWait(50);
+
+    QBENCHMARK_ONCE {
+        view.model()->insertRows(0, 2);
+        view.model()->insertRows(5, 2);
+        view.model()->insertRows(8, 2);
+        view.model()->insertRows(12, 2);
+    }
+}
+
+void tst_QTableView::rowRemoval_data()
+{
+    spansData();
+}
+
+void tst_QTableView::rowRemoval()
+{
+    QFETCH(SpanList, spans);
+
+    QtTestTableModel model(10, 10);
+    QTableView view;
+    view.setModel(&model);
+
+    foreach (QRect span, spans)
+        view.setSpan(span.top(), span.left(), span.height(), span.width());
+    view.show();
+    QTest::qWait(50);
+
+    QBENCHMARK_ONCE {
+        view.model()->removeRows(3, 3);
+    }
+}
+
+void tst_QTableView::columnInsertion_data()
+{
+    spansData();
+}
+
+void tst_QTableView::columnInsertion()
+{
+    QFETCH(SpanList, spans);
+
+    QtTestTableModel model(10, 10);
+    QTableView view;
+    view.setModel(&model);
+
+    // Same set as for rowInsertion, just swapping columns and rows.
+    foreach (QRect span, spans)
+        view.setSpan(span.left(), span.top(), span.width(), span.height());
+    view.show();
+    QTest::qWait(50);
+
+    QBENCHMARK_ONCE {
+        view.model()->insertColumns(0, 2);
+        view.model()->insertColumns(5, 2);
+        view.model()->insertColumns(8, 2);
+        view.model()->insertColumns(12, 2);
+    }
+}
+
+void tst_QTableView::columnRemoval_data()
+{
+    spansData();
+}
+
+void tst_QTableView::columnRemoval()
+{
+    QFETCH(SpanList, spans);
+
+    QtTestTableModel model(10, 10);
+    QTableView view;
+    view.setModel(&model);
+
+    // Same set as for rowRemoval, just swapping columns and rows.
+    foreach (QRect span, spans)
+        view.setSpan(span.left(), span.top(), span.width(), span.height());
+    view.show();
+    QTest::qWait(50);
+
+    QBENCHMARK_ONCE {
+        view.model()->removeColumns(3, 3);
+    }
+}
+
+QTEST_MAIN(tst_QTableView)
+#include "tst_qtableview.moc"
diff --git a/tests/benchmarks/gui/kernel/kernel.pro b/tests/benchmarks/gui/kernel/kernel.pro
new file mode 100644
index 0000000..a50aad2
--- /dev/null
+++ b/tests/benchmarks/gui/kernel/kernel.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qapplication \
+        qwidget
diff --git a/tests/benchmarks/gui/kernel/qapplication/main.cpp b/tests/benchmarks/gui/kernel/qapplication/main.cpp
new file mode 100644
index 0000000..c912497
--- /dev/null
+++ b/tests/benchmarks/gui/kernel/qapplication/main.cpp
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QApplication>
+
+#include <qtest.h>
+
+
+class tst_qapplication : public QObject
+{
+    Q_OBJECT
+private slots:
+    void ctor();
+};
+
+/*
+    Test the performance of the QApplication constructor.
+
+    Note: results from the second start on can be misleading,
+    since all global statics are already initialized.
+*/
+void tst_qapplication::ctor()
+{
+    // simulate reasonable argc, argv
+    int argc = 1;
+    char *argv[] = { "tst_qapplication" };
+    QBENCHMARK {
+        QApplication app(argc, argv);
+    }
+}
+
+QTEST_APPLESS_MAIN(tst_qapplication)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/kernel/qapplication/qapplication.pro b/tests/benchmarks/gui/kernel/qapplication/qapplication.pro
new file mode 100644
index 0000000..f8601e4
--- /dev/null
+++ b/tests/benchmarks/gui/kernel/qapplication/qapplication.pro
@@ -0,0 +1,10 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qapplication
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/kernel/qwidget/qwidget.pro b/tests/benchmarks/gui/kernel/qwidget/qwidget.pro
new file mode 100644
index 0000000..ff47445
--- /dev/null
+++ b/tests/benchmarks/gui/kernel/qwidget/qwidget.pro
@@ -0,0 +1,4 @@
+load(qttest_p4)
+
+TARGET = tst_qwidget
+SOURCES += tst_qwidget.cpp
diff --git a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
new file mode 100644
index 0000000..f21bd44
--- /dev/null
+++ b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
@@ -0,0 +1,332 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtGui>
+
+class tst_QWidget : public QObject
+{
+    Q_OBJECT
+
+
+private slots:
+    void update_data();
+    void updateOpaque_data();
+    void updateOpaque();
+    void updateTransparent_data();
+    void updateTransparent();
+    void updatePartial_data();
+    void updatePartial();
+    void updateComplex_data();
+    void updateComplex();
+
+    void complexToplevelResize();
+};
+
+class UpdateWidget : public QWidget
+{
+public:
+    UpdateWidget(int rows, int columns) : QWidget(0)
+    {
+        QGridLayout *layout = new QGridLayout;
+        for (int row = 0; row < rows; ++row) {
+            for (int column = 0; column < columns; ++column) {
+                UpdateWidget *widget = new UpdateWidget;
+                widget->setFixedSize(20, 20);
+                layout->addWidget(widget, row, column);
+                children.append(widget);
+            }
+        }
+        setLayout(layout);
+    }
+
+    UpdateWidget(QWidget *parent = 0) : QWidget(parent) {}
+
+    void paintEvent(QPaintEvent *)
+    {
+        static int color = Qt::black;
+
+        QPainter painter(this);
+        painter.fillRect(rect(), Qt::GlobalColor(color));
+
+        if (++color > Qt::darkYellow)
+            color = Qt::black;
+    }
+
+    QRegion updateRegion;
+    QList<UpdateWidget*> children;
+};
+
+void tst_QWidget::update_data()
+{
+    QTest::addColumn<int>("rows");
+    QTest::addColumn<int>("columns");
+    QTest::addColumn<int>("numUpdates");
+
+    QTest::newRow("10x10x1") << 10 << 10 << 1;
+    QTest::newRow("10x10x10") << 10 << 10 << 10;
+    QTest::newRow("25x25x1") << 25 << 25 << 1;
+    QTest::newRow("25x25x10") << 25 << 25 << 10;
+    QTest::newRow("25x25x100") << 25 << 25 << 100;
+}
+
+void tst_QWidget::updateOpaque_data()
+{
+    update_data();
+}
+
+void tst_QWidget::updateOpaque()
+{
+    QFETCH(int, rows);
+    QFETCH(int, columns);
+    QFETCH(int, numUpdates);
+
+    UpdateWidget widget(rows, columns);
+    foreach (QWidget *w, widget.children) {
+        w->setAttribute(Qt::WA_OpaquePaintEvent);
+    }
+
+    widget.show();
+    QApplication::processEvents();
+
+    int i = 0;
+    const int n = widget.children.size();
+    QBENCHMARK {
+        for (int j = 0; j < numUpdates; ++j) {
+            widget.children[i]->update();
+            QApplication::processEvents();
+            i = (i + 1) % n;
+        }
+    }
+}
+
+void tst_QWidget::updateTransparent_data()
+{
+    update_data();
+}
+
+void tst_QWidget::updateTransparent()
+{
+    QFETCH(int, rows);
+    QFETCH(int, columns);
+    QFETCH(int, numUpdates);
+
+    UpdateWidget widget(rows, columns);
+    widget.show();
+    QApplication::processEvents();
+
+    int i = 0;
+    const int n = widget.children.size();
+    QBENCHMARK {
+        for (int j = 0; j < numUpdates; ++j) {
+            widget.children[i]->update();
+            QApplication::processEvents();
+            i = (i + 1) % n;
+        }
+    }
+}
+
+void tst_QWidget::updatePartial_data()
+{
+    update_data();
+}
+
+void tst_QWidget::updatePartial()
+{
+    QFETCH(int, rows);
+    QFETCH(int, columns);
+    QFETCH(int, numUpdates);
+
+    UpdateWidget widget(rows, columns);
+    widget.show();
+    QApplication::processEvents();
+
+    int i = 0;
+    const int n = widget.children.size();
+    QBENCHMARK {
+        for (int j = 0; j < numUpdates; ++j) {
+            QWidget *w = widget.children[i];
+            const int x = w->width() / 2;
+            const int y = w->height() / 2;
+            w->update(0, 0, x, y);
+            w->update(x, 0, x, y);
+            w->update(0, y, x, y);
+            w->update(x, y, x, y);
+            QApplication::processEvents();
+            i = (i + 1) % n;
+        }
+    }
+}
+
+void tst_QWidget::updateComplex_data()
+{
+    update_data();
+}
+
+void tst_QWidget::updateComplex()
+{
+    QFETCH(int, rows);
+    QFETCH(int, columns);
+    QFETCH(int, numUpdates);
+
+    UpdateWidget widget(rows, columns);
+    widget.show();
+    QApplication::processEvents();
+
+    int i = 0;
+    const int n = widget.children.size();
+    QBENCHMARK {
+        for (int j = 0; j < numUpdates; ++j) {
+            QWidget *w = widget.children[i];
+            const int x = w->width() / 2;
+            const int y = w->height() / 2;
+            w->update(QRegion(0, 0, x, y, QRegion::Ellipse));
+            w->update(QRegion(x, y, x, y, QRegion::Ellipse));
+            QApplication::processEvents();
+            i = (i + 1) % n;
+        }
+    }
+}
+
+class ResizeWidget : public QWidget
+{
+public:
+    ResizeWidget();
+};
+
+ResizeWidget::ResizeWidget() : QWidget(0)
+{
+    QBoxLayout *topLayout = new QVBoxLayout;
+
+    QMenuBar *menubar = new QMenuBar;
+    QMenu* popup = menubar->addMenu("&File");
+    popup->addAction("&Quit", qApp, SLOT(quit()));
+    topLayout->setMenuBar(menubar);
+
+    QBoxLayout *buttons = new QHBoxLayout;
+    buttons->setMargin(5);
+    buttons->addStretch(10);
+    for (int i = 1; i <= 4; i++ ) {
+        QPushButton* button = new QPushButton;
+        button->setText(QString("Button %1").arg(i));
+        buttons->addWidget(button);
+    }
+    topLayout->addLayout(buttons);
+
+    buttons = new QHBoxLayout;
+    buttons->addStretch(10);
+    for (int i = 11; i <= 16; i++) {
+        QPushButton* button = new QPushButton;
+        button->setText(QString("Button %1").arg(i));
+        buttons->addWidget(button);
+    }
+    topLayout->addLayout(buttons);
+
+    QBoxLayout *buttons2 = new QHBoxLayout;
+    buttons2->addStretch(10);
+    topLayout->addLayout(buttons2);
+
+    QPushButton *button = new QPushButton;
+    button->setText("Button five");
+    buttons2->addWidget(button);
+
+    button = new QPushButton;
+    button->setText("Button 6");
+    buttons2->addWidget(button);
+
+    QTextEdit *bigWidget = new QTextEdit;
+    bigWidget->setText("This widget will get all the remaining space");
+    bigWidget->setFrameStyle(QFrame::Panel | QFrame::Plain);
+    topLayout->addWidget(bigWidget);
+
+    const int numRows = 6;
+    const int labelCol = 0;
+    const int linedCol = 1;
+    const int multiCol = 2;
+
+    QGridLayout *grid = new QGridLayout;
+    for (int row = 0; row < numRows; row++) {
+        QLineEdit *lineEdit = new QLineEdit;
+        grid->addWidget(lineEdit, row, linedCol);
+        QLabel *label = new QLabel(QString("Line &%1").arg(row + 1));
+        grid->addWidget(label, row, labelCol);
+    }
+    topLayout->addLayout(grid);
+
+    QTextEdit *multiLineEdit = new QTextEdit;
+    grid->addWidget(multiLineEdit, 0, labelCol + 1, multiCol, multiCol);
+
+    grid->setColumnStretch(linedCol, 10);
+    grid->setColumnStretch(multiCol, 20);
+
+    QLabel* statusBar = new QLabel;
+    statusBar->setText("Let's pretend this is a status bar");
+    statusBar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
+    statusBar->setFixedHeight(statusBar->sizeHint().height());
+    statusBar->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
+    topLayout->addWidget(statusBar);
+
+    topLayout->activate();
+    setLayout(topLayout);
+}
+
+void tst_QWidget::complexToplevelResize()
+{
+    ResizeWidget w;
+    w.show();
+
+    QApplication::processEvents();
+
+    const int minSize = 100;
+    const int maxSize = 800;
+    int size = minSize;
+
+    QBENCHMARK {
+        w.resize(size, size);
+        size = qMax(minSize, (size + 10) % maxSize);
+        QApplication::processEvents();
+        QApplication::processEvents();
+    }
+}
+
+QTEST_MAIN(tst_QWidget)
+
+#include "tst_qwidget.moc"
diff --git a/tests/benchmarks/gui/math3d/math3d.pro b/tests/benchmarks/gui/math3d/math3d.pro
new file mode 100644
index 0000000..c511d9a
--- /dev/null
+++ b/tests/benchmarks/gui/math3d/math3d.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qmatrix4x4 \
+        qquaternion
diff --git a/tests/benchmarks/gui/math3d/qmatrix4x4/qmatrix4x4.pro b/tests/benchmarks/gui/math3d/qmatrix4x4/qmatrix4x4.pro
new file mode 100644
index 0000000..e82d9de
--- /dev/null
+++ b/tests/benchmarks/gui/math3d/qmatrix4x4/qmatrix4x4.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qmatrix4x4
+
+SOURCES += tst_qmatrix4x4.cpp
+
diff --git a/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp b/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
new file mode 100644
index 0000000..e962198
--- /dev/null
+++ b/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
@@ -0,0 +1,672 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtOpenGL module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtTest/QtTest>
+#include <QtGui/qmatrix4x4.h>
+
+class tst_QMatrix4x4 : public QObject
+{
+    Q_OBJECT
+public:
+    tst_QMatrix4x4() {}
+    ~tst_QMatrix4x4() {}
+
+private slots:
+    void multiply_data();
+    void multiply();
+
+    void multiplyInPlace_data();
+    void multiplyInPlace();
+
+    void multiplyDirect_data();
+    void multiplyDirect();
+
+    void mapVector3D_data();
+    void mapVector3D();
+
+    void mapVector2D_data();
+    void mapVector2D();
+
+    void mapVectorDirect_data();
+    void mapVectorDirect();
+
+    void compareTranslate_data();
+    void compareTranslate();
+
+    void compareTranslateAfterScale_data();
+    void compareTranslateAfterScale();
+
+    void compareTranslateAfterRotate_data();
+    void compareTranslateAfterRotate();
+
+    void compareScale_data();
+    void compareScale();
+
+    void compareScaleAfterTranslate_data();
+    void compareScaleAfterTranslate();
+
+    void compareScaleAfterRotate_data();
+    void compareScaleAfterRotate();
+
+    void compareRotate_data();
+    void compareRotate();
+
+    void compareRotateAfterTranslate_data();
+    void compareRotateAfterTranslate();
+
+    void compareRotateAfterScale_data();
+    void compareRotateAfterScale();
+};
+
+static qreal const generalValues[16] =
+    {1.0f, 2.0f, 3.0f, 4.0f,
+     5.0f, 6.0f, 7.0f, 8.0f,
+     9.0f, 10.0f, 11.0f, 12.0f,
+     13.0f, 14.0f, 15.0f, 16.0f};
+
+void tst_QMatrix4x4::multiply_data()
+{
+    QTest::addColumn<QMatrix4x4>("m1");
+    QTest::addColumn<QMatrix4x4>("m2");
+
+    QTest::newRow("identity * identity")
+        << QMatrix4x4() << QMatrix4x4();
+    QTest::newRow("identity * general")
+        << QMatrix4x4() << QMatrix4x4(generalValues);
+    QTest::newRow("general * identity")
+        << QMatrix4x4(generalValues) << QMatrix4x4();
+    QTest::newRow("general * general")
+        << QMatrix4x4(generalValues) << QMatrix4x4(generalValues);
+}
+
+QMatrix4x4 mresult;
+
+void tst_QMatrix4x4::multiply()
+{
+    QFETCH(QMatrix4x4, m1);
+    QFETCH(QMatrix4x4, m2);
+
+    QMatrix4x4 m3;
+
+    QBENCHMARK {
+        m3 = m1 * m2;
+    }
+
+    // Force the result to be stored so the compiler doesn't
+    // optimize away the contents of the benchmark loop.
+    mresult = m3;
+}
+
+void tst_QMatrix4x4::multiplyInPlace_data()
+{
+    multiply_data();
+}
+
+void tst_QMatrix4x4::multiplyInPlace()
+{
+    QFETCH(QMatrix4x4, m1);
+    QFETCH(QMatrix4x4, m2);
+
+    QMatrix4x4 m3;
+
+    QBENCHMARK {
+        m3 = m1;
+        m3 *= m2;
+    }
+
+    // Force the result to be stored so the compiler doesn't
+    // optimize away the contents of the benchmark loop.
+    mresult = m3;
+}
+
+// Use a direct naive multiplication algorithm.  This is used
+// to compare against the optimized routines to see if they are
+// actually faster than the naive implementation.
+void tst_QMatrix4x4::multiplyDirect_data()
+{
+    multiply_data();
+}
+void tst_QMatrix4x4::multiplyDirect()
+{
+    QFETCH(QMatrix4x4, m1);
+    QFETCH(QMatrix4x4, m2);
+
+    QMatrix4x4 m3;
+
+    const qreal *m1data = m1.constData();
+    const qreal *m2data = m2.constData();
+    qreal *m3data = m3.data();
+
+    QBENCHMARK {
+        for (int row = 0; row < 4; ++row) {
+            for (int col = 0; col < 4; ++col) {
+                m3data[col * 4 + row] = 0.0f;
+                for (int j = 0; j < 4; ++j) {
+                    m3data[col * 4 + row] +=
+                        m1data[j * 4 + row] * m2data[col * 4 + j];
+                }
+            }
+        }
+    }
+}
+
+QVector3D vresult;
+
+void tst_QMatrix4x4::mapVector3D_data()
+{
+    QTest::addColumn<QMatrix4x4>("m1");
+
+    QTest::newRow("identity") << QMatrix4x4();
+    QTest::newRow("general") << QMatrix4x4(generalValues);
+
+    QMatrix4x4 t1;
+    t1.translate(-100.5f, 64.0f, 75.25f);
+    QTest::newRow("translate3D") << t1;
+
+    QMatrix4x4 t2;
+    t2.translate(-100.5f, 64.0f);
+    QTest::newRow("translate2D") << t2;
+
+    QMatrix4x4 s1;
+    s1.scale(-100.5f, 64.0f, 75.25f);
+    QTest::newRow("scale3D") << s1;
+
+    QMatrix4x4 s2;
+    s2.scale(-100.5f, 64.0f);
+    QTest::newRow("scale2D") << s2;
+}
+void tst_QMatrix4x4::mapVector3D()
+{
+    QFETCH(QMatrix4x4, m1);
+
+    QVector3D v(10.5f, -2.0f, 3.0f);
+    QVector3D result;
+
+    m1.optimize();
+
+    QBENCHMARK {
+        result = m1 * v;
+    }
+
+    // Force the result to be stored so the compiler doesn't
+    // optimize away the contents of the benchmark loop.
+    vresult = result;
+}
+
+QPointF vresult2;
+
+void tst_QMatrix4x4::mapVector2D_data()
+{
+    mapVector3D_data();
+}
+void tst_QMatrix4x4::mapVector2D()
+{
+    QFETCH(QMatrix4x4, m1);
+
+    QPointF v(10.5f, -2.0f);
+    QPointF result;
+
+    m1.optimize();
+
+    QBENCHMARK {
+        result = m1 * v;
+    }
+
+    // Force the result to be stored so the compiler doesn't
+    // optimize away the contents of the benchmark loop.
+    vresult2 = result;
+}
+
+// Use a direct naive multiplication algorithm.  This is used
+// to compare against the optimized routines to see if they are
+// actually faster than the naive implementation.
+void tst_QMatrix4x4::mapVectorDirect_data()
+{
+    mapVector3D_data();
+}
+void tst_QMatrix4x4::mapVectorDirect()
+{
+    QFETCH(QMatrix4x4, m1);
+
+    const qreal *m1data = m1.constData();
+    qreal v[4] = {10.5f, -2.0f, 3.0f, 1.0f};
+    qreal result[4];
+
+    QBENCHMARK {
+        for (int row = 0; row < 4; ++row) {
+            result[row] = 0.0f;
+            for (int col = 0; col < 4; ++col) {
+                result[row] += m1data[col * 4 + row] * v[col];
+            }
+        }
+        result[0] /= result[3];
+        result[1] /= result[3];
+        result[2] /= result[3];
+    }
+}
+
+// Compare the performance of QTransform::translate() to
+// QMatrix4x4::translate().
+void tst_QMatrix4x4::compareTranslate_data()
+{
+    QTest::addColumn<bool>("useQTransform");
+    QTest::addColumn<QVector3D>("translation");
+
+    QTest::newRow("QTransform::translate(0, 0, 0)")
+        << true << QVector3D(0, 0, 0);
+    QTest::newRow("QMatrix4x4::translate(0, 0, 0)")
+        << false << QVector3D(0, 0, 0);
+
+    QTest::newRow("QTransform::translate(1, 2, 0)")
+        << true << QVector3D(1, 2, 0);
+    QTest::newRow("QMatrix4x4::translate(1, 2, 0)")
+        << false << QVector3D(1, 2, 0);
+
+    QTest::newRow("QTransform::translate(1, 2, 4)")
+        << true << QVector3D(1, 2, 4);
+    QTest::newRow("QMatrix4x4::translate(1, 2, 4)")
+        << false << QVector3D(1, 2, 4);
+}
+void tst_QMatrix4x4::compareTranslate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, translation);
+
+    qreal x = translation.x();
+    qreal y = translation.y();
+    qreal z = translation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        QBENCHMARK {
+            t.translate(x, y);
+        }
+    } else if (z == 0.0f) {
+        QMatrix4x4 m;
+        QBENCHMARK {
+            m.translate(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        QBENCHMARK {
+            m.translate(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::translate() to
+// QMatrix4x4::translate() after priming the matrix with a scale().
+void tst_QMatrix4x4::compareTranslateAfterScale_data()
+{
+    compareTranslate_data();
+}
+void tst_QMatrix4x4::compareTranslateAfterScale()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, translation);
+
+    qreal x = translation.x();
+    qreal y = translation.y();
+    qreal z = translation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.scale(3, 4);
+        QBENCHMARK {
+            t.translate(x, y);
+        }
+    } else if (z == 0.0f) {
+        QMatrix4x4 m;
+        m.scale(3, 4);
+        QBENCHMARK {
+            m.translate(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        m.scale(3, 4, 5);
+        QBENCHMARK {
+            m.translate(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::translate() to
+// QMatrix4x4::translate() after priming the matrix with a rotate().
+void tst_QMatrix4x4::compareTranslateAfterRotate_data()
+{
+    compareTranslate_data();
+}
+void tst_QMatrix4x4::compareTranslateAfterRotate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, translation);
+
+    qreal x = translation.x();
+    qreal y = translation.y();
+    qreal z = translation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.rotate(45.0f);
+        QBENCHMARK {
+            t.translate(x, y);
+        }
+    } else if (z == 0.0f) {
+        QMatrix4x4 m;
+        m.rotate(45.0f, 0, 0, 1);
+        QBENCHMARK {
+            m.translate(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        m.rotate(45.0f, 0, 0, 1);
+        QBENCHMARK {
+            m.translate(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::scale() to
+// QMatrix4x4::scale().
+void tst_QMatrix4x4::compareScale_data()
+{
+    QTest::addColumn<bool>("useQTransform");
+    QTest::addColumn<QVector3D>("scale");
+
+    QTest::newRow("QTransform::scale(1, 1, 1)")
+        << true << QVector3D(1, 1, 1);
+    QTest::newRow("QMatrix4x4::scale(1, 1, 1)")
+        << false << QVector3D(1, 1, 1);
+
+    QTest::newRow("QTransform::scale(3, 6, 1)")
+        << true << QVector3D(3, 6, 1);
+    QTest::newRow("QMatrix4x4::scale(3, 6, 1)")
+        << false << QVector3D(3, 6, 1);
+
+    QTest::newRow("QTransform::scale(3, 6, 4)")
+        << true << QVector3D(3, 6, 4);
+    QTest::newRow("QMatrix4x4::scale(3, 6, 4)")
+        << false << QVector3D(3, 6, 4);
+}
+void tst_QMatrix4x4::compareScale()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, scale);
+
+    qreal x = scale.x();
+    qreal y = scale.y();
+    qreal z = scale.z();
+
+    if (useQTransform) {
+        QTransform t;
+        QBENCHMARK {
+            t.scale(x, y);
+        }
+    } else if (z == 1.0f) {
+        QMatrix4x4 m;
+        QBENCHMARK {
+            m.scale(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        QBENCHMARK {
+            m.scale(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::scale() to
+// QMatrix4x4::scale() after priming the matrix with a translate().
+void tst_QMatrix4x4::compareScaleAfterTranslate_data()
+{
+    compareScale_data();
+}
+void tst_QMatrix4x4::compareScaleAfterTranslate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, scale);
+
+    qreal x = scale.x();
+    qreal y = scale.y();
+    qreal z = scale.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.translate(20, 34);
+        QBENCHMARK {
+            t.scale(x, y);
+        }
+    } else if (z == 1.0f) {
+        QMatrix4x4 m;
+        m.translate(20, 34);
+        QBENCHMARK {
+            m.scale(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        m.translate(20, 34, 42);
+        QBENCHMARK {
+            m.scale(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::scale() to
+// QMatrix4x4::scale() after priming the matrix with a rotate().
+void tst_QMatrix4x4::compareScaleAfterRotate_data()
+{
+    compareScale_data();
+}
+void tst_QMatrix4x4::compareScaleAfterRotate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(QVector3D, scale);
+
+    qreal x = scale.x();
+    qreal y = scale.y();
+    qreal z = scale.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.rotate(45.0f);
+        QBENCHMARK {
+            t.scale(x, y);
+        }
+    } else if (z == 1.0f) {
+        QMatrix4x4 m;
+        m.rotate(45.0f, 0, 0, 1);
+        QBENCHMARK {
+            m.scale(x, y);
+        }
+    } else {
+        QMatrix4x4 m;
+        m.rotate(45.0f, 0, 0, 1);
+        QBENCHMARK {
+            m.scale(x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::rotate() to
+// QMatrix4x4::rotate().
+void tst_QMatrix4x4::compareRotate_data()
+{
+    QTest::addColumn<bool>("useQTransform");
+    QTest::addColumn<qreal>("angle");
+    QTest::addColumn<QVector3D>("rotation");
+    QTest::addColumn<int>("axis");
+
+    QTest::newRow("QTransform::rotate(0, ZAxis)")
+        << true << qreal(0.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+    QTest::newRow("QMatrix4x4::rotate(0, ZAxis)")
+        << false << qreal(0.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+
+    QTest::newRow("QTransform::rotate(45, ZAxis)")
+        << true << qreal(45.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+    QTest::newRow("QMatrix4x4::rotate(45, ZAxis)")
+        << false << qreal(45.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+
+    QTest::newRow("QTransform::rotate(90, ZAxis)")
+        << true << qreal(90.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+    QTest::newRow("QMatrix4x4::rotate(90, ZAxis)")
+        << false << qreal(90.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
+
+    QTest::newRow("QTransform::rotate(0, YAxis)")
+        << true << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+    QTest::newRow("QMatrix4x4::rotate(0, YAxis)")
+        << false << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+
+    QTest::newRow("QTransform::rotate(45, YAxis)")
+        << true << qreal(45.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+    QTest::newRow("QMatrix4x4::rotate(45, YAxis)")
+        << false << qreal(45.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+
+    QTest::newRow("QTransform::rotate(90, YAxis)")
+        << true << qreal(90.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+    QTest::newRow("QMatrix4x4::rotate(90, YAxis)")
+        << false << qreal(90.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
+
+    QTest::newRow("QTransform::rotate(0, XAxis)")
+        << true << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::XAxis);
+    QTest::newRow("QMatrix4x4::rotate(0, XAxis)")
+        << false << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::XAxis);
+
+    QTest::newRow("QTransform::rotate(45, XAxis)")
+        << true << qreal(45.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
+    QTest::newRow("QMatrix4x4::rotate(45, XAxis)")
+        << false << qreal(45.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
+
+    QTest::newRow("QTransform::rotate(90, XAxis)")
+        << true << qreal(90.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
+    QTest::newRow("QMatrix4x4::rotate(90, XAxis)")
+        << false << qreal(90.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
+}
+void tst_QMatrix4x4::compareRotate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(qreal, angle);
+    QFETCH(QVector3D, rotation);
+    QFETCH(int, axis);
+
+    qreal x = rotation.x();
+    qreal y = rotation.y();
+    qreal z = rotation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        QBENCHMARK {
+            t.rotate(angle, Qt::Axis(axis));
+        }
+    } else {
+        QMatrix4x4 m;
+        QBENCHMARK {
+            m.rotate(angle, x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::rotate() to
+// QMatrix4x4::rotate() after priming the matrix with a translate().
+void tst_QMatrix4x4::compareRotateAfterTranslate_data()
+{
+    compareRotate_data();
+}
+void tst_QMatrix4x4::compareRotateAfterTranslate()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(qreal, angle);
+    QFETCH(QVector3D, rotation);
+    QFETCH(int, axis);
+
+    qreal x = rotation.x();
+    qreal y = rotation.y();
+    qreal z = rotation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.translate(3, 4);
+        QBENCHMARK {
+            t.rotate(angle, Qt::Axis(axis));
+        }
+    } else {
+        QMatrix4x4 m;
+        m.translate(3, 4, 5);
+        QBENCHMARK {
+            m.rotate(angle, x, y, z);
+        }
+    }
+}
+
+// Compare the performance of QTransform::rotate() to
+// QMatrix4x4::rotate() after priming the matrix with a scale().
+void tst_QMatrix4x4::compareRotateAfterScale_data()
+{
+    compareRotate_data();
+}
+void tst_QMatrix4x4::compareRotateAfterScale()
+{
+    QFETCH(bool, useQTransform);
+    QFETCH(qreal, angle);
+    QFETCH(QVector3D, rotation);
+    QFETCH(int, axis);
+
+    qreal x = rotation.x();
+    qreal y = rotation.y();
+    qreal z = rotation.z();
+
+    if (useQTransform) {
+        QTransform t;
+        t.scale(3, 4);
+        QBENCHMARK {
+            t.rotate(angle, Qt::Axis(axis));
+        }
+    } else {
+        QMatrix4x4 m;
+        m.scale(3, 4, 5);
+        QBENCHMARK {
+            m.rotate(angle, x, y, z);
+        }
+    }
+}
+
+QTEST_MAIN(tst_QMatrix4x4)
+
+#include "tst_qmatrix4x4.moc"
diff --git a/tests/benchmarks/gui/math3d/qquaternion/qquaternion.pro b/tests/benchmarks/gui/math3d/qquaternion/qquaternion.pro
new file mode 100644
index 0000000..cd68423
--- /dev/null
+++ b/tests/benchmarks/gui/math3d/qquaternion/qquaternion.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qquaternion
+
+SOURCES += tst_qquaternion.cpp
+
diff --git a/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp b/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
new file mode 100644
index 0000000..7930092
--- /dev/null
+++ b/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QQuaternion>
+
+//TESTED_FILES=
+
+class tst_QQuaternion : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QQuaternion();
+    virtual ~tst_QQuaternion();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void multiply_data();
+    void multiply();
+};
+
+tst_QQuaternion::tst_QQuaternion()
+{
+}
+
+tst_QQuaternion::~tst_QQuaternion()
+{
+}
+
+void tst_QQuaternion::init()
+{
+}
+
+void tst_QQuaternion::cleanup()
+{
+}
+
+void tst_QQuaternion::multiply_data()
+{
+    QTest::addColumn<qreal>("x1");
+    QTest::addColumn<qreal>("y1");
+    QTest::addColumn<qreal>("z1");
+    QTest::addColumn<qreal>("w1");
+    QTest::addColumn<qreal>("x2");
+    QTest::addColumn<qreal>("y2");
+    QTest::addColumn<qreal>("z2");
+    QTest::addColumn<qreal>("w2");
+
+    QTest::newRow("null")
+        << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f
+        << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f;
+
+    QTest::newRow("unitvec")
+        << (qreal)1.0f << (qreal)0.0f << (qreal)0.0f << (qreal)1.0f
+        << (qreal)0.0f << (qreal)1.0f << (qreal)0.0f << (qreal)1.0f;
+
+    QTest::newRow("complex")
+        << (qreal)1.0f << (qreal)2.0f << (qreal)3.0f << (qreal)7.0f
+        << (qreal)4.0f << (qreal)5.0f << (qreal)6.0f << (qreal)8.0f;
+}
+
+void tst_QQuaternion::multiply()
+{
+    QFETCH(qreal, x1);
+    QFETCH(qreal, y1);
+    QFETCH(qreal, z1);
+    QFETCH(qreal, w1);
+    QFETCH(qreal, x2);
+    QFETCH(qreal, y2);
+    QFETCH(qreal, z2);
+    QFETCH(qreal, w2);
+
+    QQuaternion q1(w1, x1, y1, z1);
+    QQuaternion q2(w2, x2, y2, z2);
+
+    QBENCHMARK {
+        QQuaternion q3 = q1 * q2;
+    }
+}
+
+QTEST_MAIN(tst_QQuaternion)
+#include "tst_qquaternion.moc"
diff --git a/tests/benchmarks/gui/painting/painting.pro b/tests/benchmarks/gui/painting/painting.pro
new file mode 100644
index 0000000..878567d
--- /dev/null
+++ b/tests/benchmarks/gui/painting/painting.pro
@@ -0,0 +1,5 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qpainter \
+        qregion \
+        qtransform
diff --git a/tests/benchmarks/gui/painting/qpainter/qpainter.pro b/tests/benchmarks/gui/painting/qpainter/qpainter.pro
new file mode 100644
index 0000000..5ac8c64
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qpainter/qpainter.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qpainter
+
+SOURCES += tst_qpainter.cpp
diff --git a/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
new file mode 100644
index 0000000..39b2244
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
@@ -0,0 +1,1633 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QPainter>
+#include <QPixmap>
+#include <QDialog>
+#include <QImage>
+#include <QPaintEngine>
+#include <math.h>
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+Q_DECLARE_METATYPE(QLine)
+Q_DECLARE_METATYPE(QRect)
+Q_DECLARE_METATYPE(QSize)
+Q_DECLARE_METATYPE(QPoint)
+Q_DECLARE_METATYPE(QPainterPath)
+Q_DECLARE_METATYPE(QPainter::RenderHint)
+Q_DECLARE_METATYPE(QPainter::CompositionMode)
+Q_DECLARE_METATYPE(QImage::Format)
+
+enum PrimitiveType {
+    Primitive_Int_DiagLine,
+    Primitive_Int_VerLine,
+    Primitive_Int_HorLine,
+    Primitive_Int_Rect,
+    Primitive_Int_Ellipse,
+    Primitive_Int_Pie,
+    Primitive_Int_Arc,
+    Primitive_Int_Chord,
+    Primitive_Int_TriPoly,
+    Primitive_Int_RectPoly,
+    Primitive_Int_2RectPoly,
+
+    Primitive_Float_DiagLine,
+    Primitive_Float_VerLine,
+    Primitive_Float_HorLine,
+    Primitive_Float_Rect,
+    Primitive_Float_Ellipse,
+    Primitive_Float_Pie,
+    Primitive_Float_Arc,
+    Primitive_Float_Chord,
+    Primitive_Float_TriPoly,
+    Primitive_Float_RectPoly,
+    Primitive_Float_2RectPoly,
+
+    Primitive_Float_TriPath,
+    Primitive_Float_RectPath,
+    Primitive_Float_2RectPath,
+    Primitive_Float_EllipsePath,
+    Primitive_Last_Primitive
+
+};
+
+
+enum StateChanges {
+    ChangePen         = 0x0001,
+    ChangeBrush       = 0x0002,
+    ChangeClip        = 0x0004,
+    ChangeTransform   = 0x0008
+};
+
+
+struct PrimitiveSet {
+    QRect i_rect;
+    QLine i_line_diag;
+    QLine i_line_ver;
+    QLine i_line_hor;
+    QPolygon i_poly_tri;
+    QPolygon i_poly_2rects;
+    QPolygon i_poly_rect;
+
+    QRectF f_rect;
+    QLineF f_line_diag;
+    QLineF f_line_ver;
+    QLineF f_line_hor;
+    QPolygonF f_poly_tri;
+    QPolygonF f_poly_2rects;
+    QPolygonF f_poly_rect;
+
+    QPainterPath f_path_tri;
+    QPainterPath f_path_2rects;
+    QPainterPath f_path_rect;
+    QPainterPath f_path_ellipse;
+};
+
+
+class tst_QPainter : public QObject
+{
+    Q_OBJECT
+
+    public:
+    tst_QPainter()
+    {
+        setupBrushes();
+        createPrimitives();
+        m_surface = surface();
+    }
+
+private slots:
+    void beginAndEnd();
+
+    void saveRestore_data();
+    void saveRestore();
+
+    void drawLine_data();
+    void drawLine();
+    void drawLine_clipped_data();
+    void drawLine_clipped();
+    void drawLine_antialiased_clipped_data();
+    void drawLine_antialiased_clipped();
+
+    void drawPixmap_data();
+    void drawPixmap();
+
+    void drawImage_data();
+    void drawImage();
+
+    void drawTiledPixmap_data();
+    void drawTiledPixmap();
+
+    void compositionModes_data();
+    void compositionModes();
+
+    void fillPrimitives_10_data() { drawPrimitives_data_helper(false); }
+    void fillPrimitives_100_data() { drawPrimitives_data_helper(false); }
+    void fillPrimitives_1000_data() { drawPrimitives_data_helper(false); }
+    void fillPrimitives_10();
+    void fillPrimitives_100();
+    void fillPrimitives_1000();
+
+    void strokePrimitives_10_data() { drawPrimitives_data_helper(true); }
+    void strokePrimitives_100_data() { drawPrimitives_data_helper(true); }
+    void strokePrimitives_1000_data() { drawPrimitives_data_helper(true); }
+    void strokePrimitives_10();
+    void strokePrimitives_100();
+    void strokePrimitives_1000();
+
+    void drawText_data();
+    void drawText();
+
+    void clipAndFill_data();
+    void clipAndFill();
+
+    void drawRoundedRect();
+    void drawScaledRoundedRect();
+    void drawTransformedRoundedRect();
+
+    void drawScaledAntialiasedRoundedRect_data();
+    void drawTransformedAntialiasedRoundedRect_data();
+    void drawAntialiasedRoundedRect();
+    void drawScaledAntialiasedRoundedRect();
+    void drawTransformedAntialiasedRoundedRect();
+
+    void drawScaledImageRoundedRect_data();
+    void drawTransformedImageRoundedRect_data();
+    void drawImageRoundedRect();
+    void drawScaledImageRoundedRect();
+    void drawTransformedImageRoundedRect();
+
+    void drawScaledBorderPixmapRoundedRect_data();
+    void drawTransformedBorderPixmapRoundedRect_data();
+    void drawBorderPixmapRoundedRect();
+    void drawScaledBorderPixmapRoundedRect();
+    void drawTransformedBorderPixmapRoundedRect();
+
+    void drawTransformedTransparentImage_data();
+    void drawTransformedSemiTransparentImage_data();
+    void drawTransformedFilledImage_data();
+    void drawTransformedTransparentImage();
+    void drawTransformedSemiTransparentImage();
+    void drawTransformedFilledImage();
+
+private:
+    void setupBrushes();
+    void createPrimitives();
+
+    void drawPrimitives_data_helper(bool fancypens);
+    void fillPrimitives_helper(QPainter *painter, PrimitiveType type, PrimitiveSet *s);
+
+    QTransform transformForAngle(qreal angle);
+
+    QPaintDevice *surface()
+    {
+        return new QPixmap(1024, 1024);
+    }
+
+
+    QMap<QString, QPen> m_pens;
+    QMap<QString, QBrush> m_brushes;
+
+    PrimitiveSet m_primitives_10;
+    PrimitiveSet m_primitives_100;
+    PrimitiveSet m_primitives_1000;
+
+    QPaintDevice *m_surface;
+    QPainter m_painter;
+
+};
+
+void tst_QPainter::createPrimitives()
+{
+    for (int i=0; i<3; ++i) {
+        PrimitiveSet *ps;
+        int size;
+        switch (i) {
+        case 0:
+            ps = &m_primitives_10;
+            size = 10;
+            break;
+        case 1:
+            ps = &m_primitives_100;
+            size = 100;
+            break;
+        case 2:
+            ps = &m_primitives_1000;
+            size = 1000;
+            break;
+        }
+
+        ps->f_rect = QRectF(0, 0, size, size);
+        ps->f_line_diag = QLineF(0, 0, size, size);
+        ps->f_line_ver = QLineF(10, 0, 10, size);
+        ps->f_line_hor = QLineF(0, 10, size, 10);
+        ps->f_poly_rect = QPolygonF() << QPointF(0, 0)
+                                      << QPointF(size, 0)
+                                      << QPointF(size, size)
+                                      << QPointF(0, size);
+        ps->f_poly_2rects = QPolygonF() << QPointF(0, 0)
+                                        << QPointF(size * 0.75, 0)
+                                        << QPointF(size * 0.75, size * 0.75)
+                                        << QPointF(size * 0.25, size * 0.75)
+                                        << QPointF(size * 0.25, size * 0.25)
+                                        << QPointF(size, size * 0.25)
+                                        << QPointF(size, size)
+                                        << QPointF(0, size);
+        ps->f_poly_tri = QPolygonF() << QPointF(size / 2.0, 0)
+                                     << QPointF(0, size)
+                                     << QPointF(size, size);
+
+        ps->f_path_tri.addPolygon(ps->f_poly_tri);
+        ps->f_path_rect.addRect(ps->f_rect);
+        ps->f_path_2rects.addPolygon(ps->f_poly_2rects);
+        ps->f_path_ellipse.addEllipse(ps->f_rect);
+
+        ps->i_rect = ps->f_rect.toRect();
+        ps->i_line_diag = ps->f_line_diag.toLine();
+        ps->i_line_hor = ps->f_line_hor.toLine();
+        ps->i_line_ver = ps->f_line_ver.toLine();
+        ps->i_poly_tri = ps->f_poly_tri.toPolygon();
+        ps->i_poly_rect = ps->f_poly_rect.toPolygon();
+        ps->i_poly_2rects = ps->f_poly_2rects.toPolygon();
+    }
+}
+
+void tst_QPainter::drawLine_data()
+{
+    QTest::addColumn<QLine>("line");
+    QTest::addColumn<QPen>("pen");
+
+    QVector<QPen> pens;
+    pens << QPen(Qt::black)
+         << QPen(Qt::black, 0, Qt::DashDotLine)
+         << QPen(Qt::black, 4)
+         << QPen(Qt::black, 4, Qt::DashDotLine)
+         << QPen(QColor(255, 0, 0, 200))
+         << QPen(QColor(255, 0, 0, 200), 0, Qt::DashDotLine)
+         << QPen(QColor(255, 0, 0, 200), 4)
+         << QPen(QColor(255, 0, 0, 200), 4, Qt::DashDotLine);
+
+    QStringList penNames;
+    penNames << "black-0"
+             << "black-0-dashdot"
+             << "black-4"
+             << "black-4-dashdot"
+             << "alpha-0"
+             << "alpha-0-dashdot"
+             << "alpha-4"
+             << "alpha-4-dashdot";
+
+    int i = 0;
+    foreach (QPen pen, pens) {
+        const QString s = QString(QLatin1String("%1:%2")).arg(penNames[i]);
+        QTest::newRow(qPrintable(s.arg("horizontal")))
+            << QLine(0, 20, 100, 20) << pen;
+        QTest::newRow(qPrintable(s.arg("vertical:")))
+            << QLine(20, 0, 20, 100) << pen;
+        QTest::newRow(qPrintable(s.arg("0-45:")))
+            << QLine(0, 20, 100, 0) << pen;
+        QTest::newRow(qPrintable(s.arg("45-90:")))
+            << QLine(0, 100, 20, 0) << pen;
+        QTest::newRow(qPrintable(s.arg("90-135:")))
+            << QLine(20, 100, 0, 0) << pen;
+        QTest::newRow(qPrintable(s.arg("135-180:")))
+            << QLine(100, 20, 0, 0) << pen;
+        QTest::newRow(qPrintable(s.arg("180-225:")))
+            << QLine(100, 0, 0, 20) << pen;
+        QTest::newRow(qPrintable(s.arg("225-270:")))
+            << QLine(20, 0, 0, 100) << pen;
+        QTest::newRow(qPrintable(s.arg("270-315:")))
+            << QLine(0, 0, 20, 100) << pen;
+        QTest::newRow(qPrintable(s.arg("315-360:")))
+            << QLine(0, 0, 100, 20) << pen;
+        ++i;
+    }
+}
+
+void tst_QPainter::setupBrushes()
+{
+    // Solid brushes...
+    m_brushes["black-brush"] = QBrush(Qt::black);
+    m_brushes["white-brush"] = QBrush(Qt::white);
+    m_brushes["transparent-brush"] = QBrush(QColor(255, 255, 255, 0));
+    m_brushes["alpha1-brush"] = QBrush(QColor(255, 255, 255, 100));
+    m_brushes["alpha2-brush"] = QBrush(QColor(255, 255, 255, 200));
+
+
+    // Patterns
+    m_brushes["dense1-brush"] = QBrush(Qt::Dense1Pattern);
+    m_brushes["dense2-brush"] = QBrush(Qt::Dense2Pattern);
+    m_brushes["dense3-brush"] = QBrush(Qt::Dense3Pattern);
+    m_brushes["dense4-brush"] = QBrush(Qt::Dense4Pattern);
+    m_brushes["dense5-brush"] = QBrush(Qt::Dense5Pattern);
+    m_brushes["dense6-brush"] = QBrush(Qt::Dense6Pattern);
+    m_brushes["dense7-brush"] = QBrush(Qt::Dense7Pattern);
+    m_brushes["hor-brush"] = QBrush(Qt::HorPattern);
+    m_brushes["ver-brush"] = QBrush(Qt::VerPattern);
+    m_brushes["cross-brush"] = QBrush(Qt::CrossPattern);
+    m_brushes["bdiag-brush"] = QBrush(Qt::BDiagPattern);
+    m_brushes["fdiag-brush"] = QBrush(Qt::FDiagPattern);
+    m_brushes["diagcross-brush"] = QBrush(Qt::DiagCrossPattern);
+
+    // Gradients
+    QGradientStops gradient_white_black;
+    gradient_white_black << QPair<qreal, QColor>(0, QColor(Qt::white));
+    gradient_white_black << QPair<qreal, QColor>(1, QColor(Qt::black));
+
+    QGradientStops gradient_white_black10;
+    for (int i=0; i<10; ++i) {
+        gradient_white_black10 << QPair<qreal, QColor>(i/10.0, QColor(Qt::white));
+        gradient_white_black10 << QPair<qreal, QColor>(i/10.0+0.05, QColor(Qt::black));
+    }
+
+    QGradientStops gradient_white_alpha;
+    gradient_white_alpha << QPair<qreal, QColor>(0, QColor(Qt::white));
+    gradient_white_alpha << QPair<qreal, QColor>(0, QColor(Qt::transparent));
+
+    QGradientStops gradient_white_alpha10;
+    for (int i=0; i<10; ++i) {
+        gradient_white_alpha10 << QPair<qreal, QColor>(i/10.0, QColor(Qt::white));
+        gradient_white_alpha10 << QPair<qreal, QColor>(i/10.0+0.05, QColor(Qt::black));
+    }
+
+
+    for (int j=0; j<4; ++j) {
+        QLinearGradient lg;
+        lg.setStart(0, 0);
+
+        QRadialGradient rg;
+        QConicalGradient cg;
+
+        QGradientStops stops;
+        if (j == 0) stops = gradient_white_black;
+        else if (j == 1) stops = gradient_white_black10;
+        else if (j == 2) stops = gradient_white_alpha;
+        else if (j == 3) stops = gradient_white_alpha10;
+        lg.setStops(stops);
+        rg.setStops(stops);
+        cg.setStops(stops);
+
+        for (int i=0; i<6; ++i) {
+            lg.setSpread((QGradient::Spread) (i % 3));
+            lg.setCoordinateMode((QGradient::CoordinateMode) (j / 3));
+
+            QString name = QString::fromLatin1("-%1%2")
+                           .arg(lg.spread())
+                           .arg(lg.coordinateMode());
+
+            lg.setFinalStop(100, 0);
+            m_brushes["hor-lingrad-w/b-brush" + name] = QBrush(lg);
+
+            lg.setFinalStop(0, 100);
+            m_brushes["ver-lingrad-w/b-brush" + name] = QBrush(lg);
+
+            lg.setFinalStop(100, 100);
+            m_brushes["diag-lingrad-w/b-brush" + name] = QBrush(lg);
+
+            rg.setRadius(100);
+            rg.setCenter(0, 0);
+            rg.setFocalPoint(50, 50);
+            m_brushes["radgrad-brush" + name] = QBrush(rg);
+
+            cg.setCenter(0, 0);
+            cg.setAngle(40);
+            m_brushes["congrad-brush" + name] = QBrush(cg);
+        }
+    }
+
+    // Set up pens...
+
+
+//     m_pens["black-pen"] = QPen(Qt::black);
+//     m_pens["white-pen"] = QPen(Qt::white);
+//     m_pens["transparent-pen"] = QPen(QColor(255, 255, 255, 0));
+//     m_pens["translucent1-pen"] = QPen(QColor(255, 255, 255, 100));
+//     m_pens["translucent2-pen"] = QPen(QColor(255, 255, 255, 200));
+
+
+
+}
+
+
+// void QPainter_Primitives::fillRect_data() {
+
+//     QTest::addColumn<QBrush>("brush");
+//     QTest::addColumn<QSize>("size");
+
+//     for (QMap<QString, QBrush>::const_iterator it = m_brushes.constBegin();
+//          it != m_brushes.constEnd(); ++it) {
+//         for (int w=2; w<1025; w*=2) {
+//             for (int h=2; h<1025; h*=2) {
+//                 QTest::newRow(QString("brush=%1; size=[%2,%3]").arg(it.key()).arg(w).arg(h).toAscii().data())
+//                     << *it << QSize(w, h);
+//             }
+//         }
+//     }
+// }
+
+
+
+
+
+// void QPainter_Primitives::fillRect()
+// {
+//     QFETCH(QBrush, brush);
+//     QFETCH(QSize, size);
+
+//     QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
+//     QPainter p(&img);
+//     p.setPen(Qt::NoPen);
+//     p.setBrush(brush);
+//     QRect rect(QPoint(0, 0), size);
+//     QBENCHMARK {
+//         p.drawRect(rect);
+//     }
+// }
+
+
+
+
+void tst_QPainter::beginAndEnd()
+{
+    QPixmap pixmap(100, 100);
+
+    QBENCHMARK {
+        QPainter p;
+        p.begin(&pixmap);
+        p.end();
+    }
+}
+
+void tst_QPainter::drawLine()
+{
+    QFETCH(QLine, line);
+    QFETCH(QPen, pen);
+
+    const int offset = 5;
+    QPixmap pixmapUnclipped(qMin(line.x1(), line.x2())
+                            + 2*offset + qAbs(line.dx()),
+                            qMin(line.y1(), line.y2())
+                            + 2*offset + qAbs(line.dy()));
+    pixmapUnclipped.fill(Qt::white);
+
+    QPainter p(&pixmapUnclipped);
+    p.translate(offset, offset);
+    p.setPen(pen);
+    p.paintEngine()->syncState();
+
+    QBENCHMARK {
+        p.drawLine(line);
+    }
+
+    p.end();
+
+}
+
+void tst_QPainter::drawLine_clipped_data()
+{
+    drawLine_data();
+}
+
+void tst_QPainter::drawLine_clipped()
+{
+    QFETCH(QLine, line);
+    QFETCH(QPen, pen);
+
+    const int offset = 5;
+    QPixmap pixmapClipped(qMin(line.x1(), line.x2())
+                          + 2*offset + qAbs(line.dx()),
+                          qMin(line.y1(), line.y2())
+                          + 2*offset + qAbs(line.dy()));
+
+    const QRect clip = QRect(line.p1(), line.p2()).normalized();
+
+    pixmapClipped.fill(Qt::white);
+    QPainter p(&pixmapClipped);
+    p.translate(offset, offset);
+    p.setClipRect(clip);
+    p.setPen(pen);
+    p.paintEngine()->syncState();
+
+    QBENCHMARK {
+        p.drawLine(line);
+    }
+
+    p.end();
+}
+
+
+void tst_QPainter::drawLine_antialiased_clipped_data()
+{
+    drawLine_data();
+}
+
+
+void tst_QPainter::drawLine_antialiased_clipped()
+{
+    QFETCH(QLine, line);
+    QFETCH(QPen, pen);
+
+    const int offset = 5;
+    QPixmap pixmapClipped(qMin(line.x1(), line.x2())
+                          + 2*offset + qAbs(line.dx()),
+                          qMin(line.y1(), line.y2())
+                          + 2*offset + qAbs(line.dy()));
+
+    const QRect clip = QRect(line.p1(), line.p2()).normalized();
+
+    pixmapClipped.fill(Qt::white);
+    QPainter p(&pixmapClipped);
+    p.setRenderHint(QPainter::Antialiasing);
+    p.translate(offset, offset);
+    p.setClipRect(clip);
+    p.setPen(pen);
+    p.paintEngine()->syncState();
+
+    QBENCHMARK {
+        p.drawLine(line);
+    }
+
+    p.end();
+}
+
+void tst_QPainter::drawPixmap_data()
+{
+    QTest::addColumn<QImage::Format>("sourceFormat");
+    QTest::addColumn<QImage::Format>("targetFormat");
+    QTest::addColumn<QSize>("size");
+    QTest::addColumn<int>("type"); // 0 = circle, 1 = diag line, 2 = solid rect, 3 = alpharect
+
+    QList<QSize> sizes;
+    sizes << QSize(1, 1)
+          << QSize(10, 10)
+          << QSize(100, 100)
+          << QSize(1000, 1000);
+
+    const char *typeNames[] = {
+        "circle",
+        "line",
+        "solidrect",
+        "alpharect"
+    };
+
+    const char *formatNames[] = {
+        "Invalid",
+        "Mono",
+        "MonoLSB",
+        "Indexed8",
+        "RGB32",
+        "ARGB32",
+        "ARGB32_pm",
+        "RGB16",
+        "ARGB8565_pm",
+        "RGB666",
+        "ARGB6666_pm",
+        "RGB555",
+        "ARGB8555_pm",
+        "RGB888",
+        "RGB444",
+        "ARGB4444_pm"
+    };
+
+    for (int tar=4; tar<QImage::NImageFormats; ++tar) {
+        for (int src=4; src<QImage::NImageFormats; ++src) {
+
+            // skip the low-priority formats to keep resultset manageable...
+            if (tar == QImage::Format_RGB444 || src == QImage::Format_RGB444
+                || tar == QImage::Format_RGB555 || src == QImage::Format_RGB555
+                || tar == QImage::Format_RGB666 || src == QImage::Format_RGB666
+                || tar == QImage::Format_RGB888 || src == QImage::Format_RGB888
+                || tar == QImage::Format_ARGB4444_Premultiplied
+                || src == QImage::Format_ARGB4444_Premultiplied
+                || tar == QImage::Format_ARGB6666_Premultiplied
+                || src == QImage::Format_ARGB6666_Premultiplied)
+                continue;
+
+            foreach (const QSize &s, sizes) {
+                for (int type=0; type<=3; ++type) {
+                    QString name = QString::fromLatin1("%1 on %2, (%3x%4), %5")
+                                   .arg(formatNames[src])
+                                   .arg(formatNames[tar])
+                                   .arg(s.width()).arg(s.height())
+                                   .arg(typeNames[type]);
+                    QTest::newRow(name.toLatin1()) << (QImage::Format) src
+                                                   << (QImage::Format) tar
+                                                   << s
+                                                   << type;
+                }
+            }
+        }
+    }
+}
+
+static QImage createImage(int type, const QSize &size) {
+    QImage base(size, QImage::Format_ARGB32_Premultiplied);
+    base.fill(0);
+    QPainter p(&base);
+    p.setRenderHint(QPainter::Antialiasing);
+    switch (type) {
+    case 0: // ellipse
+        p.setBrush(Qt::red);
+        p.drawEllipse(0, 0, size.width(), size.height());
+        break;
+    case 1: // line
+        p.drawLine(0, 0, size.width(), size.height());
+        break;
+    case 2:
+        p.fillRect(0, 0, size.width(), size.height(), Qt::red);
+        break;
+    case 3:
+        p.fillRect(0, 0, size.width(), size.height(), QColor(0, 255, 0, 127));
+        break;
+    }
+    p.end();
+    return base;
+}
+
+
+void tst_QPainter::drawPixmap()
+{
+    QFETCH(QImage::Format, sourceFormat);
+    QFETCH(QImage::Format, targetFormat);
+    QFETCH(QSize, size);
+    QFETCH(int, type);
+
+    QImage sourceImage = createImage(type, size).convertToFormat(sourceFormat);
+    QImage targetImage(size, targetFormat);
+
+    QPixmap sourcePixmap = QPixmap::fromImage(sourceImage);
+    QPixmap targetPixmap = QPixmap::fromImage(targetImage);
+
+    QPainter p(&targetPixmap);
+
+    QBENCHMARK {
+        p.drawPixmap(0, 0, sourcePixmap);
+    }
+}
+
+void tst_QPainter::drawImage_data()
+{
+    drawPixmap_data();
+}
+
+
+void tst_QPainter::drawImage()
+{
+    QFETCH(QImage::Format, sourceFormat);
+    QFETCH(QImage::Format, targetFormat);
+    QFETCH(QSize, size);
+    QFETCH(int, type);
+
+    QImage sourceImage = createImage(type, size).convertToFormat(sourceFormat);
+    QImage targetImage(size, targetFormat);
+
+    QPainter p(&targetImage);
+    QBENCHMARK {
+        p.drawImage(0, 0, sourceImage);
+    }
+}
+
+
+void tst_QPainter::compositionModes_data()
+{
+    QTest::addColumn<QPainter::CompositionMode>("mode");
+    QTest::addColumn<QSize>("size");
+    QTest::addColumn<QColor>("color");
+
+    const int n = QPainter::RasterOp_SourceAndNotDestination;
+    for (int i = 0; i <= n; ++i) {
+        QString title("%1:%2");
+        QTest::newRow(qPrintable(title.arg(i).arg("10x10:opaque")))
+            << (QPainter::CompositionMode)(i)
+            << QSize(10, 10) << QColor(255, 0, 0);
+        QTest::newRow(qPrintable(title.arg(i).arg("10x10:!opaque")))
+            << (QPainter::CompositionMode)(i)
+            << QSize(10, 10) << QColor(127, 127, 127, 127);
+        QTest::newRow(qPrintable(title.arg(i).arg("300x300:opaque")))
+            << (QPainter::CompositionMode)(i)
+            << QSize(300, 300) << QColor(255, 0, 0);
+        QTest::newRow(qPrintable(title.arg(i).arg("300x300:!opaque")))
+            << (QPainter::CompositionMode)(i)
+            << QSize(300, 300) << QColor(127, 127, 127, 127);
+    }
+}
+
+void tst_QPainter::compositionModes()
+{
+    QFETCH(QPainter::CompositionMode, mode);
+    QFETCH(QSize, size);
+    QFETCH(QColor, color);
+
+    QPixmap src(size);
+    src.fill(color);
+
+    QPixmap dest(size);
+    if (mode < QPainter::RasterOp_SourceOrDestination)
+        color.setAlpha(127); // porter-duff needs an alpha channel
+    dest.fill(color);
+
+    QPainter p(&dest);
+    p.setCompositionMode(mode);
+
+    QBENCHMARK {
+        p.drawPixmap(0, 0, src);
+    }
+}
+
+void tst_QPainter::drawTiledPixmap_data()
+{
+    QTest::addColumn<QSize>("srcSize");
+    QTest::addColumn<QSize>("dstSize");
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<QColor>("color");
+    QTest::addColumn<QPainter::RenderHint>("renderHint");
+
+    QTest::newRow("10x10=>20x20")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform())
+        << QColor(Qt::black) << QPainter::RenderHint(0);
+    QTest::newRow("10x10=>20x20, smooth")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform())
+        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
+    QTest::newRow("10x10=>20x20, !opaque")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform())
+        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
+    QTest::newRow("10x10=>20x20, !opaque, smooth")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform())
+        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
+
+    QTest::newRow("10x10=>20x20, rotate(30)")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
+        << QColor(Qt::black) << QPainter::RenderHint(0);
+    QTest::newRow("10x10=>20x20, rotate(30), smooth")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
+        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
+    QTest::newRow("10x10=>20x20, rotate(30), !opaque")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
+        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
+    QTest::newRow("10x10=>20x20, rotate(30), !opaque, smooth")
+        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
+        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
+
+    QTest::newRow("100x100=>200x200")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform())
+        << QColor(Qt::black) << QPainter::RenderHint(0);
+    QTest::newRow("100x100=>200x200, smooth")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform())
+        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
+    QTest::newRow("100x100=>200x200, !opaque")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform())
+        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
+    QTest::newRow("100x100=>200x200, !opaque, smooth")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform())
+        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
+
+    QTest::newRow("100x100=>200x200, rotate(30)")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
+        << QColor(Qt::black) << QPainter::RenderHint(0);
+    QTest::newRow("100x100=>200x200, rotate(30), smooth")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
+        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
+    QTest::newRow("100x100=>200x200, rotate(30), !opaque")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
+        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
+    QTest::newRow("100x100=>200x200, rotate(30), !opaque, smooth")
+        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
+        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
+}
+
+void tst_QPainter::drawTiledPixmap()
+{
+    QFETCH(QSize, srcSize);
+    QFETCH(QSize, dstSize);
+    QFETCH(QTransform, transform);
+    QFETCH(QColor, color);
+    QFETCH(QPainter::RenderHint, renderHint);
+
+    QPixmap src(srcSize);
+    src.fill(color);
+
+    const QRect dstRect = transform.mapRect(QRect(QPoint(), dstSize));
+    QPixmap dst(dstRect.right() + 5, dstRect.bottom() + 5);
+    QPainter p(&dst);
+    p.setTransform(transform);
+    p.setRenderHint(renderHint);
+
+    QBENCHMARK {
+        p.drawTiledPixmap(QRect(QPoint(), dstSize), src);
+    }
+}
+
+void tst_QPainter::fillPrimitives_helper(QPainter *p, PrimitiveType type, PrimitiveSet *s)
+{
+    p->paintEngine()->syncState();
+
+    switch (type) {
+    case Primitive_Int_DiagLine:        QBENCHMARK { p->drawLine(s->i_line_diag); } break;
+    case Primitive_Int_VerLine:         QBENCHMARK { p->drawLine(s->i_line_ver); } break;
+    case Primitive_Int_HorLine:         QBENCHMARK { p->drawLine(s->i_line_hor); } break;
+    case Primitive_Int_Rect:            QBENCHMARK { p->drawRect(s->i_rect); } break;
+    case Primitive_Int_Ellipse:         QBENCHMARK { p->drawEllipse(s->i_rect); } break;
+    case Primitive_Int_Pie:             QBENCHMARK { p->drawPie(s->i_rect, 45*16, 270*16); } break;
+    case Primitive_Int_Arc:             QBENCHMARK { p->drawArc(s->i_rect, 45*16, 270*16); } break;
+    case Primitive_Int_Chord:           QBENCHMARK { p->drawChord(s->i_rect, 45*16, 270*16); } break;
+    case Primitive_Int_TriPoly:         QBENCHMARK { p->drawPolygon(s->i_poly_tri); } break;
+    case Primitive_Int_RectPoly:        QBENCHMARK { p->drawPolygon(s->i_poly_rect); } break;
+    case Primitive_Int_2RectPoly:       QBENCHMARK { p->drawPolygon(s->i_poly_2rects); } break;
+
+    case Primitive_Float_DiagLine:      QBENCHMARK { p->drawLine(s->f_line_diag); } break;
+    case Primitive_Float_VerLine:       QBENCHMARK { p->drawLine(s->f_line_ver); } break;
+    case Primitive_Float_HorLine:       QBENCHMARK { p->drawLine(s->f_line_hor); } break;
+    case Primitive_Float_Rect:          QBENCHMARK { p->drawRect(s->f_rect); } break;
+    case Primitive_Float_Ellipse:       QBENCHMARK { p->drawEllipse(s->f_rect); } break;
+    case Primitive_Float_Pie:           QBENCHMARK { p->drawPie(s->f_rect, 45*16, 270*16); } break;
+    case Primitive_Float_Arc:           QBENCHMARK { p->drawArc(s->f_rect, 45*16, 270*16); } break;
+    case Primitive_Float_Chord:         QBENCHMARK { p->drawChord(s->f_rect, 45*16, 270*16); } break;
+    case Primitive_Float_TriPoly:       QBENCHMARK { p->drawPolygon(s->f_poly_tri); } break;
+    case Primitive_Float_RectPoly:      QBENCHMARK { p->drawPolygon(s->f_poly_rect); } break;
+    case Primitive_Float_2RectPoly:     QBENCHMARK { p->drawPolygon(s->f_poly_2rects); } break;
+
+    case Primitive_Float_TriPath:       QBENCHMARK { p->drawPath(s->f_path_tri); } break;
+    case Primitive_Float_RectPath:      QBENCHMARK { p->drawPath(s->f_path_rect); } break;
+    case Primitive_Float_2RectPath:     QBENCHMARK { p->drawPath(s->f_path_2rects); } break;
+    case Primitive_Float_EllipsePath:   QBENCHMARK { p->drawPath(s->f_path_ellipse); } break;
+    }
+}
+
+void tst_QPainter::drawPrimitives_data_helper(bool fancypens)
+{
+    QTest::addColumn<int>("type");
+    QTest::addColumn<bool>("aa");
+    QTest::addColumn<bool>("dash");
+    QTest::addColumn<int>("width");
+
+    const char * const names[] = {
+        "IDLine",
+        "IVLine",
+        "IHLine",
+        "IRect",
+        "IElli",
+        "IPie",
+        "IArc",
+        "IChord",
+        "ITriPol",
+        "IRectPol",
+        "I2RectPol",
+        "FDLine",
+        "FVLine",
+        "FHLine",
+        "FRect",
+        "FElli",
+        "FPie",
+        "FArc",
+        "FChord",
+        "FTriPol",
+        "FRectPol",
+        "F2RectPol",
+        "FTriPa",
+        "FRectPa",
+        "F2RectPa",
+        "FElliPa"
+    };
+
+    if (fancypens) {
+        for (int dash=0; dash<2; ++dash) {
+            for (int width=0; width<=4; width+=4) {
+                for (int aa=0; aa<2; ++aa) {
+                    for (int type=0; type<Primitive_Last_Primitive; ++type) {
+                        QString name = QString::fromLatin1(names[type]);
+
+                        if (aa) name += " aa";
+                        if (dash) name += " dotted";
+                        if (width) name += QString::fromLatin1(" width=%1").arg(width);
+
+                        QTest::newRow(name.toLatin1()) << type << (bool) aa << (bool) dash << width;
+                    }
+                }
+            }
+        }
+    } else {
+        for (int aa=0; aa<2; ++aa) {
+            for (int type=0; type<Primitive_Last_Primitive; ++type) {
+                QString name = QString::fromLatin1(names[type]);
+                if (aa) name += " aa";
+                QTest::newRow(name.toLatin1()) << type << (bool) aa;
+            }
+        }
+    }
+}
+
+
+void tst_QPainter::fillPrimitives_10()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QPainter p(m_surface);
+    p.setPen(Qt::NoPen);
+    p.setBrush(Qt::red);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_10);
+}
+
+
+void tst_QPainter::fillPrimitives_100()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QPainter p(m_surface);
+    p.setPen(Qt::NoPen);
+    p.setBrush(Qt::red);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_100);
+}
+
+
+void tst_QPainter::fillPrimitives_1000()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QPainter p(m_surface);
+    p.setPen(Qt::NoPen);
+    p.setBrush(Qt::red);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_1000);
+}
+
+void tst_QPainter::strokePrimitives_10()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QFETCH(bool, dash);
+    QFETCH(int, width);
+    QPainter p(m_surface);
+    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
+    p.setBrush(Qt::NoBrush);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_10);
+}
+
+void tst_QPainter::strokePrimitives_100()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QFETCH(bool, dash);
+    QFETCH(int, width);
+    QPainter p(m_surface);
+    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
+    p.setBrush(Qt::NoBrush);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_100);
+}
+
+void tst_QPainter::strokePrimitives_1000()
+{
+    QFETCH(int, type);
+    QFETCH(bool, aa);
+    QFETCH(bool, dash);
+    QFETCH(int, width);
+    QPainter p(m_surface);
+    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
+    p.setBrush(Qt::NoBrush);
+    p.setRenderHint(QPainter::Antialiasing, aa);
+    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_1000);
+}
+
+void tst_QPainter::drawText_data()
+{
+    QTest::addColumn<QString>("text");
+
+    QTest::newRow("a") << QString::fromLatin1("a");
+    QTest::newRow("ab") << QString::fromLatin1("ab");
+    QTest::newRow("abc") << QString::fromLatin1("abc");
+    QTest::newRow("abcd") << QString::fromLatin1("abcd");
+    QTest::newRow("abcde") << QString::fromLatin1("abcde");
+    QTest::newRow("abcdef") << QString::fromLatin1("abcdef");
+    QTest::newRow("abcdefg") << QString::fromLatin1("abcdefg");
+}
+
+void tst_QPainter::drawText()
+{
+    QFETCH(QString, text);
+
+    QPainter p(m_surface);
+
+    QBENCHMARK {
+        p.drawText(QPointF(5, 5), text);
+    }
+}
+
+void tst_QPainter::saveRestore_data()
+{
+    QTest::addColumn<int>("change");
+
+    for (int i=0; i<16; ++i) {
+        QString change = "change=";
+        if (i == 0) change += " none";
+        if (i & ChangePen) change += " pen";
+        if (i & ChangeBrush) change += " brush";
+        if (i & ChangeClip) change += " clip";
+        if (i & ChangeTransform) change += " xform";
+
+        QTest::newRow(change.toLatin1()) << i;
+    }
+}
+
+void tst_QPainter::saveRestore()
+{
+    QFETCH(int, change);
+
+    QPen pen(Qt::blue);
+    QBrush brush(Qt::green);
+    QRect r(100, 100, 100, 20);
+
+    QPainter p(m_surface);
+
+    p.setPen(Qt::NoPen);
+    p.setBrush(Qt::NoBrush);
+
+    QBENCHMARK {
+        p.save();
+        if (change & ChangePen) { p.setPen(pen); p.setPen(Qt::NoPen); }
+        if (change & ChangeBrush) { p.setBrush(brush); p.setBrush(Qt::NoBrush); }
+        if (change & ChangeClip) p.setClipRect(r);
+        if (change & ChangeTransform) { p.scale(3, 5); p.scale(1/3.0, 1/5.0); }
+        p.drawRect(0, 0, 1, 1);
+        p.restore();
+    };
+}
+
+enum ClipType {
+    RectClipType,
+    RectPathClipType,
+    RectRegionClipType,
+    RegionClipType,
+    PathClipType
+};
+
+void tst_QPainter::clipAndFill_data()
+{
+    QTest::addColumn<int>("type");
+
+    QTest::newRow("rect") << (int) RectClipType;
+    QTest::newRow("rectpath") << (int) RectPathClipType;
+    QTest::newRow("rectregion") << (int) RectRegionClipType;
+    QTest::newRow("ellipseRegion") << (int) RegionClipType;
+    QTest::newRow("ellipsePath") << (int) PathClipType;
+}
+
+
+void tst_QPainter::clipAndFill()
+{
+    QFETCH(int, type);
+
+    QRegion region;
+    QPainterPath path;
+    QRectF rect;
+
+    switch (type) {
+    case RectClipType:
+        rect = QRectF(100, 100, 100, 100);
+        break;
+    case RectPathClipType:
+        path.addRect(100, 100, 100, 100);
+        break;
+    case RectRegionClipType:
+        region = QRegion(100, 100, 100, 100);
+        break;
+    case RegionClipType:
+        region = QRegion(100, 100, 100, 100, QRegion::Ellipse);
+        break;
+    case PathClipType:
+        path.addEllipse(100, 100, 100, 100);
+        break;
+    }
+
+    QPainter p(m_surface);
+
+    p.setPen(Qt::NoPen);
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        if (type == RectClipType)
+            p.setClipRect(rect);
+        else if (type == RectPathClipType || type == PathClipType)
+            p.setClipPath(path);
+        else
+            p.setClipRegion(region);
+        p.drawRect(110, 110, 10, 10);
+    }
+}
+
+QTransform tst_QPainter::transformForAngle(qreal angle)
+{
+    const qreal inv_dist_to_plane = 1. / 1024.;
+
+    QTransform transform;
+
+    QTransform rotTrans;
+    rotTrans.translate(-40, 0);
+    QTransform rotTrans2;
+    rotTrans2.translate(40, 0);
+
+    qreal rad = angle * 2. * M_PI / 360.;
+    qreal c = ::cos(rad);
+    qreal s = ::sin(rad);
+
+    qreal x = 0;
+    qreal y = 80;
+    qreal z = 0;
+
+    qreal len = x * x + y * y + z * z;
+    if (len != 1.) {
+        len = ::sqrt(len);
+        x /= len;
+        y /= len;
+        z /= len;
+    }
+
+    QTransform rot(x*x*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s*inv_dist_to_plane,
+                   y*x*(1-c)+z*s, y*y*(1-c)+c, y*z*(1-c)-x*s*inv_dist_to_plane,
+                   0, 0, 1);
+
+    transform *= rotTrans;
+    transform *= rot;
+    transform *= rotTrans2;
+
+    return transform;
+}
+
+void tst_QPainter::drawRoundedRect()
+{
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+    }
+}
+
+void tst_QPainter::drawScaledRoundedRect()
+{
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+    p.scale(3, 3);
+
+    QBENCHMARK {
+        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawTransformedRoundedRect()
+{
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawAntialiasedRoundedRect()
+{
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
+    }
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect_data()
+{
+    QTest::addColumn<float>("scale");
+
+    for (float i = 0; i < 3; i += .1)
+        QTest::newRow(QString(QLatin1String("scale=%1")).arg(i).toLatin1()) << i;
+}
+
+void tst_QPainter::drawScaledAntialiasedRoundedRect()
+{
+    QFETCH(float, scale);
+
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+    p.scale(scale, scale);
+
+    QBENCHMARK {
+        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect_data()
+{
+    QTest::addColumn<QTransform>("transform");
+
+    for (float angle = 0; angle < 360; angle += 10)
+        QTest::newRow(QString(QLatin1String("angle=%1")).arg(angle).toLatin1()) << transformForAngle(angle);
+}
+
+void tst_QPainter::drawTransformedAntialiasedRoundedRect()
+{
+    QFETCH(QTransform, transform);
+
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    p.setRenderHint(QPainter::Antialiasing, true);
+    p.setPen(QPen(Qt::black, 1));
+    p.setBrush(Qt::red);
+
+    QBENCHMARK {
+        p.setWorldTransform(transform);
+        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
+    }
+}
+
+void tst_QPainter::drawImageRoundedRect()
+{
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, QImage::Format_ARGB32_Premultiplied);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.drawImage(0,0, rectImage);
+    }
+}
+
+void tst_QPainter::drawScaledImageRoundedRect_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawScaledImageRoundedRect()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+    p.scale(3, 3);
+
+    QBENCHMARK {
+        p.drawImage(0,0, rectImage);
+    }
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedImageRoundedRect()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    const int radius = 10;
+    QImage rectImage(81, 81, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(100,100, rectImage);
+    }
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawBorderPixmapRoundedRect()
+{
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, QImage::Format_ARGB32_Premultiplied);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(100, 100, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawScaledBorderPixmapRoundedRect_data()
+{
+    QTest::addColumn<float>("scale");
+    QTest::addColumn<int>("imageType");
+
+    for (float i = 0; i < 3; i += .1)
+        QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB32_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB32_Premultiplied;
+    //for (float i = 0; i < 3; i += .1)
+    //    QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB8565_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawScaledBorderPixmapRoundedRect()
+{
+    QFETCH(float, scale);
+    QFETCH(int, imageType);
+
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+    p.scale(scale, scale);
+
+    QBENCHMARK {
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect_data()
+{
+    QTest::addColumn<QTransform>("transform");
+    QTest::addColumn<int>("imageType");
+
+    for (float angle = 0; angle < 360; angle += 10)
+        QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB32_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB32_Premultiplied;
+    //for (float angle = 0; angle < 360; angle += 10)
+    //    QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB8565_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB8565_Premultiplied;
+
+}
+
+//code from QmlGraphicsRectangle for drawing rounded rects
+void tst_QPainter::drawTransformedBorderPixmapRoundedRect()
+{
+    QFETCH(QTransform, transform);
+    QFETCH(int, imageType);
+
+    //setup image
+    const int pw = 1;
+    const int radius = 10;
+    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
+    rectImage.fill(0);
+    QPainter rp(&rectImage);
+    rp.setRenderHint(QPainter::Antialiasing);
+    rp.setPen(Qt::black);
+    rp.setBrush(Qt::red);
+    if (pw%2)
+        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
+    else
+        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
+
+    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
+
+    //setup surface
+    QImage surface(400, 400, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(transform);
+        const int pw = 2;
+        int width = 80;
+        int height = 80;
+
+        int xOffset = (rectPixmap.width()-1)/2;
+        int yOffset = (rectPixmap.height()-1)/2;
+        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
+        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
+
+        QMargins margins(xOffset, yOffset, xOffset, yOffset);
+        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
+        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
+    }
+}
+
+void tst_QPainter::drawTransformedTransparentImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedTransparentImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage transImage(200, 200, (QImage::Format)imageType);
+    transImage.fill(0);
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, transImage);
+    }
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedSemiTransparentImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage transImage(200, 200, (QImage::Format)imageType);
+    transImage.fill(QColor(0,0,0, 128).rgba());
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, transImage);
+    }
+}
+
+void tst_QPainter::drawTransformedFilledImage_data()
+{
+    QTest::addColumn<int>("imageType");
+
+    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
+    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
+}
+
+void tst_QPainter::drawTransformedFilledImage()
+{
+    QFETCH(int, imageType);
+
+    //setup image
+    QImage filledImage(200, 200, (QImage::Format)imageType);
+    filledImage.fill(QColor(0,0,0).rgb());
+
+    //setup surface
+    QImage surface(200, 200, QImage::Format_RGB16);
+    surface.fill(QColor(255,255,255).rgb());
+    QPainter p(&surface);
+
+    QBENCHMARK {
+        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
+        p.drawImage(0,0, filledImage);
+    }
+}
+
+
+QTEST_MAIN(tst_QPainter)
+
+#include "tst_qpainter.moc"
diff --git a/tests/benchmarks/gui/painting/qregion/main.cpp b/tests/benchmarks/gui/painting/qregion/main.cpp
new file mode 100644
index 0000000..3d16e41
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qregion/main.cpp
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// This file contains benchmarks for QRegion functions.
+
+#include <QDebug>
+#include <qtest.h>
+
+class tst_qregion : public QObject
+{
+    Q_OBJECT
+private slots:
+    void map_data();
+    void map();
+};
+
+
+void tst_qregion::map_data()
+{
+    QTest::addColumn<QRegion>("region");
+
+    {
+        QRegion region(0, 0, 100, 100);
+        QTest::newRow("single rect") << region;
+    }
+    {
+        QRegion region;
+        region = region.united(QRect(0, 0, 100, 100));
+        region = region.united(QRect(120, 20, 100, 100));
+
+        QTest::newRow("two rects") << region;
+    }
+    {
+        QRegion region(0, 0, 100, 100, QRegion::Ellipse);
+        QTest::newRow("ellipse") << region;
+    }
+}
+
+void tst_qregion::map()
+{
+    QFETCH(QRegion, region);
+
+    QTransform transform;
+    transform.rotate(30);
+    QBENCHMARK {
+        transform.map(region);
+    }
+}
+
+QTEST_MAIN(tst_qregion)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/painting/qregion/qregion.pro b/tests/benchmarks/gui/painting/qregion/qregion.pro
new file mode 100644
index 0000000..fc67177
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qregion/qregion.pro
@@ -0,0 +1,10 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qregion
+DEPENDPATH += .
+INCLUDEPATH += .
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/painting/qtransform/qtransform.pro b/tests/benchmarks/gui/painting/qtransform/qtransform.pro
new file mode 100644
index 0000000..8d87656
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qtransform/qtransform.pro
@@ -0,0 +1,6 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qtransform
+
+SOURCES += tst_qtransform.cpp
+
diff --git a/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
new file mode 100644
index 0000000..b33cf58
--- /dev/null
+++ b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
@@ -0,0 +1,592 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QTransform>
+
+//TESTED_FILES=
+
+class tst_QTransform : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QTransform();
+    virtual ~tst_QTransform();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void construct();
+    void translate_data();
+    void translate();
+    void scale_data();
+    void scale();
+    void shear_data();
+    void shear();
+    void rotate_data();
+    void rotate();
+    void rotateXYZ_data();
+    void rotateXYZ();
+    void operatorAssign_data();
+    void operatorAssign();
+    void operatorEqual_data();
+    void operatorEqual();
+    void operatorNotEqual_data();
+    void operatorNotEqual();
+    void operatorMultiply_data();
+    void operatorMultiply();
+    void operatorPlusEqualScalar_data();
+    void operatorPlusEqualScalar();
+    void operatorMinusEqualScalar_data();
+    void operatorMinusEqualScalar();
+    void operatorMultiplyEqual_data();
+    void operatorMultiplyEqual();
+    void operatorMultiplyEqualScalar_data();
+    void operatorMultiplyEqualScalar();
+    void operatorDivideEqualScalar_data();
+    void operatorDivideEqualScalar();
+    void mapQPoint_data();
+    void mapQPoint();
+    void mapQPointF_data();
+    void mapQPointF();
+    void mapRect_data();
+    void mapRect();
+    void mapRectF_data();
+    void mapRectF();
+    void mapQPolygon_data();
+    void mapQPolygon();
+    void mapQPolygonF_data();
+    void mapQPolygonF();
+    void mapQRegion_data();
+    void mapQRegion();
+    void mapToPolygon_data();
+    void mapToPolygon();
+    void mapQPainterPath_data();
+    void mapQPainterPath();
+    void isIdentity_data();
+    void isIdentity();
+    void isAffine_data();
+    void isAffine();
+    void isInvertible_data();
+    void isInvertible();
+    void isRotating_data();
+    void isRotating();
+    void isScaling_data();
+    void isScaling();
+    void isTranslating_data();
+    void isTranslating();
+    void type_data();
+    void type();
+    void determinant_data();
+    void determinant();
+    void adjoint_data();
+    void adjoint();
+    void transposed_data();
+    void transposed();
+    void inverted_data();
+    void inverted();
+
+private:
+    QMap<const char *, QTransform> generateTransforms() const;
+};
+
+tst_QTransform::tst_QTransform()
+{
+}
+
+tst_QTransform::~tst_QTransform()
+{
+}
+
+void tst_QTransform::init()
+{
+}
+
+void tst_QTransform::cleanup()
+{
+}
+
+QMap<const char *, QTransform> tst_QTransform::generateTransforms() const
+{
+    QMap<const char *, QTransform> x;
+    x["0: identity"] = QTransform();
+    x["1: translate"] = QTransform().translate(10, 10);
+    x["2: translate"] = QTransform().translate(-10, -10);
+    x["3: rotate45"] = QTransform().rotate(45);
+    x["4: rotate90"] = QTransform().rotate(90);
+    x["5: rotate180"] = QTransform().rotate(180);
+    x["6: shear2,2"] = QTransform().shear(2, 2);
+    x["7: shear-2,-2"] = QTransform().shear(-2, -2);
+    x["8: scaleUp2,2"] = QTransform().scale(2, 2);
+    x["9: scaleUp2,3"] = QTransform().scale(2, 3);
+    x["10: scaleDown0.5,0.5"] = QTransform().scale(0.5, 0.5);
+    x["11: scaleDown0.5,0.25"] = QTransform().scale(0.5, 0.25);
+    x["12: rotateX"] = QTransform().rotate(45, Qt::XAxis);
+    x["13: rotateY"] = QTransform().rotate(45, Qt::YAxis);
+    x["14: rotateXY"] = QTransform().rotate(45, Qt::XAxis).rotate(45, Qt::YAxis);
+    x["15: rotateYZ"] = QTransform().rotate(45, Qt::YAxis).rotate(45, Qt::ZAxis);
+    x["16: full"] = QTransform().translate(10, 10).rotate(45).shear(2, 2).scale(2, 2).rotate(45, Qt::YAxis).rotate(45, Qt::XAxis).rotate(45, Qt::ZAxis);
+    return x;
+}
+
+void tst_QTransform::construct()
+{
+    QBENCHMARK {
+        QTransform x;
+    }
+}
+
+#define SINGLE_DATA_IMPLEMENTATION(func)        \
+void tst_QTransform::func##_data() \
+{ \
+    QTest::addColumn<QTransform>("transform"); \
+    QMap<const char *, QTransform> x = generateTransforms(); \
+    QMapIterator<const char *, QTransform> it(x); \
+    while (it.hasNext()) { \
+        it.next(); \
+        QTest::newRow(it.key()) << it.value(); \
+    } \
+}
+
+#define DOUBLE_DATA_IMPLEMENTATION(func) \
+void tst_QTransform::func##_data() \
+{ \
+    QTest::addColumn<QTransform>("x1"); \
+    QTest::addColumn<QTransform>("x2"); \
+    QMap<const char *, QTransform> x = generateTransforms(); \
+    QMapIterator<const char *, QTransform> it(x); \
+    while (it.hasNext()) { \
+        it.next(); \
+        const char *key1 = it.key(); \
+        QTransform x1 = it.value(); \
+        QMapIterator<const char *, QTransform> it2(x); \
+        while (it2.hasNext()) { \
+            it2.next(); \
+            QTest::newRow(QString("%1 + %2").arg(key1).arg(it2.key()).toLatin1().constData()) \
+                << x1 << it2.value(); \
+        } \
+    } \
+}
+
+SINGLE_DATA_IMPLEMENTATION(translate)
+
+void tst_QTransform::translate()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.translate(10, 10);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(scale)
+
+void tst_QTransform::scale()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.scale(2, 2);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(shear)
+
+void tst_QTransform::shear()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.shear(2, 2);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(rotate)
+
+void tst_QTransform::rotate()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.rotate(45);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(rotateXYZ)
+
+void tst_QTransform::rotateXYZ()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.rotate(45, Qt::XAxis);
+        x.rotate(45, Qt::YAxis);
+        x.rotate(45, Qt::ZAxis);
+    }
+}
+
+DOUBLE_DATA_IMPLEMENTATION(operatorAssign)
+
+void tst_QTransform::operatorAssign()
+{
+    QFETCH(QTransform, x1);
+    QFETCH(QTransform, x2);
+    QTransform x = x1;
+    QBENCHMARK {
+        x = x2;
+    }
+}
+
+DOUBLE_DATA_IMPLEMENTATION(operatorEqual)
+
+void tst_QTransform::operatorEqual()
+{
+    QFETCH(QTransform, x1);
+    QFETCH(QTransform, x2);
+    QTransform x = x1;
+    QBENCHMARK {
+        x == x2;
+    }
+}
+
+DOUBLE_DATA_IMPLEMENTATION(operatorNotEqual)
+
+void tst_QTransform::operatorNotEqual()
+{
+    QFETCH(QTransform, x1);
+    QFETCH(QTransform, x2);
+    QTransform x = x1;
+    QBENCHMARK {
+        x != x2;
+    }
+}
+
+DOUBLE_DATA_IMPLEMENTATION(operatorMultiply)
+
+void tst_QTransform::operatorMultiply()
+{
+    QFETCH(QTransform, x1);
+    QFETCH(QTransform, x2);
+    QTransform x = x1;
+    QBENCHMARK {
+        x * x2;
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(operatorPlusEqualScalar)
+
+void tst_QTransform::operatorPlusEqualScalar()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x += 3.14;
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(operatorMinusEqualScalar)
+
+void tst_QTransform::operatorMinusEqualScalar()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x -= 3.14;
+    }
+}
+
+DOUBLE_DATA_IMPLEMENTATION(operatorMultiplyEqual)
+
+void tst_QTransform::operatorMultiplyEqual()
+{
+    QFETCH(QTransform, x1);
+    QFETCH(QTransform, x2);
+    QTransform x = x1;
+    QBENCHMARK {
+        x *= x2;
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(operatorMultiplyEqualScalar)
+
+void tst_QTransform::operatorMultiplyEqualScalar()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x * 3;
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(operatorDivideEqualScalar)
+
+void tst_QTransform::operatorDivideEqualScalar()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x /= 3;
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapQPoint)
+
+void tst_QTransform::mapQPoint()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.map(QPoint(3, 3));
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapQPointF)
+
+void tst_QTransform::mapQPointF()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.map(QPointF(3, 3));
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapRect)
+
+void tst_QTransform::mapRect()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.mapRect(QRect(0, 0, 100, 100));
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapRectF)
+
+void tst_QTransform::mapRectF()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.mapRect(QRectF(0, 0, 100, 100));
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapQPolygon)
+
+void tst_QTransform::mapQPolygon()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QPolygon poly = QPolygon(QRect(0, 0, 100, 100));
+    QBENCHMARK {
+        x.map(poly);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapQPolygonF)
+
+void tst_QTransform::mapQPolygonF()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QPolygonF poly = QPolygonF(QRectF(0, 0, 100, 100));
+    QBENCHMARK {
+        x.map(poly);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapQRegion)
+
+void tst_QTransform::mapQRegion()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QRegion region;
+    for (int i = 0; i < 10; ++i)
+        region += QRect(i * 10, i * 10, 100, 100);
+    QBENCHMARK {
+        x.map(region);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(mapToPolygon)
+
+void tst_QTransform::mapToPolygon()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QBENCHMARK {
+        x.mapToPolygon(QRect(0, 0, 100, 100));
+    }
+}
+
+
+SINGLE_DATA_IMPLEMENTATION(mapQPainterPath)
+
+void tst_QTransform::mapQPainterPath()
+{
+    QFETCH(QTransform, transform);
+    QTransform x = transform;
+    QPainterPath path;
+    for (int i = 0; i < 10; ++i)
+        path.addEllipse(i * 10, i * 10, 100, 100);
+    QBENCHMARK {
+        x.map(path);
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isIdentity)
+
+void tst_QTransform::isIdentity()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isIdentity();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isAffine)
+
+void tst_QTransform::isAffine()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isAffine();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isInvertible)
+
+void tst_QTransform::isInvertible()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isInvertible();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isRotating)
+
+void tst_QTransform::isRotating()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isRotating();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isScaling)
+
+void tst_QTransform::isScaling()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isScaling();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(isTranslating)
+
+void tst_QTransform::isTranslating()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.isTranslating();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(type)
+
+void tst_QTransform::type()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.type();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(determinant)
+
+void tst_QTransform::determinant()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.determinant();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(adjoint)
+
+void tst_QTransform::adjoint()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.adjoint();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(transposed)
+
+void tst_QTransform::transposed()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.transposed();
+    }
+}
+
+SINGLE_DATA_IMPLEMENTATION(inverted)
+
+void tst_QTransform::inverted()
+{
+    QFETCH(QTransform, transform);
+    QBENCHMARK {
+        transform.inverted();
+    }
+}
+
+QTEST_MAIN(tst_QTransform)
+#include "tst_qtransform.moc"
diff --git a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
new file mode 100644
index 0000000..226b661
--- /dev/null
+++ b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
@@ -0,0 +1,192 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// This file contains benchmarks for QRect/QRectF functions.
+
+#include <QtGui>
+#include <qtest.h>
+
+class tst_qstylesheetstyle : public QObject
+{
+    Q_OBJECT
+private slots:
+    void empty();
+    void empty_events();
+
+    void simple();
+    void simple_events();
+
+    void grid_data();
+    void grid();
+
+private:
+    QWidget *buildSimpleWidgets();
+
+};
+
+
+QWidget *tst_qstylesheetstyle::buildSimpleWidgets()
+{
+    QWidget *w = new QWidget();
+    QGridLayout *layout = new QGridLayout(w);
+    w->setLayout(layout);
+    layout->addWidget(new QPushButton("pushButton")     ,0,0);
+    layout->addWidget(new QComboBox()                   ,0,1);
+    layout->addWidget(new QCheckBox("checkBox")         ,0,2);
+    layout->addWidget(new QRadioButton("radioButton")   ,0,3);
+    layout->addWidget(new QLineEdit()                   ,1,0);
+    layout->addWidget(new QLabel("label")               ,1,1);
+    layout->addWidget(new QSpinBox()                    ,1,2);
+    layout->addWidget(new QProgressBar()                ,1,3);
+    return w;
+}
+
+void tst_qstylesheetstyle::empty()
+{
+    QWidget *w = buildSimpleWidgets();
+    w->setStyleSheet("/* */");
+    int i = 0;
+    QBENCHMARK {
+        w->setStyleSheet("/*" + QString::number(i) + "*/");
+        i++; // we want a different string in case we have severals iterations
+    }
+    delete w;
+}
+
+void tst_qstylesheetstyle::empty_events()
+{
+    QWidget *w = buildSimpleWidgets();
+    w->setStyleSheet("/* */");
+    int i = 0;
+    QBENCHMARK {
+        w->setStyleSheet("/*" + QString::number(i) + "*/");
+        i++; // we want a different string in case we have severals iterations
+        qApp->processEvents();
+    }
+    delete w;
+}
+
+static const char *simple_css =
+   " QLineEdit { background: red; }   QPushButton { border: 1px solid yellow; color: pink; }  \n"
+   " QCheckBox { margin: 3px 5px; background-color:red; } QAbstractButton { background-color: #456; } \n"
+   " QFrame { padding: 3px; } QLabel { color: black } QSpinBox:hover { background-color:blue; }  ";
+
+void tst_qstylesheetstyle::simple()
+{
+    QWidget *w = buildSimpleWidgets();
+    w->setStyleSheet("/* */");
+    int i = 0;
+    QBENCHMARK {
+        w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
+        i++; // we want a different string in case we have severals iterations
+    }
+    delete w;
+}
+
+void tst_qstylesheetstyle::simple_events()
+{
+    QWidget *w = buildSimpleWidgets();
+    w->setStyleSheet("/* */");
+    int i = 0;
+    QBENCHMARK {
+        w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
+        i++; // we want a different string in case we have severals iterations
+        qApp->processEvents();
+    }
+    delete w;
+}
+
+void tst_qstylesheetstyle::grid_data()
+{
+        QTest::addColumn<bool>("events");
+        QTest::addColumn<bool>("show");
+        QTest::addColumn<int>("N");
+        for (int n = 5; n <= 25; n += 5) {
+           const QByteArray nString = QByteArray::number(n*n);
+            QTest::newRow(("simple--" + nString).constData()) << false << false << n;
+            QTest::newRow(("events--" + nString).constData()) << true << false << n;
+            QTest::newRow(("show--" + nString).constData()) << true << true << n;
+        }
+}
+
+
+void tst_qstylesheetstyle::grid()
+{
+    QFETCH(bool, events);
+    QFETCH(bool, show);
+    QFETCH(int, N);
+
+#ifdef Q_OS_SYMBIAN
+    // Symbian has limited stack (max 80k), which will run out when N >= 20 due to
+    // QWidget::show() using recursion among grid labels somewhere down the line.
+    if (show && N >= 20)
+        QSKIP("Grid too big for device to show", SkipSingle);
+#endif
+
+    QWidget *w = new QWidget();
+    QGridLayout *layout = new QGridLayout(w);
+    w->setLayout(layout);
+    QString stylesheet;
+    for(int x=0; x<N ;x++)
+        for(int y=0; y<N ;y++) {
+        QLabel *label = new QLabel(QString::number(y * N + x));
+        layout->addWidget(label ,x,y);
+        label->setObjectName(QString("label%1").arg(y * N + x));
+        stylesheet += QString("#label%1 { background-color: rgb(0,%2,%3); color: rgb(%2,%3,255);  } ").arg(y*N+x).arg(y*255/N).arg(x*255/N);
+    }
+
+    w->setStyleSheet("/* */");
+    if(show) {
+        w->show();
+        QTest::qWait(30);
+    }
+    int i = 0;
+    QBENCHMARK {
+        w->setStyleSheet(stylesheet + "/*" + QString::number(i) + "*/");
+        i++; // we want a different string in case we have severals iterations
+        if(events)
+            qApp->processEvents();
+    }
+    delete w;
+}
+
+QTEST_MAIN(tst_qstylesheetstyle)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/styles/qstylesheetstyle/qstylesheetstyle.pro b/tests/benchmarks/gui/styles/qstylesheetstyle/qstylesheetstyle.pro
new file mode 100644
index 0000000..c097307
--- /dev/null
+++ b/tests/benchmarks/gui/styles/qstylesheetstyle/qstylesheetstyle.pro
@@ -0,0 +1,11 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qstylesheetstyle
+DEPENDPATH += .
+INCLUDEPATH += .
+
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/styles/styles.pro b/tests/benchmarks/gui/styles/styles.pro
new file mode 100644
index 0000000..7c1d069
--- /dev/null
+++ b/tests/benchmarks/gui/styles/styles.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qstylesheetstyle
diff --git a/tests/benchmarks/gui/text/qfontmetrics/main.cpp b/tests/benchmarks/gui/text/qfontmetrics/main.cpp
new file mode 100644
index 0000000..d3f85ef
--- /dev/null
+++ b/tests/benchmarks/gui/text/qfontmetrics/main.cpp
@@ -0,0 +1,112 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+#include <QFont>
+#include <QFontMetrics>
+
+#include <qtest.h>
+
+//this test benchmarks the once-off (per font configuration) cost
+//associated with using QFontMetrics
+class tst_QFontMetrics : public QObject
+{
+    Q_OBJECT
+public:
+    tst_QFontMetrics() {}
+private slots:
+    void fontmetrics_create();
+    void fontmetrics_create_once_loaded();
+
+    void fontmetrics_height();
+    void fontmetrics_height_once_loaded();
+
+private:
+    void testQFontMetrics(const QFontMetrics &fm);
+};
+
+void tst_QFontMetrics::testQFontMetrics( const QFontMetrics &fm )
+{
+    int fontHeight = fm.height();
+}
+
+void tst_QFontMetrics::fontmetrics_create()
+{
+    QBENCHMARK {
+      QFont boldfont = QApplication::font();
+      boldfont.setBold( true );
+      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+      QFontMetrics bfm( boldfont );
+    }
+}
+
+void tst_QFontMetrics::fontmetrics_create_once_loaded()
+{
+    QBENCHMARK {
+      QFont boldfont = QApplication::font();
+      boldfont.setBold( true );
+      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+      QFontMetrics bfm( boldfont );
+    }
+}
+
+void tst_QFontMetrics::fontmetrics_height()
+{
+    QFont boldfont = QApplication::font();
+    boldfont.setBold( true );
+    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+    QFontMetrics bfm( boldfont );
+
+    QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+void tst_QFontMetrics::fontmetrics_height_once_loaded()
+{
+    QFont boldfont = QApplication::font();
+    boldfont.setBold( true );
+    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
+    QFontMetrics bfm( boldfont );
+    QBENCHMARK { testQFontMetrics(bfm); }
+}
+
+QTEST_MAIN(tst_QFontMetrics)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/text/qfontmetrics/qfontmetrics.pro b/tests/benchmarks/gui/text/qfontmetrics/qfontmetrics.pro
new file mode 100644
index 0000000..b6c7b92
--- /dev/null
+++ b/tests/benchmarks/gui/text/qfontmetrics/qfontmetrics.pro
@@ -0,0 +1,5 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_QFontMetrics
+
+SOURCES += main.cpp
diff --git a/tests/benchmarks/gui/text/qtext/bidi.txt b/tests/benchmarks/gui/text/qtext/bidi.txt
new file mode 100644
index 0000000..7c74cb4
--- /dev/null
+++ b/tests/benchmarks/gui/text/qtext/bidi.txt
@@ -0,0 +1,4 @@
+chinese
+欧洲,软件+互联网 
 用统一码 (Unicode) 走遍世界
将于1997年 3 月10日-12日在德国 Mainz 市举行的第十届统一码国际研讨会现在开始注册。 本次会议将汇集各方面的专家。 涉及的领域包括: 国际互联网和统一码 ,国际化和本地化 ,统一码在操作系统和应用软件中的实现 ,字型 ,文本格式以及多文种计算等。  
当世界需要沟通时,请用Unicode!
+hebrew-bidi
+אײראָפּע: פּראָגראַמװאַרג און די װעלטנעץ: אוניקאָד איבער דער גאָרער װעלט  פֿאַרשרײַבט זיך שױן אױף דער צענטער אינטערנאַציאָנאַלער אוניקאָד-קאָנפֿערענץ, װאָס װעט פֿאָרקומען דעם 10טן ביזן 12טן מאַרץ, 1997, אין מײַנץ, דײַטשלאַנד. די קאָנפֿערענץ װעט צוזאַמענברענגן מבֿינים פֿון װעלטנעץ, אוניקאָד, אי אַלװעלטלעכן אי סבֿיבֿהדיקן פּראָגראַמװאַרג, אַרײַנשטעלן אוניקאָד אין אָפּעריר-סיסטעמען און אָנװענדונגען, שריפֿטן, טעקסט-אױסשטעל, און מערשפּראַכיקע קאָמפּיוטערײַ.
diff --git a/tests/benchmarks/gui/text/qtext/main.cpp b/tests/benchmarks/gui/text/qtext/main.cpp
new file mode 100644
index 0000000..d4f3165
--- /dev/null
+++ b/tests/benchmarks/gui/text/qtext/main.cpp
@@ -0,0 +1,415 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QDebug>
+#include <QTextDocument>
+#include <QTextDocumentWriter>
+#include <QTextLayout>
+#include <QTextCursor>
+#include <private/qtextcontrol_p.h>
+#include <qmath.h>
+#include <QFile>
+#include <QPainter>
+#include <QBuffer>
+#include <qtest.h>
+
+#ifdef Q_OS_SYMBIAN
+// In Symbian OS test data is located in applications private dir
+// Application private dir is default serach path for files, so SRCDIR can be set to empty
+#define SRCDIR ""
+#endif
+
+Q_DECLARE_METATYPE(QTextDocument*)
+
+class tst_QText: public QObject
+{
+    Q_OBJECT
+public:
+    tst_QText() {
+        m_lorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
+        m_shortLorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
+    }
+
+private slots:
+    void loadHtml_data();
+    void loadHtml();
+
+    void shaping_data();
+    void shaping();
+
+    void odfWriting_empty();
+    void odfWriting_text();
+    void odfWriting_images();
+
+    void constructControl();
+    void constructDocument();
+
+    void layout();
+    void paintLayoutToPixmap();
+    void paintLayoutToPixmap_painterFill();
+
+    void document();
+    void paintDocToPixmap();
+    void paintDocToPixmap_painterFill();
+
+    void control();
+    void paintControlToPixmap();
+    void paintControlToPixmap_painterFill();
+
+private:
+    QSize setupTextLayout(QTextLayout *layout);
+
+    QString m_lorem;
+    QString m_shortLorem;
+};
+
+void tst_QText::loadHtml_data()
+{
+    QTest::addColumn<QString>("source");
+    QTest::newRow("empty") << QString();
+    QTest::newRow("simple") << QString::fromLatin1("<html><b>Foo</b></html>");
+    QTest::newRow("simple2") << QString::fromLatin1("<b>Foo</b>");
+
+    QString parag = QString::fromLatin1("<p>%1</p>").arg(m_lorem);
+    QString header = QString::fromLatin1("<html><head><title>test</title></head><body>");
+    QTest::newRow("long") << QString::fromLatin1("<html><head><title>test</title></head><body>") + parag + parag + parag
+        + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag
+        + QString::fromLatin1("</html>");
+    QTest::newRow("table") <<  header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
+        + parag + QLatin1String("</td></tr></table></html");
+    QTest::newRow("crappy") <<  header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
+        + parag;
+}
+
+void tst_QText::loadHtml()
+{
+    QFETCH(QString, source);
+    QTextDocument doc;
+    QBENCHMARK {
+        doc.setHtml(source);
+    }
+}
+
+void tst_QText::shaping_data()
+{
+    QTest::addColumn<QString>("parag");
+    QTest::newRow("empty") << QString();
+    QTest::newRow("lorem") << m_lorem;
+    QTest::newRow("short") << QString::fromLatin1("Lorem ipsum dolor sit amet");
+
+#if !defined(Q_OS_SYMBIAN)
+    QFile file(QString::fromLatin1(SRCDIR) + QLatin1String("/bidi.txt"));
+#else
+    QFile file( SRCDIR "bidi.txt" );
+#endif
+    QVERIFY(file.open(QFile::ReadOnly));
+    QByteArray data = file.readAll();
+    QVERIFY(data.count() > 1000);
+    QStringList list = QString::fromUtf8(data.data()).split(QLatin1Char('\n'), QString::SkipEmptyParts);
+    QVERIFY(list.count() %2 == 0); // even amount as we have title and then content.
+    for (int i=0; i < list.count(); i+=2) {
+        QTest::newRow(list.at(i).toLatin1()) << list.at(i+1);
+    }
+}
+
+void tst_QText::shaping()
+{
+    QFETCH(QString, parag);
+
+    QTextLayout lay(parag);
+    lay.setCacheEnabled(false);
+
+    // do one run to make sure any fonts are loaded.
+    lay.beginLayout();
+    lay.createLine();
+    lay.endLayout();
+
+    QBENCHMARK {
+        lay.beginLayout();
+        lay.createLine();
+        lay.endLayout();
+    }
+}
+
+void tst_QText::odfWriting_empty()
+{
+    QVERIFY(QTextDocumentWriter::supportedDocumentFormats().contains("ODF")); // odf compiled in
+    QTextDocument *doc = new QTextDocument();
+    // write it
+    QBENCHMARK {
+        QBuffer buffer;
+        buffer.open(QIODevice::WriteOnly);
+        QTextDocumentWriter writer(&buffer, "ODF");
+        writer.write(doc);
+    }
+    delete doc;
+}
+
+void tst_QText::odfWriting_text()
+{
+    QTextDocument *doc = new QTextDocument();
+    QTextCursor cursor(doc);
+    QTextBlockFormat bf;
+    bf.setIndent(2);
+    cursor.insertBlock(bf);
+    cursor.insertText(m_lorem);
+    bf.setTopMargin(10);
+    cursor.insertBlock(bf);
+    cursor.insertText(m_lorem);
+    bf.setRightMargin(30);
+    cursor.insertBlock(bf);
+    cursor.insertText(m_lorem);
+
+    // write it
+    QBENCHMARK {
+        QBuffer buffer;
+        buffer.open(QIODevice::WriteOnly);
+        QTextDocumentWriter writer(&buffer, "ODF");
+        writer.write(doc);
+    }
+    delete doc;
+}
+
+void tst_QText::odfWriting_images()
+{
+    QTextDocument *doc = new QTextDocument();
+    QTextCursor cursor(doc);
+    cursor.insertText(m_lorem);
+    QImage image(400, 200, QImage::Format_ARGB32_Premultiplied);
+    cursor.insertImage(image);
+    cursor.insertText(m_lorem);
+
+    // write it
+    QBENCHMARK {
+        QBuffer buffer;
+        buffer.open(QIODevice::WriteOnly);
+        QTextDocumentWriter writer(&buffer, "ODF");
+        writer.write(doc);
+    }
+    delete doc;
+}
+
+QSize tst_QText::setupTextLayout(QTextLayout *layout)
+{
+    bool wrap = true;
+    int wrapWidth = 300;
+    layout->setCacheEnabled(true);
+
+    int height = 0;
+    qreal widthUsed = 0;
+    qreal lineWidth = 0;
+
+    //set manual width
+    if (wrap)
+        lineWidth = wrapWidth;
+
+    layout->beginLayout();
+
+    while (1) {
+        QTextLine line = layout->createLine();
+        if (!line.isValid())
+            break;
+
+        if (wrap)
+            line.setLineWidth(lineWidth);
+    }
+    layout->endLayout();
+
+    for (int i = 0; i < layout->lineCount(); ++i) {
+        QTextLine line = layout->lineAt(i);
+        widthUsed = qMax(widthUsed, line.naturalTextWidth());
+        line.setPosition(QPointF(0, height));
+        height += int(line.height());
+    }
+    return QSize(qCeil(widthUsed), height);
+}
+
+void tst_QText::constructControl()
+{
+    QTextControl *control = new QTextControl;
+    delete control;
+
+    QBENCHMARK {
+        QTextControl *control = new QTextControl;
+        delete control;
+    }
+}
+
+void tst_QText::constructDocument()
+{
+    QTextDocument *doc = new QTextDocument;
+    delete doc;
+
+    QBENCHMARK {
+        QTextDocument *doc = new QTextDocument;
+        delete doc;
+    }
+}
+
+void tst_QText::layout()
+{
+    QTextLayout layout(m_shortLorem);
+    setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QTextLayout layout(m_shortLorem);
+        setupTextLayout(&layout);
+    }
+}
+
+void tst_QText::paintLayoutToPixmap()
+{
+    QTextLayout layout(m_shortLorem);
+    QSize size = setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        layout.draw(&p, QPointF(0, 0));
+    }
+}
+
+void tst_QText::paintLayoutToPixmap_painterFill()
+{
+    QTextLayout layout(m_shortLorem);
+    QSize size = setupTextLayout(&layout);
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        layout.draw(&p, QPointF(0, 0));
+    }
+}
+
+void tst_QText::document()
+{
+    QTextDocument *doc = new QTextDocument;
+
+    QBENCHMARK {
+        QTextDocument *doc = new QTextDocument;
+        doc->setHtml(m_shortLorem);
+    }
+}
+
+void tst_QText::paintDocToPixmap()
+{
+    QTextDocument *doc = new QTextDocument;
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        doc->drawContents(&p);
+    }
+}
+
+void tst_QText::paintDocToPixmap_painterFill()
+{
+    QTextDocument *doc = new QTextDocument;
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        doc->drawContents(&p);
+    }
+}
+
+void tst_QText::control()
+{
+    QTextControl *control = new QTextControl(m_shortLorem);
+
+    QBENCHMARK {
+        QTextControl *control = new QTextControl;
+        QTextDocument *doc = control->document();
+        doc->setHtml(m_shortLorem);
+    }
+}
+
+void tst_QText::paintControlToPixmap()
+{
+    QTextControl *control = new QTextControl;
+    QTextDocument *doc = control->document();
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        img.fill(Qt::transparent);
+        QPainter p(&img);
+        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+    }
+}
+
+void tst_QText::paintControlToPixmap_painterFill()
+{
+    QTextControl *control = new QTextControl;
+    QTextDocument *doc = control->document();
+    doc->setHtml(m_shortLorem);
+    doc->setTextWidth(300);
+    QSize size = doc->size().toSize();
+
+    QBENCHMARK {
+        QPixmap img(size);
+        QPainter p(&img);
+        p.setCompositionMode(QPainter::CompositionMode_Source);
+        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
+        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
+        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
+    }
+}
+
+QTEST_MAIN(tst_QText)
+
+#include "main.moc"
diff --git a/tests/benchmarks/gui/text/qtext/qtext.pro b/tests/benchmarks/gui/text/qtext/qtext.pro
new file mode 100644
index 0000000..9e8860f
--- /dev/null
+++ b/tests/benchmarks/gui/text/qtext/qtext.pro
@@ -0,0 +1,14 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_QText
+
+SOURCES += main.cpp
+
+symbian* {
+   TARGET.CAPABILITY = ALL -TCB
+   addFiles.sources = bidi.txt
+   addFiles.path = .
+   DEPLOYMENT += addFiles
+} else {
+   DEFINES += SRCDIR=\\\"$$PWD/\\\"
+}
\ No newline at end of file
diff --git a/tests/benchmarks/gui/text/text.pro b/tests/benchmarks/gui/text/text.pro
new file mode 100644
index 0000000..34e548b
--- /dev/null
+++ b/tests/benchmarks/gui/text/text.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qfontmetrics \
+        qtext
diff --git a/tests/benchmarks/network/access/access.pro b/tests/benchmarks/network/access/access.pro
new file mode 100644
index 0000000..43357e2
--- /dev/null
+++ b/tests/benchmarks/network/access/access.pro
@@ -0,0 +1,4 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qfile_vs_qnetworkaccessmanager \
+        qnetworkreply
diff --git a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
new file mode 100644
index 0000000..23e07db
--- /dev/null
+++ b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
@@ -0,0 +1,193 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QDebug>
+#include <qtest.h>
+#include <QtTest/QtTest>
+#include <QtNetwork/qnetworkreply.h>
+#include <QtNetwork/qnetworkrequest.h>
+#include <QtNetwork/qnetworkaccessmanager.h>
+#include <QtCore/QTemporaryFile>
+#include <QtCore/QFile>
+#include "../../auto/network-settings.h"
+
+class qfile_vs_qnetworkaccessmanager : public QObject
+{
+    Q_OBJECT
+    // do not use on symbian.. 100 MB is too large..
+    // but.. this is a manual test anyway, so :)
+protected:
+    void qnamFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request);
+    void qnamImmediateFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request);
+    void qfileFileRead_iteration();
+    static const int iterations = 10;
+
+private slots:
+    void qnamFileRead();
+    void qnamImmediateFileRead();
+    void qfileFileRead();
+
+    void initTestCase();
+    void cleanupTestCase();
+
+public:
+    qint64 size;
+    QTemporaryFile testFile;
+
+    qfile_vs_qnetworkaccessmanager() : QObject(), size(0) {};
+};
+
+void qfile_vs_qnetworkaccessmanager::initTestCase()
+{
+    testFile.open();
+    QByteArray qba(1*1024*1024, 'x'); // 1 MB
+    for (int i = 0; i < 100; i++) {
+        testFile.write(qba);
+        testFile.flush();
+        size += qba.size();
+    } // 100 MB
+    testFile.reset();
+}
+
+void qfile_vs_qnetworkaccessmanager::cleanupTestCase()
+{
+
+}
+
+void qfile_vs_qnetworkaccessmanager::qnamFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request)
+{
+    QNetworkReply* reply = manager.get(request);
+    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+    QTestEventLoop::instance().enterLoop(10);
+    QVERIFY(!QTestEventLoop::instance().timeout());
+    QByteArray qba = reply->readAll();
+    delete reply;
+}
+
+void qfile_vs_qnetworkaccessmanager::qnamFileRead()
+{
+    QNetworkAccessManager manager;
+    QTime t;
+    QNetworkRequest request(QUrl(testFile.fileName()));
+
+    // do 3 dry runs for cache warmup
+    qnamFileRead_iteration(manager, request);
+    qnamFileRead_iteration(manager, request);
+    qnamFileRead_iteration(manager, request);
+
+    t.start();
+    // 10 real runs
+    QBENCHMARK_ONCE {
+        for (int i = 0; i < iterations; i++) {
+            qnamFileRead_iteration(manager, request);
+        }
+    }
+
+    qint64 elapsed = t.elapsed();
+    qDebug() << endl << "Finished!";
+    qDebug() << "Bytes:" << size;
+    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
+}
+
+void qfile_vs_qnetworkaccessmanager::qnamImmediateFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request)
+{
+    QNetworkReply* reply = manager.get(request);
+    QVERIFY(reply->isFinished()); // should be like that!
+    QByteArray qba = reply->readAll();
+    delete reply;
+}
+
+void qfile_vs_qnetworkaccessmanager::qnamImmediateFileRead()
+{
+    QNetworkAccessManager manager;
+    QTime t;
+    QNetworkRequest request(QUrl(testFile.fileName()));
+
+    // do 3 dry runs for cache warmup
+    qnamImmediateFileRead_iteration(manager, request);
+    qnamImmediateFileRead_iteration(manager, request);
+    qnamImmediateFileRead_iteration(manager, request);
+
+    t.start();
+    // 10 real runs
+    QBENCHMARK_ONCE {
+        for (int i = 0; i < iterations; i++) {
+            qnamImmediateFileRead_iteration(manager, request);
+        }
+    }
+
+    qint64 elapsed = t.elapsed();
+    qDebug() << endl << "Finished!";
+    qDebug() << "Bytes:" << size;
+    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
+}
+
+void qfile_vs_qnetworkaccessmanager::qfileFileRead_iteration()
+{
+    testFile.reset();
+    QByteArray qba = testFile.readAll();
+}
+
+void qfile_vs_qnetworkaccessmanager::qfileFileRead()
+{
+    QTime t;
+
+    // do 3 dry runs for cache warmup
+    qfileFileRead_iteration();
+    qfileFileRead_iteration();
+    qfileFileRead_iteration();
+
+    t.start();
+    // 10 real runs
+    QBENCHMARK_ONCE {
+        for (int i = 0; i < iterations; i++) {
+            qfileFileRead_iteration();
+        }
+    }
+
+    qint64 elapsed = t.elapsed();
+    qDebug() << endl << "Finished!";
+    qDebug() << "Bytes:" << size;
+    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
+}
+
+QTEST_MAIN(qfile_vs_qnetworkaccessmanager)
+
+#include "main.moc"
diff --git a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
new file mode 100644
index 0000000..99d1935
--- /dev/null
+++ b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = qfile_vs_qnetworkaccessmanager
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+QT += network
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/network/access/qnetworkreply/qnetworkreply.pro b/tests/benchmarks/network/access/qnetworkreply/qnetworkreply.pro
new file mode 100644
index 0000000..1e67d81
--- /dev/null
+++ b/tests/benchmarks/network/access/qnetworkreply/qnetworkreply.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qnetworkreply
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+QT += network
+
+CONFIG += release
+
+# Input
+SOURCES += tst_qnetworkreply.cpp
diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
new file mode 100644
index 0000000..a92359f
--- /dev/null
+++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -0,0 +1,656 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+// This file contains benchmarks for QNetworkReply functions.
+
+#include <QDebug>
+#include <qtest.h>
+#include <QtTest/QtTest>
+#include <QtNetwork/qnetworkreply.h>
+#include <QtNetwork/qnetworkrequest.h>
+#include <QtNetwork/qnetworkaccessmanager.h>
+#include <QtNetwork/qtcpsocket.h>
+#include <QtNetwork/qtcpserver.h>
+#include "../../auto/network-settings.h"
+
+
+class TimedSender: public QThread
+{
+    Q_OBJECT
+    qint64 totalBytes;
+    QSemaphore ready;
+    QByteArray dataToSend;
+    QTcpSocket *client;
+    int timeout;
+    int port;
+public:
+    int transferRate;
+    TimedSender(int ms)
+        : totalBytes(0), timeout(ms), port(-1), transferRate(-1)
+    {
+        dataToSend = QByteArray(16*1024, '@');
+        start();
+        ready.acquire();
+    }
+
+    inline int serverPort() const { return port; }
+
+private slots:
+    void writeMore()
+    {
+        while (client->bytesToWrite() < 128 * 1024) {
+            writePacket(dataToSend);
+        }
+    }
+
+protected:
+    void run()
+    {
+        QTcpServer server;
+        server.listen();
+        port = server.serverPort();
+        ready.release();
+
+        server.waitForNewConnection(-1);
+        client = server.nextPendingConnection();
+
+        writeMore();
+        connect(client, SIGNAL(bytesWritten(qint64)), SLOT(writeMore()), Qt::DirectConnection);
+
+        QEventLoop eventLoop;
+        QTimer::singleShot(timeout, &eventLoop, SLOT(quit()));
+
+        QTime timer;
+        timer.start();
+        eventLoop.exec();
+        disconnect(client, SIGNAL(bytesWritten(qint64)), this, 0);
+
+        // wait for the connection to shut down
+        client->disconnectFromHost();
+        if (!client->waitForDisconnected(10000))
+            return;
+
+        transferRate = totalBytes * 1000 / timer.elapsed();
+        qDebug() << "TimedSender::run" << "receive rate:" << (transferRate / 1024) << "kB/s in"
+                 << timer.elapsed() << "ms";
+    }
+
+    void writePacket(const QByteArray &array)
+    {
+        client->write(array);
+        totalBytes += array.size();
+    }
+};
+
+
+class QNetworkReplyPtr: public QSharedPointer<QNetworkReply>
+{
+public:
+    inline QNetworkReplyPtr(QNetworkReply *ptr = 0)
+        : QSharedPointer<QNetworkReply>(ptr)
+    { }
+
+    inline operator QNetworkReply *() const { return data(); }
+};
+
+
+class DataReader: public QObject
+{
+    Q_OBJECT
+public:
+    qint64 totalBytes;
+    QByteArray data;
+    QIODevice *device;
+    bool accumulate;
+    DataReader(QIODevice *dev, bool acc = true) : totalBytes(0), device(dev), accumulate(acc)
+    {
+        connect(device, SIGNAL(readyRead()), SLOT(doRead()));
+    }
+
+public slots:
+    void doRead()
+    {
+        QByteArray buffer;
+        buffer.resize(device->bytesAvailable());
+        qint64 bytesRead = device->read(buffer.data(), device->bytesAvailable());
+        if (bytesRead == -1) {
+            QTestEventLoop::instance().exitLoop();
+            return;
+        }
+        buffer.truncate(bytesRead);
+        totalBytes += bytesRead;
+
+        if (accumulate)
+            data += buffer;
+    }
+};
+
+class ThreadedDataReader: public QThread
+{
+    Q_OBJECT
+    // used to make the constructor only return after the tcp server started listening
+    QSemaphore ready;
+    QTcpSocket *client;
+    int timeout;
+    int port;
+public:
+    qint64 transferRate;
+    ThreadedDataReader()
+        : port(-1), transferRate(-1)
+    {
+        start();
+        ready.acquire();
+    }
+
+    inline int serverPort() const { return port; }
+
+protected:
+    void run()
+    {
+        QTcpServer server;
+        server.listen();
+        port = server.serverPort();
+        ready.release();
+
+        server.waitForNewConnection(-1);
+        client = server.nextPendingConnection();
+
+        QEventLoop eventLoop;
+        DataReader reader(client, false);
+        QObject::connect(client, SIGNAL(disconnected()), &eventLoop, SLOT(quit()));
+
+        QTime timer;
+        timer.start();
+        eventLoop.exec();
+        qint64 elapsed = timer.elapsed();
+
+        transferRate = reader.totalBytes * 1000 / elapsed;
+        qDebug() << "ThreadedDataReader::run" << "send rate:" << (transferRate / 1024) << "kB/s in" << elapsed << "msec";
+    }
+};
+
+class DataGenerator: public QIODevice
+{
+    Q_OBJECT
+    enum { Idle, Started, Stopped } state;
+public:
+    DataGenerator() : state(Idle)
+    { open(ReadOnly); }
+
+    virtual bool isSequential() const { return true; }
+    virtual qint64 bytesAvailable() const { return state == Started ? 1024*1024 : 0; }
+
+public slots:
+    void start() { state = Started; emit readyRead(); }
+    void stop() { state = Stopped; emit readyRead(); }
+
+protected:
+    virtual qint64 readData(char *data, qint64 maxlen)
+    {
+        if (state == Stopped)
+            return -1;          // EOF
+
+        // return as many bytes as are wanted
+        memset(data, '@', maxlen);
+        return maxlen;
+    }
+    virtual qint64 writeData(const char *, qint64)
+    { return -1; }
+};
+
+class ThreadedDataReaderHttpServer: public QThread
+{
+    Q_OBJECT
+    // used to make the constructor only return after the tcp server started listening
+    QSemaphore ready;
+    QTcpSocket *client;
+    int timeout;
+    int port;
+public:
+    qint64 transferRate;
+    ThreadedDataReaderHttpServer()
+        : port(-1), transferRate(-1)
+    {
+        start();
+        ready.acquire();
+    }
+
+    inline int serverPort() const { return port; }
+
+protected:
+    void run()
+    {
+        QTcpServer server;
+        server.listen();
+        port = server.serverPort();
+        ready.release();
+
+        QVERIFY(server.waitForNewConnection(10*1000));
+        client = server.nextPendingConnection();
+
+        // read lines until we read the empty line seperating HTTP request from HTTP request body
+        do {
+            if (client->canReadLine()) {
+                QString line = client->readLine();
+                if (line == "\n" || line == "\r\n")
+                    break; // empty line
+            }
+            if (!client->waitForReadyRead(10*1000)) {
+                client->close();
+                return;
+            }
+        } while (client->state() == QAbstractSocket::ConnectedState);
+
+        client->write("HTTP/1.0 200 OK\r\n");
+        client->write("Content-length: 0\r\n");
+        client->write("\r\n");
+        client->flush();
+
+        QCoreApplication::processEvents();
+
+        QEventLoop eventLoop;
+        DataReader reader(client, false);
+        QObject::connect(client, SIGNAL(disconnected()), &eventLoop, SLOT(quit()));
+
+        QTime timer;
+        timer.start();
+        eventLoop.exec();
+        qint64 elapsed = timer.elapsed();
+
+        transferRate = reader.totalBytes * 1000 / elapsed;
+        qDebug() << "ThreadedDataReaderHttpServer::run" << "send rate:" << (transferRate / 1024) << "kB/s in" << elapsed << "msec";
+    }
+};
+
+
+class FixedSizeDataGenerator : public QIODevice
+{
+    Q_OBJECT
+    enum { Idle, Started, Stopped } state;
+public:
+    FixedSizeDataGenerator(qint64 size) : state(Idle)
+    { open(ReadOnly | Unbuffered);
+      toBeGeneratedTotalCount = toBeGeneratedCount = size;
+    }
+
+    virtual qint64 bytesAvailable() const
+    {
+        return state == Started ? toBeGeneratedCount + QIODevice::bytesAvailable() : 0;
+    }
+
+    virtual bool isSequential() const{
+        return false;
+    }
+
+    virtual bool reset() const{
+        return false;
+    }
+
+    qint64 size() const {
+        return toBeGeneratedTotalCount;
+    }
+
+public slots:
+    void start() { state = Started; emit readyRead(); }
+
+protected:
+    virtual qint64 readData(char *data, qint64 maxlen)
+    {
+        memset(data, '@', maxlen);
+
+        if (toBeGeneratedCount <= 0) {
+            return -1;
+        }
+
+        qint64 n = qMin(maxlen, toBeGeneratedCount);
+        toBeGeneratedCount -= n;
+
+        if (toBeGeneratedCount <= 0) {
+            // make sure this is a queued connection!
+            emit readChannelFinished();
+        }
+
+        return n;
+    }
+    virtual qint64 writeData(const char *, qint64)
+    { return -1; }
+
+    qint64 toBeGeneratedCount;
+    qint64 toBeGeneratedTotalCount;
+};
+
+class HttpDownloadPerformanceServer : QObject {
+    Q_OBJECT;
+    qint64 dataSize;
+    qint64 dataSent;
+    QTcpServer server;
+    QTcpSocket *client;
+    bool serverSendsContentLength;
+    bool chunkedEncoding;
+
+public:
+    HttpDownloadPerformanceServer (qint64 ds, bool sscl, bool ce) : dataSize(ds), dataSent(0),
+    client(0), serverSendsContentLength(sscl), chunkedEncoding(ce) {
+        server.listen();
+        connect(&server, SIGNAL(newConnection()), this, SLOT(newConnectionSlot()));
+    }
+
+    int serverPort() {
+        return server.serverPort();
+    }
+
+public slots:
+
+    void newConnectionSlot() {
+        client = server.nextPendingConnection();
+        client->setParent(this);
+        connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+        connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot(qint64)));
+    }
+
+    void readyReadSlot() {
+        client->readAll();
+        client->write("HTTP/1.0 200 OK\n");
+        if (serverSendsContentLength)
+            client->write(QString("Content-Length: " + QString::number(dataSize) + "\n").toAscii());
+        if (chunkedEncoding)
+            client->write(QString("Transfer-Encoding: chunked\n").toAscii());
+        client->write("Connection: close\n\n");
+    }
+
+    void bytesWrittenSlot(qint64 amount) {
+        Q_UNUSED(amount);
+        if (dataSent == dataSize && client) {
+            // close eventually
+
+            // chunked encoding: we have to send a last "empty" chunk
+            if (chunkedEncoding)
+                client->write(QString("0\r\n\r\n").toAscii());
+
+            client->disconnectFromHost();
+            server.close();
+            client = 0;
+            return;
+        }
+
+        // send data
+        if (client && client->bytesToWrite() < 100*1024 && dataSent < dataSize) {
+            qint64 amount = qMin(qint64(16*1024), dataSize - dataSent);
+            QByteArray data(amount, '@');
+
+            if (chunkedEncoding) {
+                client->write(QString(QString("%1").arg(amount,0,16).toUpper() + "\r\n").toAscii());
+                client->write(data.constData(), amount);
+                client->write(QString("\r\n").toAscii());
+            } else {
+                client->write(data.constData(), amount);
+            }
+
+            dataSent += amount;
+        }
+    }
+};
+
+class HttpDownloadPerformanceClient : QObject {
+    Q_OBJECT;
+    QIODevice *device;
+    public:
+    HttpDownloadPerformanceClient (QIODevice *dev) : device(dev){
+        connect(dev, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
+    }
+
+    public slots:
+    void readyReadSlot() {
+        device->readAll();
+    }
+
+};
+
+
+
+
+class tst_qnetworkreply : public QObject
+{
+    Q_OBJECT
+
+    QNetworkAccessManager manager;
+private slots:
+    void httpLatency();
+
+#ifndef QT_NO_OPENSSL
+    void echoPerformance_data();
+    void echoPerformance();
+#endif
+
+    void downloadPerformance();
+    void uploadPerformance();
+    void performanceControlRate();
+    void httpUploadPerformance();
+    void httpDownloadPerformance_data();
+    void httpDownloadPerformance();
+
+};
+
+void tst_qnetworkreply::httpLatency()
+{
+    QNetworkAccessManager manager;
+    QBENCHMARK{
+        QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/"));
+        QNetworkReply* reply = manager.get(request);
+        connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+        QTestEventLoop::instance().enterLoop(5);
+        QVERIFY(!QTestEventLoop::instance().timeout());
+        delete reply;
+    }
+}
+
+#ifndef QT_NO_OPENSSL
+void tst_qnetworkreply::echoPerformance_data()
+{
+     QTest::addColumn<bool>("ssl");
+     QTest::newRow("no_ssl") << false;
+     QTest::newRow("ssl") << true;
+}
+
+void tst_qnetworkreply::echoPerformance()
+{
+    QFETCH(bool, ssl);
+    QNetworkAccessManager manager;
+    QNetworkRequest request(QUrl((ssl ? "https://" : "http://") + QtNetworkSettings::serverName() + "/qtest/cgi-bin/echo.cgi"));
+
+    QByteArray data;
+    data.resize(1024*1024*10); // 10 MB
+    // init with garbage. needed so ssl cannot compress it in an efficient way.
+    for (int i = 0; i < data.size() / sizeof(int); i++) {
+        int r = qrand();
+        data.data()[i*sizeof(int)] = r;
+    }
+
+    QBENCHMARK{
+        QNetworkReply* reply = manager.post(request, data);
+        connect(reply, SIGNAL(sslErrors( const QList<QSslError> &)), reply, SLOT(ignoreSslErrors()));
+        connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+        QTestEventLoop::instance().enterLoop(5);
+        QVERIFY(!QTestEventLoop::instance().timeout());
+        QVERIFY(reply->error() == QNetworkReply::NoError);
+        delete reply;
+    }
+}
+#endif
+
+void tst_qnetworkreply::downloadPerformance()
+{
+    // unlike the above function, this one tries to send as fast as possible
+    // and measures how fast it was.
+    TimedSender sender(5000);
+    QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(sender.serverPort()) + "/?bare=1");
+    QNetworkReplyPtr reply = manager.get(request);
+    DataReader reader(reply, false);
+
+    QTime loopTime;
+    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+    loopTime.start();
+    QTestEventLoop::instance().enterLoop(40);
+    int elapsedTime = loopTime.elapsed();
+    sender.wait();
+
+    qint64 receivedBytes = reader.totalBytes;
+    qDebug() << "tst_QNetworkReply::downloadPerformance" << "receive rate:" << (receivedBytes * 1000 / elapsedTime / 1024) << "kB/s and"
+             << elapsedTime << "ms";
+}
+
+void tst_qnetworkreply::uploadPerformance()
+{
+      ThreadedDataReader reader;
+      DataGenerator generator;
+
+
+      QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(reader.serverPort()) + "/?bare=1");
+      QNetworkReplyPtr reply = manager.put(request, &generator);
+      generator.start();
+      connect(&reader, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+      QTimer::singleShot(5000, &generator, SLOT(stop()));
+
+      QTestEventLoop::instance().enterLoop(30);
+      QCOMPARE(reply->error(), QNetworkReply::NoError);
+      QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+void tst_qnetworkreply::httpUploadPerformance()
+{
+#ifdef Q_OS_SYMBIAN
+      // SHow some mercy for non-desktop platform/s
+      enum {UploadSize = 4*1024*1024}; // 4 MB
+#else
+      enum {UploadSize = 128*1024*1024}; // 128 MB
+#endif
+      ThreadedDataReaderHttpServer reader;
+      FixedSizeDataGenerator generator(UploadSize);
+
+      QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(reader.serverPort()) + "/?bare=1"));
+      request.setHeader(QNetworkRequest::ContentLengthHeader,UploadSize);
+
+      QNetworkReplyPtr reply = manager.put(request, &generator);
+
+      connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+      QTime time;
+      generator.start();
+      time.start();
+      QTestEventLoop::instance().enterLoop(40);
+      qint64 elapsed = time.elapsed();
+      reader.exit();
+      reader.wait();
+      QVERIFY(reply->isFinished());
+      QCOMPARE(reply->error(), QNetworkReply::NoError);
+      QVERIFY(!QTestEventLoop::instance().timeout());
+
+      qDebug() << "tst_QNetworkReply::httpUploadPerformance" << elapsed << "msec, "
+              << ((UploadSize/1024.0)/(elapsed/1000.0)) << " kB/sec";
+}
+
+
+void tst_qnetworkreply::performanceControlRate()
+{
+    // this is a control comparison for the other two above
+    // it does the same thing, but instead bypasses the QNetworkAccess system
+    qDebug() << "The following are the maximum transfer rates that we can get in this system"
+        " (bypassing QNetworkAccess)";
+
+    TimedSender sender(5000);
+    QTcpSocket sink;
+    sink.connectToHost("127.0.0.1", sender.serverPort());
+    DataReader reader(&sink, false);
+
+    QTime loopTime;
+    connect(&sink, SIGNAL(disconnected()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+    loopTime.start();
+    QTestEventLoop::instance().enterLoop(40);
+    int elapsedTime = loopTime.elapsed();
+    sender.wait();
+
+    qint64 receivedBytes = reader.totalBytes;
+    qDebug() << "tst_QNetworkReply::performanceControlRate" << "receive rate:" << (receivedBytes * 1000 / elapsedTime / 1024) << "kB/s and"
+             << elapsedTime << "ms";
+}
+
+void tst_qnetworkreply::httpDownloadPerformance_data()
+{
+    QTest::addColumn<bool>("serverSendsContentLength");
+    QTest::addColumn<bool>("chunkedEncoding");
+
+    QTest::newRow("Server sends no Content-Length") << false << false;
+    QTest::newRow("Server sends Content-Length")     << true << false;
+    QTest::newRow("Server uses chunked encoding")     << false << true;
+
+}
+
+void tst_qnetworkreply::httpDownloadPerformance()
+{
+    QFETCH(bool, serverSendsContentLength);
+    QFETCH(bool, chunkedEncoding);
+#ifdef Q_OS_SYMBIAN
+    // Show some mercy to non-desktop platform/s
+    enum {UploadSize = 4*1024*1024}; // 4 MB
+#else
+    enum {UploadSize = 128*1024*1024}; // 128 MB
+#endif
+    HttpDownloadPerformanceServer server(UploadSize, serverSendsContentLength, chunkedEncoding);
+
+    QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"));
+    QNetworkReplyPtr reply = manager.get(request);
+
+    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+    HttpDownloadPerformanceClient client(reply);
+
+    QTime time;
+    time.start();
+    QTestEventLoop::instance().enterLoop(40);
+    QCOMPARE(reply->error(), QNetworkReply::NoError);
+    QVERIFY(!QTestEventLoop::instance().timeout());
+
+    qint64 elapsed = time.elapsed();
+    qDebug() << "tst_QNetworkReply::httpDownloadPerformance" << elapsed << "msec, "
+            << ((UploadSize/1024.0)/(elapsed/1000.0)) << " kB/sec";
+}
+
+QTEST_MAIN(tst_qnetworkreply)
+
+#include "tst_qnetworkreply.moc"
diff --git a/tests/benchmarks/network/kernel/kernel.pro b/tests/benchmarks/network/kernel/kernel.pro
new file mode 100644
index 0000000..1ec3071
--- /dev/null
+++ b/tests/benchmarks/network/kernel/kernel.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qhostinfo
diff --git a/tests/benchmarks/network/kernel/qhostinfo/main.cpp b/tests/benchmarks/network/kernel/qhostinfo/main.cpp
new file mode 100644
index 0000000..0ae1b7f
--- /dev/null
+++ b/tests/benchmarks/network/kernel/qhostinfo/main.cpp
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QDebug>
+#include <QHostInfo>
+#include <QStringList>
+#include <QString>
+
+#include <qtest.h>
+#include <qtesteventloop.h>
+
+class tst_qhostinfo : public QObject
+{
+    Q_OBJECT
+private slots:
+    void lookupSpeed();
+};
+
+class SignalReceiver : public QObject
+{
+    Q_OBJECT
+public:
+    SignalReceiver(int nrc) : receiveCount(0), neededReceiveCount(nrc) {};
+    int receiveCount;
+    int neededReceiveCount;
+public slots:
+    void resultsReady(const QHostInfo) {
+        receiveCount++;
+        if (receiveCount == neededReceiveCount)
+            QTestEventLoop::instance().exitLoop();
+    }
+};
+
+void tst_qhostinfo::lookupSpeed()
+{
+    QStringList hostnameList;
+    hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
+            << "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com"
+            << "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----";
+    // also add some duplicates:
+    hostnameList << "www.nokia.com" << "127.0.0.1" << "www.trolltech.com";
+    const int COUNT = hostnameList.size();
+
+    SignalReceiver receiver(COUNT);
+
+    QBENCHMARK {
+        for (int i = 0; i < hostnameList.size(); i++)
+            QHostInfo::lookupHost(hostnameList.at(i), &receiver, SLOT(resultsReady(const QHostInfo)));
+        QTestEventLoop::instance().enterLoop(20);
+        QVERIFY(!QTestEventLoop::instance().timeout());
+    }
+}
+
+
+QTEST_MAIN(tst_qhostinfo)
+
+#include "main.moc"
diff --git a/tests/benchmarks/network/kernel/qhostinfo/qhostinfo.pro b/tests/benchmarks/network/kernel/qhostinfo/qhostinfo.pro
new file mode 100755
index 0000000..f18d6d7
--- /dev/null
+++ b/tests/benchmarks/network/kernel/qhostinfo/qhostinfo.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qhostinfo
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+QT += network
+
+CONFIG += release
+
+# Input
+SOURCES += main.cpp
diff --git a/tests/benchmarks/network/network.pro b/tests/benchmarks/network/network.pro
new file mode 100644
index 0000000..4e83db2
--- /dev/null
+++ b/tests/benchmarks/network/network.pro
@@ -0,0 +1,5 @@
+TEMPLATE = subdirs
+SUBDIRS = \ 
+        access \
+        kernel \
+        socket
diff --git a/tests/benchmarks/network/socket/qtcpserver/qtcpserver.pro b/tests/benchmarks/network/socket/qtcpserver/qtcpserver.pro
new file mode 100644
index 0000000..e7bf13a
--- /dev/null
+++ b/tests/benchmarks/network/socket/qtcpserver/qtcpserver.pro
@@ -0,0 +1,13 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qtcpserver
+DEPENDPATH += .
+INCLUDEPATH += .
+
+QT -= gui
+QT += network
+
+CONFIG += release
+
+# Input
+SOURCES += tst_qtcpserver.cpp
diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
new file mode 100644
index 0000000..b6b55c3
--- /dev/null
+++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -0,0 +1,277 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+// Just to get Q_OS_SYMBIAN
+#include <qglobal.h>
+
+#include <QtTest/QtTest>
+
+
+#include <qcoreapplication.h>
+#include <qtcpsocket.h>
+#include <qtcpserver.h>
+#include <qhostaddress.h>
+#include <qprocess.h>
+#include <qstringlist.h>
+#include <qplatformdefs.h>
+#include <qhostinfo.h>
+
+#include <QNetworkProxy>
+Q_DECLARE_METATYPE(QNetworkProxy)
+Q_DECLARE_METATYPE(QList<QNetworkProxy>)
+
+#include "../../auto/network-settings.h"
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QTcpServer : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QTcpServer();
+    virtual ~tst_QTcpServer();
+
+
+public slots:
+    void initTestCase_data();
+    void init();
+    void cleanup();
+private slots:
+    void ipv4LoopbackPerformanceTest();
+    void ipv6LoopbackPerformanceTest();
+    void ipv4PerformanceTest();
+};
+
+tst_QTcpServer::tst_QTcpServer()
+{
+    Q_SET_DEFAULT_IAP
+}
+
+tst_QTcpServer::~tst_QTcpServer()
+{
+}
+
+void tst_QTcpServer::initTestCase_data()
+{
+    QTest::addColumn<bool>("setProxy");
+    QTest::addColumn<int>("proxyType");
+
+    QTest::newRow("WithoutProxy") << false << 0;
+    QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
+}
+
+void tst_QTcpServer::init()
+{
+    QFETCH_GLOBAL(bool, setProxy);
+    if (setProxy) {
+        QFETCH_GLOBAL(int, proxyType);
+        if (proxyType == QNetworkProxy::Socks5Proxy) {
+            QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
+        }
+    }
+}
+
+void tst_QTcpServer::cleanup()
+{
+    QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::ipv4LoopbackPerformanceTest()
+{
+    QFETCH_GLOBAL(bool, setProxy);
+    if (setProxy)
+        return;
+
+    QTcpServer server;
+    QVERIFY(server.listen(QHostAddress::LocalHost));
+
+    QVERIFY(server.isListening());
+
+    QTcpSocket clientA;
+    clientA.connectToHost(QHostAddress::LocalHost, server.serverPort());
+    QVERIFY(clientA.waitForConnected(5000));
+    QVERIFY(clientA.state() == QAbstractSocket::ConnectedState);
+
+    QVERIFY(server.waitForNewConnection());
+    QTcpSocket *clientB = server.nextPendingConnection();
+    QVERIFY(clientB);
+
+    QByteArray buffer(16384, '@');
+    QTime stopWatch;
+    stopWatch.start();
+    qlonglong totalWritten = 0;
+    while (stopWatch.elapsed() < 5000) {
+        QVERIFY(clientA.write(buffer.data(), buffer.size()) > 0);
+        clientA.flush();
+        totalWritten += buffer.size();
+        while (clientB->waitForReadyRead(100)) {
+            if (clientB->bytesAvailable() == 16384)
+                break;
+        }
+        clientB->read(buffer.data(), buffer.size());
+        clientB->write(buffer.data(), buffer.size());
+        clientB->flush();
+        totalWritten += buffer.size();
+        while (clientA.waitForReadyRead(100)) {
+            if (clientA.bytesAvailable() == 16384)
+                break;
+        }
+        clientA.read(buffer.data(), buffer.size());
+    }
+
+    qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
+           server.serverAddress().toString().toLatin1().constData(),
+           totalWritten / (1024.0 * 1024.0),
+           stopWatch.elapsed() / 1000.0,
+           (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
+
+    delete clientB;
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::ipv6LoopbackPerformanceTest()
+{
+    QFETCH_GLOBAL(bool, setProxy);
+    if (setProxy)
+        return;
+
+#if defined(Q_OS_SYMBIAN)
+    QSKIP("Symbian: IPv6 is not yet supported", SkipAll);
+#endif
+    QTcpServer server;
+    if (!server.listen(QHostAddress::LocalHostIPv6, 0)) {
+        QVERIFY(server.serverError() == QAbstractSocket::UnsupportedSocketOperationError);
+    } else {
+        QTcpSocket clientA;
+        clientA.connectToHost(server.serverAddress(), server.serverPort());
+        QVERIFY(clientA.waitForConnected(5000));
+
+        QVERIFY(server.waitForNewConnection(5000));
+        QTcpSocket *clientB = server.nextPendingConnection();
+        QVERIFY(clientB);
+
+        QByteArray buffer(16384, '@');
+        QTime stopWatch;
+        stopWatch.start();
+        qlonglong totalWritten = 0;
+        while (stopWatch.elapsed() < 5000) {
+            clientA.write(buffer.data(), buffer.size());
+            clientA.flush();
+            totalWritten += buffer.size();
+            while (clientB->waitForReadyRead(100)) {
+                if (clientB->bytesAvailable() == 16384)
+                    break;
+            }
+            clientB->read(buffer.data(), buffer.size());
+            clientB->write(buffer.data(), buffer.size());
+            clientB->flush();
+            totalWritten += buffer.size();
+            while (clientA.waitForReadyRead(100)) {
+                if (clientA.bytesAvailable() == 16384)
+                   break;
+            }
+            clientA.read(buffer.data(), buffer.size());
+        }
+
+        qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
+               server.serverAddress().toString().toLatin1().constData(),
+               totalWritten / (1024.0 * 1024.0),
+               stopWatch.elapsed() / 1000.0,
+               (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
+        delete clientB;
+    }
+}
+
+//----------------------------------------------------------------------------------
+void tst_QTcpServer::ipv4PerformanceTest()
+{
+    QTcpSocket probeSocket;
+    probeSocket.connectToHost(QtNetworkSettings::serverName(), 143);
+    QVERIFY(probeSocket.waitForConnected(5000));
+
+    QTcpServer server;
+    QVERIFY(server.listen(probeSocket.localAddress(), 0));
+
+    QTcpSocket clientA;
+    clientA.connectToHost(server.serverAddress(), server.serverPort());
+    QVERIFY(clientA.waitForConnected(5000));
+
+    QVERIFY(server.waitForNewConnection(5000));
+    QTcpSocket *clientB = server.nextPendingConnection();
+    QVERIFY(clientB);
+
+    QByteArray buffer(16384, '@');
+    QTime stopWatch;
+    stopWatch.start();
+    qlonglong totalWritten = 0;
+    while (stopWatch.elapsed() < 5000) {
+        qlonglong writtenA = clientA.write(buffer.data(), buffer.size());
+        clientA.flush();
+        totalWritten += buffer.size();
+        while (clientB->waitForReadyRead(100)) {
+            if (clientB->bytesAvailable() == writtenA)
+                break;
+        }
+        clientB->read(buffer.data(), buffer.size());
+        qlonglong writtenB = clientB->write(buffer.data(), buffer.size());
+        clientB->flush();
+        totalWritten += buffer.size();
+        while (clientA.waitForReadyRead(100)) {
+            if (clientA.bytesAvailable() == writtenB)
+               break;
+        }
+        clientA.read(buffer.data(), buffer.size());
+    }
+
+    qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
+           probeSocket.localAddress().toString().toLatin1().constData(),
+           totalWritten / (1024.0 * 1024.0),
+           stopWatch.elapsed() / 1000.0,
+           (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
+
+    delete clientB;
+}
+
+QTEST_MAIN(tst_QTcpServer)
+#include "tst_qtcpserver.moc"
diff --git a/tests/benchmarks/network/socket/socket.pro b/tests/benchmarks/network/socket/socket.pro
new file mode 100644
index 0000000..2d676a2
--- /dev/null
+++ b/tests/benchmarks/network/socket/socket.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qtcpserver
diff --git a/tests/benchmarks/qanimation/dummyanimation.cpp b/tests/benchmarks/qanimation/dummyanimation.cpp
deleted file mode 100644
index f79cc5b..0000000
--- a/tests/benchmarks/qanimation/dummyanimation.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "dummyanimation.h"
-#include "dummyobject.h"
-
-
-DummyAnimation::DummyAnimation(DummyObject *d) : m_dummy(d)
-{
-}
-
-void DummyAnimation::updateCurrentValue(const QVariant &value)
-{
-    if (state() == Stopped)
-        return;
-    if (m_dummy)
-        m_dummy->setRect(value.toRect());
-}
-
-void DummyAnimation::updateState(State state)
-{
-    Q_UNUSED(state);
-}
diff --git a/tests/benchmarks/qanimation/dummyanimation.h b/tests/benchmarks/qanimation/dummyanimation.h
deleted file mode 100644
index 1df76be..0000000
--- a/tests/benchmarks/qanimation/dummyanimation.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-
-#ifndef _DUMMYANIMATION_H__
-
-class DummyObject;
-
-class DummyAnimation : public QVariantAnimation
-{
-public:
-    DummyAnimation(DummyObject *d);
-
-    void updateCurrentValue(const QVariant &value);
-    void updateState(State state);
-
-private:
-    DummyObject *m_dummy;
-};
-
-#endif
diff --git a/tests/benchmarks/qanimation/dummyobject.cpp b/tests/benchmarks/qanimation/dummyobject.cpp
deleted file mode 100644
index 2b66cda..0000000
--- a/tests/benchmarks/qanimation/dummyobject.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtGui module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "dummyobject.h"
-
-DummyObject::DummyObject()
-{
-}
-
-QRect DummyObject::rect() const
-{
-    return m_rect;
-}
-
-void DummyObject::setRect(const QRect &r)
-{
-    m_rect = r;
-}
-
-float DummyObject::opacity() const
-{
-    return m_opacity;
-}
-
-void DummyObject::setOpacity(float o)
-{
-    m_opacity = o;
-}
diff --git a/tests/benchmarks/qanimation/dummyobject.h b/tests/benchmarks/qanimation/dummyobject.h
deleted file mode 100644
index 31614fd..0000000
--- a/tests/benchmarks/qanimation/dummyobject.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-
-#ifndef _DUMMYOBJECT_H__
-
-class DummyObject : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(QRect rect READ rect WRITE setRect)
-    Q_PROPERTY(float opacity READ opacity WRITE setOpacity)
-public:
-    DummyObject();
-    QRect rect() const;
-    void setRect(const QRect &r);
-    float opacity() const;
-    void setOpacity(float);
-
-private:
-    QRect m_rect;
-    float m_opacity;
-};
-
-
-#endif
diff --git a/tests/benchmarks/qanimation/main.cpp b/tests/benchmarks/qanimation/main.cpp
deleted file mode 100644
index 8b9884e..0000000
--- a/tests/benchmarks/qanimation/main.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-#include <qtest.h>
-
-#include "dummyobject.h"
-#include "dummyanimation.h"
-#include "rectanimation.h"
-
-#define ITERATION_COUNT 10e3
-
-class tst_qanimation : public QObject
-{
-    Q_OBJECT
-private slots:
-    void itemPropertyAnimation();
-    void itemPropertyAnimation_data() { data();}
-    void dummyAnimation();
-    void dummyAnimation_data() { data();}
-    void dummyPropertyAnimation();
-    void dummyPropertyAnimation_data() { data();}
-    void rectAnimation();
-    void rectAnimation_data() { data();}
-
-    void floatAnimation_data() { data(); }
-    void floatAnimation();
-
-private:
-    void data();
-};
-
-
-void tst_qanimation::data()
-{
-    QTest::addColumn<bool>("started");
-    QTest::newRow("NotRunning") << false;
-    QTest::newRow("Running") << true;
-}
-
-void tst_qanimation::itemPropertyAnimation()
-{
-    QFETCH(bool, started);
-    QGraphicsWidget item;
-
-    //then the property animation
-    {
-        QPropertyAnimation anim(&item, "pos");
-        anim.setDuration(ITERATION_COUNT);
-        anim.setStartValue(QPointF(0,0));
-        anim.setEndValue(QPointF(ITERATION_COUNT,ITERATION_COUNT));
-        if (started)
-            anim.start();
-        QBENCHMARK {
-            for(int i = 0; i < ITERATION_COUNT; ++i) {
-                anim.setCurrentTime(i);
-            }
-        }
-    }
-
-}
-
-void tst_qanimation::dummyAnimation()
-{
-    QFETCH(bool, started);
-    DummyObject dummy;
-
-    //first the dummy animation
-    {
-        DummyAnimation anim(&dummy);
-        anim.setDuration(ITERATION_COUNT);
-        anim.setStartValue(QRect(0, 0, 0, 0));
-        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
-        if (started)
-            anim.start();
-        QBENCHMARK {
-            for(int i = 0; i < anim.duration(); ++i) {
-                anim.setCurrentTime(i);
-            }
-        }
-    }
-}
-
-void tst_qanimation::dummyPropertyAnimation()
-{
-    QFETCH(bool, started);
-    DummyObject dummy;
-
-    //then the property animation
-    {
-        QPropertyAnimation anim(&dummy, "rect");
-        anim.setDuration(ITERATION_COUNT);
-        anim.setStartValue(QRect(0, 0, 0, 0));
-        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
-        if (started)
-            anim.start();
-        QBENCHMARK {
-            for(int i = 0; i < ITERATION_COUNT; ++i) {
-                anim.setCurrentTime(i);
-            }
-        }
-    }
-}
-
-void tst_qanimation::rectAnimation()
-{
-    //this is the simplest animation you can do
-    QFETCH(bool, started);
-    DummyObject dummy;
-
-    //then the property animation
-    {
-        RectAnimation anim(&dummy);
-        anim.setDuration(ITERATION_COUNT);
-        anim.setStartValue(QRect(0, 0, 0, 0));
-        anim.setEndValue(QRect(0, 0, ITERATION_COUNT,ITERATION_COUNT));
-        if (started)
-            anim.start();
-        QBENCHMARK {
-            for(int i = 0; i < ITERATION_COUNT; ++i) {
-                anim.setCurrentTime(i);
-            }
-        }
-    }
-}
-
-void tst_qanimation::floatAnimation()
-{
-    //this is the simplest animation you can do
-    QFETCH(bool, started);
-    DummyObject dummy;
-
-    //then the property animation
-    {
-        QPropertyAnimation anim(&dummy, "opacity");
-        anim.setDuration(ITERATION_COUNT);
-        anim.setStartValue(0.f);
-        anim.setEndValue(1.f);
-        if (started)
-            anim.start();
-        QBENCHMARK {
-            for(int i = 0; i < ITERATION_COUNT; ++i) {
-                anim.setCurrentTime(i);
-            }
-        }
-    }
-}
-
-
-
-QTEST_MAIN(tst_qanimation)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qanimation/qanimation.pro b/tests/benchmarks/qanimation/qanimation.pro
deleted file mode 100644
index 55cd75e..0000000
--- a/tests/benchmarks/qanimation/qanimation.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qanimation
-DEPENDPATH += .
-INCLUDEPATH += .
-
-CONFIG += release
-#CONFIG += debug
-
-
-SOURCES += main.cpp \
-           dummyobject.cpp \
-           dummyanimation.cpp \
-           rectanimation.cpp
-
-HEADERS += dummyobject.h \
-           dummyanimation.h \
-           rectanimation.h
diff --git a/tests/benchmarks/qanimation/rectanimation.cpp b/tests/benchmarks/qanimation/rectanimation.cpp
deleted file mode 100644
index e6d7a7e..0000000
--- a/tests/benchmarks/qanimation/rectanimation.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "rectanimation.h"
-#include "dummyobject.h"
-
-static inline int interpolateInteger(int from, int to, qreal progress)
-{
-   return from + (to - from) * progress;
-}
-
-
-RectAnimation::RectAnimation(DummyObject *obj) : m_object(obj), m_dura(250)
-{
-}
-
-void RectAnimation::setEndValue(const QRect &rect)
-{
-    m_end = rect;
-}
-
-void RectAnimation::setStartValue(const QRect &rect)
-{
-    m_start = rect;
-}
-
-void RectAnimation::setDuration(int d)
-{
-    m_dura = d;
-}
-
-int RectAnimation::duration() const
-{
-    return m_dura;
-}
-
-
-void RectAnimation::updateCurrentTime(int currentTime)
-{
-    qreal progress = m_easing.valueForProgress( currentTime / qreal(m_dura) );
-    QRect now;
-    now.setCoords(interpolateInteger(m_start.left(), m_end.left(), progress),
-                  interpolateInteger(m_start.top(), m_end.top(), progress),
-                  interpolateInteger(m_start.right(), m_end.right(), progress),
-                  interpolateInteger(m_start.bottom(), m_end.bottom(), progress));
-
-    bool changed = (now != m_current);
-    if (changed)
-        m_current = now;
-
-    if (state() == Stopped)
-        return;
-
-    if (m_object)
-        m_object->setRect(m_current);
-}
diff --git a/tests/benchmarks/qanimation/rectanimation.h b/tests/benchmarks/qanimation/rectanimation.h
deleted file mode 100644
index 42b9376..0000000
--- a/tests/benchmarks/qanimation/rectanimation.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui>
-
-#ifndef _RECTANIMATION_H__
-
-class DummyObject;
-
-//this class is even simpler than the dummy
-//and uses no QVariant at all
-class RectAnimation : public QAbstractAnimation
-{
-public:
-    RectAnimation(DummyObject *obj);
-
-    void setEndValue(const QRect &rect);
-    void setStartValue(const QRect &rect);
-
-    void setDuration(int d);
-    int duration() const;
-
-    virtual void updateCurrentTime(int currentTime);
-
-private:
-    DummyObject *m_object;
-    QEasingCurve m_easing;
-    QRect m_start, m_end, m_current;
-    int m_dura;
-};
-
-#endif
diff --git a/tests/benchmarks/qapplication/main.cpp b/tests/benchmarks/qapplication/main.cpp
deleted file mode 100644
index c912497..0000000
--- a/tests/benchmarks/qapplication/main.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QApplication>
-
-#include <qtest.h>
-
-
-class tst_qapplication : public QObject
-{
-    Q_OBJECT
-private slots:
-    void ctor();
-};
-
-/*
-    Test the performance of the QApplication constructor.
-
-    Note: results from the second start on can be misleading,
-    since all global statics are already initialized.
-*/
-void tst_qapplication::ctor()
-{
-    // simulate reasonable argc, argv
-    int argc = 1;
-    char *argv[] = { "tst_qapplication" };
-    QBENCHMARK {
-        QApplication app(argc, argv);
-    }
-}
-
-QTEST_APPLESS_MAIN(tst_qapplication)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qapplication/qapplication.pro b/tests/benchmarks/qapplication/qapplication.pro
deleted file mode 100644
index f8601e4..0000000
--- a/tests/benchmarks/qapplication/qapplication.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qapplication
-DEPENDPATH += .
-INCLUDEPATH += .
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qbytearray/main.cpp b/tests/benchmarks/qbytearray/main.cpp
deleted file mode 100644
index 22d4815..0000000
--- a/tests/benchmarks/qbytearray/main.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <QIODevice>
-#include <QFile>
-#include <QString>
-
-#include <qtest.h>
-
-
-class tst_qbytearray : public QObject
-{
-    Q_OBJECT
-private slots:
-    void append();
-    void append_data();
-};
-
-
-void tst_qbytearray::append_data()
-{
-    QTest::addColumn<int>("size");
-    QTest::newRow("1")         << int(1);
-    QTest::newRow("10")        << int(10);
-    QTest::newRow("100")       << int(100);
-    QTest::newRow("1000")      << int(1000);
-    QTest::newRow("10000")     << int(10000);
-    QTest::newRow("100000")    << int(100000);
-    QTest::newRow("1000000")   << int(1000000);
-    QTest::newRow("10000000")  << int(10000000);
-    QTest::newRow("100000000") << int(100000000);
-}
-
-void tst_qbytearray::append()
-{
-    QFETCH(int, size);
-
-#ifdef Q_OS_SYMBIAN
-    if (size > 1000000)
-        QSKIP("Skipped due to limited memory in many Symbian devices.", SkipSingle);
-#endif
-
-    QByteArray ba;
-    QBENCHMARK {
-        QByteArray ba2(size, 'x');
-        ba.append(ba2);
-        ba.clear();
-    }
-}
-
-
-QTEST_MAIN(tst_qbytearray)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qbytearray/qbytearray.pro b/tests/benchmarks/qbytearray/qbytearray.pro
deleted file mode 100755
index a0bf021..0000000
--- a/tests/benchmarks/qbytearray/qbytearray.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qbytearray
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qdir/qdir.pro b/tests/benchmarks/qdir/qdir.pro
deleted file mode 100644
index 2cdebfd..0000000
--- a/tests/benchmarks/qdir/qdir.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qdir
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += tst_qdir.cpp
diff --git a/tests/benchmarks/qdir/tst_qdir.cpp b/tests/benchmarks/qdir/tst_qdir.cpp
deleted file mode 100644
index aea9fd0..0000000
--- a/tests/benchmarks/qdir/tst_qdir.cpp
+++ /dev/null
@@ -1,198 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-
-#ifdef Q_OS_WIN
-#   include <windows.h>
-#else
-#   include <sys/stat.h>
-#   include <sys/types.h>
-#   include <dirent.h>
-#   include <unistd.h>
-#endif
-
-class Test : public QObject{
-  Q_OBJECT
-public slots:
-    void initTestCase() {
-        QDir testdir = QDir::tempPath();
-
-        const QString subfolder_name = QLatin1String("test_speed");
-        QVERIFY(testdir.mkdir(subfolder_name));
-        QVERIFY(testdir.cd(subfolder_name));
-
-        for (uint i=0; i<10000; ++i) {
-            QFile file(testdir.absolutePath() + "/testfile_" + QString::number(i));
-            file.open(QIODevice::WriteOnly);
-        }
-    }
-    void cleanupTestCase() {
-        {
-            QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-            testdir.setSorting(QDir::Unsorted);
-            testdir.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
-            foreach (const QString &filename, testdir.entryList()) {
-                testdir.remove(filename);
-            }
-        }
-        const QDir temp = QDir(QDir::tempPath());
-        temp.rmdir(QLatin1String("test_speed"));
-    }
-private slots:
-    void baseline() {}
-
-    void sizeSpeed() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        QBENCHMARK {
-            QFileInfoList fileInfoList = testdir.entryInfoList(QDir::Files, QDir::Unsorted);
-            foreach (const QFileInfo &fileInfo, fileInfoList) {
-                fileInfo.isDir();
-                fileInfo.size();
-            }
-        }
-    }
-    void sizeSpeedIterator() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        QBENCHMARK {
-            QDirIterator dit(testdir.path(), QDir::Files);
-            while (dit.hasNext()) {
-                dit.fileInfo().isDir();
-                dit.fileInfo().size();
-                dit.next();
-            }
-        }
-    }
-
-    void sizeSpeedWithoutFilter() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        QBENCHMARK {
-            QFileInfoList fileInfoList = testdir.entryInfoList(QDir::NoFilter, QDir::Unsorted);
-            foreach (const QFileInfo &fileInfo, fileInfoList) {
-                fileInfo.size();
-            }
-        }
-    }
-    void sizeSpeedWithoutFilterIterator() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        QBENCHMARK {
-            QDirIterator dit(testdir.path());
-            while (dit.hasNext()) {
-                dit.fileInfo().isDir();
-                dit.fileInfo().size();
-                dit.next();
-            }
-        }
-    }
-
-    void sizeSpeedWithoutFileInfoList() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        testdir.setSorting(QDir::Unsorted);
-        QBENCHMARK {
-            QStringList fileList = testdir.entryList(QDir::NoFilter, QDir::Unsorted);
-            foreach (const QString &filename, fileList) {
-                QFileInfo fileInfo(filename);
-                fileInfo.size();
-            }
-        }
-    }
-
-    void iDontWantAnyStat() {
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        testdir.setSorting(QDir::Unsorted);
-        testdir.setFilter(QDir::AllEntries | QDir::System | QDir::Hidden);
-        QBENCHMARK {
-            QStringList fileList = testdir.entryList(QDir::NoFilter, QDir::Unsorted);
-            foreach (const QString &filename, fileList) {
-
-            }
-        }
-    }
-    void iDontWantAnyStatIterator() {
-        QBENCHMARK {
-            QDirIterator dit(QDir::tempPath() + QLatin1String("/test_speed"));
-            while (dit.hasNext()) {
-                dit.next();
-            }
-        }
-    }
-
-    void sizeSpeedWithoutFilterLowLevel() {
-#ifdef Q_OS_WIN
-        const wchar_t *dirpath = (wchar_t*)testdir.absolutePath().utf16();
-        wchar_t appendedPath[MAX_PATH];
-        wcscpy(appendedPath, dirpath);
-        wcscat(appendedPath, L"\\*");
-
-        WIN32_FIND_DATA fd;
-        HANDLE hSearch = FindFirstFileW(appendedPath, &fd);
-        QVERIFY(hSearch == INVALID_HANDLE_VALUE);
-
-        QBENCHMARK {
-            do {
-
-            } while (FindNextFile(hSearch, &fd));
-        }
-        FindClose(hSearch);
-#else
-        QDir testdir(QDir::tempPath() + QLatin1String("/test_speed"));
-        DIR *dir = opendir(qPrintable(testdir.absolutePath()));
-        QVERIFY(dir);
-
-        QVERIFY(!chdir(qPrintable(testdir.absolutePath())));
-        QBENCHMARK {
-            struct dirent *item = readdir(dir);
-            while (item) {
-                char *fileName = item->d_name;
-
-                struct stat fileStat;
-                QVERIFY(!stat(fileName, &fileStat));
-
-                item = readdir(dir);
-            }
-        }
-        closedir(dir);
-#endif
-    }
-};
-
-QTEST_MAIN(Test)
-#include "tst_qdir.moc"
diff --git a/tests/benchmarks/qdiriterator/main.cpp b/tests/benchmarks/qdiriterator/main.cpp
deleted file mode 100644
index afa6b7b..0000000
--- a/tests/benchmarks/qdiriterator/main.cpp
+++ /dev/null
@@ -1,251 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <QDirIterator>
-#include <QString>
-
-#ifdef Q_OS_WIN
-#   include <windows.h>
-#   include <atlbase.h>
-#else
-#   include <sys/stat.h>
-#   include <sys/types.h>
-#   include <dirent.h>
-#   include <errno.h>
-#   include <string.h>
-#endif
-
-#include <qtest.h>
-
-#include "qfilesystemiterator.h"
-
-class tst_qdiriterator : public QObject
-{
-    Q_OBJECT
-private slots:
-    void posix();
-    void posix_data() { data(); }
-    void diriterator();
-    void diriterator_data() { data(); }
-    void fsiterator();
-    void fsiterator_data() { data(); }
-    void data();
-};
-
-
-void tst_qdiriterator::data()
-{
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
-    QByteArray qtdir = qPrintable(QCoreApplication::applicationDirPath());
-    qtdir += "/depot";
-#else
-#if defined(Q_OS_WIN)
-    const char *qtdir = "C:\\depot\\qt\\main";
-#else
-    const char *qtdir = ::getenv("QTDIR");
-#endif
-    if (!qtdir) {
-        fprintf(stderr, "QTDIR not set\n");
-        exit(1);
-    }
-#endif
-
-    QTest::addColumn<QByteArray>("dirpath");
-    QByteArray ba = QByteArray(qtdir) + "/src/corelib";
-    QByteArray ba1 = ba + "/io";
-    QTest::newRow(ba) << ba;
-    //QTest::newRow(ba1) << ba1;
-}
-
-#ifdef Q_OS_WIN
-static int posix_helper(const wchar_t *dirpath)
-{
-    int count = 0;
-    HANDLE hSearch;
-    WIN32_FIND_DATA fd;
-
-    const size_t origDirPathLength = wcslen(dirpath);
-
-    wchar_t appendedPath[MAX_PATH];
-    wcscpy(appendedPath, dirpath);
-    wcscat(appendedPath, L"\\*");
-    hSearch = FindFirstFile(appendedPath, &fd);
-    appendedPath[origDirPathLength] = 0;
-
-    if (hSearch == INVALID_HANDLE_VALUE) {
-        qWarning("FindFirstFile failed");
-        return count;
-    }
-
-    do {
-        if (!(fd.cFileName[0] == L'.' && fd.cFileName[1] == 0) &&
-            !(fd.cFileName[0] == L'.' && fd.cFileName[1] == L'.' && fd.cFileName[2] == 0))
-        {
-            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
-                wcscat(appendedPath, L"\\");
-                wcscat(appendedPath, fd.cFileName);
-                count += posix_helper(appendedPath);
-                appendedPath[origDirPathLength] = 0;
-            }
-            else {
-                ++count;
-            }
-        }
-    } while (FindNextFile(hSearch, &fd));
-    FindClose(hSearch);
-
-    return count;
-}
-
-#else
-
-static int posix_helper(const char *dirpath)
-{
-    //qDebug() << "DIR" << dirpath;
-    DIR *dir = ::opendir(dirpath);
-    if (!dir)
-        return 0;
-
-    dirent *entry = 0;
-
-    int count = 0;
-    while ((entry = ::readdir(dir))) {
-        if (qstrcmp(entry->d_name, ".") == 0)
-            continue;
-        if (qstrcmp(entry->d_name, "..") == 0)
-            continue;
-        ++count;
-        QByteArray ba = dirpath;
-        ba += '/';
-        ba += entry->d_name;
-        struct stat st;
-        lstat(ba.constData(), &st);
-        if (S_ISDIR(st.st_mode))
-            count += posix_helper(ba.constData());
-    }
-
-    ::closedir(dir);
-    return count;
-}
-#endif
-
-
-void tst_qdiriterator::posix()
-{
-    QFETCH(QByteArray, dirpath);
-
-    int count = 0;
-    QString path(dirpath);
-    QBENCHMARK {
-#ifdef Q_OS_WIN
-        count = posix_helper(path.utf16());
-#else
-        count = posix_helper(dirpath.constData());
-#endif
-    }
-    qDebug() << count;
-}
-
-void tst_qdiriterator::diriterator()
-{
-    QFETCH(QByteArray, dirpath);
-
-    int count = 0;
-
-    QBENCHMARK {
-        int c = 0;
-
-        QDirIterator dir(dirpath,
-            //QDir::AllEntries | QDir::Hidden | QDir::NoDotAndDotDot,
-            //QDir::AllEntries | QDir::Hidden,
-            QDir::Files,
-            QDirIterator::Subdirectories);
-
-        while (dir.hasNext()) {
-            dir.next();
-            //printf("%s\n", qPrintable(dir.fileName()));
-            0 && printf("%d %s\n",
-                dir.fileInfo().isDir(),
-                //qPrintable(dir.fileInfo().absoluteFilePath()),
-                //qPrintable(dir.path()),
-                qPrintable(dir.filePath()));
-            ++c;
-        }
-        count = c;
-    }
-    qDebug() << count;
-}
-
-void tst_qdiriterator::fsiterator()
-{
-    QFETCH(QByteArray, dirpath);
-
-    int count = 0;
-    int dump = 0;
-
-    QBENCHMARK {
-        int c = 0;
-
-        dump && printf("\n\n\n\n");
-        QFileSystemIterator dir(dirpath,
-            //QDir::AllEntries | QDir::Hidden | QDir::NoDotAndDotDot,
-            //QDir::AllEntries | QDir::Hidden,
-            //QDir::Files | QDir::NoDotAndDotDot,
-            QDir::Files,
-            QFileSystemIterator::Subdirectories);
-
-        for (; !dir.atEnd(); dir.next()) {
-            dump && printf("%d %s\n",
-                dir.fileInfo().isDir(),
-                //qPrintable(dir.fileInfo().absoluteFilePath()),
-                //qPrintable(dir.path()),
-                qPrintable(dir.filePath())
-            );
-            ++c;
-        }
-        count = c;
-    }
-    qDebug() << count;
-}
-
-QTEST_MAIN(tst_qdiriterator)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qdiriterator/qdiriterator.pro b/tests/benchmarks/qdiriterator/qdiriterator.pro
deleted file mode 100755
index e06d746..0000000
--- a/tests/benchmarks/qdiriterator/qdiriterator.pro
+++ /dev/null
@@ -1,23 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qdiriterator
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-CONFIG += debug
-
-
-SOURCES += main.cpp
-
-SOURCES += qfilesystemiterator.cpp
-HEADERS += qfilesystemiterator.h
-
-wince*|symbian: {
-   corelibdir.sources = $$QT_SOURCE_TREE/src/corelib
-   corelibdir.path = ./depot/src
-   DEPLOYMENT += corelibdir
-}
-
diff --git a/tests/benchmarks/qdiriterator/qfilesystemiterator.cpp b/tests/benchmarks/qdiriterator/qfilesystemiterator.cpp
deleted file mode 100644
index 267d53f..0000000
--- a/tests/benchmarks/qdiriterator/qfilesystemiterator.cpp
+++ /dev/null
@@ -1,678 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-/*!
-    \since 4.5
-    \class QFileSystemIterator
-    \brief The QFileSystemIterator class provides an iterator for directory entrylists.
-
-    You can use QFileSystemIterator to navigate entries of a directory one at a time.
-    It is similar to QDir::entryList() and QDir::entryInfoList(), but because
-    it lists entries one at a time instead of all at once, it scales better
-    and is more suitable for large directories. It also supports listing
-    directory contents recursively, and following symbolic links. Unlike
-    QDir::entryList(), QFileSystemIterator does not support sorting.
-
-    The QFileSystemIterator constructor takes a QDir or a directory as
-    argument. After construction, the iterator is located before the first
-    directory entry. Here's how to iterate over all the entries sequentially:
-
-    \snippet doc/src/snippets/code/src.corelib.io.qdiriterator.cpp 0
-
-    The next() function returns the path to the next directory entry and
-    advances the iterator. You can also call filePath() to get the current
-    file path without advancing the iterator.  The fileName() function returns
-    only the name of the file, similar to how QDir::entryList() works. You can
-    also call fileInfo() to get a QFileInfo for the current entry.
-
-    Unlike Qt's container iterators, QFileSystemIterator is uni-directional (i.e.,
-    you cannot iterate directories in reverse order) and does not allow random
-    access.
-
-    QFileSystemIterator works with all supported file engines, and is implemented
-    using QAbstractFileEngineIterator.
-
-    \sa QDir, QDir::entryList(), QAbstractFileEngineIterator
-*/
-
-/*! \enum QFileSystemIterator::IteratorFlag
-
-    This enum describes flags that you can combine to configure the behavior
-    of QFileSystemIterator.
-
-    \value NoIteratorFlags The default value, representing no flags. The
-    iterator will return entries for the assigned path.
-
-    \value Subdirectories List entries inside all subdirectories as well.
-
-    \value FollowSymlinks When combined with Subdirectories, this flag
-    enables iterating through all subdirectories of the assigned path,
-    following all symbolic links. Symbolic link loops (e.g., "link" => "." or
-    "link" => "..") are automatically detected and ignored.
-*/
-
-#include "qfilesystemiterator.h"
-
-#include <QDebug>
-#include <QtCore/qset.h>
-#include <QtCore/qstack.h>
-#include <QtCore/qvariant.h>
-
-#ifdef Q_OS_WIN
-#   include <windows.h>
-#   include <atlbase.h>
-#else
-#   include <sys/stat.h>
-#   include <sys/types.h>
-#   include <dirent.h>
-#   include <errno.h>
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QFileSystemIteratorPrivate
-{
-public:
-    QFileSystemIteratorPrivate(const QString &path, const QStringList &nameFilters,
-                        QDir::Filters filters, QFileSystemIterator::IteratorFlags flags);
-    ~QFileSystemIteratorPrivate();
-
-    void pushSubDirectory(const QByteArray &path);
-    void advance();
-    bool isAcceptable() const;
-    bool shouldFollowDirectory(const QFileInfo &);
-    //bool matchesFilters(const QAbstractFileEngineIterator *it) const;
-    inline bool atEnd() const { return m_dirPaths.isEmpty(); }
-
-#ifdef Q_OS_WIN
-    QStack<HANDLE>   m_dirStructs;
-    WIN32_FIND_DATA* m_entry;
-    WIN32_FIND_DATA  m_fileSearchResult;
-    bool             m_bFirstSearchResult;
-#else
-    QStack<DIR *> m_dirStructs;
-    dirent *m_entry;
-#endif
-
-    QSet<QString> visitedLinks;
-    QStack<QByteArray> m_dirPaths;
-    QFileInfo fileInfo;
-    QString currentFilePath;
-    QFileSystemIterator::IteratorFlags iteratorFlags;
-    QDir::Filters filters;
-    QStringList nameFilters;
-
-    enum { DontShowDir, ShowDotDotDir, ShowDotDir, ShowDir }
-        m_currentDirShown, m_nextDirShown;
-
-    QFileSystemIterator *q;
-
-private:
-    bool advanceHelper();  // returns true if we know we have something suitable
-};
-
-/*!
-    \internal
-*/
-QFileSystemIteratorPrivate::QFileSystemIteratorPrivate(const QString &path,
-    const QStringList &nameFilters, QDir::Filters filters,
-    QFileSystemIterator::IteratorFlags flags)
-  : iteratorFlags(flags)
-{
-    if (filters == QDir::NoFilter)
-        filters = QDir::AllEntries;
-    this->filters = filters;
-    this->nameFilters = nameFilters;
-
-    fileInfo.setFile(path);
-    QString dir = fileInfo.isSymLink() ? fileInfo.canonicalFilePath() : path;
-    pushSubDirectory(dir.toLocal8Bit());
-    // skip to acceptable entry
-    while (true) {
-        if (atEnd())
-            return;
-        if (isAcceptable())
-            return;
-        if (advanceHelper())
-            return;
-    }
-}
-
-/*!
-    \internal
-*/
-QFileSystemIteratorPrivate::~QFileSystemIteratorPrivate()
-{
-#ifdef Q_OS_WIN
-    while (!m_dirStructs.isEmpty())
-        ::FindClose(m_dirStructs.pop());
-#else
-    while (!m_dirStructs.isEmpty())
-        ::closedir(m_dirStructs.pop());
-#endif
-}
-
-#ifdef Q_OS_WIN
-static bool isDotOrDotDot(const wchar_t* name)
-{
-    if (name[0] == L'.' && name[1] == 0)
-        return true;
-    if (name[0] == L'.' && name[1] == L'.' && name[2] == 0)
-        return true;
-    return false;
-}
-#else
-static bool isDotOrDotDot(const char *name)
-{
-    if (name[0] == '.' && name[1] == 0)
-        return true;
-    if (name[0] == '.' && name[1] == '.' && name[2] == 0)
-        return true;
-    return false;
-}
-#endif
-
-/*!
-    \internal
-*/
-void QFileSystemIteratorPrivate::pushSubDirectory(const QByteArray &path)
-{
-/*
-    if (iteratorFlags & QFileSystemIterator::FollowSymlinks) {
-        if (fileInfo.filePath() != path)
-            fileInfo.setFile(path);
-        if (fileInfo.isSymLink()) {
-            visitedLinks << fileInfo.canonicalFilePath();
-        } else {
-            visitedLinks << fileInfo.absoluteFilePath();
-        }
-    }
-*/
-
-#ifdef Q_OS_WIN
-    wchar_t szSearchPath[MAX_PATH];
-    wcscpy(szSearchPath, QString(path).utf16());
-    wcscat(szSearchPath, L"\\*");
-    HANDLE dir = FindFirstFile(szSearchPath, &m_fileSearchResult);
-    m_bFirstSearchResult = true;
-#else
-    DIR *dir = ::opendir(path.constData());
-    //m_entry = ::readdir(dir);
-    //while (m_entry && isDotOrDotDot(m_entry->d_name))
-    //    m_entry = ::readdir(m_dirStructs.top());
-#endif
-    m_dirStructs.append(dir);
-    m_dirPaths.append(path);
-    m_entry = 0;
-    if (filters & QDir::Dirs)
-        m_nextDirShown = ShowDir;
-    else
-        m_nextDirShown = DontShowDir;
-    m_currentDirShown = DontShowDir;
-}
-
-/*!
-    \internal
-*/
-bool QFileSystemIteratorPrivate::isAcceptable() const
-{
-    if (!m_entry)
-        return false;
-    return true;
-}
-
-/*!
-    \internal
-*/
-
-
-void QFileSystemIteratorPrivate::advance()
-{
-    while (true) {
-        if (advanceHelper())
-            return;
-        if (atEnd())
-            return;
-        if (isAcceptable())
-            return;
-    }
-}
-
-bool QFileSystemIteratorPrivate::advanceHelper()
-{
-    if (m_dirStructs.isEmpty())
-        return true;
-
-    //printf("ADV %d %d\n", int(m_currentDirShown), int(m_nextDirShown));
-
-    if ((filters & QDir::Dirs)) {
-        m_currentDirShown = m_nextDirShown;
-        if (m_nextDirShown == ShowDir) {
-            //printf("RESTING ON DIR %s %x\n", m_dirPaths.top().constData(), int(filters));
-            m_nextDirShown = (filters & QDir::NoDotAndDotDot) ? DontShowDir : ShowDotDir;
-            // skip start directory itself
-            if (m_dirStructs.size() == 1 && m_currentDirShown == ShowDir)
-                return advanceHelper();
-            return true;
-        }
-        if (m_nextDirShown == ShowDotDir) {
-            //printf("RESTING ON DOT %s %x\n", m_dirPaths.top().constData(), int(filters));
-            m_nextDirShown = ShowDotDotDir;
-            return true;
-        }
-        if (m_nextDirShown == ShowDotDotDir) {
-            //printf("RESTING ON DOTDOT %s %x\n", m_dirPaths.top().constData(), int(filters));
-            m_nextDirShown = DontShowDir;
-            return true;
-        }
-        m_currentDirShown = DontShowDir;
-    }
-
-#ifdef Q_OS_WIN
-    m_entry = &m_fileSearchResult;
-    if (m_bFirstSearchResult) {
-        m_bFirstSearchResult = false;
-    } else {
-        if (!FindNextFile(m_dirStructs.top(), m_entry))
-            m_entry = 0;
-    }
-
-    while (m_entry && isDotOrDotDot(m_entry->cFileName))
-        if (!FindNextFile(m_dirStructs.top(), m_entry))
-            m_entry = 0;
-
-    if (!m_entry) {
-        m_dirPaths.pop();
-        FindClose(m_dirStructs.pop());
-        return false;
-    }
-
-    if (m_entry->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
-        QByteArray ba = m_dirPaths.top();
-        ba += '\\';
-        ba += QString::fromWCharArray(m_entry->cFileName);
-        pushSubDirectory(ba);
-    }
-#else
-    m_entry = ::readdir(m_dirStructs.top());
-    while (m_entry && isDotOrDotDot(m_entry->d_name))
-        m_entry = ::readdir(m_dirStructs.top());
-        //return false; // further iteration possibly needed
-    //printf("READ %p %s\n", m_entry, m_entry ? m_entry->d_name : "");
-
-    if (!m_entry) {
-        m_dirPaths.pop();
-        DIR *dir = m_dirStructs.pop();
-        ::closedir(dir);
-        return false; // further iteration possibly needed
-    }
-
-    const char *name = m_entry->d_name;
-
-    QByteArray ba = m_dirPaths.top();
-    ba += '/';
-    ba += name;
-    struct stat st;
-    lstat(ba.constData(), &st);
-
-    if (S_ISDIR(st.st_mode)) {
-        pushSubDirectory(ba);
-        return false; // further iteration possibly needed
-    }
-#endif
-    return false; // further iteration possiblye needed
-}
-
-/*!
-    \internal
- */
-bool QFileSystemIteratorPrivate::shouldFollowDirectory(const QFileInfo &fileInfo)
-{
-    // If we're doing flat iteration, we're done.
-    if (!(iteratorFlags & QFileSystemIterator::Subdirectories))
-        return false;
-    
-    // Never follow non-directory entries
-    if (!fileInfo.isDir())
-        return false;
-
-
-    // Never follow . and ..
-    if (fileInfo.fileName() == QLatin1String(".") || fileInfo.fileName() == QLatin1String(".."))
-        return false;
-
-      
-    // Check symlinks
-    if (fileInfo.isSymLink() && !(iteratorFlags & QFileSystemIterator::FollowSymlinks)) {
-        // Follow symlinks only if FollowSymlinks was passed
-        return false;
-    }
-
-    // Stop link loops
-    if (visitedLinks.contains(fileInfo.canonicalFilePath()))
-        return false;
-    
-    return true;
-}
-    
-
-/*!
-    \internal
-
-    This convenience function implements the iterator's filtering logics and
-    applies then to the current directory entry.
-
-    It returns true if the current entry matches the filters (i.e., the
-    current entry will be returned as part of the directory iteration);
-    otherwise, false is returned.
-*/
-#if 0
-bool QFileSystemIteratorPrivate::matchesFilters(const QAbstractFileEngineIterator *it) const
-{
-    const bool filterPermissions = ((filters & QDir::PermissionMask)
-                                    && (filters & QDir::PermissionMask) != QDir::PermissionMask);
-    const bool skipDirs     = !(filters & (QDir::Dirs | QDir::AllDirs));
-    const bool skipFiles    = !(filters & QDir::Files);
-    const bool skipSymlinks = (filters & QDir::NoSymLinks);
-    const bool doReadable   = !filterPermissions || (filters & QDir::Readable);
-    const bool doWritable   = !filterPermissions || (filters & QDir::Writable);
-    const bool doExecutable = !filterPermissions || (filters & QDir::Executable);
-    const bool includeHidden = (filters & QDir::Hidden);
-    const bool includeSystem = (filters & QDir::System);
-
-#ifndef QT_NO_REGEXP
-    // Prepare name filters
-    QList<QRegExp> regexps;
-    bool hasNameFilters = !nameFilters.isEmpty() && !(nameFilters.contains(QLatin1String("*")));
-    if (hasNameFilters) {
-        for (int i = 0; i < nameFilters.size(); ++i) {
-            regexps << QRegExp(nameFilters.at(i),
-                               (filters & QDir::CaseSensitive) ? Qt::CaseSensitive : Qt::CaseInsensitive,
-                               QRegExp::Wildcard);
-        }
-    }
-#endif
-
-    QString fileName = it->currentFileName();
-    if (fileName.isEmpty()) {
-        // invalid entry
-        return false;
-    }
-
-    QFileInfo fi = it->currentFileInfo();
-    QString filePath = it->currentFilePath();
-
-#ifndef QT_NO_REGEXP
-    // Pass all entries through name filters, except dirs if the AllDirs
-    // filter is passed.
-    if (hasNameFilters && !((filters & QDir::AllDirs) && fi.isDir())) {
-        bool matched = false;
-        for (int i = 0; i < regexps.size(); ++i) {
-            if (regexps.at(i).exactMatch(fileName)) {
-                matched = true;
-                break;
-            }
-        }
-        if (!matched)
-            return false;
-    }
-#endif
-    
-    bool dotOrDotDot = (fileName == QLatin1String(".") || fileName == QLatin1String(".."));
-    if ((filters & QDir::NoDotAndDotDot) && dotOrDotDot)
-        return false;
-
-    bool isHidden = !dotOrDotDot && fi.isHidden();
-    if (!includeHidden && isHidden)
-        return false;
-
-    bool isSystem = (!fi.isFile() && !fi.isDir() && !fi.isSymLink())
-                    || (!fi.exists() && fi.isSymLink());
-    if (!includeSystem && isSystem)
-        return false;
-
-    bool alwaysShow = (filters & QDir::TypeMask) == 0
-        && ((isHidden && includeHidden)
-            || (includeSystem && isSystem));
-
-    // Skip files and directories
-    if ((filters & QDir::AllDirs) == 0 && skipDirs && fi.isDir()) {
-        if (!alwaysShow)
-            return false;
-    }
-
-    if ((skipFiles && (fi.isFile() || !fi.exists()))
-        || (skipSymlinks && fi.isSymLink())) {
-        if (!alwaysShow)
-            return false;
-    }
-
-    if (filterPermissions
-        && ((doReadable && !fi.isReadable())
-            || (doWritable && !fi.isWritable())
-            || (doExecutable && !fi.isExecutable()))) {
-        return false;
-    }
-
-    if (!includeSystem && !dotOrDotDot && ((fi.exists() && !fi.isFile() && !fi.isDir() && !fi.isSymLink())
-                                           || (!fi.exists() && fi.isSymLink()))) {
-        return false;
-    }
-    
-    return true;
-}
-#endif
-
-/*!
-    Constructs a QFileSystemIterator that can iterate over \a dir's entrylist, using
-    \a dir's name filters and regular filters. You can pass options via \a
-    flags to decide how the directory should be iterated.
-
-    By default, \a flags is NoIteratorFlags, which provides the same behavior
-    as in QDir::entryList().
-
-    The sorting in \a dir is ignored.
-
-    \sa atEnd(), next(), IteratorFlags
-*/
-QFileSystemIterator::QFileSystemIterator(const QDir &dir, IteratorFlags flags)
-    : d(new QFileSystemIteratorPrivate(dir.path(), dir.nameFilters(), dir.filter(), flags))
-{
-    d->q = this;
-}
-
-/*!
-    Constructs a QFileSystemIterator that can iterate over \a path, with no name
-    filtering and \a filters for entry filtering. You can pass options via \a
-    flags to decide how the directory should be iterated.
-
-    By default, \a filters is QDir::NoFilter, and \a flags is NoIteratorFlags,
-    which provides the same behavior as in QDir::entryList().
-
-    \sa atEnd(), next(), IteratorFlags
-*/
-QFileSystemIterator::QFileSystemIterator(const QString &path, QDir::Filters filters, IteratorFlags flags)
-    : d(new QFileSystemIteratorPrivate(path, QStringList(QLatin1String("*")), filters, flags))
-{
-    d->q = this;
-}
-
-/*!
-    Constructs a QFileSystemIterator that can iterate over \a path. You can pass
-    options via \a flags to decide how the directory should be iterated.
-
-    By default, \a flags is NoIteratorFlags, which provides the same behavior
-    as in QDir::entryList().
-
-    \sa atEnd(), next(), IteratorFlags
-*/
-QFileSystemIterator::QFileSystemIterator(const QString &path, IteratorFlags flags)
-    : d(new QFileSystemIteratorPrivate(path, QStringList(QLatin1String("*")), QDir::NoFilter, flags))
-{
-    d->q = this;
-}
-
-/*!
-    Constructs a QFileSystemIterator that can iterate over \a path, using \a
-    nameFilters and \a filters. You can pass options via \a flags to decide
-    how the directory should be iterated.
-
-    By default, \a flags is NoIteratorFlags, which provides the same behavior
-    as QDir::entryList().
-
-    \sa atEnd(), next(), IteratorFlags
-*/
-QFileSystemIterator::QFileSystemIterator(const QString &path, const QStringList &nameFilters,
-                           QDir::Filters filters, IteratorFlags flags)
-    : d(new QFileSystemIteratorPrivate(path, nameFilters, filters, flags))
-{
-    d->q = this;
-}
-
-/*!
-    Destroys the QFileSystemIterator.
-*/
-QFileSystemIterator::~QFileSystemIterator()
-{
-    delete d;
-}
-
-/*!
-    Advances the iterator to the next entry, and returns the file path of this
-    new entry. If atEnd() returns true, this function does nothing, and
-    returns a null QString.
-
-    You can call fileName() or filePath() to get the current entry file name
-    or path, or fileInfo() to get a QFileInfo for the current entry.
-
-    \sa hasNext(), fileName(), filePath(), fileInfo()
-*/
-void QFileSystemIterator::next()
-{
-    d->advance();
-}
-
-/*!
-    Returns true if there is at least one more entry in the directory;
-    otherwise, false is returned.
-
-    \sa next(), fileName(), filePath(), fileInfo()
-*/
-bool QFileSystemIterator::atEnd() const
-{
-    return d->atEnd();
-}
-
-/*!
-    Returns the file name for the current directory entry, without the path
-    prepended. If the current entry is invalid (i.e., isValid() returns
-    false), a null QString is returned.
-
-    This function is provided for the convenience when iterating single
-    directories. For recursive iteration, you should call filePath() or
-    fileInfo() instead.
-    
-    \sa filePath(), fileInfo()
-*/
-QString QFileSystemIterator::fileName() const
-{
-    if (d->atEnd() || !d->m_entry)
-        return QString();
-    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDir)
-        return QString();
-    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDir)
-        return QLatin1String("@");
-    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDotDir)
-        return QLatin1String("@@");
-#ifdef Q_OS_WIN
-    return QString::fromWCharArray(d->m_entry->cFileName);
-#else
-    return QString::fromLocal8Bit(d->m_entry->d_name);
-#endif
-}
-
-/*!
-    Returns the full file path for the current directory entry. If the current
-    entry is invalid (i.e., isValid() returns false), a null QString is
-    returned.
-
-    \sa fileInfo(), fileName()
-*/
-QString QFileSystemIterator::filePath() const
-{
-    if (d->atEnd())
-        return QString();
-    QByteArray ba = d->m_dirPaths.top();
-    if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDir)
-        ba += "/.";
-    else if (d->m_currentDirShown == QFileSystemIteratorPrivate::ShowDotDotDir)
-        ba += "/..";
-    else if (d->m_entry) {
-        ba += '/';
-#ifdef Q_OS_WIN
-        ba += QString::fromWCharArray(d->m_entry->cFileName);
-#else
-        ba += d->m_entry->d_name;
-#endif
-    }
-    return QString::fromLocal8Bit(ba);
-}
-
-/*!
-    Returns a QFileInfo for the current directory entry. If the current entry
-    is invalid (i.e., isValid() returns false), a null QFileInfo is returned.
-
-    \sa filePath(), fileName()
-*/
-QFileInfo QFileSystemIterator::fileInfo() const
-{
-    return QFileInfo(filePath());
-}
-
-/*!
-    Returns the base directory of the iterator.
-*/
-QString QFileSystemIterator::path() const
-{
-    return QString::fromLocal8Bit(d->m_dirPaths.top());
-}
-
-QT_END_NAMESPACE
diff --git a/tests/benchmarks/qdiriterator/qfilesystemiterator.h b/tests/benchmarks/qdiriterator/qfilesystemiterator.h
deleted file mode 100644
index 4aad3a1..0000000
--- a/tests/benchmarks/qdiriterator/qfilesystemiterator.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QFILESYSTEMITERATOR_H
-#define QFILESYSTEMITERATOR_H
-
-#include <QtCore/qdir.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-class QFileSystemIteratorPrivate;
-class //Q_CORE_EXPORT
-QFileSystemIterator
-{
-public:
-    enum IteratorFlag {
-        NoIteratorFlags = 0x0,
-        FollowSymlinks = 0x1,
-        Subdirectories = 0x2
-    };
-    Q_DECLARE_FLAGS(IteratorFlags, IteratorFlag)
-
-    QFileSystemIterator(const QDir &dir, IteratorFlags flags = NoIteratorFlags);
-    QFileSystemIterator(const QString &path,
-                 IteratorFlags flags = NoIteratorFlags);
-    QFileSystemIterator(const QString &path,
-                 QDir::Filters filter,
-                 IteratorFlags flags = NoIteratorFlags);
-    QFileSystemIterator(const QString &path,
-                 const QStringList &nameFilters,
-                 QDir::Filters filters = QDir::NoFilter,
-                 IteratorFlags flags = NoIteratorFlags);
-
-    virtual ~QFileSystemIterator();
-
-    void next();
-    bool atEnd() const;
-
-    QString fileName() const;
-    QString filePath() const;
-    QFileInfo fileInfo() const;
-    QString path() const;
-
-private:
-    Q_DISABLE_COPY(QFileSystemIterator)
-
-    QFileSystemIteratorPrivate *d;
-    friend class QDir;
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(QFileSystemIterator::IteratorFlags)
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif
diff --git a/tests/benchmarks/qfile/main.cpp b/tests/benchmarks/qfile/main.cpp
deleted file mode 100644
index 103b77c..0000000
--- a/tests/benchmarks/qfile/main.cpp
+++ /dev/null
@@ -1,675 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QDebug>
-#include <QTemporaryFile>
-#include <QFSFileEngine>
-#include <QString>
-#include <QDirIterator>
-
-#include <qtest.h>
-
-#include <stdio.h>
-
-#ifdef Q_OS_WIN
-# include <windows.h>
-# include <atlbase.h>
-#endif
-
-#define BUFSIZE 1024*512
-#define FACTOR 1024*512
-#define TF_SIZE FACTOR*81
-
-// 10 predefined (but random() seek positions
-// hardcoded to be comparable over several runs
-const int seekpos[] = {TF_SIZE*0.52,
-                       TF_SIZE*0.23,
-                       TF_SIZE*0.73,
-                       TF_SIZE*0.77,
-                       TF_SIZE*0.80,
-                       TF_SIZE*0.12,
-                       TF_SIZE*0.53,
-                       TF_SIZE*0.21,
-                       TF_SIZE*0.27,
-                       TF_SIZE*0.78};
-
-const int sp_size = sizeof(seekpos)/sizeof(int);
-
-class tst_qfile: public QObject
-{
-Q_ENUMS(BenchmarkType)
-Q_OBJECT
-public:
-    enum BenchmarkType {
-        QFileBenchmark = 1,
-        QFSFileEngineBenchmark,
-        Win32Benchmark,
-        PosixBenchmark,
-        QFileFromPosixBenchmark
-    };
-private slots:
-    void initTestCase();
-    void cleanupTestCase();
-
-    void open_data();
-    void open();
-    void seek_data();
-    void seek();
-
-    void readSmallFiles_QFile();
-    void readSmallFiles_QFSFileEngine();
-    void readSmallFiles_posix();
-    void readSmallFiles_Win32();
-
-    void readSmallFiles_QFile_data();
-    void readSmallFiles_QFSFileEngine_data();
-    void readSmallFiles_posix_data();
-    void readSmallFiles_Win32_data();
-
-    void readBigFile_QFile_data();
-    void readBigFile_QFSFileEngine_data();
-    void readBigFile_posix_data();
-    void readBigFile_Win32_data();
-
-    void readBigFile_QFile();
-    void readBigFile_QFSFileEngine();
-    void readBigFile_posix();
-    void readBigFile_Win32();
-
-private:
-    void readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b);
-    void readBigFile();
-    void readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b);
-    void readSmallFiles();
-    void createFile();
-    void fillFile(int factor=FACTOR);
-    void removeFile();
-    void createSmallFiles();
-    void removeSmallFiles();
-    QString filename;
-    QString tmpDirName;
-};
-
-Q_DECLARE_METATYPE(tst_qfile::BenchmarkType)
-Q_DECLARE_METATYPE(QIODevice::OpenMode)
-Q_DECLARE_METATYPE(QIODevice::OpenModeFlag)
-
-void tst_qfile::createFile()
-{
-    removeFile();  // Cleanup in case previous test case aborted before cleaning up
-
-    QTemporaryFile tmpFile;
-    tmpFile.setAutoRemove(false);
-    if (!tmpFile.open())
-        ::exit(1);
-    filename = tmpFile.fileName();
-    tmpFile.close();
-}
-
-void tst_qfile::removeFile()
-{
-    if (!filename.isEmpty())
-        QFile::remove(filename);
-}
-
-void tst_qfile::fillFile(int factor)
-{
-    QFile tmpFile(filename);
-    tmpFile.open(QIODevice::WriteOnly);
-    //for (int row=0; row<factor; ++row) {
-    //    tmpFile.write(QByteArray().fill('0'+row%('0'-'z'), 80));
-    //    tmpFile.write("\n");
-    //}
-    tmpFile.seek(factor*80);
-    tmpFile.putChar('\n');
-    tmpFile.close();
-    // let IO settle
-    QTest::qSleep(2000);
-}
-
-void tst_qfile::initTestCase()
-{
-}
-
-void tst_qfile::cleanupTestCase()
-{
-}
-
-void tst_qfile::readBigFile_QFile() { readBigFile(); }
-void tst_qfile::readBigFile_QFSFileEngine() { readBigFile(); }
-void tst_qfile::readBigFile_posix() { readBigFile(); }
-void tst_qfile::readBigFile_Win32() { readBigFile(); }
-
-void tst_qfile::readBigFile_QFile_data()
-{
-    readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-    readBigFile_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
-    readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen);
-    readBigFile_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered);
-
-}
-
-void tst_qfile::readBigFile_QFSFileEngine_data()
-{
-    readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-    readBigFile_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
-    readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen);
-    readBigFile_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered);
-}
-
-void tst_qfile::readBigFile_posix_data()
-{
-    readBigFile_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-}
-
-void tst_qfile::readBigFile_Win32_data()
-{
-    readBigFile_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-}
-
-
-void tst_qfile::readBigFile_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b)
-{
-    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
-    QTest::addColumn<int>("blockSize");
-    QTest::addColumn<QFile::OpenModeFlag>("textMode");
-    QTest::addColumn<QFile::OpenModeFlag>("bufferedMode");
-
-    const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512};
-    int bs_entries = sizeof(bs)/sizeof(const int);
-
-    QString flagstring;
-    if (t & QIODevice::Text)       flagstring += "textMode ";
-    if (b & QIODevice::Unbuffered) flagstring += "unbuffered ";
-    if (flagstring.isEmpty())      flagstring = "none";
-
-    for (int i=0; i<bs_entries; ++i)
-        QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b;
-}
-
-void tst_qfile::readBigFile()
-{
-    QFETCH(tst_qfile::BenchmarkType, testType);
-    QFETCH(int, blockSize);
-    QFETCH(QFile::OpenModeFlag, textMode);
-    QFETCH(QFile::OpenModeFlag, bufferedMode);
-
-#ifndef Q_OS_WIN
-    if (testType == Win32Benchmark)
-        QSKIP("This is Windows only benchmark.", SkipSingle);
-#endif
-
-    char *buffer = new char[BUFSIZE];
-    createFile();
-    fillFile();
-
-    switch (testType) {
-        case(QFileBenchmark): {
-            QFile file(filename);
-            file.open(QIODevice::ReadOnly|textMode|bufferedMode);
-            QBENCHMARK {
-                while(!file.atEnd())
-                    file.read(blockSize);
-                file.reset();
-            }
-            file.close();
-        }
-        break;
-        case(QFSFileEngineBenchmark): {
-            QFSFileEngine fse(filename);
-            fse.open(QIODevice::ReadOnly|textMode|bufferedMode);
-            QBENCHMARK {
-               //qWarning() << fse.supportsExtension(QAbstractFileEngine::AtEndExtension);
-               while(fse.read(buffer, blockSize));
-               fse.seek(0);
-            }
-            fse.close();
-        }
-        break;
-        case(PosixBenchmark): {
-            QByteArray data = filename.toLocal8Bit();
-            const char* cfilename = data.constData();
-            FILE* cfile = ::fopen(cfilename, "rb");
-            QBENCHMARK {
-                while(!feof(cfile))
-                    ::fread(buffer, blockSize, 1, cfile);
-                ::fseek(cfile, 0, SEEK_SET);
-            }
-            ::fclose(cfile);
-        }
-        break;
-        case(QFileFromPosixBenchmark): {
-            // No gain in benchmarking this case
-        }
-        break;
-        case(Win32Benchmark): {
-#ifdef Q_OS_WIN
-            HANDLE hndl;
-
-            // ensure we don't account string conversion
-            wchar_t* cfilename = (wchar_t*)filename.utf16();
-
-            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
-            Q_ASSERT(hndl);
-            wchar_t* nativeBuffer = new wchar_t[BUFSIZE];
-            DWORD numberOfBytesRead;
-
-            QBENCHMARK {
-                do {
-                   ReadFile(hndl, nativeBuffer, blockSize, &numberOfBytesRead, NULL);
-                } while(numberOfBytesRead != 0);
-                SetFilePointer(hndl, 0, NULL, FILE_BEGIN);
-            }
-            delete[] nativeBuffer;
-            CloseHandle(hndl);
-#else
-            QFAIL("Not running on a non-Windows platform!");
-#endif
-        }
-        break;
-    }
-
-    removeFile();
-    delete[] buffer;
-}
-
-void tst_qfile::seek_data()
-{
-    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
-    QTest::newRow("QFile") << QFileBenchmark;
-    QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark;
-    QTest::newRow("Posix FILE*") << PosixBenchmark;
-#ifdef Q_OS_WIN
-    QTest::newRow("Win32 API") << Win32Benchmark;
-#endif
-}
-
-void tst_qfile::seek()
-{
-    QFETCH(tst_qfile::BenchmarkType, testType);
-    int i = 0;
-
-    createFile();
-    fillFile();
-
-    switch (testType) {
-        case(QFileBenchmark): {
-            QFile file(filename);
-            file.open(QIODevice::ReadOnly);
-            QBENCHMARK {
-                i=(i+1)%sp_size;
-                file.seek(seekpos[i]);
-            }
-            file.close();
-        }
-        break;
-        case(QFSFileEngineBenchmark): {
-            QFSFileEngine fse(filename);
-            fse.open(QIODevice::ReadOnly);
-            QBENCHMARK {
-                i=(i+1)%sp_size;
-                fse.seek(seekpos[i]);
-            }
-            fse.close();
-        }
-        break;
-        case(PosixBenchmark): {
-            QByteArray data = filename.toLocal8Bit();
-            const char* cfilename = data.constData();
-            FILE* cfile = ::fopen(cfilename, "rb");
-            QBENCHMARK {
-                i=(i+1)%sp_size;
-                ::fseek(cfile, seekpos[i], SEEK_SET);
-            }
-            ::fclose(cfile);
-        }
-        break;
-        case(QFileFromPosixBenchmark): {
-            // No gain in benchmarking this case
-        }
-        break;
-        case(Win32Benchmark): {
-#ifdef Q_OS_WIN
-            HANDLE hndl;
-
-            // ensure we don't account string conversion
-            wchar_t* cfilename = (wchar_t*)filename.utf16();
-
-            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
-            Q_ASSERT(hndl);
-            QBENCHMARK {
-                i=(i+1)%sp_size;
-                SetFilePointer(hndl, seekpos[i], NULL, 0);
-            }
-            CloseHandle(hndl);
-#else
-            QFAIL("Not running on a Windows plattform!");
-#endif
-        }
-        break;
-    }
-
-    removeFile();
-}
-
-void tst_qfile::open_data()
-{
-    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
-    QTest::newRow("QFile") << QFileBenchmark;
-    QTest::newRow("QFSFileEngine") << QFSFileEngineBenchmark;
-    QTest::newRow("Posix FILE*") << PosixBenchmark;
-    QTest::newRow("QFile from FILE*") << QFileFromPosixBenchmark;
-#ifdef Q_OS_WIN
-    QTest::newRow("Win32 API") << Win32Benchmark;
-#endif
-}
-
-void tst_qfile::open()
-{
-    QFETCH(tst_qfile::BenchmarkType, testType);
-
-    createFile();
-
-    switch (testType) {
-        case(QFileBenchmark): {
-            QBENCHMARK {
-                QFile file( filename );
-                file.open( QIODevice::ReadOnly );
-                file.close();
-            }
-        }
-        break;
-        case(QFSFileEngineBenchmark): {
-            QBENCHMARK {
-                QFSFileEngine fse(filename);
-                fse.open(QIODevice::ReadOnly);
-                fse.close();
-            }
-        }
-        break;
-
-        case(PosixBenchmark): {
-            // ensure we don't account toLocal8Bit()
-            QByteArray data = filename.toLocal8Bit();
-            const char* cfilename = data.constData();
-
-            QBENCHMARK {
-                FILE* cfile = ::fopen(cfilename, "rb");
-                ::fclose(cfile);
-            }
-        }
-        break;
-        case(QFileFromPosixBenchmark): {
-            // ensure we don't account toLocal8Bit()
-            QByteArray data = filename.toLocal8Bit();
-            const char* cfilename = data.constData();
-            FILE* cfile = ::fopen(cfilename, "rb");
-
-            QBENCHMARK {
-                QFile file;
-                file.open(cfile, QIODevice::ReadOnly);
-                file.close();
-            }
-            ::fclose(cfile);
-        }
-        break;
-        case(Win32Benchmark): {
-#ifdef Q_OS_WIN
-            HANDLE hndl;
-
-            // ensure we don't account string conversion
-            wchar_t* cfilename = (wchar_t*)filename.utf16();
-
-            QBENCHMARK {
-                hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
-                Q_ASSERT(hndl);
-                CloseHandle(hndl);
-            }
-#else
-        QFAIL("Not running on a non-Windows platform!");
-#endif
-        }
-        break;
-    }
-
-    removeFile();
-}
-
-
-void tst_qfile::readSmallFiles_QFile() { readSmallFiles(); }
-void tst_qfile::readSmallFiles_QFSFileEngine() { readSmallFiles(); }
-void tst_qfile::readSmallFiles_posix() { readSmallFiles(); }
-void tst_qfile::readSmallFiles_Win32() { readSmallFiles(); }
-
-void tst_qfile::readSmallFiles_QFile_data()
-{
-    readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-    readSmallFiles_data(QFileBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
-    readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::NotOpen);
-    readSmallFiles_data(QFileBenchmark, QIODevice::Text, QIODevice::Unbuffered);
-
-}
-
-void tst_qfile::readSmallFiles_QFSFileEngine_data()
-{
-    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::NotOpen, QIODevice::Unbuffered);
-    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::NotOpen);
-    readSmallFiles_data(QFSFileEngineBenchmark, QIODevice::Text, QIODevice::Unbuffered);
-}
-
-void tst_qfile::readSmallFiles_posix_data()
-{
-    readSmallFiles_data(PosixBenchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-}
-
-void tst_qfile::readSmallFiles_Win32_data()
-{
-    readSmallFiles_data(Win32Benchmark, QIODevice::NotOpen, QIODevice::NotOpen);
-}
-
-
-void tst_qfile::readSmallFiles_data(BenchmarkType type, QIODevice::OpenModeFlag t, QIODevice::OpenModeFlag b)
-{
-    QTest::addColumn<tst_qfile::BenchmarkType>("testType");
-    QTest::addColumn<int>("blockSize");
-    QTest::addColumn<QFile::OpenModeFlag>("textMode");
-    QTest::addColumn<QFile::OpenModeFlag>("bufferedMode");
-
-    const int bs[] = {1024, 1024*2, 1024*8, 1024*16, 1024*32,1024*512};
-    int bs_entries = sizeof(bs)/sizeof(const int);
-
-    QString flagstring;
-    if (t & QIODevice::Text)       flagstring += "textMode ";
-    if (b & QIODevice::Unbuffered) flagstring += "unbuffered ";
-    if (flagstring.isEmpty())      flagstring = "none";
-
-    for (int i=0; i<bs_entries; ++i)
-        QTest::newRow((QString("BS: %1, Flags: %2" )).arg(bs[i]).arg(flagstring).toLatin1().constData()) << type << bs[i] << t << b;
-
-}
-
-void tst_qfile::createSmallFiles()
-{
-    QDir dir = QDir::temp();
-    dir.mkdir("tst");
-    dir.cd("tst");
-    tmpDirName = dir.absolutePath();
-
-#ifdef Q_OS_SYMBIAN
-    for (int i = 0; i < 100; ++i)
-#else
-    for (int i = 0; i < 1000; ++i)
-#endif
-    {
-        QFile f(tmpDirName+"/"+QString::number(i));
-        f.open(QIODevice::WriteOnly);
-        f.seek(511);
-        f.putChar('\n');
-        f.close();
-    }
-}
-
-void tst_qfile::removeSmallFiles()
-{
-    QDirIterator it(tmpDirName, QDirIterator::FollowSymlinks);
-    while (it.hasNext())
-        QFile::remove(it.next());
-    QDir::temp().rmdir("tst");
-}
-
-
-void tst_qfile::readSmallFiles()
-{
-    QFETCH(tst_qfile::BenchmarkType, testType);
-    QFETCH(int, blockSize);
-    QFETCH(QFile::OpenModeFlag, textMode);
-    QFETCH(QFile::OpenModeFlag, bufferedMode);
-
-#ifndef Q_OS_WIN
-    if (testType == Win32Benchmark)
-        QSKIP("This is Windows only benchmark.", SkipSingle);
-#endif
-
-    createSmallFiles();
-
-    QDir dir(tmpDirName);
-    const QStringList files = dir.entryList(QDir::NoDotAndDotDot|QDir::NoSymLinks|QDir::Files);
-    char *buffer = new char[BUFSIZE];
-
-    switch (testType) {
-        case(QFileBenchmark): {
-            QList<QFile*> fileList;
-            Q_FOREACH(QString file, files) {
-                QFile *f = new QFile(tmpDirName+ "/" + file);
-                f->open(QIODevice::ReadOnly|textMode|bufferedMode);
-                fileList.append(f);
-            }
-
-            QBENCHMARK {
-                Q_FOREACH(QFile *file, fileList) {
-                    while (!file->atEnd()) {
-                       file->read(buffer, blockSize);
-                    }
-                }
-            }
-
-            Q_FOREACH(QFile *file, fileList) {
-                file->close();
-                delete file;
-            }
-        }
-        break;
-        case(QFSFileEngineBenchmark): {
-            QList<QFSFileEngine*> fileList;
-            Q_FOREACH(QString file, files) {
-                QFSFileEngine *fse = new QFSFileEngine(tmpDirName+ "/" + file);
-                fse->open(QIODevice::ReadOnly|textMode|bufferedMode);
-                fileList.append(fse);
-            }
-
-            QBENCHMARK {
-                Q_FOREACH(QFSFileEngine *fse, fileList) {
-                    while (fse->read(buffer, blockSize));
-                }
-            }
-
-            Q_FOREACH(QFSFileEngine *fse, fileList) {
-                fse->close();
-                delete fse;
-            }
-        }
-        break;
-        case(PosixBenchmark): {
-            QList<FILE*> fileList;
-            Q_FOREACH(QString file, files) {
-                fileList.append(::fopen(QFile::encodeName(tmpDirName+ "/" + file).constData(), "rb"));
-            }
-
-            QBENCHMARK {
-                Q_FOREACH(FILE* cfile, fileList) {
-                    while(!feof(cfile))
-                        ::fread(buffer, blockSize, 1, cfile);
-                    ::fseek(cfile, 0, SEEK_SET);
-                }
-            }
-
-            Q_FOREACH(FILE* cfile, fileList) {
-                ::fclose(cfile);
-            }
-        }
-        break;
-        case(QFileFromPosixBenchmark): {
-            // No gain in benchmarking this case
-        }
-        break;
-        case(Win32Benchmark): {
-#ifdef Q_OS_WIN
-            HANDLE hndl;
-
-            // ensure we don't account string conversion
-            wchar_t* cfilename = (wchar_t*)filename.utf16();
-
-            hndl = CreateFile(cfilename, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
-            Q_ASSERT(hndl);
-            wchar_t* nativeBuffer = new wchar_t[BUFSIZE];
-            DWORD numberOfBytesRead;
-            QBENCHMARK {
-                do {
-                   ReadFile(hndl, nativeBuffer, blockSize, &numberOfBytesRead, NULL);
-                } while(numberOfBytesRead != 0);
-            }
-            delete nativeBuffer;
-            CloseHandle(hndl);
-#else
-            QFAIL("Not running on a non-Windows platform!");
-#endif
-        }
-        break;
-    }
-
-    removeSmallFiles();
-    delete[] buffer;
-}
-
-QTEST_MAIN(tst_qfile)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qfile/qfile.pro b/tests/benchmarks/qfile/qfile.pro
deleted file mode 100644
index 99505c3..0000000
--- a/tests/benchmarks/qfile/qfile.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qfile
-QT -= gui
-win32: DEFINES+= _CRT_SECURE_NO_WARNINGS
-
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qfile_vs_qnetworkaccessmanager/main.cpp b/tests/benchmarks/qfile_vs_qnetworkaccessmanager/main.cpp
deleted file mode 100644
index 23e07db..0000000
--- a/tests/benchmarks/qfile_vs_qnetworkaccessmanager/main.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <qtest.h>
-#include <QtTest/QtTest>
-#include <QtNetwork/qnetworkreply.h>
-#include <QtNetwork/qnetworkrequest.h>
-#include <QtNetwork/qnetworkaccessmanager.h>
-#include <QtCore/QTemporaryFile>
-#include <QtCore/QFile>
-#include "../../auto/network-settings.h"
-
-class qfile_vs_qnetworkaccessmanager : public QObject
-{
-    Q_OBJECT
-    // do not use on symbian.. 100 MB is too large..
-    // but.. this is a manual test anyway, so :)
-protected:
-    void qnamFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request);
-    void qnamImmediateFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request);
-    void qfileFileRead_iteration();
-    static const int iterations = 10;
-
-private slots:
-    void qnamFileRead();
-    void qnamImmediateFileRead();
-    void qfileFileRead();
-
-    void initTestCase();
-    void cleanupTestCase();
-
-public:
-    qint64 size;
-    QTemporaryFile testFile;
-
-    qfile_vs_qnetworkaccessmanager() : QObject(), size(0) {};
-};
-
-void qfile_vs_qnetworkaccessmanager::initTestCase()
-{
-    testFile.open();
-    QByteArray qba(1*1024*1024, 'x'); // 1 MB
-    for (int i = 0; i < 100; i++) {
-        testFile.write(qba);
-        testFile.flush();
-        size += qba.size();
-    } // 100 MB
-    testFile.reset();
-}
-
-void qfile_vs_qnetworkaccessmanager::cleanupTestCase()
-{
-
-}
-
-void qfile_vs_qnetworkaccessmanager::qnamFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request)
-{
-    QNetworkReply* reply = manager.get(request);
-    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-    QTestEventLoop::instance().enterLoop(10);
-    QVERIFY(!QTestEventLoop::instance().timeout());
-    QByteArray qba = reply->readAll();
-    delete reply;
-}
-
-void qfile_vs_qnetworkaccessmanager::qnamFileRead()
-{
-    QNetworkAccessManager manager;
-    QTime t;
-    QNetworkRequest request(QUrl(testFile.fileName()));
-
-    // do 3 dry runs for cache warmup
-    qnamFileRead_iteration(manager, request);
-    qnamFileRead_iteration(manager, request);
-    qnamFileRead_iteration(manager, request);
-
-    t.start();
-    // 10 real runs
-    QBENCHMARK_ONCE {
-        for (int i = 0; i < iterations; i++) {
-            qnamFileRead_iteration(manager, request);
-        }
-    }
-
-    qint64 elapsed = t.elapsed();
-    qDebug() << endl << "Finished!";
-    qDebug() << "Bytes:" << size;
-    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
-}
-
-void qfile_vs_qnetworkaccessmanager::qnamImmediateFileRead_iteration(QNetworkAccessManager &manager, QNetworkRequest &request)
-{
-    QNetworkReply* reply = manager.get(request);
-    QVERIFY(reply->isFinished()); // should be like that!
-    QByteArray qba = reply->readAll();
-    delete reply;
-}
-
-void qfile_vs_qnetworkaccessmanager::qnamImmediateFileRead()
-{
-    QNetworkAccessManager manager;
-    QTime t;
-    QNetworkRequest request(QUrl(testFile.fileName()));
-
-    // do 3 dry runs for cache warmup
-    qnamImmediateFileRead_iteration(manager, request);
-    qnamImmediateFileRead_iteration(manager, request);
-    qnamImmediateFileRead_iteration(manager, request);
-
-    t.start();
-    // 10 real runs
-    QBENCHMARK_ONCE {
-        for (int i = 0; i < iterations; i++) {
-            qnamImmediateFileRead_iteration(manager, request);
-        }
-    }
-
-    qint64 elapsed = t.elapsed();
-    qDebug() << endl << "Finished!";
-    qDebug() << "Bytes:" << size;
-    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
-}
-
-void qfile_vs_qnetworkaccessmanager::qfileFileRead_iteration()
-{
-    testFile.reset();
-    QByteArray qba = testFile.readAll();
-}
-
-void qfile_vs_qnetworkaccessmanager::qfileFileRead()
-{
-    QTime t;
-
-    // do 3 dry runs for cache warmup
-    qfileFileRead_iteration();
-    qfileFileRead_iteration();
-    qfileFileRead_iteration();
-
-    t.start();
-    // 10 real runs
-    QBENCHMARK_ONCE {
-        for (int i = 0; i < iterations; i++) {
-            qfileFileRead_iteration();
-        }
-    }
-
-    qint64 elapsed = t.elapsed();
-    qDebug() << endl << "Finished!";
-    qDebug() << "Bytes:" << size;
-    qDebug() << "Speed:" <<  (qreal(size*iterations) / 1024.0) / (qreal(elapsed) / 1000.0) << "KB/sec";
-}
-
-QTEST_MAIN(qfile_vs_qnetworkaccessmanager)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro b/tests/benchmarks/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
deleted file mode 100644
index 99d1935..0000000
--- a/tests/benchmarks/qfile_vs_qnetworkaccessmanager/qfile_vs_qnetworkaccessmanager.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = qfile_vs_qnetworkaccessmanager
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-QT += network
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qfileinfo/main.cpp b/tests/benchmarks/qfileinfo/main.cpp
deleted file mode 100644
index 025787f..0000000
--- a/tests/benchmarks/qfileinfo/main.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <qtest.h>
-#include <QtTest/QtTest>
-#include <QtCore/QCoreApplication>
-#include <QtCore/QFileInfo>
-
-#include "private/qfsfileengine_p.h"
-
-class qfileinfo : public QObject
-{
-    Q_OBJECT
-private slots:
-    void canonicalFileNamePerformance();
-
-    void initTestCase();
-    void cleanupTestCase();
-public:
-    qfileinfo() : QObject() {};
-};
-
-void qfileinfo::initTestCase()
-{
-}
-
-void qfileinfo::cleanupTestCase()
-{
-}
-
-void qfileinfo::canonicalFileNamePerformance()
-{
-    QString appPath = QCoreApplication::applicationFilePath();
-    QFSFileEnginePrivate::canonicalized(appPath); // warmup
-    QFSFileEnginePrivate::canonicalized(appPath); // more warmup
-    QBENCHMARK {
-        for (int i = 0; i < 5000; i++) {
-            QFSFileEnginePrivate::canonicalized(appPath);
-        }
-    }
-}
-
-QTEST_MAIN(qfileinfo)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qfileinfo/qfileinfo.pro b/tests/benchmarks/qfileinfo/qfileinfo.pro
deleted file mode 100644
index 295cb50..0000000
--- a/tests/benchmarks/qfileinfo/qfileinfo.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = qfileinfo
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qfontmetrics/main.cpp b/tests/benchmarks/qfontmetrics/main.cpp
deleted file mode 100644
index d3f85ef..0000000
--- a/tests/benchmarks/qfontmetrics/main.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QObject>
-#include <QFont>
-#include <QFontMetrics>
-
-#include <qtest.h>
-
-//this test benchmarks the once-off (per font configuration) cost
-//associated with using QFontMetrics
-class tst_QFontMetrics : public QObject
-{
-    Q_OBJECT
-public:
-    tst_QFontMetrics() {}
-private slots:
-    void fontmetrics_create();
-    void fontmetrics_create_once_loaded();
-
-    void fontmetrics_height();
-    void fontmetrics_height_once_loaded();
-
-private:
-    void testQFontMetrics(const QFontMetrics &fm);
-};
-
-void tst_QFontMetrics::testQFontMetrics( const QFontMetrics &fm )
-{
-    int fontHeight = fm.height();
-}
-
-void tst_QFontMetrics::fontmetrics_create()
-{
-    QBENCHMARK {
-      QFont boldfont = QApplication::font();
-      boldfont.setBold( true );
-      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
-      QFontMetrics bfm( boldfont );
-    }
-}
-
-void tst_QFontMetrics::fontmetrics_create_once_loaded()
-{
-    QBENCHMARK {
-      QFont boldfont = QApplication::font();
-      boldfont.setBold( true );
-      boldfont.setPointSize(boldfont.pointSize() * 1.5 );
-      QFontMetrics bfm( boldfont );
-    }
-}
-
-void tst_QFontMetrics::fontmetrics_height()
-{
-    QFont boldfont = QApplication::font();
-    boldfont.setBold( true );
-    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
-    QFontMetrics bfm( boldfont );
-
-    QBENCHMARK { testQFontMetrics(bfm); }
-}
-
-void tst_QFontMetrics::fontmetrics_height_once_loaded()
-{
-    QFont boldfont = QApplication::font();
-    boldfont.setBold( true );
-    boldfont.setPointSize(boldfont.pointSize() * 1.5 );
-    QFontMetrics bfm( boldfont );
-    QBENCHMARK { testQFontMetrics(bfm); }
-}
-
-QTEST_MAIN(tst_QFontMetrics)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qfontmetrics/qfontmetrics.pro b/tests/benchmarks/qfontmetrics/qfontmetrics.pro
deleted file mode 100644
index b6c7b92..0000000
--- a/tests/benchmarks/qfontmetrics/qfontmetrics.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_QFontMetrics
-
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qgraphicsanchorlayout/qgraphicsanchorlayout.pro b/tests/benchmarks/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
deleted file mode 100644
index 0d563b9..0000000
--- a/tests/benchmarks/qgraphicsanchorlayout/qgraphicsanchorlayout.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qgraphicsanchorlayout
-
-SOURCES += tst_qgraphicsanchorlayout.cpp
-
diff --git a/tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
deleted file mode 100644
index faacec4..0000000
--- a/tests/benchmarks/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtGui/qgraphicsanchorlayout.h>
-#include <QtGui/qgraphicslinearlayout.h>
-#include <QtGui/qgraphicswidget.h>
-#include <QtGui/qgraphicsview.h>
-
-class tst_QGraphicsAnchorLayout : public QObject
-{
-    Q_OBJECT
-public:
-    tst_QGraphicsAnchorLayout() {}
-    ~tst_QGraphicsAnchorLayout() {}
-
-private slots:
-    void s60_hard_complex_data();
-    void s60_hard_complex();
-    void linearVsAnchorSizeHints_data();
-    void linearVsAnchorSizeHints();
-    void linearVsAnchorSetGeometry_data();
-    void linearVsAnchorSetGeometry();
-    void linearVsAnchorNested_data();
-    void linearVsAnchorNested();
-};
-
-
-class RectWidget : public QGraphicsWidget
-{
-public:
-    RectWidget(QGraphicsItem *parent = 0) : QGraphicsWidget(parent){}
-
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-    {
-        Q_UNUSED(option);
-        Q_UNUSED(widget);
-        painter->drawRoundRect(rect());
-        painter->drawLine(rect().topLeft(), rect().bottomRight());
-        painter->drawLine(rect().bottomLeft(), rect().topRight());
-    }
-};
-
-static QGraphicsWidget *createItem(const QSizeF &minimum = QSizeF(100.0, 100.0),
-                                   const QSizeF &preferred = QSize(150.0, 100.0),
-                                   const QSizeF &maximum = QSizeF(200.0, 100.0),
-                                   const QString &name = QString())
-{
-    QGraphicsWidget *w = new RectWidget;
-    w->setMinimumSize(minimum);
-    w->setPreferredSize(preferred);
-    w->setMaximumSize(maximum);
-    w->setData(0, name);
-    return w;
-}
-
-static void setAnchor(QGraphicsAnchorLayout *l,
-                      QGraphicsLayoutItem *firstItem,
-                      Qt::AnchorPoint firstEdge,
-                      QGraphicsLayoutItem *secondItem,
-                      Qt::AnchorPoint secondEdge,
-                      qreal spacing)
-{
-    QGraphicsAnchor *anchor = l->addAnchor(firstItem, firstEdge, secondItem, secondEdge);
-    anchor->setSpacing(spacing);
-}
-
-void tst_QGraphicsAnchorLayout::s60_hard_complex_data()
-{
-    QTest::addColumn<int>("whichSizeHint");
-    QTest::newRow("minimumSizeHint")
-        << int(Qt::MinimumSize);
-    QTest::newRow("preferredSizeHint")
-        << int(Qt::PreferredSize);
-    QTest::newRow("maximumSizeHint")
-        << int(Qt::MaximumSize);
-    // Add it as a reference to see how much overhead the body of effectiveSizeHint takes.
-    QTest::newRow("noSizeHint")
-        << -1;
-}
-
-void tst_QGraphicsAnchorLayout::s60_hard_complex()
-{
-    QFETCH(int, whichSizeHint);
-
-    // Test for "hard" complex case, taken from wiki
-    // https://cwiki.nokia.com/S60QTUI/AnchorLayoutComplexCases
-    QSizeF min(0, 10);
-    QSizeF pref(50, 10);
-    QSizeF max(100, 10);
-
-    QGraphicsWidget *a = createItem(min, pref, max, "a");
-    QGraphicsWidget *b = createItem(min, pref, max, "b");
-    QGraphicsWidget *c = createItem(min, pref, max, "c");
-    QGraphicsWidget *d = createItem(min, pref, max, "d");
-    QGraphicsWidget *e = createItem(min, pref, max, "e");
-    QGraphicsWidget *f = createItem(min, pref, max, "f");
-    QGraphicsWidget *g = createItem(min, pref, max, "g");
-
-    QGraphicsAnchorLayout *l = new QGraphicsAnchorLayout;
-    l->setContentsMargins(0, 0, 0, 0);
-
-    //<!-- Trunk -->
-    setAnchor(l, l, Qt::AnchorLeft, a, Qt::AnchorLeft, 10);
-    setAnchor(l, a, Qt::AnchorRight, b, Qt::AnchorLeft, 10);
-    setAnchor(l, b, Qt::AnchorRight, c, Qt::AnchorLeft, 10);
-    setAnchor(l, c, Qt::AnchorRight, d, Qt::AnchorLeft, 10);
-    setAnchor(l, d, Qt::AnchorRight, l, Qt::AnchorRight, 10);
-
-    //<!-- Above trunk -->
-    setAnchor(l, b, Qt::AnchorLeft, e, Qt::AnchorLeft, 10);
-    setAnchor(l, e, Qt::AnchorRight, d, Qt::AnchorLeft, 10);
-
-    //<!-- Below trunk -->
-    setAnchor(l, a, Qt::AnchorHorizontalCenter, g, Qt::AnchorLeft, 10);
-    setAnchor(l, g, Qt::AnchorRight, f, Qt::AnchorHorizontalCenter, 10);
-    setAnchor(l, c, Qt::AnchorLeft, f, Qt::AnchorLeft, 10);
-    setAnchor(l, f, Qt::AnchorRight, d, Qt::AnchorRight, 10);
-
-    //<!-- vertical is simpler -->
-    setAnchor(l, l, Qt::AnchorTop, e, Qt::AnchorTop, 0);
-    setAnchor(l, e, Qt::AnchorBottom, a, Qt::AnchorTop, 0);
-    setAnchor(l, e, Qt::AnchorBottom, b, Qt::AnchorTop, 0);
-    setAnchor(l, e, Qt::AnchorBottom, c, Qt::AnchorTop, 0);
-    setAnchor(l, e, Qt::AnchorBottom, d, Qt::AnchorTop, 0);
-    setAnchor(l, a, Qt::AnchorBottom, f, Qt::AnchorTop, 0);
-    setAnchor(l, a, Qt::AnchorBottom, b, Qt::AnchorBottom, 0);
-    setAnchor(l, a, Qt::AnchorBottom, c, Qt::AnchorBottom, 0);
-    setAnchor(l, a, Qt::AnchorBottom, d, Qt::AnchorBottom, 0);
-    setAnchor(l, f, Qt::AnchorBottom, g, Qt::AnchorTop, 0);
-    setAnchor(l, g, Qt::AnchorBottom, l, Qt::AnchorBottom, 0);
-
-    // It won't query the size hint if it already has a size set.
-    // If only one of the sizes is unset it will query sizeHint only of for that hint type.
-    l->setMinimumSize(60,40);
-    l->setPreferredSize(220,40);
-    l->setMaximumSize(240,40);
-
-    switch (whichSizeHint) {
-    case Qt::MinimumSize:
-        l->setMinimumSize(-1, -1);
-        break;
-    case Qt::PreferredSize:
-        l->setPreferredSize(-1, -1);
-        break;
-    case Qt::MaximumSize:
-        l->setMaximumSize(-1, -1);
-        break;
-    default:
-        break;
-    }
-
-    QSizeF sizeHint;
-    // warm up instruction cache
-    l->invalidate();
-    sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
-    // ...then measure...
-    QBENCHMARK {
-        l->invalidate();
-        sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
-    }
-}
-
-static QGraphicsLayout* createLayouts(int whichLayout)
-{
-    QSizeF min(0, 10);
-    QSizeF pref(50, 10);
-    QSizeF max(100, 10);
-
-    QGraphicsWidget *a = createItem(min, pref, max, "a");
-    QGraphicsWidget *b = createItem(min, pref, max, "b");
-    QGraphicsWidget *c = createItem(min, pref, max, "c");
-    QGraphicsWidget *d = createItem(min, pref, max, "d");
-
-    QGraphicsLayout *l;
-    if (whichLayout == 0) {
-        l = new QGraphicsLinearLayout;
-        QGraphicsLinearLayout *linear = static_cast<QGraphicsLinearLayout *>(l);
-        linear->setContentsMargins(0, 0, 0, 0);
-
-        linear->addItem(a);
-        linear->addItem(b);
-        linear->addItem(c);
-        linear->addItem(d);
-    } else {
-        l = new QGraphicsAnchorLayout;
-        QGraphicsAnchorLayout *anchor = static_cast<QGraphicsAnchorLayout *>(l);
-        anchor->setContentsMargins(0, 0, 0, 0);
-
-        // Horizontal
-        setAnchor(anchor, anchor, Qt::AnchorLeft, a, Qt::AnchorLeft, 0);
-        setAnchor(anchor, a, Qt::AnchorRight, b, Qt::AnchorLeft, 0);
-        setAnchor(anchor, b, Qt::AnchorRight, c, Qt::AnchorLeft, 0);
-        setAnchor(anchor, c, Qt::AnchorRight, d, Qt::AnchorLeft, 0);
-        setAnchor(anchor, d, Qt::AnchorRight, anchor, Qt::AnchorRight, 0);
-
-        // Vertical
-        anchor->addAnchors(anchor, a, Qt::Vertical);
-        anchor->addAnchors(anchor, b, Qt::Vertical);
-        anchor->addAnchors(anchor, c, Qt::Vertical);
-        anchor->addAnchors(anchor, d, Qt::Vertical);
-    }
-
-    return l;
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorSizeHints_data()
-{
-    QTest::addColumn<int>("whichLayout");
-    QTest::addColumn<int>("whichSizeHint");
-
-    QTest::newRow("QGraphicsLinearLayout::minimum")
-        << 0 << int(Qt::MinimumSize);
-    QTest::newRow("QGraphicsLinearLayout::preferred")
-        << 0 << int(Qt::PreferredSize);
-    QTest::newRow("QGraphicsLinearLayout::maximum")
-        << 0 << int(Qt::MaximumSize);
-    QTest::newRow("QGraphicsLinearLayout::noSizeHint")
-        << 0 << -1;
-
-    QTest::newRow("QGraphicsAnchorLayout::minimum")
-        << 1 << int(Qt::MinimumSize);
-    QTest::newRow("QGraphicsAnchorLayout::preferred")
-        << 1 << int(Qt::PreferredSize);
-    QTest::newRow("QGraphicsAnchorLayout::maximum")
-        << 1 << int(Qt::MaximumSize);
-    QTest::newRow("QGraphicsAnchorLayout::noSizeHint")
-        << 1 << -1;
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorSizeHints()
-{
-    QFETCH(int, whichSizeHint);
-    QFETCH(int, whichLayout);
-
-    QGraphicsLayout *l = createLayouts(whichLayout);
-
-    QSizeF sizeHint;
-    // warm up instruction cache
-    l->invalidate();
-    sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
-    // ...then measure...
-
-    QBENCHMARK {
-        l->invalidate();
-        sizeHint = l->effectiveSizeHint((Qt::SizeHint)whichSizeHint);
-    }
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorSetGeometry_data()
-{
-    QTest::addColumn<int>("whichLayout");
-
-    QTest::newRow("QGraphicsLinearLayout")
-        << 0;
-    QTest::newRow("QGraphicsAnchorLayout")
-        << 1;
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorSetGeometry()
-{
-    QFETCH(int, whichLayout);
-
-    QGraphicsLayout *l = createLayouts(whichLayout);
-
-    QRectF sizeHint;
-    qreal maxWidth;
-    qreal increment;
-    // warm up instruction cache
-    l->invalidate();
-    sizeHint.setSize(l->effectiveSizeHint(Qt::MinimumSize));
-    maxWidth = l->effectiveSizeHint(Qt::MaximumSize).width();
-    increment = (maxWidth - sizeHint.width()) / 100;
-    l->setGeometry(sizeHint);
-    // ...then measure...
-
-    QBENCHMARK {
-        l->invalidate();
-        for (qreal width = sizeHint.width(); width <= maxWidth; width += increment) {
-            sizeHint.setWidth(width);
-            l->setGeometry(sizeHint);
-        }
-    }
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorNested_data()
-{
-    QTest::addColumn<int>("whichLayout");
-    QTest::newRow("LinearLayout")
-        << 0;
-    QTest::newRow("AnchorLayout setup with null-anchors knot")
-        << 1;
-    QTest::newRow("AnchorLayout setup easy to simplificate")
-        << 2;
-}
-
-void tst_QGraphicsAnchorLayout::linearVsAnchorNested()
-{
-    QFETCH(int, whichLayout);
-
-    QSizeF min(10, 10);
-    QSizeF pref(80, 80);
-    QSizeF max(150, 150);
-
-    QGraphicsWidget *a = createItem(min, pref, max, "a");
-    QGraphicsWidget *b = createItem(min, pref, max, "b");
-    QGraphicsWidget *c = createItem(min, pref, max, "c");
-    QGraphicsWidget *d = createItem(min, pref, max, "d");
-
-    QGraphicsLayout *layout;
-
-    if (whichLayout == 0) {
-        QGraphicsLinearLayout *linear1 = new QGraphicsLinearLayout;
-        QGraphicsLinearLayout *linear2 = new QGraphicsLinearLayout(Qt::Vertical);
-        QGraphicsLinearLayout *linear3 = new QGraphicsLinearLayout;
-
-        linear1->addItem(a);
-        linear1->addItem(linear2);
-        linear2->addItem(b);
-        linear2->addItem(linear3);
-        linear3->addItem(c);
-        linear3->addItem(d);
-
-        layout = linear1;
-    } else if (whichLayout == 1) {
-        QGraphicsAnchorLayout *anchor = new QGraphicsAnchorLayout;
-
-        // A
-        anchor->addCornerAnchors(a, Qt::TopLeftCorner, anchor, Qt::TopLeftCorner);
-        anchor->addCornerAnchors(a, Qt::TopRightCorner, b, Qt::TopLeftCorner);
-        anchor->addCornerAnchors(a, Qt::BottomLeftCorner, anchor, Qt::BottomLeftCorner);
-        anchor->addCornerAnchors(a, Qt::BottomRightCorner, c, Qt::BottomLeftCorner);
-
-        // B
-        anchor->addCornerAnchors(b, Qt::TopRightCorner, anchor, Qt::TopRightCorner);
-        anchor->addCornerAnchors(b, Qt::BottomLeftCorner, c, Qt::TopLeftCorner);
-        anchor->addCornerAnchors(b, Qt::BottomRightCorner, d, Qt::TopRightCorner);
-
-        // C
-        anchor->addCornerAnchors(c, Qt::TopRightCorner, d, Qt::TopLeftCorner);
-        anchor->addCornerAnchors(c, Qt::BottomRightCorner, d, Qt::BottomLeftCorner);
-
-        // D
-        anchor->addCornerAnchors(d, Qt::BottomRightCorner, anchor, Qt::BottomRightCorner);
-
-        layout = anchor;
-    } else {
-        QGraphicsAnchorLayout *anchor = new QGraphicsAnchorLayout;
-
-        // A
-        anchor->addAnchor(a, Qt::AnchorLeft, anchor, Qt::AnchorLeft);
-        anchor->addAnchors(a, anchor, Qt::Vertical);
-        anchor->addAnchor(a, Qt::AnchorRight, b, Qt::AnchorLeft);
-        anchor->addAnchor(a, Qt::AnchorRight, c, Qt::AnchorLeft);
-
-        // B
-        anchor->addAnchor(b, Qt::AnchorTop, anchor, Qt::AnchorTop);
-        anchor->addAnchor(b, Qt::AnchorRight, anchor, Qt::AnchorRight);
-        anchor->addAnchor(b, Qt::AnchorBottom, c, Qt::AnchorTop);
-        anchor->addAnchor(b, Qt::AnchorBottom, d, Qt::AnchorTop);
-
-        // C
-        anchor->addAnchor(c, Qt::AnchorRight, d, Qt::AnchorLeft);
-        anchor->addAnchor(c, Qt::AnchorBottom, anchor, Qt::AnchorBottom);
-
-        // D
-        anchor->addAnchor(d, Qt::AnchorRight, anchor, Qt::AnchorRight);
-        anchor->addAnchor(d, Qt::AnchorBottom, anchor, Qt::AnchorBottom);
-
-        layout = anchor;
-    }
-
-    QSizeF sizeHint;
-    // warm up instruction cache
-    layout->invalidate();
-    sizeHint = layout->effectiveSizeHint(Qt::PreferredSize);
-
-    // ...then measure...
-    QBENCHMARK {
-        // To ensure that all sizeHints caches are invalidated in
-        // the LinearLayout setup, we must call updateGeometry on the
-        // children. If we didn't, only the top level layout would be
-        // re-calculated.
-        static_cast<QGraphicsLayoutItem *>(a)->updateGeometry();
-        static_cast<QGraphicsLayoutItem *>(b)->updateGeometry();
-        static_cast<QGraphicsLayoutItem *>(c)->updateGeometry();
-        static_cast<QGraphicsLayoutItem *>(d)->updateGeometry();
-        layout->invalidate();
-        sizeHint = layout->effectiveSizeHint(Qt::PreferredSize);
-    }
-}
-
-QTEST_MAIN(tst_QGraphicsAnchorLayout)
-
-#include "tst_qgraphicsanchorlayout.moc"
diff --git a/tests/benchmarks/qgraphicsitem/qgraphicsitem.pro b/tests/benchmarks/qgraphicsitem/qgraphicsitem.pro
deleted file mode 100644
index 726bb96..0000000
--- a/tests/benchmarks/qgraphicsitem/qgraphicsitem.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qgraphicsitem
-
-SOURCES += tst_qgraphicsitem.cpp
diff --git a/tests/benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp
deleted file mode 100644
index ac51072..0000000
--- a/tests/benchmarks/qgraphicsitem/tst_qgraphicsitem.cpp
+++ /dev/null
@@ -1,243 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QGraphicsItem>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-
-//TESTED_FILES=
-
-class tst_QGraphicsItem : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QGraphicsItem();
-    virtual ~tst_QGraphicsItem();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void setParentItem();
-    void setParentItem_deep();
-    void setParentItem_deep_reversed();
-    void deleteItemWithManyChildren();
-    void setPos_data();
-    void setPos();
-    void setTransform_data();
-    void setTransform();
-    void rotate();
-    void scale();
-    void shear();
-    void translate();
-    void setRotation();
-};
-
-tst_QGraphicsItem::tst_QGraphicsItem()
-{
-}
-
-tst_QGraphicsItem::~tst_QGraphicsItem()
-{
-}
-
-void tst_QGraphicsItem::init()
-{
-}
-
-void tst_QGraphicsItem::cleanup()
-{
-}
-
-void tst_QGraphicsItem::setParentItem()
-{
-    QBENCHMARK {
-        QGraphicsRectItem rect;
-        QGraphicsRectItem *childRect = new QGraphicsRectItem;
-        childRect->setParentItem(&rect);
-    }
-}
-
-void tst_QGraphicsItem::setParentItem_deep()
-{
-    QBENCHMARK {
-        QGraphicsRectItem rect;
-        QGraphicsRectItem *lastRect = &rect;
-        for (int i = 0; i < 10; ++i) {
-            QGraphicsRectItem *childRect = new QGraphicsRectItem;
-            childRect->setParentItem(lastRect);
-            lastRect = childRect;
-        }
-        QGraphicsItem *first = rect.children().first();
-        first->setParentItem(0);
-    }
-}
-
-void tst_QGraphicsItem::setParentItem_deep_reversed()
-{
-    QBENCHMARK {
-        QGraphicsRectItem *lastRect = new QGraphicsRectItem;
-        for (int i = 0; i < 100; ++i) {
-            QGraphicsRectItem *parentRect = new QGraphicsRectItem;
-            lastRect->setParentItem(parentRect);
-            lastRect = parentRect;
-        }
-        delete lastRect;
-    }
-}
-
-void tst_QGraphicsItem::deleteItemWithManyChildren()
-{
-    QBENCHMARK {
-        QGraphicsRectItem *rect = new QGraphicsRectItem;
-        for (int i = 0; i < 1000; ++i)
-            new QGraphicsRectItem(rect);
-        delete rect;
-    }
-}
-
-void tst_QGraphicsItem::setPos_data()
-{
-    QTest::addColumn<QPointF>("pos");
-
-    QTest::newRow("0, 0") << QPointF(0, 0);
-    QTest::newRow("10, 10") << QPointF(10, 10);
-    QTest::newRow("-10, -10") << QPointF(-10, -10);
-}
-
-void tst_QGraphicsItem::setPos()
-{
-    QFETCH(QPointF, pos);
-
-    QGraphicsScene scene;
-    QGraphicsRectItem *rect = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        rect->setPos(10, 10);
-        rect->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::setTransform_data()
-{
-    QTest::addColumn<QTransform>("transform");
-
-    QTest::newRow("id") << QTransform();
-    QTest::newRow("rotate 45z") << QTransform().rotate(45);
-    QTest::newRow("scale 2x2") << QTransform().scale(2, 2);
-    QTest::newRow("translate 100, 100") << QTransform().translate(100, 100);
-    QTest::newRow("rotate 45x 45y 45z") << QTransform().rotate(45, Qt::XAxis)
-        .rotate(45, Qt::YAxis).rotate(45, Qt::ZAxis);
-}
-
-void tst_QGraphicsItem::setTransform()
-{
-    QFETCH(QTransform, transform);
-
-    QGraphicsScene scene;
-    QGraphicsRectItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->setTransform(transform);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::rotate()
-{
-    QGraphicsScene scene;
-    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->rotate(45);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::scale()
-{
-    QGraphicsScene scene;
-    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->scale(2, 2);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::shear()
-{
-    QGraphicsScene scene;
-    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->shear(1.5, 1.5);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::translate()
-{
-    QGraphicsScene scene;
-    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->translate(100, 100);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-void tst_QGraphicsItem::setRotation()
-{
-    QGraphicsScene scene;
-    QGraphicsItem *item = scene.addRect(QRectF(0, 0, 100, 100));
-
-    QBENCHMARK {
-        item->setRotation(45);
-        item->transform(); // prevent lazy optimizing
-    }
-}
-
-QTEST_MAIN(tst_QGraphicsItem)
-#include "tst_qgraphicsitem.moc"
diff --git a/tests/benchmarks/qgraphicsscene/qgraphicsscene.pro b/tests/benchmarks/qgraphicsscene/qgraphicsscene.pro
deleted file mode 100644
index b460e2a..0000000
--- a/tests/benchmarks/qgraphicsscene/qgraphicsscene.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qgraphicsscene
-
-SOURCES += tst_qgraphicsscene.cpp
-
diff --git a/tests/benchmarks/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/benchmarks/qgraphicsscene/tst_qgraphicsscene.cpp
deleted file mode 100644
index 5bd07f9..0000000
--- a/tests/benchmarks/qgraphicsscene/tst_qgraphicsscene.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QGraphicsItem>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-
-//TESTED_FILES=
-
-class tst_QGraphicsScene : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QGraphicsScene();
-    virtual ~tst_QGraphicsScene();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void construct();
-    void addItem_data();
-    void addItem();
-    void itemAt_data();
-    void itemAt();
-    void initialShow();
-};
-
-tst_QGraphicsScene::tst_QGraphicsScene()
-{
-}
-
-tst_QGraphicsScene::~tst_QGraphicsScene()
-{
-}
-
-void tst_QGraphicsScene::init()
-{
-}
-
-void tst_QGraphicsScene::cleanup()
-{
-}
-
-void tst_QGraphicsScene::construct()
-{
-    QBENCHMARK {
-        QGraphicsScene scene;
-    }
-}
-
-void tst_QGraphicsScene::addItem_data()
-{
-    QTest::addColumn<int>("indexMethod");
-    QTest::addColumn<QRectF>("sceneRect");
-    QTest::addColumn<int>("numItems_X");
-    QTest::addColumn<int>("numItems_Y");
-    QTest::addColumn<int>("itemType");
-    QTest::addColumn<QRectF>("itemRect");
-
-    QTest::newRow("null") << 0 << QRectF() << 0 << 0 << 0 << QRectF();
-    QTest::newRow("0 QRectF() 10 x  10 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 25 x  25 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF() << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,0)") << 0 << QRectF() << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF() << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  10 x  10 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 0 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("0 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 0 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 10 x  10 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF() << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF() << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  10 x  10 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  25 x  25 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 100 x 100 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 250 x 250 QGraphicsRectItem (0,0,10,10)") << 1 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsRectItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  10 x  10 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 100, 100) << 10 << 10 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF()  25 x  25 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 250, 250) << 25 << 25 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 100 x 100 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 1000, 1000) << 100 << 100 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-    QTest::newRow("1 QRectF() 250 x 250 QGraphicsEllipseItem (0,0,10,10)") << 1 << QRectF(0, 0, 2500, 2500) << 250 << 250 << int(QGraphicsEllipseItem::Type) << QRectF(0, 0, 10, 10);
-}
-
-void tst_QGraphicsScene::addItem()
-{
-    QFETCH(int, indexMethod);
-    QFETCH(QRectF, sceneRect);
-    QFETCH(int, numItems_X);
-    QFETCH(int, numItems_Y);
-    QFETCH(int, itemType);
-    QFETCH(QRectF, itemRect);
-
-    QGraphicsScene scene;
-    scene.setItemIndexMethod(indexMethod ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
-    if (!sceneRect.isNull())
-        scene.setSceneRect(sceneRect);
-
-    QBENCHMARK {
-        QGraphicsItem *item = 0;
-        for (int y = 0; y < numItems_Y; ++y) {
-            for (int x = 0; x < numItems_X; ++x) {
-                switch (itemType) {
-                case QGraphicsRectItem::Type:
-                    item = new QGraphicsRectItem(itemRect);
-                    break;
-                case QGraphicsEllipseItem::Type:
-                default:
-                    item = new QGraphicsEllipseItem(itemRect);
-                    break;
-                }
-                item->setPos(x * itemRect.width(), y * itemRect.height());
-                scene.addItem(item);
-            }
-        }
-        scene.itemAt(0, 0);
-    }
-    //let QGraphicsScene::_q_polishItems be called so ~QGraphicsItem doesn't spend all his time cleaning the unpolished list
-    qApp->processEvents();
-}
-
-void tst_QGraphicsScene::itemAt_data()
-{
-    QTest::addColumn<int>("bspTreeDepth");
-    QTest::addColumn<QRectF>("sceneRect");
-    QTest::addColumn<int>("numItems_X");
-    QTest::addColumn<int>("numItems_Y");
-    QTest::addColumn<QRectF>("itemRect");
-
-    QTest::newRow("null") << 0 << QRectF() << 0 << 0 << QRectF();
-    QTest::newRow("NoIndex 10x10") << -1 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("NoIndex 25x25") << -1 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("NoIndex 100x100") << -1 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("NoIndex 250x250") << -1 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=auto 10x10") << 0 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=auto 25x25") << 0 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=auto 100x100") << 0 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=auto 250x250") << 0 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=16 10x10") << 16 << QRectF() << 10 << 10 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=16 25x25") << 16 << QRectF() << 25 << 25 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=16 100x100") << 16 << QRectF() << 100 << 100 << QRectF(-10, -10, 20, 20);
-    QTest::newRow("BspTreeIndex depth=16 250x250") << 16 << QRectF() << 250 << 250 << QRectF(-10, -10, 20, 20);
-}
-
-void tst_QGraphicsScene::itemAt()
-{
-    QFETCH(int, bspTreeDepth);
-    QFETCH(QRectF, sceneRect);
-    QFETCH(int, numItems_X);
-    QFETCH(int, numItems_Y);
-    QFETCH(QRectF, itemRect);
-
-    QGraphicsScene scene;
-    scene.setItemIndexMethod(bspTreeDepth >= 0 ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
-    if (bspTreeDepth > 0)
-        scene.setBspTreeDepth(bspTreeDepth);
-    if (!sceneRect.isNull())
-        scene.setSceneRect(sceneRect);
-
-    QGraphicsItem *item = 0;
-    for (int y = 0; y < numItems_Y; ++y) {
-        for (int x = 0; x < numItems_X; ++x) {
-            QGraphicsRectItem *item = new QGraphicsRectItem(itemRect);
-            item->setPos((x - numItems_X/2) * itemRect.width(), (y - numItems_Y/2) * itemRect.height());
-            scene.addItem(item);
-        }
-    }
-
-    scene.itemAt(0, 0); // triggers indexing
-
-    QBENCHMARK {
-        scene.itemAt(0, 0);
-    }
-
-    //let QGraphicsScene::_q_polishItems be called so ~QGraphicsItem doesn't spend all his time cleaning the unpolished list
-    qApp->processEvents();
-}
-
-void tst_QGraphicsScene::initialShow()
-{
-    QGraphicsScene scene;
-
-    QBENCHMARK {
-        for (int y = 0; y < 30000; ++y) {
-            QGraphicsRectItem *item = new QGraphicsRectItem(0, 0, 50, 50);
-            item->setPos((y/2) * item->rect().width(), (y/2) * item->rect().height());
-            scene.addItem(item);
-        }
-        scene.itemAt(0, 0); // triggers indexing
-        //This call polish the items so we bench their processing too.
-        qApp->processEvents();
-    }
-}
-
-QTEST_MAIN(tst_QGraphicsScene)
-#include "tst_qgraphicsscene.moc"
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.cpp b/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.cpp
deleted file mode 100644
index 77b86c1..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "chip.h"
-
-#include <QtGui>
-
-Chip::Chip(const QColor &color, int x, int y)
-{
-    this->x = x;
-    this->y = y;
-    this->color = color;
-    setZValue((x + y) % 2);
-
-    setFlags(ItemIsSelectable | ItemIsMovable);
-    setAcceptsHoverEvents(true);
-}
-
-QRectF Chip::boundingRect() const
-{
-    return QRectF(0, 0, 110, 70);
-}
-
-QPainterPath Chip::shape() const
-{
-    QPainterPath path;
-    path.addRect(14, 14, 82, 42);
-    return path;
-}
-
-void Chip::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(widget);
-
-    QColor fillColor = (option->state & QStyle::State_Selected) ? color.dark(150) : color;
-    if (option->state & QStyle::State_MouseOver)
-        fillColor = fillColor.light(125);
-
-    if (option->levelOfDetail < 0.2) {
-        if (option->levelOfDetail < 0.125) {
-            painter->fillRect(QRectF(0, 0, 110, 70), fillColor);
-            return;
-        }
-
-        painter->setPen(QPen(Qt::black, 0));
-        painter->setBrush(fillColor);
-        painter->drawRect(13, 13, 97, 57);
-        return;
-    }
-
-    QPen oldPen = painter->pen();
-    QPen pen = oldPen;
-    int width = 0;
-    if (option->state & QStyle::State_Selected)
-        width += 2;
-
-    pen.setWidth(width);
-    painter->setBrush(QBrush(fillColor.dark(option->state & QStyle::State_Sunken ? 120 : 100)));
-
-    painter->drawRect(QRect(14, 14, 79, 39));
-    if (option->levelOfDetail >= 1) {
-        painter->setPen(QPen(Qt::gray, 1));
-        painter->drawLine(15, 54, 94, 54);
-        painter->drawLine(94, 53, 94, 15);
-        painter->setPen(QPen(Qt::black, 0));
-    }
-
-    // Draw text
-    if (option->levelOfDetail >= 2) {
-        QFont font("Times", 10);
-        font.setStyleStrategy(QFont::ForceOutline);
-        painter->setFont(font);
-        painter->save();
-        painter->scale(0.1, 0.1);
-        painter->drawText(170, 180, QString("Model: VSC-2000 (Very Small Chip) at %1x%2").arg(x).arg(y));
-        painter->drawText(170, 200, QString("Serial number: DLWR-WEER-123L-ZZ33-SDSJ"));
-        painter->drawText(170, 220, QString("Manufacturer: Chip Manufacturer"));
-        painter->restore();
-    }
-
-    // Draw lines
-    QVarLengthArray<QLineF, 36> lines;
-    if (option->levelOfDetail >= 0.5) {
-        for (int i = 0; i <= 10; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
-            lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5));
-            lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62));
-        }
-        for (int i = 0; i <= 6; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
-            lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5));
-            lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5));
-        }
-    }
-    if (option->levelOfDetail >= 0.4) {
-        const QLineF lineData[] = {
-            QLineF(25, 35, 35, 35),
-            QLineF(35, 30, 35, 40),
-            QLineF(35, 30, 45, 35),
-            QLineF(35, 40, 45, 35),
-            QLineF(45, 30, 45, 40),
-            QLineF(45, 35, 55, 35)
-        };
-        lines.append(lineData, 6);
-    }
-    painter->drawLines(lines.data(), lines.size());
-
-    // Draw red ink
-    if (stuff.size() > 1) {
-        painter->setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-        painter->setBrush(Qt::NoBrush);
-        QPainterPath path;
-        path.moveTo(stuff.first());
-        for (int i = 1; i < stuff.size(); ++i)
-            path.lineTo(stuff.at(i));
-        painter->drawPath(path);
-    }
-}
-
-void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    QGraphicsItem::mousePressEvent(event);
-    update();
-}
-
-void Chip::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event->modifiers() & Qt::ShiftModifier) {
-        stuff << event->pos();
-        update();
-        return;
-    }
-    QGraphicsItem::mouseMoveEvent(event);
-}
-
-void Chip::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    QGraphicsItem::mouseReleaseEvent(event);
-    update();
-}
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.debug b/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.debug
deleted file mode 100644
index 8fe1e5b..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.debug and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.h b/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.h
deleted file mode 100644
index 9db23f9..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CHIP_H
-#define CHIP_H
-
-#include <QtGui/QColor>
-#include <QtGui/QGraphicsItem>
-
-class Chip : public QGraphicsItem
-{
-public:
-    Chip(const QColor &color, int x, int y);
-
-    QRectF boundingRect() const;
-    QPainterPath shape() const;
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
-
-protected:
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
-private:
-    int x, y;
-    QColor color;
-    QList<QPointF> stuff;
-};
-
-#endif
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.pro b/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.pro
deleted file mode 100644
index 53fa23b..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/chip.pro
+++ /dev/null
@@ -1,19 +0,0 @@
-RESOURCES += images.qrc
-
-HEADERS += mainwindow.h view.h chip.h
-SOURCES += main.cpp
-SOURCES += mainwindow.cpp view.cpp chip.cpp
-
-contains(QT_CONFIG, opengl):QT += opengl
-
-build_all:!build_pass {
-    CONFIG -= build_all
-    CONFIG += release
-}
-
-# install
-target.path = $$[QT_INSTALL_DEMOS]/chip
-sources.files = $$SOURCES $$HEADERS $$RESOURCES *.png *.pro *.html *.doc images
-sources.path = $$[QT_INSTALL_DEMOS]/chip
-INSTALLS += target sources
-
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/fileprint.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/fileprint.png
deleted file mode 100644
index ba7c02d..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/fileprint.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/images.qrc b/tests/benchmarks/qgraphicsview/benchapps/chipTest/images.qrc
deleted file mode 100644
index c7cdf0c..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/images.qrc
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
-    <file>qt4logo.png</file>
-    <file>zoomin.png</file>
-    <file>zoomout.png</file>
-    <file>rotateleft.png</file>
-    <file>rotateright.png</file>
-    <file>fileprint.png</file>
-</qresource>
-</RCC>
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/main.cpp b/tests/benchmarks/qgraphicsview/benchapps/chipTest/main.cpp
deleted file mode 100644
index ea2f94a..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/main.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mainwindow.h"
-
-#include <QApplication>
-
-int main(int argc, char **argv)
-{
-    Q_INIT_RESOURCE(images);
-
-    QApplication app(argc, argv);
-    app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
-
-    MainWindow window;
-    window.show();   
-
-    return app.exec();
-}
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.cpp b/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.cpp
deleted file mode 100644
index 452b42c..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mainwindow.h"
-#include "view.h"
-#include "chip.h"
-
-#include <QtGui>
-
-MainWindow::MainWindow(QWidget *parent)
-    : QWidget(parent)
-{
-    populateScene();
-
-    View *view = new View("Top left view");
-    view->view()->setScene(scene);
-    QHBoxLayout *layout = new QHBoxLayout;
-    layout->addWidget(view);
-    setLayout(layout);
-
-    setWindowTitle(tr("Chip Demo"));
-}
-
-void MainWindow::populateScene()
-{
-    scene = new QGraphicsScene;
-
-    QImage image(":/qt4logo.png");
-
-    // Populate scene
-    int xx = 0;
-    int nitems = 0;
-    for (int i = -11000; i < 11000; i += 110) {
-        ++xx;
-        int yy = 0;
-        for (int j = -7000; j < 7000; j += 70) {
-            ++yy;
-            qreal x = (i + 11000) / 22000.0;
-            qreal y = (j + 7000) / 14000.0;
-
-            QColor color(image.pixel(int(image.width() * x), int(image.height() * y)));
-            QGraphicsItem *item = new Chip(color, xx, yy);
-            item->setPos(QPointF(i, j));
-            scene->addItem(item);
-
-            ++nitems;
-        }
-    }
-}
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.h b/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.h
deleted file mode 100644
index 558bbef..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/mainwindow.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QtGui/qwidget.h>
-
-QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
-QT_FORWARD_DECLARE_CLASS(QLabel)
-QT_FORWARD_DECLARE_CLASS(QSlider)
-QT_FORWARD_DECLARE_CLASS(QSplitter)
-
-class MainWindow : public QWidget
-{
-    Q_OBJECT
-public:
-    MainWindow(QWidget *parent = 0);
-    
-private:
-    void setupMatrix();
-    void populateScene();
-
-    QGraphicsScene *scene;
-};
-
-#endif
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/qt4logo.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/qt4logo.png
deleted file mode 100644
index 157e86e..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/qt4logo.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateleft.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateleft.png
deleted file mode 100644
index 8cfa931..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateleft.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateright.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateright.png
deleted file mode 100644
index ec5e866..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/rotateright.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.cpp b/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.cpp
deleted file mode 100644
index 1028f42..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.cpp
+++ /dev/null
@@ -1,257 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "view.h"
-
-#include <QtGui>
-#include "valgrind/callgrind.h"
-#ifndef QT_NO_OPENGL
-#include <QtOpenGL>
-#endif
-
-#include <qmath.h>
-
-class CountView : public QGraphicsView
-{
-protected:
-    void paintEvent(QPaintEvent *event)
-    {
-        static int n = 0;
-        if (n)
-            CALLGRIND_START_INSTRUMENTATION
-        QGraphicsView::paintEvent(event);
-        if (n)
-            CALLGRIND_STOP_INSTRUMENTATION
-        if (++n == 500)
-            qApp->quit();
-    }
-};
-
-View::View(const QString &name, QWidget *parent)
-    : QFrame(parent)
-{
-    setFrameStyle(Sunken | StyledPanel);
-    graphicsView = new CountView;
-    graphicsView->setRenderHint(QPainter::Antialiasing, false);
-    graphicsView->setDragMode(QGraphicsView::RubberBandDrag);
-    graphicsView->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
-
-    int size = style()->pixelMetric(QStyle::PM_ToolBarIconSize);
-    QSize iconSize(size, size);
-
-    QToolButton *zoomInIcon = new QToolButton;
-    zoomInIcon->setAutoRepeat(true);
-    zoomInIcon->setAutoRepeatInterval(33);
-    zoomInIcon->setAutoRepeatDelay(0);
-    zoomInIcon->setIcon(QPixmap(":/zoomin.png"));
-    zoomInIcon->setIconSize(iconSize);
-    QToolButton *zoomOutIcon = new QToolButton;
-    zoomOutIcon->setAutoRepeat(true);
-    zoomOutIcon->setAutoRepeatInterval(33);
-    zoomOutIcon->setAutoRepeatDelay(0);
-    zoomOutIcon->setIcon(QPixmap(":/zoomout.png"));
-    zoomOutIcon->setIconSize(iconSize);
-    zoomSlider = new QSlider;
-    zoomSlider->setMinimum(0);
-    zoomSlider->setMaximum(500);
-    zoomSlider->setValue(250);
-    zoomSlider->setTickPosition(QSlider::TicksRight);
-
-    // Zoom slider layout
-    QVBoxLayout *zoomSliderLayout = new QVBoxLayout;
-    zoomSliderLayout->addWidget(zoomInIcon);
-    zoomSliderLayout->addWidget(zoomSlider);
-    zoomSliderLayout->addWidget(zoomOutIcon);
-
-    QToolButton *rotateLeftIcon = new QToolButton;
-    rotateLeftIcon->setIcon(QPixmap(":/rotateleft.png"));
-    rotateLeftIcon->setIconSize(iconSize);
-    QToolButton *rotateRightIcon = new QToolButton;
-    rotateRightIcon->setIcon(QPixmap(":/rotateright.png"));
-    rotateRightIcon->setIconSize(iconSize);
-    rotateSlider = new QSlider;
-    rotateSlider->setOrientation(Qt::Horizontal);
-    rotateSlider->setMinimum(-360);
-    rotateSlider->setMaximum(360);
-    rotateSlider->setValue(0);
-    rotateSlider->setTickPosition(QSlider::TicksBelow);
-
-    // Rotate slider layout
-    QHBoxLayout *rotateSliderLayout = new QHBoxLayout;
-    rotateSliderLayout->addWidget(rotateLeftIcon);
-    rotateSliderLayout->addWidget(rotateSlider);
-    rotateSliderLayout->addWidget(rotateRightIcon);
-
-    resetButton = new QToolButton;
-    resetButton->setText(tr("0"));
-    resetButton->setEnabled(false);
-
-    // Label layout
-    QHBoxLayout *labelLayout = new QHBoxLayout;
-    label = new QLabel(name);
-    antialiasButton = new QToolButton;
-    antialiasButton->setText(tr("Antialiasing"));
-    antialiasButton->setCheckable(true);
-    antialiasButton->setChecked(false);
-    openGlButton = new QToolButton;
-    openGlButton->setText(tr("OpenGL"));
-    openGlButton->setCheckable(true);
-#ifndef QT_NO_OPENGL
-    openGlButton->setEnabled(QGLFormat::hasOpenGL());
-#else
-    openGlButton->setEnabled(false);
-#endif
-    printButton = new QToolButton;
-    printButton->setIcon(QIcon(QPixmap(":/fileprint.png")));
-
-    labelLayout->addWidget(label);
-    labelLayout->addStretch();
-    labelLayout->addWidget(antialiasButton);
-    labelLayout->addWidget(openGlButton);
-    labelLayout->addWidget(printButton);
-
-    QGridLayout *topLayout = new QGridLayout;
-    topLayout->addLayout(labelLayout, 0, 0);
-    topLayout->addWidget(graphicsView, 1, 0);
-    topLayout->addLayout(zoomSliderLayout, 1, 1);
-    topLayout->addLayout(rotateSliderLayout, 2, 0);
-    topLayout->addWidget(resetButton, 2, 1);
-    setLayout(topLayout);
-
-    connect(resetButton, SIGNAL(clicked()), this, SLOT(resetView()));
-    connect(zoomSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
-    connect(rotateSlider, SIGNAL(valueChanged(int)), this, SLOT(setupMatrix()));
-    connect(graphicsView->verticalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
-    connect(graphicsView->horizontalScrollBar(), SIGNAL(valueChanged(int)), this, SLOT(setResetButtonEnabled()));
-    connect(antialiasButton, SIGNAL(toggled(bool)), this, SLOT(toggleAntialiasing()));
-    connect(openGlButton, SIGNAL(toggled(bool)), this, SLOT(toggleOpenGL()));
-    connect(rotateLeftIcon, SIGNAL(clicked()), this, SLOT(rotateLeft()));
-    connect(rotateRightIcon, SIGNAL(clicked()), this, SLOT(rotateRight()));
-    connect(zoomInIcon, SIGNAL(clicked()), this, SLOT(zoomIn()));
-    connect(zoomOutIcon, SIGNAL(clicked()), this, SLOT(zoomOut()));
-    connect(printButton, SIGNAL(clicked()), this, SLOT(print()));
-
-    setupMatrix();
-
-    startTimer(0);
-}
-
-QGraphicsView *View::view() const
-{
-    return graphicsView;
-}
-
-void View::resetView()
-{
-    zoomSlider->setValue(250);
-    rotateSlider->setValue(0);
-    setupMatrix();
-    graphicsView->ensureVisible(QRectF(0, 0, 0, 0));
-
-    resetButton->setEnabled(false);
-}
-
-void View::setResetButtonEnabled()
-{
-    resetButton->setEnabled(true);
-}
-
-void View::setupMatrix()
-{
-    qreal scale = qPow(qreal(2), (zoomSlider->value() - 250) / qreal(50));
-
-    QMatrix matrix;
-    matrix.scale(scale, scale);
-    matrix.rotate(rotateSlider->value());
-
-    graphicsView->setMatrix(matrix);
-    setResetButtonEnabled();
-}
-
-void View::toggleOpenGL()
-{
-#ifndef QT_NO_OPENGL
-    graphicsView->setViewport(openGlButton->isChecked() ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : new QWidget);
-#endif
-}
-
-void View::toggleAntialiasing()
-{
-    graphicsView->setRenderHint(QPainter::Antialiasing, antialiasButton->isChecked());
-}
-
-void View::print()
-{
-#ifndef QT_NO_PRINTER
-    QPrinter printer;
-    QPrintDialog dialog(&printer, this);
-    if (dialog.exec() == QDialog::Accepted) {
-        QPainter painter(&printer);
-        graphicsView->render(&painter);
-    }
-#endif
-}
-
-void View::zoomIn()
-{
-    zoomSlider->setValue(zoomSlider->value() + 1);
-}
-
-void View::zoomOut()
-{
-    zoomSlider->setValue(zoomSlider->value() - 1);
-}
-
-void View::rotateLeft()
-{
-    rotateSlider->setValue(rotateSlider->value() - 10);
-}
-
-void View::rotateRight()
-{
-    rotateSlider->setValue(rotateSlider->value() + 10);
-}
-
-void View::timerEvent(QTimerEvent *)
-{
-    graphicsView->horizontalScrollBar()->setValue(graphicsView->horizontalScrollBar()->value() + 1);
-}
-
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.h b/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.h
deleted file mode 100644
index fc5c226..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/chipTest/view.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef VIEW_H
-#define VIEW_H
-
-#include <QFrame>
-
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
-QT_FORWARD_DECLARE_CLASS(QLabel)
-QT_FORWARD_DECLARE_CLASS(QSlider)
-QT_FORWARD_DECLARE_CLASS(QToolButton)
-
-class View : public QFrame
-{
-    Q_OBJECT
-public:
-    View(const QString &name, QWidget *parent = 0);
-
-    QGraphicsView *view() const;
-
-private slots:
-    void resetView();
-    void setResetButtonEnabled();
-    void setupMatrix();
-    void toggleOpenGL();
-    void toggleAntialiasing();
-    void print();
-
-    void zoomIn();
-    void zoomOut();
-    void rotateLeft();
-    void rotateRight();
-
-    void timerEvent(QTimerEvent *);
-    
-private:
-    QGraphicsView *graphicsView;
-    QLabel *label;
-    QToolButton *openGlButton;
-    QToolButton *antialiasButton;
-    QToolButton *printButton;
-    QToolButton *resetButton;
-    QSlider *zoomSlider;
-    QSlider *rotateSlider;
-};
-
-#endif
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomin.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomin.png
deleted file mode 100644
index 8b0daee..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomin.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomout.png b/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomout.png
deleted file mode 100644
index 1575dd2..0000000
Binary files a/tests/benchmarks/qgraphicsview/benchapps/chipTest/zoomout.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/benchapps/moveItems/main.cpp b/tests/benchmarks/qgraphicsview/benchapps/moveItems/main.cpp
deleted file mode 100644
index 527713f..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/moveItems/main.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include "valgrind/callgrind.h"
-
-#ifdef Q_WS_X11
-extern void qt_x11_wait_for_window_manager(QWidget *);
-#endif
-
-class View : public QGraphicsView
-{
-    Q_OBJECT
-public:
-    View(QGraphicsScene *scene, QGraphicsItem *item)
-        : QGraphicsView(scene), _item(item)
-    {
-    }
-
-protected:
-    void paintEvent(QPaintEvent *event)
-    {
-        static int n = 0;
-        if (n)
-            CALLGRIND_START_INSTRUMENTATION
-        QGraphicsView::paintEvent(event);
-        _item->moveBy(1, 1);
-        if (n)
-            CALLGRIND_STOP_INSTRUMENTATION
-        if (++n == 200)
-            qApp->quit();
-    }
-
-private:
-    QGraphicsItem *_item;
-};
-
-int main(int argc, char *argv[])
-{
-    QApplication app(argc, argv);
-
-    if (argc < 2) {
-        qDebug("usage: ./%s <numItems>", argv[0]);
-        return 1;
-    }
-
-    QGraphicsScene scene(-150, -150, 300, 300);
-    scene.setItemIndexMethod(QGraphicsScene::NoIndex);
-
-    QGraphicsRectItem *item = scene.addRect(-50, -50, 100, 100, QPen(Qt::NoPen), QBrush(Qt::blue));
-    item->setFlag(QGraphicsItem::ItemIsMovable);
-
-    for (int i = 0; i < atoi(argv[1]); ++i) {
-        QGraphicsRectItem *child = scene.addRect(-5, -5, 10, 10, QPen(Qt::NoPen), QBrush(Qt::blue));
-        child->setPos(-50 + qrand() % 100, -50 + qrand() % 100);
-        child->setParentItem(item);
-    }
-
-    View view(&scene, item);
-    view.resize(300, 300);
-    view.show();
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-
-    return app.exec();
-}
-
-#include "main.moc"
diff --git a/tests/benchmarks/qgraphicsview/benchapps/moveItems/moveItems.pro b/tests/benchmarks/qgraphicsview/benchapps/moveItems/moveItems.pro
deleted file mode 100644
index 28dcadc..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/moveItems/moveItems.pro
+++ /dev/null
@@ -1 +0,0 @@
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp b/tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp
deleted file mode 100644
index 7419206..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/scrolltest/main.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include "valgrind/callgrind.h"
-
-class ItemMover : public QObject
-{
-    Q_OBJECT
-public:
-    ItemMover(QGraphicsItem *item)
-        : _item(item)
-    {
-        startTimer(0);
-    }
-
-protected:
-    void timerEvent(QTimerEvent *event)
-    {
-        _item->moveBy(-1, 0);
-    }
-
-private:
-    QGraphicsItem *_item;
-};
-
-class ClipItem : public QGraphicsRectItem
-{
-public:
-    ClipItem(qreal x, qreal y, qreal w, qreal h, const QPen &pen, const QBrush &brush)
-        : QGraphicsRectItem(x, y, w, h)
-    {
-        setPen(pen);
-        setBrush(brush);
-    }
-
-    QPainterPath shape() const
-    {
-        QPainterPath path;
-        path.addRect(rect());
-        return path;
-    }
-};
-
-class CountView : public QGraphicsView
-{
-protected:
-    void paintEvent(QPaintEvent *event)
-    {
-        static int n = 0;
-        if (n)
-            CALLGRIND_START_INSTRUMENTATION
-        QGraphicsView::paintEvent(event);
-        if (n)
-            CALLGRIND_STOP_INSTRUMENTATION
-        if (++n == 500)
-            qApp->quit();
-    }
-};
-
-int main(int argc, char *argv[])
-{
-    QApplication app(argc, argv);
-
-    QGraphicsScene scene;
-    scene.setItemIndexMethod(QGraphicsScene::NoIndex);
-
-    ClipItem *clipItem = new ClipItem(0, 0, 100, 100, QPen(), QBrush(Qt::blue));
-    clipItem->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
-    clipItem->setData(0, "clipItem");
-    scene.addItem(clipItem);
-
-    QGraphicsRectItem *scrollItem = scene.addRect(0, 0, 10, 10, QPen(Qt::NoPen), QBrush(Qt::NoBrush));
-    scrollItem->setParentItem(clipItem);
-    scrollItem->setFlag(QGraphicsItem::ItemIsMovable);
-    scrollItem->setData(0, "scrollItem");
-
-    for (int y = 0; y < 25; ++y) {
-        for (int x = 0; x < 25; ++x) {
-            ClipItem *rect = new ClipItem(0, 0, 90, 20, QPen(Qt::NoPen), QBrush(Qt::green));
-            rect->setParentItem(scrollItem);
-            rect->setPos(x * 95, y * 25);
-            rect->setData(0, qPrintable(QString("rect %1 %2").arg(x).arg(y)));
-            rect->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
-
-            QGraphicsEllipseItem *ellipse = new QGraphicsEllipseItem(-5, -5, 10, 10);
-            ellipse->setPen(QPen(Qt::NoPen));
-            ellipse->setBrush(QBrush(Qt::yellow));
-            ellipse->setParentItem(rect);
-            ellipse->setData(0, qPrintable(QString("ellipse %1 %2").arg(x).arg(y)));
-        }
-    }
-
-    scrollItem->setRect(scrollItem->childrenBoundingRect());
-
-#if 0
-    ItemMover mover(scrollItem);
-#endif
-
-    CountView view;
-    view.setScene(&scene);
-    view.setSceneRect(-25, -25, 150, 150);
-    view.resize(300, 300);
-    view.show();
-
-    return app.exec();
-}
-
-#include "main.moc"
diff --git a/tests/benchmarks/qgraphicsview/benchapps/scrolltest/scrolltest.pro b/tests/benchmarks/qgraphicsview/benchapps/scrolltest/scrolltest.pro
deleted file mode 100644
index 28dcadc..0000000
--- a/tests/benchmarks/qgraphicsview/benchapps/scrolltest/scrolltest.pro
+++ /dev/null
@@ -1 +0,0 @@
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qgraphicsview/chiptester/chip.cpp b/tests/benchmarks/qgraphicsview/chiptester/chip.cpp
deleted file mode 100644
index 4c1020a..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/chip.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "chip.h"
-
-#include <QtGui>
-
-Chip::Chip(const QColor &color, int x, int y)
-{
-    this->x = x;
-    this->y = y;
-    this->color = color;
-    setZValue((x + y) % 2);
-
-    setFlags(ItemIsSelectable | ItemIsMovable);
-    setAcceptsHoverEvents(true);
-}
-
-QRectF Chip::boundingRect() const
-{
-    return QRectF(0, 0, 110, 70);
-}
-
-QPainterPath Chip::shape() const
-{
-    QPainterPath path;
-    path.addRect(14, 14, 82, 42);
-    return path;
-}
-
-void Chip::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
-    Q_UNUSED(widget);
-
-    QColor fillColor = (option->state & QStyle::State_Selected) ? color.dark(150) : color;
-    if (option->state & QStyle::State_MouseOver)
-        fillColor = fillColor.light(125);
-
-    if (option->levelOfDetail < 0.2) {
-        if (option->levelOfDetail < 0.125) {
-            painter->fillRect(QRectF(0, 0, 110, 70), fillColor);
-            return;
-        }
-
-        QBrush b = painter->brush();
-        painter->setBrush(fillColor);
-        painter->drawRect(13, 13, 97, 57);
-        painter->setBrush(b);
-        return;
-    }
-
-    QPen oldPen = painter->pen();
-    QPen pen = oldPen;
-    int width = 0;
-    if (option->state & QStyle::State_Selected)
-        width += 2;
-
-    pen.setWidth(width);
-    QBrush b = painter->brush();
-    painter->setBrush(QBrush(fillColor.dark(option->state & QStyle::State_Sunken ? 120 : 100)));
-
-    painter->drawRect(QRect(14, 14, 79, 39));
-    painter->setBrush(b);
-
-    if (option->levelOfDetail >= 1) {
-        painter->setPen(QPen(Qt::gray, 1));
-        painter->drawLine(15, 54, 94, 54);
-        painter->drawLine(94, 53, 94, 15);
-        painter->setPen(QPen(Qt::black, 0));
-    }
-
-    // Draw text
-    if (option->levelOfDetail >= 2) {
-        QFont font("Times", 10);
-        font.setStyleStrategy(QFont::ForceOutline);
-        painter->setFont(font);
-        painter->save();
-        painter->scale(0.1, 0.1);
-        painter->drawText(170, 180, QString("Model: VSC-2000 (Very Small Chip) at %1x%2").arg(x).arg(y));
-        painter->drawText(170, 200, QString("Serial number: DLWR-WEER-123L-ZZ33-SDSJ"));
-        painter->drawText(170, 220, QString("Manufacturer: Chip Manufacturer"));
-        painter->restore();
-    }
-
-    // Draw lines
-    QVarLengthArray<QLineF, 36> lines;
-    if (option->levelOfDetail >= 0.5) {
-        for (int i = 0; i <= 10; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
-            lines.append(QLineF(18 + 7 * i, 13, 18 + 7 * i, 5));
-            lines.append(QLineF(18 + 7 * i, 54, 18 + 7 * i, 62));
-        }
-        for (int i = 0; i <= 6; i += (option->levelOfDetail > 0.5 ? 1 : 2)) {
-            lines.append(QLineF(5, 18 + i * 5, 13, 18 + i * 5));
-            lines.append(QLineF(94, 18 + i * 5, 102, 18 + i * 5));
-        }
-    }
-    if (option->levelOfDetail >= 0.4) {
-        const QLineF lineData[] = {
-            QLineF(25, 35, 35, 35),
-            QLineF(35, 30, 35, 40),
-            QLineF(35, 30, 45, 35),
-            QLineF(35, 40, 45, 35),
-            QLineF(45, 30, 45, 40),
-            QLineF(45, 35, 55, 35)
-        };
-        lines.append(lineData, 6);
-    }
-    painter->drawLines(lines.data(), lines.size());
-
-    // Draw red ink
-    if (stuff.size() > 1) {
-        QPen p = painter->pen();
-        painter->setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
-        painter->setBrush(Qt::NoBrush);
-        QPainterPath path;
-        path.moveTo(stuff.first());
-        for (int i = 1; i < stuff.size(); ++i)
-            path.lineTo(stuff.at(i));
-        painter->drawPath(path);
-        painter->setPen(p);
-    }
-}
-
-void Chip::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    QGraphicsItem::mousePressEvent(event);
-    update();
-}
-
-void Chip::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event->modifiers() & Qt::ShiftModifier) {
-        stuff << event->pos();
-        update();
-        return;
-    }
-    QGraphicsItem::mouseMoveEvent(event);
-}
-
-void Chip::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    QGraphicsItem::mouseReleaseEvent(event);
-    update();
-}
diff --git a/tests/benchmarks/qgraphicsview/chiptester/chip.h b/tests/benchmarks/qgraphicsview/chiptester/chip.h
deleted file mode 100644
index 9db23f9..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/chip.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CHIP_H
-#define CHIP_H
-
-#include <QtGui/QColor>
-#include <QtGui/QGraphicsItem>
-
-class Chip : public QGraphicsItem
-{
-public:
-    Chip(const QColor &color, int x, int y);
-
-    QRectF boundingRect() const;
-    QPainterPath shape() const;
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *item, QWidget *widget);
-
-protected:
-    void mousePressEvent(QGraphicsSceneMouseEvent *event);
-    void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-
-private:
-    int x, y;
-    QColor color;
-    QList<QPointF> stuff;
-};
-
-#endif
diff --git a/tests/benchmarks/qgraphicsview/chiptester/chiptester.cpp b/tests/benchmarks/qgraphicsview/chiptester/chiptester.cpp
deleted file mode 100644
index 8cada67..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/chiptester.cpp
+++ /dev/null
@@ -1,144 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "chiptester.h"
-#include "chip.h"
-
-#include <QtGui>
-#ifndef QT_NO_OPENGL
-#include <QtOpenGL>
-#endif
-
-ChipTester::ChipTester(QWidget *parent)
-    : QGraphicsView(parent),
-      npaints(0)
-{
-    resize(400, 300);
-    setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    setFrameStyle(0);
-    setTransformationAnchor(NoAnchor);
-
-    populateScene();
-    setScene(scene);
-
-    setWindowTitle(tr("Chip Demo"));
-}
-
-void ChipTester::setAntialias(bool enabled)
-{
-    setRenderHint(QPainter::Antialiasing, enabled);
-}
-
-void ChipTester::setOpenGL(bool enabled)
-{
-#ifndef QT_NO_OPENGL
-    setViewport(enabled ? new QGLWidget(QGLFormat(QGL::SampleBuffers)) : 0);
-#endif
-}
-
-void ChipTester::setOperation(Operation operation)
-{
-    this->operation = operation;
-}
-
-void ChipTester::runBenchmark()
-{
-    npaints = 0;
-    timerId = startTimer(0);
-    stopWatch.start();
-    eventLoop.exec();
-    killTimer(timerId);
-}
-
-void ChipTester::paintEvent(QPaintEvent *event)
-{
-    QGraphicsView::paintEvent(event);
-    if (++npaints == 50)
-	eventLoop.quit();
-}
-
-void ChipTester::timerEvent(QTimerEvent *)
-{
-    switch (operation) {
-    case Rotate360:
-	rotate(1);
-	break;
-    case ZoomInOut: {
-	qreal s = 0.05 + (npaints / 20.0);
-	setTransform(QTransform().scale(s, s));
-	break;
-    }
-    case Translate: {
-	int offset = horizontalScrollBar()->minimum()
-	    + (npaints % (horizontalScrollBar()->maximum() - horizontalScrollBar()->minimum()));
-	horizontalScrollBar()->setValue(offset);
-	break;
-    }
-    }
-}
-
-void ChipTester::populateScene()
-{
-    scene = new QGraphicsScene;
-
-    QImage image(":/qt4logo.png");
-
-    // Populate scene
-    int xx = 0;
-    int nitems = 0;
-    for (int i = -1100; i < 1100; i += 110) {
-        ++xx;
-        int yy = 0;
-        for (int j = -700; j < 700; j += 70) {
-            ++yy;
-            qreal x = (i + 1100) / 2200.0;
-            qreal y = (j + 700) / 1400.0;
-
-            QColor color(image.pixel(int(image.width() * x), int(image.height() * y)));
-            QGraphicsItem *item = new Chip(color, xx, yy);
-            item->setPos(QPointF(i, j));
-            scene->addItem(item);
-
-            ++nitems;
-        }
-    }
-}
diff --git a/tests/benchmarks/qgraphicsview/chiptester/chiptester.h b/tests/benchmarks/qgraphicsview/chiptester/chiptester.h
deleted file mode 100644
index 1a73bb7..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/chiptester.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CHIPTESTER_H
-#define CHIPTESTER_H
-
-#include <QtGui>
-
-QT_FORWARD_DECLARE_CLASS(QGraphicsScene)
-QT_FORWARD_DECLARE_CLASS(QGraphicsView)
-QT_FORWARD_DECLARE_CLASS(QLabel)
-QT_FORWARD_DECLARE_CLASS(QSlider)
-QT_FORWARD_DECLARE_CLASS(QSplitter)
-
-class ChipTester : public QGraphicsView
-{
-    Q_OBJECT
-public:
-    enum Operation {
-	Rotate360,
-	ZoomInOut,
-	Translate
-    };
-    ChipTester(QWidget *parent = 0);
-    
-    void setAntialias(bool enabled);
-    void setOpenGL(bool enabled);
-    void runBenchmark();
-    void setOperation(Operation operation);
-
-protected:
-    void paintEvent(QPaintEvent *event);
-    void timerEvent(QTimerEvent *event);
-
-private:
-    void populateScene();
-
-    QGraphicsView *view;    
-    QGraphicsScene *scene;
-    int npaints;
-    int timerId;
-    QEventLoop eventLoop;
-    QTime stopWatch;
-    Operation operation;
-};
-
-#endif
diff --git a/tests/benchmarks/qgraphicsview/chiptester/chiptester.pri b/tests/benchmarks/qgraphicsview/chiptester/chiptester.pri
deleted file mode 100644
index a9e0bf8..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/chiptester.pri
+++ /dev/null
@@ -1,12 +0,0 @@
-SOURCES += \
-	chiptester/chiptester.cpp \
-	chiptester/chip.cpp
-
-HEADERS += \
-	chiptester/chiptester.h \
-	chiptester/chip.h
-
-RESOURCES += \
-        chiptester/images.qrc
-
-contains(QT_CONFIG, opengl) QT += opengl
diff --git a/tests/benchmarks/qgraphicsview/chiptester/images.qrc b/tests/benchmarks/qgraphicsview/chiptester/images.qrc
deleted file mode 100644
index 73e8620..0000000
--- a/tests/benchmarks/qgraphicsview/chiptester/images.qrc
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
-    <file>qt4logo.png</file>
-</qresource>
-</RCC>
diff --git a/tests/benchmarks/qgraphicsview/chiptester/qt4logo.png b/tests/benchmarks/qgraphicsview/chiptester/qt4logo.png
deleted file mode 100644
index 157e86e..0000000
Binary files a/tests/benchmarks/qgraphicsview/chiptester/qt4logo.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/images/designer.png b/tests/benchmarks/qgraphicsview/images/designer.png
deleted file mode 100644
index 0988fce..0000000
Binary files a/tests/benchmarks/qgraphicsview/images/designer.png and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/images/wine-big.jpeg b/tests/benchmarks/qgraphicsview/images/wine-big.jpeg
deleted file mode 100644
index 9900a50..0000000
Binary files a/tests/benchmarks/qgraphicsview/images/wine-big.jpeg and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/images/wine.jpeg b/tests/benchmarks/qgraphicsview/images/wine.jpeg
deleted file mode 100644
index 8fe1d3a..0000000
Binary files a/tests/benchmarks/qgraphicsview/images/wine.jpeg and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/qgraphicsview.pro b/tests/benchmarks/qgraphicsview/qgraphicsview.pro
deleted file mode 100644
index 927d731..0000000
--- a/tests/benchmarks/qgraphicsview/qgraphicsview.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qgraphicsview
-
-SOURCES += tst_qgraphicsview.cpp
-RESOURCES += qgraphicsview.qrc
-
-include(chiptester/chiptester.pri)
-
-symbian {
-   qt_not_deployed {
-      plugins.sources = qjpeg.dll
-      plugins.path = imageformats
-      DEPLOYMENT += plugins
-   }
-}
diff --git a/tests/benchmarks/qgraphicsview/qgraphicsview.qrc b/tests/benchmarks/qgraphicsview/qgraphicsview.qrc
deleted file mode 100644
index 3681648..0000000
--- a/tests/benchmarks/qgraphicsview/qgraphicsview.qrc
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
-    <file>images/designer.png</file>
-    <file>images/wine.jpeg</file>
-    <file>images/wine-big.jpeg</file>
-    <file>random.data</file>
-</qresource>
-</RCC>
-
diff --git a/tests/benchmarks/qgraphicsview/random.data b/tests/benchmarks/qgraphicsview/random.data
deleted file mode 100644
index 190a36c..0000000
Binary files a/tests/benchmarks/qgraphicsview/random.data and /dev/null differ
diff --git a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
deleted file mode 100644
index 4cb07db..0000000
--- a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
+++ /dev/null
@@ -1,908 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QDebug>
-#include <QGraphicsItem>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-#include <QImage>
-#ifdef Q_WS_X11
-QT_BEGIN_NAMESPACE
-extern void qt_x11_wait_for_window_manager(QWidget *);
-QT_END_NAMESPACE
-#endif
-#include "chiptester/chiptester.h"
-//#define CALLGRIND_DEBUG
-#ifdef CALLGRIND_DEBUG
-#include "valgrind/callgrind.h"
-#endif
-
-//TESTED_FILES=
-
-class QEventWaiter : public QEventLoop
-{
-public:
-    QEventWaiter(QObject *receiver, QEvent::Type type)
-        : waiting(false), t(type)
-    {
-        receiver->installEventFilter(this);
-    }
-
-    void wait()
-    {
-        waiting = true;
-        exec();
-    }
-
-    bool eventFilter(QObject *receiver, QEvent *event)
-    {
-        Q_UNUSED(receiver);
-        if (waiting && event->type() == t) {
-            waiting = false;
-            exit();
-        }
-        return false;
-    }
-
-private:
-    bool waiting;
-    QEvent::Type t;
-};
-
-class tst_QGraphicsView : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QGraphicsView();
-    virtual ~tst_QGraphicsView();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void construct();
-    void paintSingleItem();
-    void paintDeepStackingItems();
-    void paintDeepStackingItems_clipped();
-    void moveSingleItem();
-    void mapPointToScene_data();
-    void mapPointToScene();
-    void mapPointFromScene_data();
-    void mapPointFromScene();
-    void mapRectToScene_data();
-    void mapRectToScene();
-    void mapRectFromScene_data();
-    void mapRectFromScene();
-    void chipTester_data();
-    void chipTester();
-    void deepNesting_data();
-    void deepNesting();
-    void imageRiver_data();
-    void imageRiver();
-    void textRiver_data();
-    void textRiver();
-    void moveItemCache_data();
-    void moveItemCache();
-    void paintItemCache_data();
-    void paintItemCache();
-};
-
-tst_QGraphicsView::tst_QGraphicsView()
-{
-}
-
-tst_QGraphicsView::~tst_QGraphicsView()
-{
-}
-
-void tst_QGraphicsView::init()
-{
-}
-
-void tst_QGraphicsView::cleanup()
-{
-}
-
-void tst_QGraphicsView::construct()
-{
-    QBENCHMARK {
-        QGraphicsView view;
-    }
-}
-
-void tst_QGraphicsView::paintSingleItem()
-{
-    QGraphicsScene scene(0, 0, 100, 100);
-    scene.addRect(0, 0, 10, 10);
-
-    QGraphicsView view(&scene);
-    view.show();
-    view.resize(100, 100);
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-
-    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
-    QPainter painter(&image);
-    QBENCHMARK {
-        view.viewport()->render(&painter);
-    }
-}
-
-#ifdef Q_OS_SYMBIAN
-#  define DEEP_STACKING_COUNT 85
-#else
-#  define DEEP_STACKING_COUNT 1000
-#endif
-
-void tst_QGraphicsView::paintDeepStackingItems()
-{
-    QGraphicsScene scene(0, 0, 100, 100);
-    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
-    QGraphicsRectItem *lastRect = item;
-    for (int i = 0; i < DEEP_STACKING_COUNT; ++i) {
-        QGraphicsRectItem *rect = scene.addRect(0, 0, 10, 10);
-        rect->setPos(1, 1);
-        rect->setParentItem(lastRect);
-        lastRect = rect;
-    }
-
-    QGraphicsView view(&scene);
-    view.show();
-    view.resize(100, 100);
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-
-    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
-    QPainter painter(&image);
-    QBENCHMARK {
-        view.viewport()->render(&painter);
-    }
-}
-
-void tst_QGraphicsView::paintDeepStackingItems_clipped()
-{
-    QGraphicsScene scene(0, 0, 100, 100);
-    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
-    item->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
-    QGraphicsRectItem *lastRect = item;
-    for (int i = 0; i < DEEP_STACKING_COUNT; ++i) {
-        QGraphicsRectItem *rect = scene.addRect(0, 0, 10, 10);
-        rect->setPos(1, 1);
-        rect->setParentItem(lastRect);
-        lastRect = rect;
-    }
-
-    QGraphicsView view(&scene);
-    view.show();
-    view.resize(100, 100);
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-
-    QImage image(100, 100, QImage::Format_ARGB32_Premultiplied);
-    QPainter painter(&image);
-    QBENCHMARK {
-        view.viewport()->render(&painter);
-    }
-}
-
-void tst_QGraphicsView::moveSingleItem()
-{
-    QGraphicsScene scene(0, 0, 100, 100);
-    QGraphicsRectItem *item = scene.addRect(0, 0, 10, 10);
-
-    QGraphicsView view(&scene);
-    view.show();
-    view.resize(100, 100);
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-
-    QEventWaiter waiter(view.viewport(), QEvent::Paint);
-    int n = 1;
-    QBENCHMARK {
-        item->setPos(25 * n, 25 * n);
-        waiter.wait();
-        n = n ? 0 : 1;
-    }
-}
-
-void tst_QGraphicsView::mapPointToScene_data()
-{
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<QPoint>("point");
-
-    QTest::newRow("null") << QTransform() << QPoint();
-    QTest::newRow("identity  QPoint(100, 100)") << QTransform() << QPoint(100, 100);
-    QTest::newRow("rotate    QPoint(100, 100)") << QTransform().rotate(90) << QPoint(100, 100);
-    QTest::newRow("scale     QPoint(100, 100)") << QTransform().scale(5, 5) << QPoint(100, 100);
-    QTest::newRow("translate QPoint(100, 100)") << QTransform().translate(5, 5) << QPoint(100, 100);
-    QTest::newRow("shear     QPoint(100, 100)") << QTransform().shear(1.5, 1.5) << QPoint(100, 100);
-    QTest::newRow("perspect  QPoint(100, 100)") << QTransform().rotate(45, Qt::XAxis) << QPoint(100, 100);
-}
-
-void tst_QGraphicsView::mapPointToScene()
-{
-    QFETCH(QTransform, transform);
-    QFETCH(QPoint, point);
-
-    QGraphicsView view;
-    view.setTransform(transform);
-    QBENCHMARK {
-        view.mapToScene(point);
-    }
-}
-
-void tst_QGraphicsView::mapPointFromScene_data()
-{
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<QPointF>("point");
-
-    QTest::newRow("null") << QTransform() << QPointF();
-    QTest::newRow("identity  QPointF(100, 100)") << QTransform() << QPointF(100, 100);
-    QTest::newRow("rotate    QPointF(100, 100)") << QTransform().rotate(90) << QPointF(100, 100);
-    QTest::newRow("scale     QPointF(100, 100)") << QTransform().scale(5, 5) << QPointF(100, 100);
-    QTest::newRow("translate QPointF(100, 100)") << QTransform().translate(5, 5) << QPointF(100, 100);
-    QTest::newRow("shear     QPointF(100, 100)") << QTransform().shear(1.5, 1.5) << QPointF(100, 100);
-    QTest::newRow("perspect  QPointF(100, 100)") << QTransform().rotate(45, Qt::XAxis) << QPointF(100, 100);
-}
-
-void tst_QGraphicsView::mapPointFromScene()
-{
-    QFETCH(QTransform, transform);
-    QFETCH(QPointF, point);
-
-    QGraphicsView view;
-    view.setTransform(transform);
-    QBENCHMARK {
-        view.mapFromScene(point);
-    }
-}
-
-void tst_QGraphicsView::mapRectToScene_data()
-{
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<QRect>("rect");
-
-    QTest::newRow("null") << QTransform() << QRect();
-    QTest::newRow("identity  QRect(0, 0, 100, 100)") << QTransform() << QRect(0, 0, 100, 100);
-    QTest::newRow("rotate    QRect(0, 0, 100, 100)") << QTransform().rotate(90) << QRect(0, 0, 100, 100);
-    QTest::newRow("scale     QRect(0, 0, 100, 100)") << QTransform().scale(5, 5) << QRect(0, 0, 100, 100);
-    QTest::newRow("translate QRect(0, 0, 100, 100)") << QTransform().translate(5, 5) << QRect(0, 0, 100, 100);
-    QTest::newRow("shear     QRect(0, 0, 100, 100)") << QTransform().shear(1.5, 1.5) << QRect(0, 0, 100, 100);
-    QTest::newRow("perspect  QRect(0, 0, 100, 100)") << QTransform().rotate(45, Qt::XAxis) << QRect(0, 0, 100, 100);
-}
-
-void tst_QGraphicsView::mapRectToScene()
-{
-    QFETCH(QTransform, transform);
-    QFETCH(QRect, rect);
-
-    QGraphicsView view;
-    view.setTransform(transform);
-    QBENCHMARK {
-        view.mapToScene(rect);
-    }
-}
-
-void tst_QGraphicsView::mapRectFromScene_data()
-{
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<QRectF>("rect");
-
-    QTest::newRow("null") << QTransform() << QRectF();
-    QTest::newRow("identity  QRectF(0, 0, 100, 100)") << QTransform() << QRectF(0, 0, 100, 100);
-    QTest::newRow("rotate    QRectF(0, 0, 100, 100)") << QTransform().rotate(90) << QRectF(0, 0, 100, 100);
-    QTest::newRow("scale     QRectF(0, 0, 100, 100)") << QTransform().scale(5, 5) << QRectF(0, 0, 100, 100);
-    QTest::newRow("translate QRectF(0, 0, 100, 100)") << QTransform().translate(5, 5) << QRectF(0, 0, 100, 100);
-    QTest::newRow("shear     QRectF(0, 0, 100, 100)") << QTransform().shear(1.5, 1.5) << QRectF(0, 0, 100, 100);
-    QTest::newRow("perspect  QRectF(0, 0, 100, 100)") << QTransform().rotate(45, Qt::XAxis) << QRectF(0, 0, 100, 100);
-}
-
-void tst_QGraphicsView::mapRectFromScene()
-{
-    QFETCH(QTransform, transform);
-    QFETCH(QRectF, rect);
-
-    QGraphicsView view;
-    view.setTransform(transform);
-    QBENCHMARK {
-        view.mapFromScene(rect);
-    }
-}
-
-void tst_QGraphicsView::chipTester_data()
-{
-    QTest::addColumn<bool>("antialias");
-    QTest::addColumn<bool>("opengl");
-    QTest::addColumn<int>("operation");
-    QTest::newRow("rotate, normal") << false << false << 0;
-    QTest::newRow("rotate, normal, antialias") << true << false << 0;
-    QTest::newRow("rotate, opengl") << false << true << 0;
-    QTest::newRow("rotate, opengl, antialias") << true << true << 0;
-    QTest::newRow("zoom, normal") << false << false << 1;
-    QTest::newRow("zoom, normal, antialias") << true << false << 1;
-    QTest::newRow("zoom, opengl") << false << true << 1;
-    QTest::newRow("zoom, opengl, antialias") << true << true << 1;
-    QTest::newRow("translate, normal") << false << false << 2;
-    QTest::newRow("translate, normal, antialias") << true << false << 2;
-    QTest::newRow("translate, opengl") << false << true << 2;
-    QTest::newRow("translate, opengl, antialias") << true << true << 2;
-}
-
-void tst_QGraphicsView::chipTester()
-{
-    QFETCH(bool, antialias);
-    QFETCH(bool, opengl);
-    QFETCH(int, operation);
-
-    ChipTester tester;
-    tester.show();
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&tester);
-#endif
-    tester.setAntialias(antialias);
-    tester.setOpenGL(opengl);
-    tester.setOperation(ChipTester::Operation(operation));
-    QBENCHMARK {
-        tester.runBenchmark();
-    }
-}
-
-static void addChildHelper(QGraphicsItem *parent, int n, bool rotate)
-{
-    if (!n)
-        return;
-    QGraphicsRectItem *item = new QGraphicsRectItem(QRectF(0, 0, 50, 50), parent);
-    item->setPos(10, 10);
-    if (rotate)
-        item->rotate(10);
-    addChildHelper(item, n - 1, rotate);
-}
-
-void tst_QGraphicsView::deepNesting_data()
-{
-    QTest::addColumn<bool>("rotate");
-    QTest::addColumn<bool>("sortCache");
-    QTest::addColumn<bool>("bsp");
-
-    QTest::newRow("bsp, no transform") << false << false << true;
-    QTest::newRow("bsp, rotation") << true << false << true;
-    QTest::newRow("bsp, no transform, sort cache") << false << true << true;
-    QTest::newRow("bsp, rotation, sort cache") << true << true << true;
-    QTest::newRow("no transform") << false << false << false;
-    QTest::newRow("rotation") << true << false << false;
-    QTest::newRow("no transform, sort cache") << false << true << false;
-    QTest::newRow("rotation, sort cache") << true << true << false;
-}
-
-void tst_QGraphicsView::deepNesting()
-{
-    QFETCH(bool, rotate);
-    QFETCH(bool, sortCache);
-    QFETCH(bool, bsp);
-
-    QGraphicsScene scene;
-    for (int y = 0; y < 15; ++y) {
-        for (int x = 0; x < 15; ++x) {
-            QGraphicsItem *item1 = scene.addRect(QRectF(0, 0, 50, 50));
-            if (rotate) item1->rotate(10);
-            item1->setPos(x * 25, y * 25);
-            addChildHelper(item1, 30, rotate);
-        }
-    }
-    scene.setItemIndexMethod(bsp ? QGraphicsScene::BspTreeIndex : QGraphicsScene::NoIndex);
-    scene.setSortCacheEnabled(sortCache);
-
-    QGraphicsView view(&scene);
-    view.setRenderHint(QPainter::Antialiasing);
-    view.show();
-#ifdef Q_WS_X11
-    qt_x11_wait_for_window_manager(&view);
-#endif
-    QTest::qWait(250);
-
-    QBENCHMARK {
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_START_INSTRUMENTATION
-#endif
-        view.viewport()->repaint();
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_STOP_INSTRUMENTATION
-#endif
-    }
-}
-
-class AnimatedPixmapItem : public QGraphicsPixmapItem
-{
-public:
-    AnimatedPixmapItem(int x, int y, bool rot, bool scal, QGraphicsItem *parent = 0)
-        : QGraphicsPixmapItem(parent), rotateFactor(0), scaleFactor(0)
-    {
-        rotate = rot;
-        scale = scal;
-        xspeed = x;
-        yspeed = y;
-    }
-
-protected:
-    void advance(int i)
-    {
-        if (!i)
-            return;
-        int x = int(pos().x()) + pixmap().width();
-        x += xspeed;
-        x = (x % (300 + pixmap().width() * 2)) - pixmap().width();
-        int y = int(pos().y()) + pixmap().width();
-        y += yspeed;
-        y = (y % (300 + pixmap().width() * 2)) - pixmap().width();
-        setPos(x, y);
-
-        int rot = rotateFactor;
-        int sca = scaleFactor;
-        if (rotate)
-            rotateFactor = 1 + (rot + xspeed) % 360;
-        if (scale)
-            scaleFactor = 1 + (sca + yspeed) % 50;
-
-        if (rotate || scale) {
-            qreal s = 0.5 + scaleFactor / 50.0;
-            setTransform(QTransform().rotate(rotateFactor).scale(s, s));
-        }
-    }
-
-private:
-    int xspeed;
-    int yspeed;
-    int rotateFactor;
-    int scaleFactor;
-    bool rotate;
-    bool scale;
-};
-
-class CountPaintEventView : public QGraphicsView
-{
-public:
-    CountPaintEventView(QGraphicsScene *scene = 0)
-        : QGraphicsView(scene), count(0)
-    { }
-
-    int count;
-
-protected:
-    void paintEvent(QPaintEvent *event)
-    {
-        ++count;
-        QGraphicsView::paintEvent(event);
-    };
-};
-
-void tst_QGraphicsView::imageRiver_data()
-{
-    QTest::addColumn<int>("direction");
-    QTest::addColumn<bool>("rotation");
-    QTest::addColumn<bool>("scale");
-    QTest::newRow("horizontal") << 0 << false << false;
-    QTest::newRow("vertical") << 1 << false << false;
-    QTest::newRow("both") << 2 << false << false;
-    QTest::newRow("horizontal rot") << 0 << true << false;
-    QTest::newRow("horizontal scale") << 0 << false << true;
-    QTest::newRow("horizontal rot + scale") << 0 << true << true;
-}
-
-void tst_QGraphicsView::imageRiver()
-{
-    QFETCH(int, direction);
-    QFETCH(bool, rotation);
-    QFETCH(bool, scale);
-
-    QGraphicsScene scene(0, 0, 300, 300);
-
-    CountPaintEventView view(&scene);
-    view.resize(300, 300);
-    view.setFrameStyle(0);
-    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.show();
-
-    QPixmap pix(":/images/designer.png");
-    QVERIFY(!pix.isNull());
-
-    QList<QGraphicsItem *> items;
-    QFile file(":/random.data");
-    QVERIFY(file.open(QIODevice::ReadOnly));
-    QDataStream str(&file);
-    for (int i = 0; i < 100; ++i) {
-        AnimatedPixmapItem *item;
-        if (direction == 0) item = new AnimatedPixmapItem((i % 4) + 1, 0, rotation, scale);
-        if (direction == 1) item = new AnimatedPixmapItem(0, (i % 4) + 1, rotation, scale);
-        if (direction == 2) item = new AnimatedPixmapItem((i % 4) + 1, (i % 4) + 1, rotation, scale);
-        item->setPixmap(pix);
-        int rnd1, rnd2;
-        str >> rnd1 >> rnd2;
-        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
-                     -pix.height() + rnd2 % (view.height() + pix.height()));
-        scene.addItem(item);
-    }
-
-    view.count = 0;
-
-    QBENCHMARK {
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_START_INSTRUMENTATION
-#endif
-        for (int i = 0; i < 100; ++i) {
-            scene.advance();
-            while (view.count < (i+1))
-                qApp->processEvents();
-        }
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_STOP_INSTRUMENTATION
-#endif
-    }
-}
-
-class AnimatedTextItem : public QGraphicsSimpleTextItem
-{
-public:
-    AnimatedTextItem(int x, int y, bool rot, bool scal, QGraphicsItem *parent = 0)
-        : QGraphicsSimpleTextItem(parent), rotateFactor(0), scaleFactor(25)
-    {
-        setText("River of text");
-        rotate = rot;
-        scale = scal;
-        xspeed = x;
-        yspeed = y;
-    }
-
-protected:
-    void advance(int i)
-    {
-        if (!i)
-            return;
-        QRect r = boundingRect().toRect();
-        int x = int(pos().x()) + r.width();
-        x += xspeed;
-        x = (x % (300 + r.width() * 2)) - r.width();
-        int y = int(pos().y()) + r.width();
-        y += yspeed;
-        y = (y % (300 + r.width() * 2)) - r.width();
-        setPos(x, y);
-
-        int rot = rotateFactor;
-        int sca = scaleFactor;
-        if (rotate)
-            rotateFactor = 1 + (rot + xspeed) % 360;
-        if (scale)
-            scaleFactor = 1 + (sca + yspeed) % 50;
-
-        if (rotate || scale) {
-            qreal s = 0.5 + scaleFactor / 50.0;
-            setTransform(QTransform().rotate(rotateFactor).scale(s, s));
-        }
-    }
-
-private:
-    int xspeed;
-    int yspeed;
-    int rotateFactor;
-    int scaleFactor;
-    bool rotate;
-    bool scale;
-};
-
-void tst_QGraphicsView::textRiver_data()
-{
-    QTest::addColumn<int>("direction");
-    QTest::addColumn<bool>("rotation");
-    QTest::addColumn<bool>("scale");
-    QTest::newRow("horizontal") << 0 << false << false;
-    QTest::newRow("vertical") << 1 << false << false;
-    QTest::newRow("both") << 2 << false << false;
-    QTest::newRow("horizontal rot") << 0 << true << false;
-    QTest::newRow("horizontal scale") << 0 << false << true;
-    QTest::newRow("horizontal rot + scale") << 0 << true << true;
-}
-
-void tst_QGraphicsView::textRiver()
-{
-    QFETCH(int, direction);
-    QFETCH(bool, rotation);
-    QFETCH(bool, scale);
-
-    QGraphicsScene scene(0, 0, 300, 300);
-
-    CountPaintEventView view(&scene);
-    view.resize(300, 300);
-    view.setFrameStyle(0);
-    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.show();
-
-    QPixmap pix(":/images/designer.png");
-    QVERIFY(!pix.isNull());
-
-    QList<QGraphicsItem *> items;
-    QFile file(":/random.data");
-    QVERIFY(file.open(QIODevice::ReadOnly));
-    QDataStream str(&file);
-    for (int i = 0; i < 100; ++i) {
-        AnimatedTextItem *item;
-        if (direction == 0) item = new AnimatedTextItem((i % 4) + 1, 0, rotation, scale);
-        if (direction == 1) item = new AnimatedTextItem(0, (i % 4) + 1, rotation, scale);
-        if (direction == 2) item = new AnimatedTextItem((i % 4) + 1, (i % 4) + 1, rotation, scale);
-        int rnd1, rnd2;
-        str >> rnd1 >> rnd2;
-        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
-                     -pix.height() + rnd2 % (view.height() + pix.height()));
-        scene.addItem(item);
-    }
-
-    view.count = 0;
-
-    QBENCHMARK {
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_START_INSTRUMENTATION
-#endif
-        for (int i = 0; i < 100; ++i) {
-            scene.advance();
-            while (view.count < (i+1))
-                qApp->processEvents();
-        }
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_STOP_INSTRUMENTATION
-#endif
-    }
-}
-
-class AnimatedPixmapCacheItem : public QGraphicsPixmapItem
-{
-public:
-    AnimatedPixmapCacheItem(int x, int y, QGraphicsItem *parent = 0)
-        : QGraphicsPixmapItem(parent)
-    {
-        xspeed = x;
-        yspeed = y;
-    }
-
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
-    {
-        QGraphicsPixmapItem::paint(painter,option,widget);
-        //We just want to wait, and we don't want to process the event loop with qWait
-        QTest::qSleep(3);
-    }
-protected:
-    void advance(int i)
-    {
-        if (!i)
-            return;
-        int x = int(pos().x()) + pixmap().width();
-        x += xspeed;
-        x = (x % (300 + pixmap().width() * 2)) - pixmap().width();
-        int y = int(pos().y()) + pixmap().width();
-        y += yspeed;
-        y = (y % (300 + pixmap().width() * 2)) - pixmap().width();
-        setPos(x, y);
-    }
-
-private:
-    int xspeed;
-    int yspeed;
-};
-
-void tst_QGraphicsView::moveItemCache_data()
-{
-    QTest::addColumn<int>("direction");
-    QTest::addColumn<bool>("rotation");
-    QTest::addColumn<int>("cacheMode");
-    QTest::newRow("Horizontal movement : ItemCoordinate Cache") << 0 << false << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Horizontal movement : DeviceCoordinate Cache") << 0 << false << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Horizontal movement : No Cache") << 0 << false << (int)QGraphicsItem::NoCache;
-    QTest::newRow("Vertical +  Horizontal movement : ItemCoordinate Cache") << 2 << false <<  (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Vertical +  Horizontal movement : DeviceCoordinate Cache") << 2 << false <<  (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Vertical +  Horizontal movement : No Cache") << 2 << false << (int)QGraphicsItem::NoCache;
-    QTest::newRow("Horizontal movement + Rotation : ItemCoordinate Cache") << 0 << true << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Horizontal movement + Rotation : DeviceCoordinate Cache") << 0 << true << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Horizontal movement + Rotation : No Cache") << 0 << true << (int)QGraphicsItem::NoCache;
-}
-
-void tst_QGraphicsView::moveItemCache()
-{
-    QFETCH(int, direction);
-    QFETCH(bool, rotation);
-    QFETCH(int, cacheMode);
-
-    QGraphicsScene scene(0, 0, 300, 300);
-
-    CountPaintEventView view(&scene);
-    view.resize(600, 600);
-    view.setFrameStyle(0);
-    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.show();
-
-    QPixmap pix(":/images/wine.jpeg");
-    QVERIFY(!pix.isNull());
-
-    QList<QGraphicsItem *> items;
-    QFile file(":/random.data");
-    QVERIFY(file.open(QIODevice::ReadOnly));
-    QDataStream str(&file);
-    for (int i = 0; i < 50; ++i) {
-        AnimatedPixmapCacheItem *item;
-        if (direction == 0) item = new AnimatedPixmapCacheItem((i % 4) + 1, 0);
-        if (direction == 1) item = new AnimatedPixmapCacheItem(0, (i % 4) + 1);
-        if (direction == 2) item = new AnimatedPixmapCacheItem((i % 4) + 1, (i % 4) + 1);
-        item->setPixmap(pix);
-        item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
-        if (rotation)
-            item->setTransform(QTransform().rotate(45));
-        int rnd1, rnd2;
-        str >> rnd1 >> rnd2;
-        item->setPos(-pix.width() + rnd1 % (view.width() + pix.width()),
-                     -pix.height() + rnd2 % (view.height() + pix.height()));
-        scene.addItem(item);
-    }
-
-    view.count = 0;
-
-    QBENCHMARK {
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_START_INSTRUMENTATION
-#endif
-        for (int i = 0; i < 100; ++i) {
-            scene.advance();
-            while (view.count < (i+1))
-                qApp->processEvents();
-        }
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_STOP_INSTRUMENTATION
-#endif
-    }
-}
-
-class UpdatedPixmapCacheItem : public QGraphicsPixmapItem
-{
-public:
-    UpdatedPixmapCacheItem(bool partial, QGraphicsItem *parent = 0)
-        : QGraphicsPixmapItem(parent), partial(partial)
-    {
-    }
-
-    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
-    {
-        QGraphicsPixmapItem::paint(painter,option,widget);
-    }
-protected:
-    void advance(int i)
-    {
-        if (partial)
-            update(QRectF(boundingRect().center().x(), boundingRect().center().x(), 30, 30));
-        else
-            update();
-    }
-
-private:
-    bool partial;
-};
-
-void tst_QGraphicsView::paintItemCache_data()
-{
-    QTest::addColumn<bool>("updatePartial");
-    QTest::addColumn<bool>("rotation");
-    QTest::addColumn<int>("cacheMode");
-    QTest::newRow("Partial Update : ItemCoordinate Cache") << true << false << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Partial Update : DeviceCoordinate Cache") << true << false << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Partial Update : No Cache") << true << false << (int)QGraphicsItem::NoCache;
-    QTest::newRow("Full Update : ItemCoordinate Cache") << false << false << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Full Update : DeviceCoordinate Cache") << false << false << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Full Update : No Cache") << false << false << (int)QGraphicsItem::NoCache;
-    QTest::newRow("Partial Update : ItemCoordinate Cache item rotated") << true << true << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Partial Update : DeviceCoordinate Cache item rotated") << true << true << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Partial Update : No Cache item rotated") << true << true << (int)QGraphicsItem::NoCache;
-    QTest::newRow("Full Update : ItemCoordinate Cache item rotated") << false  << true << (int)QGraphicsItem::ItemCoordinateCache;
-    QTest::newRow("Full Update : DeviceCoordinate Cache item rotated") << false << true << (int)QGraphicsItem::DeviceCoordinateCache;
-    QTest::newRow("Full Update : No Cache item rotated") << false << true <<(int)QGraphicsItem::NoCache;
-}
-
-void tst_QGraphicsView::paintItemCache()
-{
-    QFETCH(bool, updatePartial);
-    QFETCH(bool, rotation);
-    QFETCH(int, cacheMode);
-
-    QGraphicsScene scene(0, 0, 300, 300);
-
-    CountPaintEventView view(&scene);
-    view.resize(600, 600);
-    view.setFrameStyle(0);
-    view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-    view.show();
-
-    QPixmap pix(":/images/wine.jpeg");
-    QVERIFY(!pix.isNull());
-
-    QList<QGraphicsItem *> items;
-    QFile file(":/random.data");
-    QVERIFY(file.open(QIODevice::ReadOnly));
-    QDataStream str(&file);
-    UpdatedPixmapCacheItem *item = new UpdatedPixmapCacheItem(updatePartial);
-    item->setPixmap(pix);
-    item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
-    if (rotation)
-        item->setTransform(QTransform().rotate(45));
-    item->setPos(-100, -100);
-    scene.addItem(item);
-
-    QPixmap pix2(":/images/wine-big.jpeg");
-    item = new UpdatedPixmapCacheItem(updatePartial);
-    item->setPixmap(pix2);
-    item->setCacheMode((QGraphicsItem::CacheMode)cacheMode);
-    if (rotation)
-        item->setTransform(QTransform().rotate(45));
-    item->setPos(0, 0);
-    scene.addItem(item);
-
-    view.count = 0;
-
-    QBENCHMARK {
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_START_INSTRUMENTATION
-#endif
-        for (int i = 0; i < 50; ++i) {
-            scene.advance();
-            while (view.count < (i+1))
-                qApp->processEvents();
-        }
-#ifdef CALLGRIND_DEBUG
-        CALLGRIND_STOP_INSTRUMENTATION
-#endif
-    }
-}
-
-QTEST_MAIN(tst_QGraphicsView)
-#include "tst_qgraphicsview.moc"
diff --git a/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro b/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
deleted file mode 100644
index f1ec54e..0000000
--- a/tests/benchmarks/qgraphicswidget/qgraphicswidget.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qgraphicswidget
-TEMPLATE = app
-# Input
-SOURCES += tst_qgraphicswidget.cpp
diff --git a/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp
deleted file mode 100644
index 7db98ce..0000000
--- a/tests/benchmarks/qgraphicswidget/tst_qgraphicswidget.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QGraphicsItem>
-#include <QGraphicsScene>
-#include <QGraphicsView>
-#include <QGraphicsWidget>
-//TESTED_FILES=
-
-class tst_QGraphicsWidget : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QGraphicsWidget();
-    virtual ~tst_QGraphicsWidget();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void move();
-};
-
-tst_QGraphicsWidget::tst_QGraphicsWidget()
-{
-}
-
-tst_QGraphicsWidget::~tst_QGraphicsWidget()
-{
-}
-
-void tst_QGraphicsWidget::init()
-{
-}
-
-void tst_QGraphicsWidget::cleanup()
-{
-}
-
-void tst_QGraphicsWidget::move()
-{
-    QGraphicsScene scene;
-    QGraphicsWidget *widget = new QGraphicsWidget();
-    scene.addItem(widget);
-    QGraphicsView view(&scene);
-    view.show();
-    QBENCHMARK {
-        widget->setPos(qrand(),qrand());
-    }
-}
-
-QTEST_MAIN(tst_QGraphicsWidget)
-#include "tst_qgraphicswidget.moc"
diff --git a/tests/benchmarks/qhostinfo/main.cpp b/tests/benchmarks/qhostinfo/main.cpp
deleted file mode 100644
index 0ae1b7f..0000000
--- a/tests/benchmarks/qhostinfo/main.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-
-#include <QDebug>
-#include <QHostInfo>
-#include <QStringList>
-#include <QString>
-
-#include <qtest.h>
-#include <qtesteventloop.h>
-
-class tst_qhostinfo : public QObject
-{
-    Q_OBJECT
-private slots:
-    void lookupSpeed();
-};
-
-class SignalReceiver : public QObject
-{
-    Q_OBJECT
-public:
-    SignalReceiver(int nrc) : receiveCount(0), neededReceiveCount(nrc) {};
-    int receiveCount;
-    int neededReceiveCount;
-public slots:
-    void resultsReady(const QHostInfo) {
-        receiveCount++;
-        if (receiveCount == neededReceiveCount)
-            QTestEventLoop::instance().exitLoop();
-    }
-};
-
-void tst_qhostinfo::lookupSpeed()
-{
-    QStringList hostnameList;
-    hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
-            << "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com"
-            << "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----";
-    // also add some duplicates:
-    hostnameList << "www.nokia.com" << "127.0.0.1" << "www.trolltech.com";
-    const int COUNT = hostnameList.size();
-
-    SignalReceiver receiver(COUNT);
-
-    QBENCHMARK {
-        for (int i = 0; i < hostnameList.size(); i++)
-            QHostInfo::lookupHost(hostnameList.at(i), &receiver, SLOT(resultsReady(const QHostInfo)));
-        QTestEventLoop::instance().enterLoop(20);
-        QVERIFY(!QTestEventLoop::instance().timeout());
-    }
-}
-
-
-QTEST_MAIN(tst_qhostinfo)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qhostinfo/qhostinfo.pro b/tests/benchmarks/qhostinfo/qhostinfo.pro
deleted file mode 100755
index f18d6d7..0000000
--- a/tests/benchmarks/qhostinfo/qhostinfo.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qhostinfo
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-QT += network
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qimagereader/images/16bpp.bmp b/tests/benchmarks/qimagereader/images/16bpp.bmp
deleted file mode 100644
index 74ce63e..0000000
Binary files a/tests/benchmarks/qimagereader/images/16bpp.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/4bpp-rle.bmp b/tests/benchmarks/qimagereader/images/4bpp-rle.bmp
deleted file mode 100644
index ae71e67..0000000
Binary files a/tests/benchmarks/qimagereader/images/4bpp-rle.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/YCbCr_cmyk.jpg b/tests/benchmarks/qimagereader/images/YCbCr_cmyk.jpg
deleted file mode 100644
index b8aa9ea..0000000
Binary files a/tests/benchmarks/qimagereader/images/YCbCr_cmyk.jpg and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/YCbCr_cmyk.png b/tests/benchmarks/qimagereader/images/YCbCr_cmyk.png
deleted file mode 100644
index a24db1b..0000000
Binary files a/tests/benchmarks/qimagereader/images/YCbCr_cmyk.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/YCbCr_rgb.jpg b/tests/benchmarks/qimagereader/images/YCbCr_rgb.jpg
deleted file mode 100644
index 8771224..0000000
Binary files a/tests/benchmarks/qimagereader/images/YCbCr_rgb.jpg and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/away.png b/tests/benchmarks/qimagereader/images/away.png
deleted file mode 100644
index 0e21a37..0000000
Binary files a/tests/benchmarks/qimagereader/images/away.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/ball.mng b/tests/benchmarks/qimagereader/images/ball.mng
deleted file mode 100644
index 8154478..0000000
Binary files a/tests/benchmarks/qimagereader/images/ball.mng and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/bat1.gif b/tests/benchmarks/qimagereader/images/bat1.gif
deleted file mode 100644
index cb6f4f7..0000000
Binary files a/tests/benchmarks/qimagereader/images/bat1.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/bat2.gif b/tests/benchmarks/qimagereader/images/bat2.gif
deleted file mode 100644
index fbbda4e..0000000
Binary files a/tests/benchmarks/qimagereader/images/bat2.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/beavis.jpg b/tests/benchmarks/qimagereader/images/beavis.jpg
deleted file mode 100644
index d555047..0000000
Binary files a/tests/benchmarks/qimagereader/images/beavis.jpg and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/black.png b/tests/benchmarks/qimagereader/images/black.png
deleted file mode 100644
index 6c94085..0000000
Binary files a/tests/benchmarks/qimagereader/images/black.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/black.xpm b/tests/benchmarks/qimagereader/images/black.xpm
deleted file mode 100644
index d7925bf..0000000
--- a/tests/benchmarks/qimagereader/images/black.xpm
+++ /dev/null
@@ -1,65 +0,0 @@
-/* XPM */
-static char * ddd_xpm[] = {
-/* $Id: ddd.xpm,v 1.5 1999/08/19 11:30:07 andreas Exp $
- * DDD Logo.  Copyright (C) 1997 TU Braunschweig, Germany.
- * For details on DDD, see `http://www.gnu.org/software/ddd/'.
- * width height ncolors chars_per_pixel */
-"  48    48     8       1",
-/* Colors */
-"       c None      m None  g None   g4 None   s Background ",
-". c black     m black g black  g4 black  s Legs       ",
-"X c grey      m white g grey   g4 grey   s Body       ",
-"- c grey      m white g grey   g4 grey   s Border     ",
-"o      c #000040   m black g grey25 g4 grey25 s Handle1    ",
-"O c blue4     m black g grey25 g4 grey25 s Handle2    ",
-"+ c white     m white g white  g4 white  s Light      ",
-"*      c DarkGreen m black g grey25 g4 grey25 s Eye        ",
-/* Pixels */
-"                .            .                  ",    
-"                .           ..                  ",    
-"                 .          .                   ",    
-"                 ..        .                    ",    
-"   ..             ..      ..                    ",    
-"     ..            .     .               .      ",    
-"       .            . . .              ..       ",    
-"        .            .X.              .         ",    
-"         .          *.X.*           ..          ",    
-"         ..     ..  .XXX.  ..     ...           ",    
-"          .     .X...XXX...X.     .             ",    
-"          ..   ..XXX.XXX.XXX.   ..              ",    
-"            .....XXXX...XXXX.   .               ",    
-"             .. ..XXXXXXXXX.. ..                ",    
-"                ...XXXXXXX.....                 ",    
-"                  .........                     ",
-"                  .XXXXXXX.                     ",
-"                .....XXX.....                   ",
-"               .XXXXXoOOOOOOX.  ...             ",
-"        ..    ..XXXoOOO-----OOO.....            ",
-"       .........XXoO-----..----O   ..           ",
-"      ..    ..X..oO--.........--O   ..          ",
-"      .    ..XXXoO--..++.......--O  ..          ",
-"     ..    .XXXXO-XXX+++XXXXXXXXX-O  .          ",
-"     ..   .....oO-XX+++XXXXXXXXXXX-O  ..        ",
-"    ..    .XXXoO--XX++XXXXXXXXXXXX-O   ..       ",
-"   ..    ..XXXoO-..+++............-O     ..     ",
-"   .   .. .XXoO--..++.............-OO      ..   ",
-"  .   ... ...oO--..................-O           ",
-"..    .   .XXoO-XXXXXXXXXXXXXXXXXXX-O           ",
-"     ..   .XXoO-XXXXXXXXXXXXXXXXXXX-O           ",
-"     ..    .XoO-XXXXXXXXXXXXXXXXXXX-O.          ",
-"     .     ...oO-.................-O ..         ",
-"     .     .XXoO-.................-O ..         ",
-"     .     ..XoO-.................-O  ..        ",
-"     .      ...oO-XXXXXXXXXXXXXXX-OOO  .        ",
-"     ..      .XoOO-XXXXXXXXXXXXX-OOOOO .        ",
-"     ..      ..XoOO---.......---OOOOOO .        ",
-"     ..       ....oOO---...----OOOOOOOO         ",
-"      .        .XX..oOO-----OOOOOOOOOOO         ",
-"     .          .....OOOOOOOOooOOOOOOOOO        ",
-"     .            .XXooooooOo  oOOOOOOOOO       ",
-"    .              .XXX.         ooOOOOOOO      ",
-"  ..                ...            ooOOOOOO     ",
-"  .                                 ooOOOOOO    ",
-"                                     ooOOOOOO   ",
-"                                      ooOOOOOO  ",
-"                                       ooOOOOOO "};
diff --git a/tests/benchmarks/qimagereader/images/colorful.bmp b/tests/benchmarks/qimagereader/images/colorful.bmp
deleted file mode 100644
index 8ea6f4a..0000000
Binary files a/tests/benchmarks/qimagereader/images/colorful.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt-colors.xpm b/tests/benchmarks/qimagereader/images/corrupt-colors.xpm
deleted file mode 100644
index f8d80ed..0000000
--- a/tests/benchmarks/qimagereader/images/corrupt-colors.xpm
+++ /dev/null
@@ -1,26 +0,0 @@
-/* XPM */
-static const char *marble_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"   240   240      223            2",
-/* colors */
-".. c #959595",
-".# c #c5c5c5",
-".a c #adadad",
-".b c #dedede",
-".c c #b7b7b7",
-".d c #d2d2d2",
-".e c #bebebe",
-".f c #c9c9c9",
-".g c #b8b8b8",
-".h c #d6d6d6",
-".i c #9e9e9e",
-".j c #eaeaea",
-".k c #b2b2b2",
-".l c #cecece",
-".m c #a5a5a5",
-".n c #e4e4e4",
-".o c #c4c4c4",
-".p c #d9d9d9",
-".q c #b1b1b1",
-/* pixels */
-"aYbla9aN.N#x",
diff --git a/tests/benchmarks/qimagereader/images/corrupt-data.tif b/tests/benchmarks/qimagereader/images/corrupt-data.tif
deleted file mode 100644
index d63c688..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt-data.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt-pixels.xpm b/tests/benchmarks/qimagereader/images/corrupt-pixels.xpm
deleted file mode 100644
index 21031ee..0000000
--- a/tests/benchmarks/qimagereader/images/corrupt-pixels.xpm
+++ /dev/null
@@ -1,7 +0,0 @@
-/* XPM */
-static char * test_xpm[] = {
-"256 256 1 1",
-" 	c grey",
-"                                                                                                                                                                                                                                                                ",
-"                                                  ",
-"                                                                                                                                                                                                                                                                "};
diff --git a/tests/benchmarks/qimagereader/images/corrupt.bmp b/tests/benchmarks/qimagereader/images/corrupt.bmp
deleted file mode 100644
index 824190b..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt.gif b/tests/benchmarks/qimagereader/images/corrupt.gif
deleted file mode 100644
index 0725945..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt.jpg b/tests/benchmarks/qimagereader/images/corrupt.jpg
deleted file mode 100644
index 1959662..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt.jpg and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt.mng b/tests/benchmarks/qimagereader/images/corrupt.mng
deleted file mode 100644
index 17fd43a..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt.mng and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt.png b/tests/benchmarks/qimagereader/images/corrupt.png
deleted file mode 100644
index 9d8911c..0000000
Binary files a/tests/benchmarks/qimagereader/images/corrupt.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/corrupt.xbm b/tests/benchmarks/qimagereader/images/corrupt.xbm
deleted file mode 100644
index 8510634..0000000
--- a/tests/benchmarks/qimagereader/images/corrupt.xbm
+++ /dev/null
@@ -1,5 +0,0 @@
-#define noname_width 271
-#define noname_height 273
-static char noname_bits[] = {
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
diff --git a/tests/benchmarks/qimagereader/images/crash-signed-char.bmp b/tests/benchmarks/qimagereader/images/crash-signed-char.bmp
deleted file mode 100644
index b35cda6..0000000
Binary files a/tests/benchmarks/qimagereader/images/crash-signed-char.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/earth.gif b/tests/benchmarks/qimagereader/images/earth.gif
deleted file mode 100644
index 2c229eb..0000000
Binary files a/tests/benchmarks/qimagereader/images/earth.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/fire.mng b/tests/benchmarks/qimagereader/images/fire.mng
deleted file mode 100644
index c6695c8..0000000
Binary files a/tests/benchmarks/qimagereader/images/fire.mng and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/font.bmp b/tests/benchmarks/qimagereader/images/font.bmp
deleted file mode 100644
index 28b8c66..0000000
Binary files a/tests/benchmarks/qimagereader/images/font.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/gnus.xbm b/tests/benchmarks/qimagereader/images/gnus.xbm
deleted file mode 100644
index 58d1ac8..0000000
--- a/tests/benchmarks/qimagereader/images/gnus.xbm
+++ /dev/null
@@ -1,622 +0,0 @@
-#define noname_width 271
-#define noname_height 273
-static char noname_bits[] = {
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05,
- 0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5,
- 0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,
- 0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4,
- 0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff,
- 0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42,
- 0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24,
- 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,
- 0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55,
- 0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49,
- 0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54,
- 0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,
- 0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52,
- 0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f,
- 0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9,
- 0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5,
- 0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff,
- 0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c,
- 0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94,
- 0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe,
- 0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a,
- 0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a,
- 0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe,
- 0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42,
- 0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a,
- 0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,
- 0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5,
- 0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54,
- 0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a,
- 0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55,
- 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a,
- 0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28,
- 0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff,
- 0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85,
- 0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff,
- 0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55,
- 0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff,
- 0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff,
- 0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29,
- 0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f,
- 0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50,
- 0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2,
- 0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff,
- 0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff,
- 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92,
- 0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff,
- 0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f,
- 0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48,
- 0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff,
- 0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1,
- 0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f,
- 0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff,
- 0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5,
- 0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5,
- 0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa,
- 0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40,
- 0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff,
- 0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff,
- 0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24,
- 0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff,
- 0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8,
- 0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa,
- 0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a,
- 0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92,
- 0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94,
- 0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff,
- 0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff,
- 0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97,
- 0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff,
- 0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85,
- 0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55,
- 0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff,
- 0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82,
- 0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf,
- 0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff,
- 0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0,
- 0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f,
- 0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4,
- 0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24,
- 0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5,
- 0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f,
- 0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff,
- 0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a,
- 0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff,
- 0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e,
- 0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05,
- 0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a,
- 0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4,
- 0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff,
- 0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff,
- 0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52,
- 0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff,
- 0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20,
- 0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff,
- 0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87,
- 0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a,
- 0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff,
- 0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff,
- 0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd,
- 0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55,
- 0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21,
- 0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff,
- 0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f,
- 0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f,
- 0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff,
- 0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6,
- 0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4,
- 0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08,
- 0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa,
- 0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff,
- 0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff,
- 0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff,
- 0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,
- 0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f,
- 0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5,
- 0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff,
- 0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff,
- 0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f,
- 0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff,
- 0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,
- 0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1,
- 0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff,
- 0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5,
- 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14,
- 0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd,
- 0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b,
- 0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49,
- 0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a,
- 0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff,
- 0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54,
- 0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,
- 0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff,
- 0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa,
- 0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24,
- 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
- 0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff,
- 0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4,
- 0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff,
- 0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,
- 0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff,
- 0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff,
- 0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92,
- 0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff,
- 0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa,
- 0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2,
- 0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,
- 0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff,
- 0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14,
- 0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff,
- 0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf,
- 0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff,
- 0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff,
- 0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea,
- 0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff,
- 0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78,
- 0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff,
- 0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
- 0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b,
- 0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff,
- 0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff,
- 0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff,
- 0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff,
- 0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,
- 0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,
- 0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff,
- 0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5,
- 0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,
- 0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff,
- 0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d,
- 0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,
- 0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa,
- 0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85,
- 0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff,
- 0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa,
- 0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2,
- 0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,
- 0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff,
- 0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9,
- 0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
- 0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03,
- 0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,
- 0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5,
- 0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f,
- 0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
- 0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54,
- 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff,
- 0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd,
- 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc,
- 0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82,
- 0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5,
- 0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51,
- 0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f,
- 0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
- 0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff,
- 0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff,
- 0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc,
- 0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3,
- 0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2,
- 0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff,
- 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49,
- 0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,
- 0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,
- 0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,
- 0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
diff --git a/tests/benchmarks/qimagereader/images/image.pbm b/tests/benchmarks/qimagereader/images/image.pbm
deleted file mode 100644
index 67e5efa..0000000
--- a/tests/benchmarks/qimagereader/images/image.pbm
+++ /dev/null
@@ -1,8 +0,0 @@
-P1
-16 6
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
-1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1
diff --git a/tests/benchmarks/qimagereader/images/image.pgm b/tests/benchmarks/qimagereader/images/image.pgm
deleted file mode 100644
index 443bf40..0000000
--- a/tests/benchmarks/qimagereader/images/image.pgm
+++ /dev/null
@@ -1,10 +0,0 @@
-P2
-24 7
-15
-0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
-0  3  3  3  3  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15 15 15 15  0
-0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0 15  0
-0  3  3  3  0  0  0  7  7  7  0  0  0 11 11 11  0  0  0 15 15 15 15  0
-0  3  0  0  0  0  0  7  0  0  0  0  0 11  0  0  0  0  0 15  0  0  0  0
-0  3  0  0  0  0  0  7  7  7  7  0  0 11 11 11 11  0  0 15  0  0  0  0
-0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0
diff --git a/tests/benchmarks/qimagereader/images/image.png b/tests/benchmarks/qimagereader/images/image.png
deleted file mode 100644
index 7d4890a..0000000
Binary files a/tests/benchmarks/qimagereader/images/image.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/image.ppm b/tests/benchmarks/qimagereader/images/image.ppm
deleted file mode 100644
index 2a5640e..0000000
--- a/tests/benchmarks/qimagereader/images/image.ppm
+++ /dev/null
@@ -1,7 +0,0 @@
-P3
-4 4
-15
- 0  0  0    0  0  0    0  0  0   15  0 15
- 0  0  0    0 15  7    0  0  0    0  0  0
- 0  0  0    0  0  0    0 15  7    0  0  0
-15  0 15    0  0  0    0  0  0    0  0  0
\ No newline at end of file
diff --git a/tests/benchmarks/qimagereader/images/kollada-noext b/tests/benchmarks/qimagereader/images/kollada-noext
deleted file mode 100644
index 2abd4bb..0000000
Binary files a/tests/benchmarks/qimagereader/images/kollada-noext and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/kollada.png b/tests/benchmarks/qimagereader/images/kollada.png
deleted file mode 100644
index 2abd4bb..0000000
Binary files a/tests/benchmarks/qimagereader/images/kollada.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/marble.xpm b/tests/benchmarks/qimagereader/images/marble.xpm
deleted file mode 100644
index 1c08049..0000000
--- a/tests/benchmarks/qimagereader/images/marble.xpm
+++ /dev/null
@@ -1,470 +0,0 @@
-/* XPM */
-static const char *marble_xpm[] = {
-/* width height num_colors chars_per_pixel */
-"   240   240      223            2",
-/* colors */
-".. c #959595",
-".# c #c5c5c5",
-".a c #adadad",
-".b c #dedede",
-".c c #b7b7b7",
-".d c #d2d2d2",
-".e c #bebebe",
-".f c #c9c9c9",
-".g c #b8b8b8",
-".h c #d6d6d6",
-".i c #9e9e9e",
-".j c #eaeaea",
-".k c #b2b2b2",
-".l c #cecece",
-".m c #a5a5a5",
-".n c #e4e4e4",
-".o c #c4c4c4",
-".p c #d9d9d9",
-".q c #b1b1b1",
-".r c #d8d8d8",
-".s c #e0e0e0",
-".t c #d6d6d6",
-".u c #b6b6b6",
-".v c #bfbfbf",
-".w c #cbcbcb",
-".x c #a5a5a5",
-".y c #d1d1d1",
-".z c #cdcdcd",
-".A c #aaaaaa",
-".B c #9a9a9a",
-".C c #dedede",
-".D c #aeaeae",
-".E c #e6e6e6",
-".F c #d3d3d3",
-".G c #c8c8c8",
-".H c #bababa",
-".I c #c4c4c4",
-".J c #cccccc",
-".K c #bcbcbc",
-".L c #f0f0f0",
-".M c #b5b5b5",
-".N c #e3e3e3",
-".O c #c2c2c2",
-".P c #adadad",
-".Q c #c9c9c9",
-".R c #e1e1e1",
-".S c #a2a2a2",
-".T c #d1d1d1",
-".U c #bebebe",
-".V c #dbdbdb",
-".W c #dbdbdb",
-".X c #c8c8c8",
-".Y c #b9b9b9",
-".Z c #a8a8a8",
-".0 c #d3d3d3",
-".1 c #9f9f9f",
-".2 c #c1c1c1",
-".3 c #ebebeb",
-".4 c #b4b4b4",
-".5 c #d9d9d9",
-".6 c #cecece",
-".7 c #e8e8e8",
-".8 c #d6d6d6",
-".9 c #c5c5c5",
-"#. c #b0b0b0",
-"## c #dadada",
-"#a c #c5c5c5",
-"#b c #d1d1d1",
-"#c c #afafaf",
-"#d c #b1b1b1",
-"#e c #cbcbcb",
-"#f c #c1c1c1",
-"#g c #eeeeee",
-"#h c #9b9b9b",
-"#i c #c6c6c6",
-"#j c #c0c0c0",
-"#k c #cbcbcb",
-"#l c #bdbdbd",
-"#m c #a1a1a1",
-"#n c #b7b7b7",
-"#o c #a7a7a7",
-"#p c #e6e6e6",
-"#q c #c9c9c9",
-"#r c #bbbbbb",
-"#s c #e2e2e2",
-"#t c #b8b8b8",
-"#u c #cdcdcd",
-"#v c #d3d3d3",
-"#w c #cfcfcf",
-"#x c #e0e0e0",
-"#y c #d5d5d5",
-"#z c #bdbdbd",
-"#A c #cecece",
-"#B c #c0c0c0",
-"#C c #b7b7b7",
-"#D c #e5e5e5",
-"#E c #c4c4c4",
-"#F c #e3e3e3",
-"#G c #d3d3d3",
-"#H c #dddddd",
-"#I c #dddddd",
-"#J c #acacac",
-"#K c #a3a3a3",
-"#L c #eaeaea",
-"#M c #e1e1e1",
-"#N c #b9b9b9",
-"#O c #d5d5d5",
-"#P c #bababa",
-"#Q c #d7d7d7",
-"#R c #b5b5b5",
-"#S c #d1d1d1",
-"#T c #c6c6c6",
-"#U c #dcdcdc",
-"#V c #b4b4b4",
-"#W c #c6c6c6",
-"#X c #a8a8a8",
-"#Y c #a0a0a0",
-"#Z c #cbcbcb",
-"#0 c #bfbfbf",
-"#1 c #cbcbcb",
-"#2 c #a4a4a4",
-"#3 c #c0c0c0",
-"#4 c #bbbbbb",
-"#5 c #9c9c9c",
-"#6 c #a2a2a2",
-"#7 c #dcdcdc",
-"#8 c #c3c3c3",
-"#9 c #9d9d9d",
-"a. c #aaaaaa",
-"a# c #d5d5d5",
-"aa c #eeeeee",
-"ab c #b6b6b6",
-"ac c #b0b0b0",
-"ad c #b3b3b3",
-"ae c #c9c9c9",
-"af c #e9e9e9",
-"ag c #bdbdbd",
-"ah c #a0a0a0",
-"ai c #b0b0b0",
-"aj c #e8e8e8",
-"ak c #cacaca",
-"al c #c3c3c3",
-"am c #dbdbdb",
-"an c #d0d0d0",
-"ao c #d8d8d8",
-"ap c #c7c7c7",
-"aq c #dcdcdc",
-"ar c #c7c7c7",
-"as c #f0f0f0",
-"at c #a3a3a3",
-"au c #bfbfbf",
-"av c #d9d9d9",
-"aw c #dfdfdf",
-"ax c #d3d3d3",
-"ay c #c0c0c0",
-"az c #cacaca",
-"aA c #b3b3b3",
-"aB c #cfcfcf",
-"aC c #dadada",
-"aD c #b2b2b2",
-"aE c #e2e2e2",
-"aF c #d7d7d7",
-"aG c #c4c4c4",
-"aH c #b8b8b8",
-"aI c #cdcdcd",
-"aJ c #a6a6a6",
-"aK c #d2d2d2",
-"aL c #cecece",
-"aM c #acacac",
-"aN c #dfdfdf",
-"aO c #d5d5d5",
-"aP c #c9c9c9",
-"aQ c #bcbcbc",
-"aR c #c6c6c6",
-"aS c #cdcdcd",
-"aT c #bebebe",
-"aU c #f2f2f2",
-"aV c #b6b6b6",
-"aW c #e4e4e4",
-"aX c #c3c3c3",
-"aY c #e2e2e2",
-"aZ c #d2d2d2",
-"a0 c #dddddd",
-"a1 c #dcdcdc",
-"a2 c #ececec",
-"a3 c #eaeaea",
-"a4 c #cccccc",
-"a5 c #c7c7c7",
-"a6 c #c2c2c2",
-"a7 c #cccccc",
-"a8 c #a8a8a8",
-"a9 c #e7e7e7",
-"b. c #e4e4e4",
-"b# c #d9d9d9",
-"ba c #bababa",
-"bb c #cfcfcf",
-"bc c #d4d4d4",
-"bd c #d0d0d0",
-"be c #aeaeae",
-"bf c #e1e1e1",
-"bg c #d7d7d7",
-"bh c #cfcfcf",
-"bi c #b8b8b8",
-"bj c #e6e6e6",
-"bk c #c5c5c5",
-"bl c #e4e4e4",
-"bm c #d4d4d4",
-"bn c #dfdfdf",
-"bo c #dedede",
-"bp c #ececec",
-"bq c #bababa",
-"br c #bcbcbc",
-"bs c #b0b0b0",
-"bt c #cccccc",
-"bu c #a6a6a6",
-"bv c #c1c1c1",
-"bw c #bcbcbc",
-"bx c #ababab",
-"by c #d7d7d7",
-"bz c #b7b7b7",
-"bA c #b2b2b2",
-"bB c #b4b4b4",
-"bC c #bfbfbf",
-/* pixels */
-"aYbla9a9a9.7#D.N#L#La9.7a9#D#D.7#D#D#DaY#x#xa0ama0ama0am#xbnbnbnaYaYaYaYaY#DaYaYaYbn#x#x#xaY.N#Da9a9a9a9a9a9a9a9a9.7a9a9a9#Da9#D#L#L#L#L#L#La2#La2a2a2a2a2a2#ga2#ga2#ga2a2#ga2a2#L#L#L#Lafa9a9a9bl#Dbl#Da9a9a9#L#L#Laf#L#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2a2#La2#L#L#Laf#L#Laf#L#Laf#L#Laf#L#Laf#Laf#Laf#Laf#Laf#L#D#DblblaYaYaCa0.t.Fb#bnbnaCbnblblblblblaYaY.RaYblblblblblblblbla9a9a9a9a9a9#pa9a9#pa9#pa9#pa9#pa9#pa9a9bl#D#D#D#pa9#pafa9a9a9a9#L#Lafa9a9a9#D#D#pbl#U.V.Vb#.8am#xbn#IaYbl.N.N#x",
-"am#I#Da9a9a9bj#D#La9.7#D#Da9#D#D#p#DaYaY#xbna0amamamb#a0a0a0a0bnawaYaYaYaYaYaYaY#xbnaY.R#xaYaY.Nafa9afa9afa9afa9.7a9.7a9bja9bja9#Lafa2afa2af#L#L.3#La2#La2bpa2#La2#ga2a2#ga2a2#g#L#Laf#L#La9afa9bl#Dbl#Da9afa9#L#Laf#L#Laf#L#Laf#L#L#L#L#L#L#L.7a2#La2a2#La2#La2#Laf#L#Laf#Laf#Lafajaf#L#Laf#L#L#Lafajafajafajaf.na9#s#Daw#xbnaCb#bg.Vbnbn.RaYaY#Mbl#pblaYblaYaYaYblblbl#D#Dbl#D#paf#pafa9#pa9afbla9#pa9#pa9#pa9#pa9#p#D#p#Da9#D#pa9#pa9#Da9#Da9af#L#La9.7#D#s#D#MaYbnaCb#aOb#aC#x#UaYaY#M#DaYbf",
-"aOambn.sa9bja9.7a9.7a9#Da9bj#D#D#D#DaYaY#x#xa0amaFaFbgb#aF.Va0.VaYaYaYaYaYaYaYaYbn#xaY#xaY.N#D#Da9a9a9a9a9a9a9a9a9bja9#Da9#Da9#D#L#L#L#L#L#La2#La2afa2a2a2a2#ga2#g#La2bpa2bpa2#L#L#L#L#Lafa9a9#p#DaY#D#Da9a9.7a9af#Laf#L#Laf#Laf#L.7#L#L.7#L#L#L#La2a2a2#La2#L.3#Laf#Laf#Lajaf#Laja9#Lajaf#Lajafaja9#La9#La9#La9a9a9blaYaYaYawa0b#b#.paYaYblaY.Rbla9#pblblaYblaYa9#p#D#pa9#pa9#pa9a9a9#pa9a9#pa9bl#pa9#pa9#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9#pa9a9a9#L#Lafa9a9#D#D#Da9awbn.pb#bgamaCbn#xaw#D#D#D.N#x",
-"amamaC#x#D#s.7.7a9#Da9#D#D#D.N.N#xaYaYaY#xbna0a0aOaFb#aOb#bg.Vambna0bnaCa0aYaYaY#U.RaYaYaY#Dbl#Da9a9#La9af.7afa9.7a9.7a9bja9bja9#L#L.3#L.3#Laf#Lafa2#L#La2#La2bpa2a2#ga2#ga2a2#g#L#L#L#Lafa9afa9.Nblbl#Da9a9afa9#Laf#L#Laf#Laf#L#L#L#L#L#L#L.7#L#La2#L#La2aja2#Laj#Lafaj#Laf#L#Laf#Lafafajafaf#Lafaj#Lafajafaj#Laja9.n#D#MaY.R#xbga0bnbn.RaYbl#Ua9#pa9#D#Dbl#D#Dbl#Dbl#Dbla9#Da9a9#pafa9af#pa9#p#pa9#pa9#pa9#pa9#pa9#p#D#pa9#Da9a9af#pafa9af.7a9#Laf#L.7a9#s#D#saYaY#Ua0aObgao#x#IaYbl#D#s#D.sbf",
-"amaOama0.N.Na9a9bja9#Dbj#D#D#DaY.N#x#x#x#xbnaCa0#H.Vbgb#b#aFbgambnbn#Ubnbnbnbnbn#xaYawaYbl#Da9#Da9a9a9a9a9a9a9a9a9bja9#Da9#sa9#D#Laf#L#L#L#La2a2a2afa2#La2#ga2a2#g#L#g#La2bpa2#L#L#L#Laf#La9a9#pbl#Dbl#Da9a9.7a9#Lajaf#Lajaf#Lajafafajafafajafaf.j#L.3a2#Laf#La2af#Laf#Laf#Laf#L.n#L.n#La9#L#Lafa9afa9aja9#La9af.7afa9#Dbl#IaYawa0a0#UbnaYblblaY#pa9#pa9#D#D#D#Dafa9afa9af#pa9#pa9afa9#pa9a9a9a9#pa9#pa9#p#pa9#pa9#pa9a9#D#Dbla9a9a9a9a9a9.7a9.7af#Laja9a9#D#D#saYawbnaCb#aobn#x.Nbl#s#D#D#D.N.N",
-".CamaOao.WaY#D.7#s#Da9#D#D.NaY.N#x#I#xbn#xaY#x#U#xa0a0a0bgamb#ambga0ama0am#xa0a0.RaYaY#Dbl#Dbl#Da9a9a9a9afa9afa9.7a9#D.7#Dbja9.7af#La2#La2af#L#La2a2a2a2a2#L#g#L#ga2a2#ga2#ga2#g#L#L#L#Lafa9a9a9#Dawbl#Da9a9a9.7af#Laf#Laf#L#Laf#L#Laf#L#Laf#L#Laf#L.j#La2afajaf#Lafajaf.Eafaj#Laf#Laf#Lafaja9aj#Lajaf#Laf#Lafajafajaf.n#DblaYaYaCbn#xbnaYaYaY.Rbla9#p#Da9a9.7#La9a9a9a9a9afa9afa9a9afa9afa9afa9#p#pa9#pa9a9#pa9#pa9#p#D#pa9#Da9afafafaf.7a9a9.7#L#Lafa9.n#D#s#D#D#x#Ua0aCaC#x.saY.s#D.7a9.Ebj.N",
-"#xa0.8a#.8.Cbf.N#D#D.N.NaY.N.saY#x#xaY#IaYaYaYaYaYaY#x#x#xa0aCam.Vb#bg#yb#.Va0bnaYaYblaY#Da9#D#Da9afa9af.7a9a9a9.7a9bja9#s#Da9.7ajaf#Laf#L#La2#L.3#La2#La2a2#ga2a2bpa2#L#g#La2bp#L#L#Laf#La9af#paYbl#D#Da9a9a9a9#L#L#Laf#Laf#L#Lafafafafaf#Lafaf#La2#La2afajaf#Lajaf.7af#Lafa9aja9aja9#L.n#Lafafa9#L.n#L.n#La9#Laf#La9a9#Mbl#xaY#x#IaYawaYaYaYaYblbl#pa9a9.7#L.7afaf#Laf#Lafa9afa9a9a9a9a9a9a9a9a9#pa9#pa9#pa9#pa9#pa9a9#D#D#Da9af#Lafa9a9a9.7af#Laja9a9#D#D#D#M.N#I#xaCa0#UaY#D.NaY#D.n.7bj#Dbj",
-"#x#xa0#vbcaq#xbf#D#D.Nbl.s.NaYbf#x#x#xaYaYaYaYaYaY#M.NaY#x#x.Ca0b#bgb#bgbg.V.p.VawaYblbl#Dbl#Dafa9a9a9a9afa9afa9.7a9#Da9#D#s#Da9af#La2#La2#Laf#La2#La2#La2bpa2bpa2#ga2#ga2#ga2a2#L#L#L#Lafa9a9a9aYaYbl#Da9afa9a9ajaf#Lajaf#Lajafafaj#Lafajafafajafa2#La2#Laf#Lafa9#Lafaja9aj#Laf#Lafajaf#Laf.7afaj#Laf#Lafajaf.Eafajaf.n#Dbl#MaY#IaY#xaY.RaY.RaY#FaYa9a9a9#L#L#Lafa9afafa9#Laf#L#La9afa9afa9afa9#pa9#pa9#pa9#pa9#pa9#p#D#p#Da9a9afa9a9.7a9#L.7.7.naf#La9.n#D#s.N.N#x#UaCbnaY#s#DaY#sa9.7b..7#DaW",
-".7aw#x.CaoaB.y.5#s.N#I.Ca0a0ama0#x.N.NaY.NaY#D#Dbl#DblaYawaY#U.CbgbmaBaSaZbma0a0blaYaY#Dbla9a9#Da9af.7afa9a9a9a9bl#D#D#D#D.N#D#D.7a9a9a9a9a9#La9afafafafafaf#Lafa2#La2#L#L#L#La2a2a2af#La9a9#D#DawaY#sbla9b..7#La9a9a9a9.7a9a9a9afa9af.nafafafafafajafajafajafajafaja9a9bl#MaY#s#Da9#Da9#sa9.na9.7af.Eaf.7af#Lafafa9a9bl#M.NaY#Ibn#UaYaYaw#Da9a9.n#p#pa9a9.7.7.7.7a9.7a9.7a9a9#Lafafaf#Lafa9a9a9#pa9a9#pa9#pa9a9a9a9afa9.7af.7.7.7afa9a9a9a9a9a9#L.na9.na9.na9.n#Maw.Nawaw.N#D#D.E.7bj.7#Dbjb.#D",
-".7#D.s#x.5.y#va#.NaYbf.Ca0ao#xbn.s.N.N#D#D#Da9#Dbl#Dbl#DaYaYaYbn.p.taBan#uaZ.FbgbnawaYawbl#D#D#D#D#Dbl#D#D#D#D#D#Dblblawbl.N#D#Da9a9a9.7af.7a9a9afafafajafaf#L#L#La2a2a2a2a2#La2#La2af#La9#D#D#DaYaY#D#D#Da9a9.7a9a9.7a9a9a9.7a9#Lafafafaf#Lafafaja9af#pafa9af#pajaf.na9#s#DblaYa9a9.na9a9a9#Da9aj#Lafaj#La9aja9ajaf.nbl#DaYaw#xa0#x.b#xaY#D#D#p#p#p.na9a9a9#L.7a9a9a9a9a9.7a9#Lafafafafafafa9af#p.na9#pa9a9a9afa9af.7a9#L.7#L#La9a9.7a9a9.7.na9a9a9.na9.na9.na9#D#MaYaw.N#s#D.n.7.7.n.7.E#D#D.7",
-".7a9aY#xaCam#v#vaCaqa0aqama0#UaY.NaY#D#D#D#D#D#Da9#D#D#Dbl.NaY#Ibnambm#SaZa#a#b#aCa0a0#x#x#xaYbl#D#Da9#Dbl#Dbl#DblaYaYaYaYbl#D#Da9a9a9afa9afafafafafafafafaf#Laf#L#L#Laf#Laf#Laf.j#L#L.n.7a9#s#Daw#x#M#Da9#Daj.7a9.na9.7.na9a9.naf#Lafajafafajafafafajafajafafaf#pa9bl#Mbl#Daw#D.n#Da9#D.na9.na9a9af.7afafajaf#Lafa9a9#sblaY#x#IbnbnaYaYawbla9a9#p#pbl#pa9#D.7.7a9.7a9.7a9a9#L#Lafaf#Lafafa9a9a9a9#pa9.n#pa9a9a9afa9a9#L#Laf.7afa9a9a9a9.7a9a9a9.naf.na9.na9.na9#M.Nawaw#D#s#D#Daj.7aj.7#D.7b.a9",
-"a9#saY.s.Ca0aF#v#v.5#vaF.8a0#x#D#D.N#D#Da9bja9.7a9a9bl#D#DaYaY.N.R#Uama#aFaOaFaFb#b#b#a0aCa0#I#xaYblaYblbl#DblaYaw.R#IaYawaY#D#Da9a9a9a9a9a9a9a9a9#p.na9af#La9.7af#Laf#Lafajaf#L#L.3#La9#D#D.NaYaYaYbl#D#D.7a9.7a9.7a9a9a9.7a9.7a9a9a9a9.na9#pa9.n#pa9#pa9#p.na9#sbl#s#Dbl#DblaYa9a9a9.Ea9a9bja9a9.na9#sa9#Da9#Da9.nblbl#D#M#x#x#U#x#UaYaY#Da9#sa9#p.na9a9.7a9a9#La9a9#La9#L#L#L#Lafafa9#La9afa9#pa9#pa9a9a9a9.7#Laf#L#L#L.7#L.7.7a9.7.na9a9.na9.7.n#D#D#s#D#M#D#Mbl.s#D.s#Da9#D.7.na9a9.n.7#D.7",
-".N.N.NaY#Uaqamaoa#aB.0a#ambn#xbl#D#D#D#D#Da9.7a9a9.7a9#D#D.s.NaYaY.RaCamamaF.5b#amaob#amama0a0a0#IaYawaYaYaYaYaYbnbnbnaYaYaYbl#D.na9a9.7afa9a9a9a9af#paf.na9afa9.n.7#La9.7a9#L#Laf#La9a9#D#D.N.NaYaY#Dbl.n#D.7af.7a9.na9.na9a9.na9.na9a9#pa9.na9a9a9.na9.na9a9a9aY#MaYbl#sbl#s#D.n#Da9#Da9#sa9.n#Da9a9.7a9.na9.na9a9#DawaY#x#x#xbnbnaYawaYbla9a9a9a9#pa9#Da9a9.7a9.7af#L#L#La9#Laf#Laja9.7a9.7a9a9.n#pa9a9.7#Da9a9#L#La9#Laf.7afa9a9a9.7a9a9bja9#sa9#D#M#D#M#D#sbl#saY#saY#s#D#s.7a9.E.7#D#D#D#D",
-"#I.N#I#xamaCamaFaB.Gaz#u.8am#xaY#D#D#D.7a9bja9.7.7a9.7a9#D#D#D.N#Ubna0aCama0amao.Va0amaCama0aC.Cbnbnbnbn#x#Ubn#Uam#Ua0awaYaYaw#D#pa9a9#pa9a9a9#p.na9a9a9a9a9.7a9.7a9af.7afa9a9a9aj#La9.E#D#D#saYaY#Mbl#Dbja9.7.7a9a9a9.7a9#sa9#D#p#D#pbl#sbla9#D#sblbl#Dblbl#sblawaY.N#MaYbl#Dbla9.Ea9.na9.7a9a9#D#s#D#s#D#D#D#D#D#MaYbl.Naw#x#Ibn#I.R#xaY#Da9#Da9a9a9a9.na9a9a9.7a9a9#La9#La9a9#L#Laf#La9a9#Dbj#pa9a9a9#Da9.7.7afafa9.7a9.7#L.7a9.7a9a9#sa9.na9#D#D#D#s#D.sbl#Dawbl#saY#sbj#Da9#s#D.Nbl.saY.s.N",
-".Cbf.C.Cam.5aoa#.la5.G.waZ#va0.C#D#D#D.7a9a9#L#La9#L.7.7.7#D#D#D#x#x#x#x#x#xa0bnam.Va0.Va0a0#xbnaY#x#Ia0a0aCa0aCa0ambnbnaYawblbl#Dbl#M#Dblbl#D#Mbl#pa9a9#Da9a9.7a9.7a9.7a9.7a9a9#La9.n#D#D.NaY.NaYaY#D#Da9#Daja9.7a9a9a9a9.7a9.n#D#M#D#sbl#sblbl#D#M#D#M#D#M#D#M#x#xawaY#Dawa9#Ma9#Da9#Da9#sa9#s#D#D#D#D#D#s#D#sbla9blaw#x#x#xa0#UbnaYawaYbl#D.na9a9a9a9a9#Da9#pa9#La9#L#La9.7af#L#L#L.7#L.7.7.na9a9#D#s.7#D.7.7afa9#La9af.7a9.7.na9.na9a9a9#Da9#s#Dawblaw#D.sbl#sbl.s#D#D#s#D#saY.Naw#xaYbf#x#x",
-"aqaoamavam.8a##v.5#Saza7.w#u#vam#Da9#D.7a9.7a9a9.7#L.7#La9bj#D#D.Cbn#xbnaYaY#x#x.pb#.Vamaobnbn#xbnbn#xbn#xbn#xa0a0b#aCa0aw.R.Nblaw#Dbl#Dbl#Dblbl#pa9#Ma9a9.nbja9a9a9#La9a9a9.7a9.na9#D#D#DaY.N.NaYaYbl#D#sa9a9#La9.Ea9.7a9a9#Da9#M#Dbl#Mbl#sbl#s#Mbl#sbl#D#MaY#sa0#I.NaYaYblbl#Da9a9.na9.Ea9a9a9#D#D#s#D#s#D#D#D#Dbl#saY#x#xaC.Ca0#x.R#xaY#D#Da9a9a9a9a9a9#p.na9a9a9a9#La9#La9a9#L#L#L.7#La9.7.7a9a9a9#Da9.7af.7a9afa9.7a9.7#L.7a9a9bja9#s.7.na9#sbl.s.saYaw#saY#saY#saY#s#D#s#D#xaY#x.W.C.C.Waq",
-"amaFaOaFaOaFama0aY#x.8.0#u#uan#uam#xaY#Da9a9.7a9#Laf#L#La9#D#D.sbl#D#sbl#xaYaw#x.Rbn#Ub#.Va0b#b##Ubnbnbnbna0#xbnbnaYaYaYbnbn#UbnaYaYblaYblawblawa9.n#p#pa9#pafafa9a9a9.na9a9a9a9bl#Dbl#Dbl#sblblawaY#D#Da9.7.7#Laf#Laf.n.7#D.7#D.NaYawaY#xbn#Ua0#U#Ubn#UbnaC#UaY#xawaY#M#D.na9ajaY.N#Dbla9a9.na9.nbl#DblaYaYaw#x#MblaYawbn#Ibna0.b#U.RawaY#Mblbl.na9a9a9a9a9afa9#Dbj#D#D#D#D#D.7#Lafa9afa9.7#Da9#sa9a9a9#Da9.7.7afa9a9a9a9#D#s#D#D#Daw.N.NaY.NaY#D#sbl#saY#saY.N.na9#D#s#DaY.N.N#I#x.CamaoaFbya#",
-"bgb#amam.5aCa0.C#M#xa0aFaZ#uaB.0aO#xaY#Dafa9a9a9#L#L.7af.7#D#D#D#D#DaY#D.N.N#xaY.Cbna0a0b#aFb#aF.Vbnbna0#Ubnbn#x#U#x.R#xawaYbn#x.R#I.Raw.RaY#x.R#p#p#pbl.na9a9a9a9a9a9#Da9#s#D#M#Dblbl#sblbl#DblaY#Dbla9#Da9af.7ajaf#L.7a9.n#Da9#M#DaYaYaYaYbnaCbn.paCa0bgaoaC#UaC#I#xaY#MaYblbl#Mbl#M#D.na9a9.n#D#M#D#M#DaY#DaY#M#pawaY#Ibn.Ca0aYbnaY.RaYblbl#Da9a9.na9afa9a9af#D#D#D#D#D#Da9#Daf#L.7a9.7#Da9#D#pa9.na9a9b.a9.7.7a9.7a9bja9#D#D#D#D#DaY#Daw#Daw#D#D#M.N#saY.saY#sbl#sbl.Naw.Nawbna0aCa0.8a#aF.5",
-"amamaCa0a0#x#xaYblaY#Ia0bc#u#ua#amam#x#D#Da9.7a9#Laf#La9a9.7#D#Dbl#D#D#MaYaYboaYbna0a0aoamb#aOb#b#am.Va0bnbn#Ubnbn#xaYaY.R#xawaYbn#UbnaCbn#Ubn#U.RawaYblaYblawbl#D#D#D#Dbl#Dbl#Dbl#Dblbl#Dblbl#DaYaw#D#Da9bj.7#La9#Lafa9a9bja9bj#D#MblawaYaw.R#Ubn.V.8#vaB#S#waOaoa0aC#x#x.N#I.NaY.NaY#D#D#D.n#Dbl#sbl#Dbl#saYaYblawaYaYbnbnaCbn#U.baYawaY#M#Dbla9.na9a9.na9.na9#s#D#s#D#s#D#D#D.na9a9a9a9#D#D#D#pa9a9#Da9#D#L.7a9.na9#D.n#D#D#D.saY.saY.NaY.saY#sbl#s#Daw#DaY.NaY.NaY.saY.NaY#x.Wa0a0a0aOam.8a#",
-"#x#x#x#xaYaY.N.N.7#D#x#xb#aZ.ya#amaObn#Da9#Da9bj#L#L#D.7#Da9.7a9a9.nbl#D#DaYaY.NaC#xa0.Vamb#aFaF#vaFbga0a0bn#xaY#Ubn#U#xaYaYaYaYbn#xa0a0a0a0aCa0bn#Ubn.baYaYaYaYbl#D#M#Dbl#D#Dbl#Dbl#s#D#D#D#D#MaY#Dbl#D#Da9.7a9ajafaj.7a9a9#sa9a9#M#DaYaYaY.b#xbgb##vaBa7.Q.z#S.5aO.8aoao.Ca0.W#x#I.Naw.NawaY#DawaYblawaYaYawaYawaYaY#U.C#U.Ca0aY#x.RaY#xblbl#D#Dbla9a9a9a9a9a9#D#D#D.NaY.N#s#Da9a9#sa9a9#M#Dbl.na9a9a9a9bja9.7a9a9a9.7#D#D#D#saY#DaY#Daw#DaY.N#M#D#s#Dbl.s.N#M.Naw.N#xaY#x#I#x#Ua0a0aCamama0am",
-"aYaYbl.s#D#D#D#Da9#D#s.N.CaOa#aF.5ao#x#Dbl#Da9#Da9a9.7a9.7a9a9.7a9a9a9#Dbl.NblaY#x#xbna0a0amaFaFbmaFaFamaCbn#U#xbnbnbnaY.b#x.R#xaYbn#xbnaCa0bna0#Ubn#Ubnbn#I#xaY.NblaYaYawaYaw#Dbl#Dbl#D#M#Dbl#DaYaY#Dbl.na9.7a9#La9#La9a9bja9#D#MaYblawaY.R#x#U#S#SaB#uaz#u#vaO.8aOaOaOaOaOaOaO.Caoa0.W.C#I#x#I#x#I#x#x#I#x.NaY#x#Ubn#UbnaCbnaC#I.R#IaYawbl.sbl#M#D#Ma9#D.n#Dbl#D#D#s#D#D#D#D#D#Ma9bl#D#D#DblaYa9#p#sa9#D.n.7.7.na9#s#D#s#D.NaY.saY.saY.NaY.saY#s#D#p.s#saYaY.N#IaYaYaw#x#IaY#I#x#x#I#x#x#x#x#x",
-"#D#D#D.7.7.7.7.7.7a9a9#DaY.CaO.y.5.5bnaY#D#D#D#D#D#Da9bja9a9.7a9a9a9#Da9#sbl.N#MaYaY#xawbna0aCb#aOaFbgb#b#a0a0bn#Ibnaw#xaYaYaYaY#Ubn#IaYaYaYaYbnbn.R#xaw#x.R#Ibnaw#IaY.sbl.Nbl.N#D#M#Dbl#D#M#DblawaY#M#D#D#s.7a9aj#L.na9.n#D#s#D#DaY#IbnaY#UbnaCaB#SaB#u#uaBaO.5amaoam.8.5aO.y#1#1#u.yaOamamaoamamamaC.C.C#xbn#x#Ua0aC.CaCa0#Ia0.R#x#UaYaYblaY.N#D#p#D#sbl#Dbl#D#s#D#D#D#D#s#D#Da9#p#MblblawaYaY#Ma9bl#sa9bja9.7#Da9a9.7a9#Daw#DaY.saY#Daw#DaY#D#M#D#sbl.N#saY.saY#xbo.N.N.s.N.Naw.N#D#D#D#Da9#D",
-"a9.7.7af#Lajbp#L.7#L#La9#DaYa0#va#a0a0.Cbl#D#D#Dbj#D#Da9.7a9#L#L.na9a9a9a9#D#D#Dbl#DaYaY#xaYbna0b#aFb#b#aob#aoambnbnbnbn#U#x.R#xaY.RaY.R#IaYaYawblblaYblaYaYaYawbn#I#x#UaYawbl#Daw.N#D#D.NaY.NawaY#xbl#D#D#Da9.Eafaf#La9#D#D#D#D#I#x#xaCa0aCaoaO.FaO#v#u#u#uaFbgaC.Caoa0ao.5aB.z.U.Oaz.y.y#vbm.y#v#v.5amaoamao.8amaoa0aoa0#Ua0#x#U#xbnaw.N.saY#sbl#Dbl#Dbl#D#M#D#D#D#D#D#D#D#D#D.nbl#Dbl#xaYaYaY#pbla9bl#D#s.7.7.na9#Da9#s#D.NaY.NaY.Naw.Naw.Naw#D#M#D#D#Maw.Naw#x#IaYaY#s#Da9.nbj.7.7b..7.7bp#L",
-"#L.7#L#Lbpbp#Lbp.7#L#L.n#D.N.C.5a#amaCaoaY#D#D.N#Da9#Da9#La9#Lafafa9a9#Da9bl#Dbl.n#D.nblawaY#x.Ra0.Vbgamb#amaFaF#Ubn#U#xbnbnaYaYawaYawaYaYblaYaY.bblaYblblblaYaYaYaYaY#I#x#I#x#I.NaYaY.sbl.sbl.NaYaw.N#M#D#sa9.7a9a9.na9.n#D#s#D#xaCa0aoaob##SaBaOaF#S#uaB#v.5aoa0aCamaoao.8#v#v#3ar.wanazaz#3#C#3aX.w.yaOam.8amaCambga0aoa0aCbn#U#x#IaYaw.NaY.NaYaY#sbl#sbl#D#M#D#D#D#D#s#D#D#DblblaY#MaY#IaYawbl.nbl.n#D#Da9#D#Da9.Ea9#D#D#Daw#D#saY.Naw.NaY.N#M#D#s#D.saYawaY#I.N.N#sa9a9.7af#L.E#L#Laj#L#L#g",
-"#L#L#L#L#La2bpa2#L.j.7.7#D.Nbf#IaFaBa7an.5a0#Daf#D.7#D.7a9a9#L#L#D#Da9#D#M#D#Dbl#Dbl#Dbl#Dbl#sblaw.RbnaCb#aOaFa#bg.VambnaCbnaw#x.RaYaYaY.baYawbl#pbl.n#Da9a9#D.7#s#D#D#D#D#D#MaYaw#IawaY#x.N#I#x#IaYaY#D#Da9.na9aja9.n#D.N.N#x.CaCb##vaB#uaBaB#v#SaOaOaOaObg.8am.W.WaCaCamaOaB#u#a#faz#Sa#aBaBaz#u#u#uaz.w.wa7#u#uaB.yao.5aC.C#Ia0.pa0aCbnawaY.sbl#saYaYaY#DaYaY#D#s#D#D#D#D#D#D#s#D#sblaY#x#I#x#D#D#D#Da9.n#D#sa9#D#D#D#s#D#D#D#sbl#s#D#saY.saY#MblaY.C.W#I.N#s#Da9#sa9.7.na9.7#L#L#L#L#L#L#L#L",
-"bpaj#Lbp#Lbp#Lbpa2#L#L.7#D.Nbfbf.Va#an#uaB.8bn#D#Da9#Da9.7a9ajafa9bl#Dbl#D#D#M#D#D#Dbl#D#Dbl.NblaYawbnamb#aFbm#Sb#.Vaobn#xbnaYaY.baY#MaYblaYblaY#pbl#p.n#Da9.n#D#D#D#s#D#s#D#D#saY.s#x.s#I#x#Ibn.W#I#xaw.N#s#D#D#D#D.NaY#I#x.WaCaCaCaF#SaB#v#SaOaOaOb#aOb#bgamao#x#I.CaCao.8#u.w.OaG.G#SaBaBbmaB#v#v#va#aB#u.G.Galbk#Taz.w#v#v.5bg.5bga0ao.C#IaYaY#Dbl#DawaY#D#M.NaY#D#s#D#D#s#D#D#MaYblaY#I#x#x#M#s#D#s#D#D#D#D#Dbj#s#D#D#D#s#D#D#s#D#Daw#Daw.N#M#s#x#I.Cbf.s#D#D.n.7a9.7a9.7.E.7#L.7#L.7#L#L#L",
-"#Lbp#L#g#La2bpa2a2#g#La9bj#D.Nbf.RaCaOaZ.yaFa0aY#D#D#s#Da9a9a9a9#D#Da9#Dbl#D#Dbl#D#M#D#D#M#Dbl#saY#xbnaCa0aOaF#Sb#bg.VbnaCbnaY#xaYaYaY.baYblaYbl#Ma9#p#Da9a9#D.7#D#sbl#Da9#Da9#D#D#D#saY.N#I#I#Iaoao.W#xaY.Naw.N#I#I#U.WaCaoamaobnaCaO#vaF#vaOaFbgambgambg.5.8amav.WaC.CaoaF#uaza6.OazaZaB#vaF#vaFaFam.5aF#v#SaB.G.O#3bv.G.GaPaP.w#u#vaFama0.C.C#IawaYawaY.NaYaYaY#MaYaYaYblaYawblaYaw.NaY#I#x#I#D.N#M#D#D#s#D#s#D#s#D#D#s#D#Dbl#s#p#saY#s.Naw.Nblaw#I#xaY.N.N#sa9.7a9.Ea9.Ea9#L#L#L#L#L#L#L#L#L",
-"#La2bp#L#Lbp#Lbp#L#L#L.7#Dbj#D.NaYbna0aoa##vam.C#D#D#D#D.7#D.7a9a9#D#Dbl#D#Dbl#Dbl#Dbl#Dbl#D#DaYaYaYawbna0b#aO.Fbgb#ama0bnbn#IaY.bblawblaYaY#MaYa9#p#sa9a9#Da9#Da9a9a9a9a9.na9a9#s#D#D.saY.NaY#x.C.C.C.W#I#x#I.WaF.8a0a0a0a0aCa0aCaCb##vaFaO#vbgaob#aoaoamaoaCam.W.Caoa0.8#v#ubkab#aan#vaZ#vaFa#aoaobga0aoamamaOa#aBaZ#u.w.w.G#3#3#a.w.y.yaOb#aCbnbn#I#xbn#UaYawbfaYbfaw#x.s#xaY.NawaYbl#x#Ibn#I#Daw#D.s#D#s#D#D#D#D#D#D#D#D#s#D#D#Dbl#saY#saY.saYaw#xaw.N#s#D#D.7.n.7a9.7a9.7#La9aj.7#L.E#L.7#L",
-"bp#L#L#g#L#g#La2#g#L#L#L.7#D#DbjawaYaCamaoa#.8aF.N.s#D#D#D.n#Da9#sbl#D#D#M#D#D#M#D#M#D#Dbl#sbl#saYaY#x#UbnaCb#b#bgb#bga0aCbn#x.RaYaYaYaYawblaYbl#p.n#pa9a9.nbja9.7a9.7#sa9#D.7.na9a9#D#D#D#saY.s#x#I#I#x.C.Wa0aoaoama0.W.C.Wa0#Ibn.paO#S#v#v#S#Sbgaoaoa0aoa0avaCaqaoavao.8#v.w#T.Y#3an#va#aOamaOa0bnaoambgamaoam.pa0bgb#aoaFaO.ybk#T.GaXaz.waBbyaCa0a0bnaCa0#Ibn#I#x#x#x#x#x#xaC#x#I#x#I#x#I.C#IaY#saY#saY#D#M#D#s#D#M#D#M#D#D#D.n#M#D.s#DawaYaw#x#IaYaw#sa9.7.n.7#L.7aj.7#L#L#L#L#L#L#L#L#L#L#L",
-"#L#g#L#g#g#gbp#L#L#L#L.7af.7.7.7#D.N#xaob#.8a#a##DaY#D#D#D#Da9bjbl#D#Dbl#Dbl#D#DaY#DaY#D#M#DaYaYaYawaY#x#Ibna0aCbgb#bg.VaCbn#U#xaw.Raw#FaYblaYbl#D#p#Da9#Da9a9#Dafaj#Laf#Lajaf.7a9#Da9#sa9#D.Nbl.NaY.NaYaY#I.C.Wamaoaoaobga0aoa0aCam#vaBa##SaBaBaobgaoaoaC.Waqaoav.8ao.5aOaBazaX#4alaza##vaOam.5aC.Wa0.Wa0aob#.8bnaCaCaCaC.W.WaC.y.yaB#ubkbkaX.Oazae#vaO.5ao.pbga0a0a0#Ua0aCa0ao.CaCaCa0#IaCa0#IaYaw#D.sbl#s.N#s#Dbl#D#s#D#D#sbl#D#D#saYaw.saw.NaC#xaw#D#sa9.n.7a9aja9#La9aja9#L#L#L#L#L#L#L#L#L",
-"#Lbp#ga2bpa2#L#g#L#L#L#L#L#L#LafbjaYaY#xama0.5aO.N.NaY.s#D#D#Da9#Dbl#s#Dbl#Dbl#D#M#D#M#DaYblaw#D#MaY#I.R#U#x#U#Ub#b#bga0aCa0#x.R.Raw.RaYawaYblaw#p.n#pa9.na9#Da9aja9af.Eaf#Lafajafaja9#Da9#s#Daw#D#s#D#s.NaY.NaY#U#Ua0.paobgb#bgaO#vaB#u#u.y#ua5aObgaoamaoamaoavam.8.8#v#v#u.w.GaTbw.G.0#vaFaoamaoa0aoama0aqamaoamaCaqaC.W.W#I#Iaxbgaobg#va7.Oau.U#3#3a5#uaB#vaFaoaoa0amaCamaob#aoamaoaoa0aC#Ibn.sawaY.sbl#saY#s#D#s#DaY#saY#D#D#s#p#s#DawaY#Iaw.C#I.N.naf.Ea9.7aj#L#Laj#L#L#Laj#L#L#L#L#L#L#L#L",
-"a2#L#g#g#g#gbp#L#L#L#L#L.7#L.7#L.N.N.s#x#xao.5b#.NaY.N#D#D#D#D#D#M#D#Dbl#D#D#sbl#D#Dbl#Dbl.sblaY.NaY#x#I#x#U#UaC.Vbgb#bgaCaC#U#I.R#x.baY.RaYblaYa9#pa9#Da9#Da9bjaf#Laf#Laf#L#La9#La9a9a9.7#Da9#D#sa9a9a9#D.NaY.Na9#paY#Ua0aoaO.yaBaBazazan#u.Gbk.daOaO.8aoavao.8.8.8bd.yaL#uazaX#0#4#TaZaOaO.5aoa0.Camaoamaoamambcby.8.C.C.W.W.W#U.rbgaO#S.yaB#uaP#3.U#3arbk#u#vaFbgbgaob#aob#bgamaOaoaoaoaC#U#IawaY.sbl.s#D#Daw#DaY#s.N#M#D#s#D#s#D#M.NawaY.s#xaC.C#Ma9aj#L.7.naf#Laf#Lafaj#Laf#L#L#L#L#L#L#L#L",
-"#g#g#Lbp#Lbp#Lbpa2a2#L#L#L#L.7#L#D.N.NaYbo.C.C.W.Vbn.N#Dbjbj.E.7#D#D#D#D#s#D#D#D#D#s#D#s#D#D#D#sawawaYaw#x#U#xaCa0aCa0aC.Vamb#a0aYaw.RaY#M#p#M#pajafaj#pa9a9#Mbl.na9a9a9a9a9a9afajafaja9#D#s#D#Dbl#D#s#D#s#D.n#Dbl#saYaYaw#x#IaCaOaB#1a5.w.wbkaV.Qbt.ybcbc.8bcbcaBaB#u#uaz.waP#T.O#zbw.6aF#vaOaFambga0amamaOaoaOaoaCa0.WaC.W.C#I.WaCaoaOaoaOaobg#v#v#S#1.Q#3agaV#1aB.8aOamaoaCbg#v.8aoa0aC#x#U#Iawaw#D.s#D#s#D#s.N#saY#s#Daw#D#Mbl#saYaw#x#I#xaC#D#sbj#D#D.7#s.7.7.E#L.7#Laf#L#La2a2a2#ga2#g#g#g",
-"#gasbp#g#Lbp#Lbp#L#g#L#L#L.7af.7#D.NaYbf#x#x#x#xaCbn#I.N#Dbja9.7#D#D#D#D#D#D#D#D#D#D#D#D#D#s#D#DblawaYawbn#I.WbnaCa0.pa0aoa0aoam#UbnaYaYaYblblbl#paf#p.n#pa9bl#Da9a9a9aja9af.na9.7af.7a9a9a9#D#sa9#M#D#D#D#D#D#D#D#D#M.NaY#x#x#xa0am#vaB.z#u#Ebi#nbCaX.Q.y.y.QaXbka5#u#u.w.wbkaP.O#4#4.wa##v.5a#aoamambg.5aO.5a#aoamaC.WaC.W.W#IaCaC.WaCaoaoaoao.8bg.8#v#v#u#uaPagagaXbka5aBaBaB.y.z#S.8bgaoamaC#x#IaYaw#D#sbj#D.sbl.sbl.N#saY.s#D#MaYawaY#U#x#Ibj#s#Db.#Db.#Dbj.na9#La9aj.7#L#La2#ga2a2#g#gas#g",
-"#ga2#ga2#g#g.7bpa2a2#L#L#L#L.7#L#D#D.N#M.N#I#x#xa0a0#x.s.N.N#D#D#D#s#D#D#D#D#D#s#D#s#D#D#s#D#D#M#D#MblawaYaw#x#I#Ubn#Ua0.pa0.pa0aCbn#Ubnaw.Rawbl.n#p#p#pa9a9bl#Dafa9a9#pa9a9a9afajafaja9.7#D.n#D#Dbl#D#s#D.n#D#s#D#D#DaY#saYaw.N#UbnaCaOaO#vaBbkbq#Rbqag#3.U#zaVau#Tazazbkbkbv#3#E#0ab.2#uaOaF#vaFaOaOaFaObyaO.8aCaCaC.C.W.W#I.W.WaCaC.WaC.WaCaCaCaCaoao.8.8#v#vbbbbap#3.U.U.U#4a5#E#1#SaFaOaOaFaC.W#x#IaY.s#D#saY.s#xawawaY.saY.sbl.NaY.s#x#x#Ia9.7.E.7.E.7.n.7a9#L.E#L.7#L#L.7#L#L#L#L#ga2bpbp",
-"#g#g#L#gbp#g#Lbp#L#g#L#L#L#Laf.7#Da9#D#DaY.N.N.sbn#Ua0.C#x.N#s#D#D#D#D#D#s#D#D#Da9a9.na9a9a9a9#Dawbl#saYawaY#U#x#U#x#Ubn#Ibna0aCa0a0#UbnbnbnaY.Rbl.n#D#p.n#pa9bla9af.nafa9afa9a9#Laf#La9a9a9bja9a9a9.na9a9.7a9.7a9a9#s#D#DaY.Naw#xaw#xaCamaoaOaB.v.O.Obqadbx.abzbi.U#3#T#3bvagag#3#4#caT.w#vaF.y#v.5#vaOa#ao.5.5aC.CaC#I#I#I#Ibo#I#Iaw#Iawaw#I#U#7.W#IaC.WaCav.W.8#v#v.y.w.G#T#3.Oag.O.w#uaB.ya#aoamaC#x#I#x.N.s#xaw#I#x#Ibfaw.Nbl.s.Naw.NaY.saY.E.7af.Eaf.7#L.E.7aj.7#La9aj#Lafajafaja2#L#ga2#g",
-"#ga2#ga2#Lbp#Lbpa2a2#L#L#L#L.7#La9.7a9#D#D#DaY.NaY#xa0#U.CaYbl#D#D#D#D#D#D#D#D#Da9a9#Da9#sa9.na9#D#M#Dbl#saYawaYawaYaYawbn#Ibn#IbnaC#xbn#Ibna0bnblblbl#Dblbla9a9.na9a9a9a9.na9a9af#L#L.na9bja9#D.na9a9a9.n.7.n.7.Ea9.7a9#s#D#D#D#sblaw#IaCaobg.d.O#ia5.G#zadadadabadaVaVbq#3#3bvbqaba8.YbkaBaO#uaFaOaFao.5aoaqaC#I#I#Iaw#I.s.sawbobo.sbo.sbobo.s#M#M.s#7aw#Iaw#I#U#IaCao.8aO#v#u.Q#3biag#3aXazaZ#vaOam.C#x#I#IaY#I#x#I#I#x#I#xaw.Naw#D#s#D#s#Da9#Laj#L#Laj#Laj#L#La9#L.E#L#L.7#Laf#Laf.7#L#L#L#L",
-"a2a2#L#g#L#L#L#La2bp#L#L#L#L#L#L#L.7#La9.7#Da9#D#DaYbnama0#xaY#s#D#D#s#D#D#D#D#Daj#Lafajaf#La9a9.na9#M#D#MaY#MaYbl#MawaYaYaYaw#x.RaY.b#xbnbn#Ibnaw#xawbl#D#Ma9#pafa9afa9afa9afa9aj#Laf.7a9.n#Da9ajafa9aja9#L.7#Laf#L.E#L.7.Ea9#sblawaw#xaCaCaO.8aBazbka5.Gbk.U#3biad.a.a.DaVaVaV.M#d.S.Yaz#u.0.y#vaF.8a0.W.C#I.C#Iaw.Naw.s.s.s#s#s#s#s#s#s#s#s#s#s#s#s#M#s#s#s#s.n.n#M.raC#OaO#w#u#E.vbkazbkbkbk.w.yaOamaC.C.C#I#I#I#x#I#x#I#x#Ibf.s.N#s#D.7a9.E#L.E#L.E#L#L#L#L.7aj.7af#L#L#L#Laf.nafaj#L#L#Lbp",
-"#gaa#ga2#L#L#L#Lbpa2#L#L#L.7#L.7#Laf#L#L#La9.7#D#saY#xa0ama0aYaY#D#D#D#D#Da9#D#Daf.7aja9#L.n#Laj#p.n#p#Dbl#s#DaY#sbl#D#MawaYaYaY#Mblbl.baYawbnbnaYaYaYaYbl#D#pa9a9a9a9a9a9a9a9a9afafaja9a9bja9#Dafafajaf#L.Eaf.Ea2#Lafaja9a9#s#D#sawaw#IaC.WaoaoaO#uae#1#u#uaz#u.O.Ubi.D#d.D#J.D.abu#6.Y.G.w.yaZ.8aoam.W#xaw#I.saw.saw.s.s#s#sbj.Eb.#sb.b.#sb..E#s#s#s#s.s#s.E#s#s#s#s.r#U#IaCaCbd#1#SaOao.ya5bkaza5.waOamaoaC#x.WaC.W#I#x#I#x#I.Naw#D#D#s.7#L.7#Laj#L#Laj#Laj#Laja9#L.E.7.n.7.Ea9a9a9a9a9.7#Laf",
-"a2#g#L#g#L#L.7#La2#g#L#L#L#L#L#L#La2#Laf#Lbja9a9#DaY.C.VaFa0#xaw#D#D#D#D#D#D#D#Dajafaf#Laf#Lafaf#p.nbl.n#Dbl#M#D#Ma9#M#DaYaw#Dawbl#MaY#Mbn.RaYawbn#xaw#x#Mbla9.naf#paja9af.nafa9aja9#La9a9a9#s#Daja9#La9#Laf.7#L#Laj.n#L.7.n.7#s#Daw#x#I.CaC.8.8#v#v#v#vaO.z#1.z.Gbk.O#zbibBbBad.x#5#9.YaPaz.y.0bgaoam#Iaw.N#s#Dawaw.s#s#D#s#s#s.E.7.E.7.E.E.E.Eb..Eb..E.E.E.E.E.s.saw#IaC.WaC#Oam.d#vao.8aFaO.8.G#3.OaB.8amaCaCaC.Wa0#I#I#I#I#x.s.N#s#D.na9.n#Laj#L#Laj#Laj#Laj.7#L.7af#L#Laf#Lafa9a9.na9a9.7.7",
-"#L#L#L#L#L#L#L#L#La2bpa2#ga2bp#L#L#L#L#L.7a9.7.7.NaY#xbnao.VaF.V#xaY#Ma9.na9a9#D#La9aja9aja9aj.7.na9.na9.na9.na9#p#s#p#D.na9a9.n#p.nbla9#sbl#saYaYaYaYaYaYaYaYaY#pa9#p#pa9#pa9.nafafaja9#D#D.N.N.nafajafaja9ajafajaf.7.na9#D.n#D#Dawaw#I.W#IaCaCaobdaO#v#v.y.y.y#u.QaX.9#TbC#r#r.aatatbB.2aX.GanaC.W#Ibobf.sbf#I#s#s#s#sb.b.bj#s.7.E.E.E.7.Ea9.Eaj#Lajajajajajaj.s#s#I.s.s#I.s.WaCaCaCaCa0.W.W.W#v#vbtbkbk#uaB.0aObgaoaoamaC.C.W.n.na9.E.7.E.7#Lbjb..Ea9aj#L#La2a2.jbpaj#L.E.7bjajaf#La9#Laf#Laf",
-"#L#L#L#L#L#L#L#L#L#ga2a2bpa2a2a2#L#L#L#L#L.7#L.7#DaY#Ibnb#b#aOb##xaY#D#Da9.n.7#Dafajaf#Laf#Lafafa9aja9a9.na9.na9.na9.na9#p.na9a9afa9.n#p#D#M#DblaYawaYaw#xaw#xaY#p.na9a9a9a9#p#pafaf#pa9#D#s.N#sa9a9#La9#Laf#Laf.7aja9.n.7.n#Da9.saYaw#x#I#x.W.WaCao.8.8aObc#v.y#v#ubkbvbvaXbvbC.k.Dai.UaXbv.Ga7aOaoaNboaWbo.s.Nb.#sb.#D#s#sbjb.b.a9b.a9.E.7.Ebjajaja2aj#Laj.naj#D#s.sbo#I.sbo.saCaCaC#I#I#I.W#xavaoaO.y.z#1bkbkaBaBaO.5aoaoav.Wa9#s#L.E#L#L.7.E.7#D.7.E#L#L#Laja2bpa2#L#L#L#L.7af.7afajafaj#L#L",
-"a2#La2#ga2#ga2#ga2#L#ga2a2#g#L#g#L#L#L.7af.7a9.7#Daw#x#xam#SaZa#aC#xaYa9a9a9#Da9aja9#L.n#L.n#Lajafa9.naf.na9a9.na9a9.na9.na9a9.n.na9a9.na9#D#D#saY#x.R#xaYbn#x#xblblbl#Mblbl#Dbl.n#p.nbl#D#D.N.N.naf.nafaja9#L.n#L#La9.7.n#D#s#saYaw#I#I#I#U#Ia0.Wao.8aObc.8.y.y#u#ubk#3bCapbkag.kbqaX.Q.Qbka5#u#v#vamava1bob..E.na9b..E#s.7.E.E.7.E.7.E.7.E.7.naj#L.jaja2ajajaj.n#D.s#I.s#I.saY#I#U#x#I#x#x#Ibo#x#I.CaoaO#v.y#1bkbk#u#vbcam.C#I#sa9.n.7.E#L.E.7#s#s.7.n#Lajbpa2bp.jbp.j#Laj#L#Lajafajaf#La2afa2",
-"#ga2#ga2a2a2#g#La2#ga2#g#L#ga2a2#L#L#L#L.7.7#La9#D#D#xaCaF.0aZana0#xaYbla9.na9#D#Laf#Laf#Laf#La9af#L.na9af.nafa9ajaf#Laf#Lajaf#Lafajaf#L#D.n#D#DawaYaY#IaY#I#x#IaYawaYaYaYawaYawbl#Mbl#D#sbl.s#Da9.na9.7afajaf#Laf.Ea9.Ea9#sa9#s.N#I#x#I#x#Ia0#I.Wao.8.8aObc.ybba5bkaXaX#3bvag#n.c.#bt#baLbcbdaBaB.y#vam.Wbfb..7#s#s#s.7.E.E.E.7#s.E.E.7.n.7.E.7aj#g.ja2.jaja2#L.E.n#s.s.s#I.s.s#x#I#I#x.s#I.Nbo#x#I#I.CaoaoamaObkaz.Q.z#v.8.Wbf.N#s.N#s#D.sa9.E#D#D.E.7#L#Laj#Laj#g#L#g#L#gbp#L#L#L#L#L#La2bpa2",
-"a2bpa2bpa2bpa2a2#g#La2bpa2a2bpa2#L#L#La9#L.7a9.E.7aYaY.Cam#vaZaZaobn#xbla9a9a9#s#L.n#L.n#L.n#Lajaf#Laf.na9a9ajaf#L#Laj#Laf#L#Laj#L#L#Laj.7a9.7a9#D#Dbl.NaYaY#xaY#xaY#x#U#xbn#IbnblaY#MaY.NaY#s#D.na9aja9af.7af.E#Laja9a9b.#D#s#Daw#x#I#I#x#I.Wbn.Wa0aoao.5.8.y.QazaX#3.O#3aVai#n#8aLax#O.W.Wao.8#1aB.y.5.Ca1bo.sbo#D#sb.#D.E.7aj.7.E#D.E.7.E.7.7.ja2.j#gbp.jaj.j.7#s#s#s#s.N.s#Iawaw#D.saw.N.s.s#D.s#x.W.WaoaC.8.0.y#v#v#v.d.8ao#I#Ibf.s#Db.bj.7#Dbj#L#Laj#L#L#La2aj#gaj#ga2asasa2a2a2a2#La2a2#g",
-"#ga2a2a2#ga2a2#ga2a2#ga2a2#L#ga2#L#L#L#La9.7.7a9.7.N.s#xamaF#va#.5am#x.N#D.na9.7af#Laf#Laf#Lafa9#L.n#La9.naf#Laf#Lajaf#L#Laj#Lafa2ajaf#Laf.7.7.na9.n#D.nbl#D#DawaYawaY#U#x#U#x#UaYaw.Nblaw#D#D#sa9.na9.nafajaf#Lafaj.7.na9#sa9#saY#I#I#xaC#xao.CaCavaoao#v.yaI.Qae.O#zaV.Dah#Xag#b#O.r#7#7#7.W#QaObdaB.y#vaoaqbo#Ibobf.N.Ebj.E.7.E.E.7.E.7.E.7.Ebp.j#g#g.ja2#L.j.E.7#s.nb.#s#D.saw.Naw.s#D.s#s.N.s.sbo#I.C.Wam.8bgbgamao.C.8axbcaxaoaobo.N#s#Db.#s.7.E#L#L#L#Laj#L#g#La2#gas.jasbp.j#L#g.j#g#L#g",
-"a2asa2asa2aa#ga2#g#L#g#Lbpa2#L#L#L#L#L.7.7.n.7.7a9.saYaY.Wa0amam.5am#IaYbla9a9a9aja9aja9aja9ajaf#Laf#L.na9#L.n#Lajaf#L.jafa2a2.ja2a2#Laj#Laja9#L#Laf#Lafa9.n#D#DaY#xaYaYaYawaY#U#xbnawaY.Naw#D#sa9.na9af.na9.na9.Ea9.na9.E#D#s#D#I#x#I#x.WaCaoaoao.8.8.8.y#1#1.Q#T#3bq.D#m#haibkavao#7aE.sbo.W.W.s.Wbd.GazaBbc.8##avbobfbobjbjb..7.7.E.7.E.7.E.7#g.j#g.j#g.jaja2.Eaj.n#D.nb.#sb.#D#s#s#D#s#D#s#s.s.N.N#I#x.Wam.WaC#x#I#xaCa0av.8.8.8ao.W#Ibo#s#s#Dbj.7#Lajaj#L#Laj#gaj#g#gasasaU#g#g#ga2bp#ga2#g",
-"a2a2#ga2a2#ga2a2a2#ga2aja2bp.ja2#L.7#L#L.7a9.7a9bj.N.N.N#xa0a0aCaF.5bnaY#D.na9.7af#Laf#Laf#Laf#L.n#L.na9.naf#Laf#Laja2#La2aja2#La2aja2#Laf#L.E#L#Lajafaj#La9#L.nblblbl#MblaYaYawbn#U#x#xaw.N.s#D.nafa9.na9a9a9.na9aj.7#sa9#sa9#s#x#I#x.Wbnavamaoao.8aObd.ybt#ubbag.O#3bA.iaJ#3bbav.h#7b.b.boa1#IaE#I#QaB#uaPaz.Gbcbcavavbobfb.bj.E.7.E.7.7.E.7#L.j#g#g#gaj#g.jajaf.E.n#s#s#D.E#D#s#s#D.s#Db.aW#sbf.Nbo.C.Wav.Cam#Mblaw#x#Iaoaqaoaqavavaoav.s.Nb.#D#s.7.E#L#Laj#g#Lbpa2asas.jaUaU#ga2bpa2#g.jbpa2",
-"#ga2#g#g#ga2#g#ga2#g#g#ga2#g#Lbpa2#L#L#L#L#La9.Ea9a9#saY#I.C.Wam#x#U#x#IaY.N#D#Daj#Laj.7.7a9.7.7a9#Laf#L#L#L.n#Lafafafajafaf#Laj#L#L#Laj#Laf#Laf.jaf#Laf#Laja9#Da9.na9#Da9.n#D#DawaYawawaYaY#MaY.7.n.7.n.7.Ea9.7ajaf.Ea9#s#D#D#D#Ibn#UaCaoao.8#vao.d.d.y.z.y#1bbagaX#3aAbx.caLav#7#I.s#7b.#sb.b..sbo#Iav#QaOaKbtau.GaZaFaq#Ibf.s.7.n#L.E#L.7aja3.Ebp.jbpbpajbpa3#s#D#s#s#s#s#D#sa9.n#D#s#D#s#D#s#x#Iaw#I.N#s#s#D#saY#saYaY#I#I#I#I#U.W#IaC.8ao.C#sa9#L.7.n#L#L#L.ja2.j#gasasas.jas#g.jas#gas#gas",
-"a2#ga2#ga2#g#ga2#ga2a2bp#ga2bp#Lbpa2#L#Laja9.7#La9#D#D.N#x#x.C.CbnbnbnaYaY#D#D#D#L#La9aja9.7.E#D.nafajaf.Eafafaj#Lajaf#Lafajafaf#Lafajaf#L#Laj#L#La2afaj#La9a9.na9bja9.na9#D.na9awblaYawaYawaYawa9.na9.Ea9a9.na9ajaj#L.n#D#s#s.N#U#Ibn.WamaO.8#v#OaObdbd.yaLbb.Q#8.v#3aV.abCbd.8#7#7.sb..sb..sbj#s.s.s#I.Cav.8.8#u#uaB.ybcao.Wbf#D#s#D.7.E.7.Ea3ajbpajbpajbp#L.E#s#D#s#D#s#D#s#D.n.7#s#D#s#D.s.N#x#I.NaY.s.N#s#D#s#D#M.N.s#I#x#I#x#I#x#IaCbd.8ao#s#D#s#L.7aj#L#L.j#gas#g#g.j#gas.jas#gas#g.j#g#g",
-"#g#La2#ga2#ga2bpa2bpa2#L#L#L#g#La2aj#L#L.7.7a9.7.n#D#saY.s.N#x#I#x#xawaY#Ibl.N.Naf.E#La9.7#sa9#D.n#Laf#Laf#La9afaf#Lajaf#Lafaj#Laj#L#L#Lajaf#Laf.j#Laf#Laf#La9a9a9a9.n#Da9.na9#D#D#s.N#s#D#s.N#s#D.Ea9a9.Ea9.7.na9.na9#s#D.s.N#x#Ibnbn.Waobg.8.8.d.d#vbd#v.z#1bb.QaX#3aA.kaXbcao#7.s.sb.b.b.b.#s#s#D.s.N.s#x.CavaFam#v.y#u.ybyby#Ibf.s.Nb..7.E#L.7.E#L.7.E.7.E.7#s#s#D#s#D#s#D#s#D#s#D#s#D.s.N.s#x#IaYbo.s#D#saW.n.7#s#D#s.N.s.s#I#I#I.CaCax#vaO.saw#s#D.n#Lafaja2a2.j#gas#g#g#g#g#g.j#g#gas#g.j",
-"#ga2#ga2#g#L#ga2#ga2#g#L#g#L#L#L#g#L#L#L#L.n#L.7#D#D#D#DaYaY.N.NawaY#xaY#x.NaY#Ma9.7a9.Ea9#D#Da9a9af.7af.Eafaj#Lajafafafaj#Lafaf#Lafaj#Laf#Laj#La2af.j#Laf#La9.7a9.7a9.7a9#Da9a9#s#Dbl.saY#saY#s#D#s#D.na9.Ea9.7a9.n#D#s.N.s#xbobna0aCa0am.8aOaO.8#vbd#vbd.yaL#1.Qbk.Obi#R#8#v.rbo.saE#sb.#sbjb..7.E.n.E#s.s#I#xbo.Wavbc.y#u.yanaoaq.Cbo.N#D.E.7.E.7#L.E.7.E.7#s#D#s#D#s#D#s#D#D#s#s#s.N#s.Naw.N#x#xaw.N#s#D#sbj.n.7.E#DaE#saYboaCaCaoaoaoao#Oao#Iawaw#s#D.n.7a9aj#g#L#g.j#ga2#g.jas#gas.j#gasas",
-"a2bp.jbpa2#ga2bpa2bpa2#L#Lbp#L#L#La2#L.7#L.7a9.7#s#D#D#D#D#s.NaYaYaY.s#x.s#xaYaY#D#s#D#D#D#s#D#sa9ajaf#Laf#La9af#Lajaf#Lafajafaj#L#Lafaj#L#L#L#L#L.jafa2#Laja9a9.na9a9.na9.na9#s#D#D#s#D#s#D#s#D#sa9#sa9#Da9.n#D#s#D#D.saY#xaY#IamaCamaobgaObcbdaOax#vbd#v#v.yaL#1.Qa5#3#R.vbc.W#7#s.sb.b.bjb.bj.E.7.Ea9bj#s#Daw#s.Nbo.C.8#van#ubc#v.8a0bf.s#D#sbj.7bj.7#D.7#sbjawaY#saY#s#D#s#Daw#DaY.saY.NaY.saY.saY.N.s#D#s#D.Ea9#s#s.N.sboawao.8.d.daoaC#I#x.sawbo#M#D#Daj.7#L#L.jbpa2bpa2#g#g#g.j#gas#gas#g",
-"#ga2#ga2#g#L#g.ja2#g.jbpa2aj#Lbpaj#L#Laj#Laf.7af#D#D#s#D#D#D#D#D.N.saYaY#xaY#x#IaY.N#D#D#s#D#Da9#L.na9.na9ajafajaf#Lafajaf#Laf#Lafaj#L#Lajaf#L#La2a2a2#Laf#La9a9.7a9.7#Da9bja9a9.7#sa9#D#s#D#s#D#s#D#D#s#D#s#D#sa9#s.NawaY#I.C.WaF.8b#ao.8bg#vbd.8#vbd#vbd#v.d#v#1#1.wagbi#8ao#O.saE.sb.#sb.#s.Eaf.Ea9.E.n#D#s#Db.#s.N#Iaqambca#aB.y#vaO#I.Cbf#I#s#Db.#Db.#Dbj#saYawaw#D.saY#M.N#M.N#saY.s#x.s#x.s#x.s.N#s#Db.#D#Db..N.s.N#Ibo.W.CaoaxaoaxaCaC#I#x#I#I#Iaw#s#D.n#Laj#L#Lbp#L#L#L.j#ga2#g.ja2.j#g",
-"#L#g#L#g.j#ga2bp#g#L#g#L#Lbp#L#L#La2.7#L.7.Ea9.EaY#D#D#s#D#s#D#saYbl.NawaY#UbnbnawaYawbl#D#p.na9afa9.n#La9#La9#Lajaf#Lafajafajaf#L#Laf#L#L#La2.ja2#La2#L#Laf.7a9a9a9a9.na9.na9a9.7a9#s#D.n#D#s#D#s.N#sbj#D#D#s#DblaYaw#x#I.CaCamaOaF.8.8aO#vbdaO#v.d#vaO.8aObd#v.zaBa5.O#r.Q#O.Wbo.s.sb.aEbjb.bjb.a9.E.7.n#s#D#s#D#D.s.N#Ibf.W.C#v#va#aOaF.8aoam.s#D#s#D#s#D#s.saYawaYaYawblaYaw#DaYaYaYbl.N#x#xaY.saY.N#s.N#saWawaY#I#x#I#x#IaC.C.WamaCaC.W#I#I#I#x#I#I#I.s#sa9.E#L.E#Laja2bpa2a2.j#ga2#ga2#ga2",
-"aj#g.ja2#g#L#ga2#ga2#ga2bpa2#L#L#Lajaf.Eaf.7a9.7aY#s#D#D#D#Da9a9.saY.saYbn#x#xa0#I#x.NaY#M#Da9.na9aja9a9.nafajafafafajaf#Laf#Lafaj#Lajafaja2#L#La2.3#L.jaf#L.na9.7.n.7a9bja9#D.n.7#sa9.n#D#s#D#s#D#s#D#D#s#D#s#DawaY#Ibn#Ia0aoa0#v#vaOaFaObd#vax.ybc.d.8.8.8.8bd.y#1a5aX.v#1ao.W#7.saE.s#sb.#Db.#s.7.E#D#s#D#sa9#s#D#s#D#s#D.s.saFaFamaO.y#v#v.5#I#Iawbf.s#x.s#xawaYawaYblaw#DblaY#Mbl#saYaw#x#I#x.Naw.N#sbj#s#D#I.WaC.WaC.Wamao.8aoao.W#IaY.NaY.N.N.s#D.saw#s#D.n.Ea9aj#Laj#Laj#ga2#gas.j#g.j#g",
-"a2#ga2#ga2aj#L#L.ja2a2aj#L.E#Laj#pa9a9#pa9.n#pa9#M#Dbl#Dbl#MaYaYaYawaYaYawaY#UaYa0.p.VbnaYawa9#La9a9ajaf#L#Lafaj#L#L#Laj#Laj#L#Laf#L#L#L#L#La2#La2a2#La2#La2#L#L#L#L#L.Ea9.7#s#D#La9.E#D.na9.na9.n#s#D#saw.Naw#xaw#I#x#I#U.CaCaoao.VaoaoaO.8aO.8#Oaoaxao.haC#Oao.daO#uagbibk#vav.W#I#s.E.Eaj.Ea3aj.n#L.E.7.nb.#s.N.saY.N#I.N#IaY#I#I.C.8#v.yaBaPaBa#aFa#.5aqaqaN#xbfbf.N.NaY.Naw.NaYaY.Naw.NbfaYawaYaYaw#x#I#xa1#U#I#U#I#x#I.N.s#D#s#D#Dbj#sbj.E.7.Ea9.7.7#L.7.7.7.7.E.7#L.7#Lbpa2.jas#g#gas#gas",
-"a2.ja2#L.j#L#La2a2#g#L#Laf#L.7#La9#pa9a9#pa9#pa9bl#Dbl#sbl.NblawblaYblaY#xaYaY#Ubna0b##UbnaY.n.7#s#Da9.na9.n#Laf#Lajaf#Laf#Lafaj#Lajafaj#L#L#L.j#L.j#La2af#La9a9#L.7#L#La9.7a9#Da9.Ea9.n.7.n.7#s.na9#M#Daw#x.s#xawbn#I#U.CaCaCaCaobgaCaoaOaOax#vao.hao.W.W.Wav.haoax.y#E#zagapbc.Wbo.s#s.E.Ea3.E.7aja9.Ea9b.a9.EaY.Naw.Naw.Naw.N#I#x#Ia0amaF.yaBa7#u.ya#aoaqavaq#x.C#x#I.Naw.NaYaw#x#I#I#x.s#xboaYaY#I#x#I#x#IbfblaYbl.NaY#D.N.N#Dbj#sbj.Ebj.7bja9#L.E#Laj#Laj#L.E#L#L.7aj#La3ajas#g.jas.j#g.j#g",
-"a2#gas.ja2#L#Laja2#Laj#L#L#La9.7.na9a9#Da9#Da9a9#s#D#D#s#D#s#D#Dbl#sbl#D#M#DaYaYaY#Ubga0bnaY#s#D#s#Da9a9.na9ajafaj#Laj#Laj#L#Laf#L#L#Laf#L.j#L#La2a2#La2#Lafa9a9ajafaja9a9#s#D#s#Da9.n#D#sbl#s#D#M#s#D#Maw.N#I#I#I#I#x#I#IaC.CaC.paCaCaoao#O.8ao.h.W.W.W.W.W.W.W#I#Q#v.w.Obiagbk.W.r#I#sb..E.E.Eaja9.E.n.7.n#D.saY.saY.Naw.NaY.Naw.N.s#xaCaq.8aF#Sa7a7#u.yaFam.5ao.Ca0.C#x#x#x#Ibn.R#x#x#xaY#xaY#Ibn#UaC.W#xbf.sbl#s#D#sa9.Ea9.7.E.7.7#L#L#Laj#Laj#L#L#L#L#L#L#Lbpajbp#Lbpbp#Lbp#g#gas#g#gas#gas",
-"a2.ja2#La2aja2#L#L#Laf#L.Ea9aja9a9a9a9.na9a9.na9#D.n#Da9#Da9a9.na9a9#sa9#D#D#D#saY#xaCa0#U#x.N#s#D#D.na9a9.n#La9#L.n#Laf#Laf#Lajafaj#Laj#Laf#L#Lafajafafaj#L.Ea9#La9a9.n#D#D#D#D#D#s.Nbl#D#s.N#M#D#M#D.saYawaw#IaY#I#U#I#x#IaC.WaC.CaC#IaCavao.W.Wav.W.Wbo#I.W.Wbo.W#Q.y.w.Uau#3bd.8bo.s#s#sbjb.a9.E.n.7b.#sbj#s.Naw.Naw.NaY.saY#s#s#D#I#x#Ia0aoaFa#aBaBaBa##va#aoa0aoa0aoa0aC.Ca0#xaCbn#I#xaw#xa0aCa0#x.Caw.N.Na9a9a9a9.7a9.Ebj#L#Laj#L.E#L.7#L#L#Laj#L#Laj#Lajbp#L#Lbpajbpaj#Las.j#g.jas#g.j#g",
-"a2a2a2.ja2#Laf#Lajaf#Laja9a9.7a9a9.na9a9a9a9a9a9.7a9.7.n.7.7a9.7.7#L.7a9#s#D#D#D#D#Mbnbn#x#xaY.N.s#D#D#sa9a9#Laj#L#L#Laj#Laj#L#L#Laf#Lafaj#Laj#La2a2afajafafa9a9a9.na9#Da9#s#D#D#MaYblawaYawaYbl.s.Naw#D.saYawawawaw.s#I#I.C.W.W#U#I#I#x.WaC.W.W.W#I#Ibo#xbo#I#Ibo.Wavbc.y#u.G#3.Qbc.Wbfaw.s#sbj.n.7.n.7#s#D.s#D.saY.NaY.N#M.NaYb.#D#s#Daw#Ia0#UaFaOamam.5.8.yaB.8aO.5ao.5amam.8amaCa0a0#x.C#I#Iaoam#I#xaY#D.N#Da9.7.7.7a9.7.7.7aj#L#L#L#L#Lajbp#Lbp#L#Laj#L#L#L#Lajbpaj#L#Lbp#L.j#gas#gas#gas#g",
-"a2a2.j#La2#L#L#Laf#Lafa9a9a9#D#D.7#Laf#L#Lajafaj.7aj#L#L#L#Laj.7aj#Laj#Lbj.7.7b.a9#D#D#xaCa0.W.NaYaw#D#Da9.na9af#Lafajaf#Laf#Lafaj#Laj#L#L#Laf#L.3ajaf#La9aj.7a9a9a9a9a9bl#DblaY#DaY.NawaYblawaY.NaYaw.sbl#s#Maw.N.saw#x#I#I#I.C#I#x#I#I.W#Ibo#Ibo.Wbf#Ibo#Ibfbo#Ibo.W.8#Qbc.ybkbv.Q.8#I.s.s#s#sb..nbj#s.N#sbj#saY.Naw.saY.NaY.s#D#s.Nbo.N#I#I#xaCamao.Ca0b#aobyaOaF#v#vaB.y.ya#aOaF.5aCa0aC.CaCbn#xaY#D#D#D.7#D#Laj#L#Laj#L.7#L#Laj#L#Lajbp#Laj#L#gaja2bpa2bp#g.jas#gas#gas.j#gas#g#g#g.j#g.j#g",
-"a2.ja2#L.j#Lajafajafa9a9a9#Da9.n#L#L.7#L#L#L.7#Laf#L#L#Laf#Laf#L#L#L#Laj#Laj.7.7#L.n#DaY#x.W.C.C.s.NaY#s#D#Da9#s#Laj#L#Laj#Laj#Laf#Laf#Lajafaj#Laja2afajafafa9.na9#pa9#M#Dbl#DaYaYaYawaY#xaYaYaYaw.Naw#D#sbl#s#M#s#saY.s.s#x#I#I#Iawawawbo.N.s#I.s.s.sbo.N.s.s#I#I#x#Ia1.Wao#vaLbkap.yaobo.N.N.s.7#s#sbj#s#D.sbjaY.saY.Nbl.saY.N.s.N.s.N.N#I#x.sbfbf.C.WaCaqamaq.5aoa##v.0#u#u#ua##vaOaFama0#x#xaYaY#D#Da9.7#L.Eaf#Lafaj#Lbpbp#Lbpa2bp.jbpa2#L#ga2aj#g#L.jbp.j#L#g#g.j#g.j#gas#g.j#g.jas#gas#gas",
-"a2#L.ja2a2#L#L#Lafafa9.na9a9a9#D.7#L#Laj.7#L#L#L#L#Laj#L#Laj#Lajbpaj#Lbp#L.7.7bj#L.7#DaY#xa0.C.WaYaw.N#D#D#D#sa9aj#L.Eafajaf#Laf#Laj#Laj#L#L#L#L.3#L#Laf.7#La9a9a9a9#p#Dblbl.NblawaYaYaYaYawaYawaY.NaY.sbl#sa9.n#D#D#saw.s#I#I#xaw#x.saY.s.s.N.s.N.s.Naw#D.s.N.sbn#I#Iboa1#b.d.8#Tap.Qbcbo#D#sbo.nb.#D#s.Nb.#D.s.Naw.Naw.NaY.Naw.Nbf.s.N.sbfaY.N.saY.sbf.C.Waqavbga#a#a#.yaZ.0anaBbm#vaOaobn#I#xblaY#Ma9a9af#La2#L#L#Lbp#Lbpaj#L#g.ja2bpa2aj#gaja2#g#L#g#L#g#L#g.j#gas#gas#g.j#gas#gas.j#g#g.j#g",
-"as.j#g#La2aj#Laja9ajaf#L#L.n#Laf#Laj#L#L#La2#ga2#ga2a2a2#ga2a2#g#L#Lbpaj#Laj#Laj#D.s#DblaY.VaObm.C#IaYaw#D#s#D#Dbl#Ma9a9af.7aj#Lajaf#Laf#Lajafaj#Lajafaj#Laj#L#Lajafa9a9.7#sa9#DaYaYaYaYaY#xaY#x.N#s#D#s#D#s#Db..n#sbj.n#D.sbfbo.s.s.N.s.N.s.s.N#s#D#s#D.s.N#Ibf.s#Ibo#I.Wav.8bcbta5.U#3aB.5.W.N#x#I#x.saY.s.N.N.s#D#Ma9b..E.7.nbfaw.NaY#xaY#Ibf#D#s.N.N#x.Waqavb#ambga#aO.0.y.yaoaCa0#x#xaY.N#D.Ebj.7.7.7.7.7.7#ga2#ga2#ga2#g#ga2#ga2aj#g#g#L#g#g#L.jbp#Lajbp#L#g.jas.jas#gas.j#ga2#ga2#g.jas#g",
-".ja2#Laj#L#L.7.7af#Lafajaf#Laf#Lbpa2#La2#L#L#Lbp.ja2#g#ga2#ga2#g#L#L#L#L#L#L#L#L.7#D.NaYaYaobmaZamaCbn#x.NaY.N.N#Mbla9.nafajaf.7a9#Laj#Lajaf#L#Laf#L#L#Laf#Lafaja9af.7.n#Da9bja9#xawaYaYawaYaYaw#Dbl#s#D#D#s.7.n.7b..nbj#sbj.s.saw.s#D#saw#D.s#D#s#s.s.N.sbfawbf#Ibf.sbo#Iav.8bc#uaz#3bi.G#vaq.W#I#x#I#x#x#x.s#DaY#s#D#s#D#s#Db.aY.saY.N#I#I#x#x#I#x#I.C.WaqamamaFaObm#vaBaZ#va#bna0#xaYaw#D#D#Dbj.7.7.7.7.7.7.7#g.ja2#g.j#ga2bpa2a2a2#g#La2#L#g.j#g#gajbpbp#Lbp.j#gas#g#g.j#gas#g.j#g.ja2a2#ga2",
-"#L#L#L#L#L.na9.n#Lafajaf#L#L.ja2#L#Lbp#Laj#g#L#L#gbp.j#L#gaj#ga2aj#g#Lbpajbp#Laj.7#D#sblaYb#aOa7b#amaoa0aC#x.baYbl#Mbla9#D#L.na9aj#Laf#L#Laj#Laj#Lajafaj#L#Laj#Lafajaf.7a9a9#Da9#Dblblblblblblbl#D#s#D#D.n.7.E.7.E.7.7.E#s#s#D.s.N.s#Db.#D#s#D#sbj#s#D#s.N.sbfboaYbo#Ibf.Wavbcbc.wa5au.M#3.w#v.5#Ibn#I#IaY.s.N.N#saY#s#D.s#D.s.NawaYawaY#I.C#Ibn.Wa0amamao.5.8.5#uanaB.ya#aoama0awaYaY.NaY#D#D#D#L#L#Lbp#L#L#L#Laj#gbpa2bpa2.j#g.j#L.j#L.jbp#g#Las#ga2#ga2aj#L#L#g.j#g.j#ga2#g.ja2#ga2#g#Laj#Laj",
-"#D.na9#sa9#Da9#Daj#L#L#Lajaf#L#L#g.ja2#g#g#g.j#ga2a2#g#ga2#ga2bp#ga2#ga2#ga2#g#g#Lb.a9aY#UambmaZaO.t#SaFb#a0a0#UblaY#s#D.na9.7.n.7aj#Lajaf#Laf#Laf#L#Lafaj#Laf#L#Laf.7af.7.n.7#D#M#D#D#D#D#D#D#s#D#Da9#sa9.Ea9aj.7.E.E.7.7b.#sbj.s#s#D#s.N#saW#s.N#s.Nb..N.Nbo.N#xbo#x#I.Wav.8.yaz#T#3#z#z.O#uaF.CaC.C#x#I.Naw#D.sbl.saY.s.Nbo#Ibn#U#x#Ua0#Ua0aCb#am.8a##va#aBan#u#u.0aFama0#xaY.NaY#D#s#D.7.7.7#Lbpaj#Lbpajbp#Lbp#L#L#L#Lbp#L#L#L#L#Lbp#L#Lajbpas.ja2.j#ga2bp#Laja2#L#La2aja2#L#L#L#Laj#L#Laj#L",
-"a9a9a9a9a9.na9a9#Lafajaf#L#La2a2aj#g#ga2#L#g#L#g.j#g#g.j#g#g.j#ga2#gaj#ga2#ga2#g#L#L#L#s#xb#aOa#.t#SaZaBbmbga0bnawaYblbl#Da9.n.7#Laf#L#Laj#Laj#L#Lajaf#L#L#Laj#Lajafajaf#La9a9a9#D#D.na9a9.na9a9a9.na9.7a9.E#L.Eafaj.7.E.7.nbj#s#Db.#Dbj#sbj#sbj#sbj#D#s.N.s.N#x.W#xbo#xavambcbb.O.O#a#a.Oba#3aBamaoa0.W#x.s.N#saY#saY#I#x#I#x#IaCa0aoamaob#aoamaF#v#vaB.0aB.0#ua#a#.5ao#xaY.Nbl#sbl#Da9.7.n.7.7aj#L#L#L#L#La2#Laj#Laj#L#g#L#L#Laj#Laj#L#L#Lbp#L.j#g#L#L#Laj.7#L#Laj#Laj#Laj#Laj.7aja9#La9aja9a9",
-"#Da9#s#L.n#L#L#Laj#L#L#g#L.jbpa2#ga2#g.j#gas#gas#g#g#g#g.j#g#gas.j#g#g#g#g.jas#g#gaj#L#D#xaOaZan.FbmaBaZbmaFb##UaYblawaY#s#Da9.7.n#Laj#Laf#Lafajaf#L#Lajafajaf#L.3#Laf#La9aj.7a9#Ma9a9#Da9#Da9#Da9#D#La9aj.7aj#L.E#Laj.7.Ebj.nb.#s#D#sbj#s.N#s#D.s#D#sbj.N.sbf.s.C.Wa0.Wam.8.ybb#a.O.GaPaz.M#C.faOaoaq.W#xaw#D.s#D#I.N#I#xaCamaoaFaO#vaO#S.y#S#v#v#S#va#aOaFaOaFamaoa0#xaY#D#sa9#D#Da9.7.7#L#L#La2#L#g#L#g#Lajbp#L#Lbp#Laj#Laj#L#Laf#L#Laj#Lajbp#L#Laj#L.n.7a9#sa9.n.7.nbj.nbj.na9a9a9.na9#Da9a9",
-".7#L#L#L#L#Laja2#L.jbp.j#L#g#L.j#g#g#gasas.jas#g.jas.jasasas.jas#gas.jasas#gas#gasbp#L.7awam.yan.Fbm.TaZaBaFam.R#IaYawbl.N#s#D#D#Lajaf#Laj#L#L#L#Lajaf#L#L#L#Laj#L.jafajafafafaja9#Da9a9a9a9a9.n#Lajaf.E#L#Laj.7.j#Laj#L.E.7.E#D#saW#D#sbj#sbj#Db.#DaE#D.sbf#IbfaCaq.Waoao#v.y.wbkaz.w.waz#3biau#uaOamao#xboaw.N.s#x#I#xaCambgbg#uaBa7#ua7an#ubh#vaFaOama0aCa0a0a0bn#UaY#sa9af#L#sa9.7a9aj#Lbpaj#g#L.j#gaj#g#L#Laj#Laj#L#L#Lbp#L.E#L.E#L#L#L.7#L.n.7a9#D#D.N.s.Na9#s#Da9#sa9#D.n#D#D#s#D#D#s#D.7",
-"aj.7aj#gaj#gas.ja2bpa2#L#gaja2bpas.jas#gas#g.jasasasasas.jasaU.j#gas#gas#gas#gas#g.ja2#LaYa0.0aZ.Fa#aBaZa#aFbn#UaYaY.N#MaY#D#D#Daj#L#Laf#Lafajafajaf#L#Lajafaj#L.3#La2af#L.Eaf.7a9a9.n.7a9.n.7a9af#Laf#Lafaj#L#L.j#g.E#L.E.7#s.Ebj#s#sbj#D.s#Db..N#s#D.s.sbf.s#Iaqa0ao.C.8#vbbaPbk#u.w.Q.w.wau#N.Q.yavam#I#x.sawaY#I#IaCaoaoaO#vaz.Gaz.GazaS#uanaoaCa0.Wa0.CaC.CawaY#Da9a9#La9aja9a9.7aj#L#L#Lbpaja2bpa2bpa2#Laj#L#L#L#L#Laj#Laj#La9#L.7.7.E.7.E#D#D.N.s.N.s.N#x.7.7.n.7a9#sa9#D#s#D#D#D#D.7#D#D",
-"#g#g.j#g#g#g.j#g#g.j#g.j#g#g#g.j#g#gas#gas#gas#g.jasasasas#gasasas#gas.jas#g.jas#g#g#ga2a9.C#SbhaFbgamam.8amaCa0aYaYaY#Da9.E#Laja9#Laj#Laj#L#L#L#L#Lajaf#L#Laf#Laja2ajaf#Lafa9a9.na9a9a9a9.7a9a9af.n#Lajaf.7#L.E#Lbpaj#g.n.7#s.N.s#DaY.saY.Naw#x.saYbo#x#x#I#x#I.8amaob##v#u.G.2bkaz#ubbaP.w.G.2.u.Oa#aoav#Ibfboawbo#xaoamaBan.Gba#a#ua#ao.5#Qaq.W#x#x#x#I#x#xaY#xawaYbl#D#M#Da9a9a9a9a9.7a9a9a9#L#Lajaf#Lajaf#La9.n#D#saY.NaYaY.N#sbl#D#MaY#M#D#D.n#Da9#D#D#D.n#Laj#L#L.E#Laj#L.7aj#Laj#Laj#Laj",
-"#g.j#gas.j#gas.j#ga2a2#ga2.jas#gas.j#g.jas#g.jas#g#g.j#gas#gas#g.jas#gas#gasas#g#g#La2.j.7bnaF#ub#b#amb#ama0bn.CaY#M.N#sa9.na9#Lajaf#Laf#Lafajafaj#Laf#Laj#Laj#La2afafaj#L#La9.7a9.7a9.7a9a9a9.7afafafa9#L.n#L.7ajaja2.j.7.E#D.N#Daw.Naw.N#I#x#x#I#x#I#x#IaC.CaC.5bg.8aO.0.w#T.2.G#u.ybbbb#u.GaX.e#z#SaoaC.s.W.W#I#Iaoam#v#u.G#TarazbmaoamavaN.C#x#xawaY#x#IaY.saY#Daw#D#Da9a9a9#sa9.na9a9.na9.na9a9a9#sa9#Da9#sa9a9a9#D#Mbl.NawblblaY#MaYaYaYaw#D#D#s#D#D.n#D#D.n#La9ajaf#Laf#Laj#L#L#L#L#L#L#L",
-"#g#g#g#gas#g#g#ga2.j#g.j#gas#g.j#g#gasas#g.jas#g.jas#gas.jas#gasas#gas#gas#g#gasa2aj#g#La9aYa0bmbgambgama0.C#x#xawaY.N#Da9.7#L#Laf#Laj#Laj#Laf#L#Lafaj#Laf#Laf#Laja2#Lafaf#L.na9.na9a9a9.Ea9a9.7ajafajaf#L.7#L.7bp.Ebp.Eaj.7#s.Naw.Naw.Naw#x#I.N#I#x#I.C.Wa0aoamao.5ao#vaBazal#3aB#vaF.y.yaB#u.wa6#z.w.8.C.Wam.CaoamaO#v#uaz.G.GaBaFama0#xawbfa1aY.NaY.NaYaY.NaY.N#D#D#D#Da9a9a9a9.7#D.n#D.7a9a9#D#s#D#D#D#s#D#Da9.na9a9#D#Daw.N#D#s#D#D#D#s#D#D.7.7.7.7.E.7.7.7#L#Laj#L#Laj#L#L#Laj#Lajbpaj#Lbp",
-"as.jas.j#g.jas.ja2#ga2as#g.j#gas.j#g#g.jas#g#gas#g.j#g#gas#gas#gas.j#gas.jasas.j#ga2#gaj#LaY#Uamb#ama0a0aCbn#Ibn.Nblaw#Da9aja9aj#Laj#L#Laf#L#Lafaj#L#Laj#L#Laj#L.3aj.3#L#L#La9.7a9a9.7a9a9.7a9a9afa9#La9aj#L.n#L.E.7aj#L.E#D.sbfaw#M.NaY.s#x#IaY.C.W.C.W.Caqaqao.5aoaF#v#uaz#T.o#vaO.8.8bcbcaB#ualbaa5#vaoa0avaoaF#vbm#uaz#u#uaZa0am#x#M.N.N.N.N#D.Naw.N#s#D#D#D#D#sa9#Da9.n#L#L.na9a9.7a9a9.7#s#D#D#Da9#Da9#D#s#Laf.7a9.n#Da9a9#L.7#L.7aj.7#L#Laj#Laj#L#L#Laj#L.j#L#La2#La2#La2ajbp#Lbpa2#L#ga2",
-"#g#g#g#gas#g#gas.j#g.j#g#gas#ga2#gas.j#g#g.jas.j#gas#g.jas#gas#gas#gas#gas#gas#gaa.j#g#L#LbjaY#Ua0aCa0a0#xbn#xawbl.N#D#Da9.7#L#Laf#Lafaj#Laj#L#Laf#Laf#Lafajaf#L#La2#Lajaf#La9a9.n.7a9a9a9a9a9#Lafafajafaf.7#L.7#L.7#Laja9#saY#IaY.saY.saY#I#x.s.C#xaC#x.Caoaqamao.8a##v#u.Ga5azaOaOaoao.8#v.ya5ba#z.w#vao.Wam#vaB#uaB#uaZa#aF.5#xawaYbla9.E#D#sa9#sa9#D.7.7a9#s.7a9.7.7#L#L#L#L#L#Lajaf#L#Lajafa9.7.na9a9.7a9a9.7aj#L.7#L.E#Lajafajaf#Laf#Lajaf#L#L#L#Laj#L#L#L#La2aj#gaj#gaj#g#La2.jbp.jbp.jbp",
-"as.jas#g.jas.j#ga2as#gas.j#g.j#g.j#gas#ga2#g#gas#g.jas#gas#gas.j#gas#gas#gas#gas#g#ga2bp#L.na9bla0bnbn#UaYawaYaYaYbl#Da9.n.7afaj#Laj#L#L#L#Lafaj#Laj#Laj#L#L#L#L.ja2a2a2af#L.n.7a9a9a9a9.7.n.7a9afaf#Lafaj.7af.E#Laj#L.Ea9aw#x#IaY.saY.NawbfaY#x#I#x#I.C#I.C.Wa0.8am#v.0#u.G.w#uaO#v.8#Q.8bdbb.Q.K#z#u#vaFaoaBa7a7#u#SaFaoamaCbnaYaY#Da9aja9a9bj.7a9.7a9.Ea9.7.7af.7#L#Laj#L#La2ajafaf#L#Lafafafaj#Laf#Lajaf#L#La9#L#Laj#La2a2a2#ga2.j#g.ja2a2#gaj#gaj#g#La2bp.j#g.j#ga2#ga2#g#g#g.j#g#g#ga2a2#g",
-"#g#g#g.jas#g#gas.j#g.jas#gas#ga2as.j#g.j#g.jas#ga2#g#g.jas#gasasas.jas#g.jas#g.jasaa#g#Lbp.7afajbn.RaYaYaYaYaYaYbl.N#D#D.7#L#L#Laf#Lafaj#L#L#L#Laf#Laf#L#La2#L.3#La2#L#L#Lafa9a9.n.7a9.7a9a9a9.7afaf#Laf#La9aj.7.7.7aja9#saw#x#I.N#saY#I.NaY.s#I#x#I#x#I#xaC.CaoamaO.yaB.waz#uaZ.8bc.8.8#Q.y.Q.w#4#4.wa##vaB.Qaz#vaFama0#x#x.N.s.N#D#sa9.7a9.E#D.E#L.7aj.7#Laja9aj.7#L#L#La2.ja2af#Lajafajafaj#Lafafajaf#Lafajaf#L#L#La2a2.j#ga2.jas#gas#g.jas#gasa2#g.j#g.j#g#g#g#g#g.j#g.jas.ja2#gas.ja2.j#g#g",
-"as.jas#g#gas.j#ga2as#g#gas.j#g.j#g#g#ga2a2#g#g.j#g.jas#gas.jas#g#gas#gasas#gasasa2#g.jbp#LajafafaYbnaYaYblaYaY#MaY#D#sa9a9.7#L#L#Laj#L#La2afa2#L#L#Laja2#Laf#L#La2.j#L.3aj#La9.7a9a9a9a9.n.7a9a9afaj#La9aj#L.7#L#D.na9#s.naw#x#Ibl.Naw.Naw.NaY#xawaYaw#x#I#xaC#I.8aO.yan.w.G.w#vb#by.8.8bc.ybb.Qay.Y.G#u#1a5.GaBamamaobn.s#Da9.7aY#Da9.7a9.7.7#Da9aj.7af.7af.7#L.7afaj#La2a2a2.j#Laf#Laf#Laf#Laf#La2#La2#La2a2a2.7.j#La2#gaa.jasas#gas.jasasas.j#g.j#gas#gas#gas.jas.j#gas#g#gas#ga2.j#ga2#ga2a2",
-"a2#ga2.jas#gasas#gas.j#g#g#gas#g.ja2a2a2.ja2a2#ga2#ga2.jas#gas#gas#gas.j#gas#gas#g.j#ga2bp#L#Laj#L.naY.R#xaYaY#D#Dbl#D.7#saf.7.n#L#L#L#L#Laj#L#Laja9#La9aj#L#L#La2a2a2.j#L#Lajafa9#sa9.7a9a9a9.E#Lafafajafa9.na9aj.na9#s#D.N#IaY#s.sbl.s#D#s#D#s.N#I#x.W.Cavam.5.8aF.0azal#T.w.0.8#v.8byaKbbaIaP#aba#N.O.GazaB.5#xaw.N.NaY#D#D#s.7.n.7#L#La9.7a9#L.7af.E#L.E#L#L#L#L#La2#La2bpa2#L#Laj#La2#L#Laja2aja2#ga2.jbpa2as#gas#gas#gas#g.j#g.j#g#g.j#gas#ga2.j#g.j#g.j#g#ga2#g#ga2.j#ga2a2#g#ga2#g.j#g#g",
-"#g.j#g#g#g.j#gas.j#g#gas.j#g.j#ga2a2#ga2#g.ja2a2#g.jas#g#gas#gasas.j#gas#gas.j#gasasas#g.j#g#Lbp#La9#Dbl.RaYaY#D#D#Da9#D.7a9.7#L#L#Lbp#L#Lbp#L#L#L#L#L#g#La2a2#Las.ja2a2#Laf#L.7a9.7.na9a9.7a9a9af#L#La9#Lafaja9.na9.n#D.s.s#x#I.Nbl.s#D#M#DaY.saY#I#xaC.Caqao.5bgaO#uaz.G.G#u.y#x.W.8#v#v.y.0.ybabaay.f#uaB.8a0bfaYaY.N.N#D#D#Da9.7.7af.7.7af.E.7aj.7#La9#L.n#L#L.jaf#L#gaja2#L#La2#Lafaj#La2#L#g#g#L#g#L#ga2#g#gas#gas.jas#gasasas#gas#gas#g#g.j#g#gas#ga2as#g#ga2#g#L#gbpa2bp.j#L#gajbpa2bpa2",
-"a2a2#g.jas#gas#g#gas.j#g#gas#g#g.ja2a2.ja2a2a2.jas#gas#gas#g.jas#gasas#gas#gasas#g#g#ga2#g#L#La2#La9a9#DaYbl#Dbl#Da9#Da9a9.7#L#La2#g.j#g#ga2#ga2.j#ga2.j#g#g#g#ga2a2#g#La2aj#L#L.n#Da9a9.na9a9.7#Lajafajaf.7a9.naf.na9aE.N#I#Ibn.saY.Naw.NaY.saY#x#I#x.Wa0ao.5.8aoaO#u.G.Gaz#ua##IaCaCaobg#va7azaH#zaz#uaFam#x#xaw.N.N#D#D.n#D.7.E#L#L#Laj#L#L#Laf.7#L#L.E#L#L#L#L#La2#La2#L#gaja2#L#La2#L#L#La2a2#g.j#ga2#g#L.jas#g.jas#gas#gas#g#g.j#gas.j#g.j#ga2.jas.j#g.j#g.j#ga2.j#ga2#g#L#g#gaja2bp.j#L#g",
-"a2#g.jas#g#g.jas.j#gasa2#g.j#g.ja2a2#ga2#La2a2#g.jas#gas.jas#gas#gas#gas#gas#gasas.j#ga2#gaj#Lbp.j#La9a9#D#Dbl#Dbl#D.7a9.7.7af.7a2a2a2a2a2a2.ja2bpaj#Lbp#Lbpa2#L.j#g#La2#L.7#L.7a9a9a9.7a9.7a9.n#Lafaf.7afafaja9.na9.n#D#s#I#x#IaY.sawaY.saYaw.N#I#x#I.C.W.5av.5bgaOaB.G.O.G.y.5aO.8bgaFaB.Gau#N#zaz.0aFa0#x.NaY.N.N#D.n#D.7.7a9#L#La9#L.7#L.7#L.E#L#L#L#Laf.7#L#La2#L.jbpa2#La2#La2#Lajafa2#L.j#L#g#L#gaja2#g#g#gasasas#gasasas.jasasas#gas#gasa2.j#g#gas#gas#g#ga2bpa2bpaja2aj#ga2#L#g#La2bpa2",
-"a2#ga2#g.jas#g#g#gas.j#ga2a2as#ga2aja2.j#g.j#La2#g#g.j#gas#g.j#g.jas#g.jas#g.jas#gas#ga2#g#La2#L#L#g#La2a9a9#D#D#Da9#Da9.7a9#L.7a2.j#g.ja2aja2#L#L#g#ga2.j#L.j#g#La2#Laj#L#La9.7.na9.na9a9a9a9a9#L#Lajafaja9a9.naf.n#s#s.N#I#x#U#I#x#x#I#x#I#x#I#x#I#x.Wamao.5.8ao#v#u.Garaz#ua#.y.0#u#u#aau#3alaza#b##I#xaw#D#sa9#s.7a9.7a9aj#L#La2aj#L#Laf#La2#L#La9aj.7#L#Laja2#L#g#La2#L#g#Laj#L#La2#L#La2#L#ga2#ga2#g#g#L#gas#g#gas#gasasasas#g#g.jasas.j#g#gas#g.j#g.j#ga2.jbpa2bpa2bpa2bp.jbp.jbp.jbp.jbp",
-".j#g.ja2#g.j#ga2.j#ga2.j#g.j#g.ja2#ga2a2a2a2a2#g.j#gas#g.j#gas#gas#gasas#gas#gasa2.j#gaj#g#Lbp#La2#La2#L#La9#Dblbl#Da9bja9#L.7#L#L#Laf#L#L#Laf#Laj#L#L.7#L#L#L#L#L#L#L#L#La9#L.7a9#Da9a9.7a9.Ea9#Lafaf#Lafa9.na9.na9.E#D#s#x#I#I#I#I#x#I#x#I#x#I#x#I#x.WaC.5.8.8.5aBa5#a#TaPaPbk.U#3al#3#T.G.w.0aFaC#x#x.N#D#Dbj#Dbj.7.7aj#L#L#La2#L#La2#La2aj#L.7#L#L#L#L#Laf#Lbp.j#La2bpa2aja2#La2af#L#Laja2#L#g.jbpa2bpa2#g.j#gas.jasas.j#gas#gasasas#g#gas#ga2.jas#ga2#g.j#g#L#gaja2aj#gaja2bpa2#L#L#L#g#La2",
-"a2#ga2#ga2a2#g.j#ga2#ga2a2#g#g#g.j#L.j#L.j#La2a2#gas.j#gas#g.jas#g.j#g.j#g.j#gas.j#ga2a2#gaj#L#L.ja2#g.j#g#L#Dbl#Da9a9a9.7a9.7a9a9a9a9a9a9#sa9#Da9a9.na9a9a9#Laf#Laj#L.7a9.E.7a9.n.7.n#Da9a9a9a9#Lajaf.Eaf.na9.naf#Ma9.s.s#I#x#I#x#I#x#I#x#I#x#I#x#I.CaCaq.8am#vaO#u.G.Uay#3#3bv.M#C.O#u.y.5am.C#UaYaYaw.N#D.7.7.7.7aj.7#L#Laj#ga2#ga2a2.ja2a2a2ajaf.7#L.7aj.7#La2a2bpa2aja2bpa2#L#Laja2#La2#L#ga2bpa2.j#g#ga2#gas#gas#gasasas.jas#g.j#gas.j#g.j#ga2a2.ja2a2#gas.j#L#g#L#g#L#gaj#Laj#L.j#La2aj#g",
-"#g.j#g.j#g.ja2a2#ga2.j#g.j#g.j#ga2a2a2a2#g.ja2#g.j#gas.j#gas#gas#gas#gas#gas#g#ga2#g.j#L#g#La2bp#La2#gas#g#La9bl#D#Da9bja9.7.n.7a9b.#D#s#D#D#D#s#p.nbl#p.na9a9a9#L.7#L#L#La9.7.7a9#Da9.na9.n.7a9#Laf#Laf#Lafa9.na9.n.E#s.N.s#x#U#I#x#x#I#x#x#I#x#I#xaC.Wa0.8.8.8.yaB#T#4beaM.Y#T.fa7#uaOa0bf.s.N#Mbl#s#D#D.s#DaW.E#L#L#Laj#L#g#ga2a2.ja2a2a2aja2.7#Laj#Laf#L#L#L#L#ga2#L#g#La2#L#La2#L#L#L#La2aj#ga2#g#g#ga2#ga2as#gas#gas#g#gas#gasas.j#g#gas#g#g.ja2#g#g.ja2.j#L#g#L.jbp.j#La2aj#L#Lbpaj#g#L#g",
-"a2a2a2#La2a2.j#ga2.ja2a2a2a2#ga2#ga2#ga2a2a2#ga2asaa#ga2#ga2#L.j#La2#L#Lajafa2#L.ja2#ga2#La2#L#L#L#Laf#Laj#L#L#La9bl#Da9blaYaYaYblbl#DaYaYawaYaYblblblblblblbla9#Da9#D#sa9#Da9#D.na9.7a9.7a9a9.n#Laf.Eaf.Eaf.naf.na9#M#D#saY.saw.N#s#s#D#s#s#D#s.C#I#I.C#Iao.5#v#u.OaVadbi#3#1aBbdaO.W.C#IaYbf.N#D#s.7#L#L#Laj#L#Lbp#Lbpbpa2bpa2.j#g#g#Lbp#Lbp#L#L#L.7.7.E#L.7#La2a2a2.ja2#ga2.ja2#L.3a2a2#g#g#g#L#ga2#ga2#g#ga2#ga2#ga2.j#ga2#g#gas#gas#g.jas.ja2#g#L.j#L#g#g#L.ja2a2#L#L#L.7#L#L#L#La2#L#Laj#L",
-"a2a2.j#L.j#La2a2a2a2a2a2#ga2a2a2.ja2a2.ja2#ga2a2asa2asa2.j#L#g#La2#L.jaf.3#L#La2aa#ga2a2#L#Laj#Lafaj#L#L#Lbpaj#La9#D#p#Dbl#DaYaYbl#DblaYaw#xaYaYbl#Dbl#Dbl#Dbl#Da9#sa9#D.7#D.7#D.7a9a9a9a9a9.7a9.n#Laf#Laf#La9a9.n#s#D#M#DawaY#I#s#D#s#s#D#s#D#sbf#Ibf#I#Ia0bc.y.G#zad#4aXbk#v.8bgao.C#x.N#x.N.s.7bj#L.7aj#Lbp#Lajbp.j#L#gaj#g#L#gbpa2bp#L#La2#L#L#L#Laf#La9#L#L.j#ga2#ga2a2a2a2a2#La2aj#L#g#L#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2bpa2as.j#g#g.j#ga2#g#L#Laj#Laj#Laj#L#gaja2ajafaj#L.Eafaj#L#Lajaf#L#L",
-"a2#La2a2a2.j#ga2.j#L.j#ga2a2#ga2#ga2#ga2#ga2a2asa2.jasa2#ga2#La2#La2#L#L#Laf.j#L.j#L.jafaj#Laf#Lafafaf.7#L#L#Lbpa9#pa9#D#Dbl.sbl#D#MblaYaYaYaYawbl#D#M#Dbl#D#Mblbja9bja9#D.n#Da9.na9.7a9.7a9.na9#Laf.Eaf.Ea9.n.n#D#M#saYaw#IaY#IaY.s#D#s#D#s#D#s#I#x#I#I.Cao.y#1#T#rbq.G#u.yaOaCamaC#xawaY.s.N.N.7aj#Lbp#Lbpa2#ga2#Lbp#L#g#L#g#L#ga2#gaja2bp#Lbp#Laj.7aj.7aja9#L#L#L#L#L#Laj#L#L#L.j#La2#ga2#g#g#L#ga2#g#g#ga2#g#ga2#g#ga2#g.j#g#gas#g.jasa2.j#gaj#L#Laj#L#Laj#La2a2a2#L#L#La9#Lajaf#Lajaf#Laj#L",
-"a2.ja2.ja2a2a2#ga2a2#ga2a2#g.ja2a2a2a2a2a2.ja2a2asas#ga2a2#L.j#La2aja2a2a2#Laf#Lafa2af#Laf#Lafajaf.E#Laj#L#Lbpa2a9.na9#Da9a9#D#Dblbl#DaYaYaYaYaY#Dbl#Dbla9#D#D#Da9#Da9#Da9bja9bja9.7a9a9.na9#Da9#D.na9a9a9a9#D#sbl#saYaw.s#x#I#I.saw.saY.s.Naw.N.s.s#IaCaoao#u.G#z.UaX#uaOaOao.W#x#IaY.N.N.N#D#D#L.7#Laj#La2#ga2#gbpa2bp.jbpa2bp.ja2#g#L#Laj#L#La9.7a9.7a9.7.7a9#L#L#Laj#L#L#La2af#La2#L#L#g#L#ga2#g#ga2#ga2#g#ga2#g#ga2bpa2bpa2#g.ja2#ga2#g.ja2#Laj#Laj#Laj#L#La2.j#Lajafaj#L.E#L#Laf#L#L#Laf#L",
-"a2bpa2#La2.j#ga2aja2a2a2.ja2#ga2#g.j#ga2#ga2#ga2a2aa#ga2#ga2bpa2#La2afaja2afa2#Lajafajafajafa9a9af#Laf#L#L#L#Lbpafa9a9a9a9a9#D#D#Dbl#DblawaYaYaY#D#Dbl#D#Dbl#D#Da9b.a9.7a9#Da9#Da9.na9.7#D.na9.na9a9#D.n#D#s#D#M.NawaY#I#x#I#Ia0#IaY#Iaw.Nawbo#x.s#x#I.WaF.yaz#3.a#4a5#v#vaoaC#IaYaY.saYaw#D#sbj#Laj#Lbp#L.j#g.jbpa2aj#g#L#g#L#g#g#L#g#L#g#Lbp#L.na9a9.na9a9.na9#Lajaf#L#L#L#Laj#Lafa2#L#g#L#g#g#L#ga2#g#ga2#ga2#ga2#ga2.j#ga2#g.jas#g.j#g.j#ga2aj#L#Laj#L#Laj#Laj#La2#L#Laf.7af#Laj#Lajafaj#L#L",
-"a2.ja2.j#L#ga2a2a2#ga2#ga2#ga2a2a2a2a2a2a2a2.ja2as.jasa2.j#La2#La2#La2a2#La2afajafafafafaf#pa9.n#Laf#L#L#L#L#g#Lafa9a9a9a9a9a9a9a9#DblaY#DaYawaY#D#M#D#D#M#Da9#Da9#Da9bja9.7#s.7a9.7a9.na9a9.7#D#s#D#s#D#Dbl#s.N#M.Naw#I#I#IaC.W#I#xbo#xbo.N#IaYbo.W.Wa0#vaz.Y#.aVapaOaO#O#I#I#xawbl.N#D#D.7a9.E#L#L#L#gaj#g#g#ga2bp#gbpa2bp.j#La2#g.j#L#La2#Lbpa9.7#D#D#s#Da9#D#L#L#L#L#L#L#L#L#L#La2#L.j#Lbpa2#ga2#g#g#L#ga2#g#g#ga2#gbp#g#L#g#g#g#ga2a2#g.ja2aj#Laj#L#Laj#Laja2#Lajafaj#Laj.7aj#Laf#L#L#Laf#L",
-"a2#La2#ga2.ja2#ga2.ja2a2a2a2#g.j#ga2#g.j#ga2#ga2#gaa#ga2#ga2aja2#L.j#La2#L.jafaf.3ajaf.n#p.n#pa9afajaf#L.7#L#L#L#L#La9a9#D.7a9#Da9a9bl#DblaYaYaY#D#D#D#D#D#D#D#Da9bja9a9.7#Da9#Da9a9a9#Da9#sa9a9#D#D#D#D#s#D#saYaw#I#x#IaC#x.WaC#I#I#x#I#x#I#I#xa1ao#Q.8.w#4.P.4#u#Sao.WaCa0bobfbl#s#D.na9#L.7#L#Lajbpa2a2#g.jasbpa2#L#g#g#L#gbp#ga2#g#Lajbp#Laja9a9#M#Dbl#D.na9.7a9.7a9.Ea9a9.7af.jaf#La2#L#L#g.j#ga2#ga2#g#L#ga2#ga2bpa2a2.j#g.j#g.j#g.ja2#g.j#Laj#Laj#L#Laj#L#Lajaf#L#Laf.7af#Laj#Lajafaj#Laj",
-"a2.j#L.j#La2#L.ja2a2#ga2#g.ja2a2a2a2a2a2a2a2a2a2asa2asa2a2a2bpa2af#La2afa2#L#Lajaf#pafafa9#p.n#p.7af#L#L#Laj#Lbpaf#La9.7a9a9bja9a9#D#Dbl#DaYaYaY#D#D#D#Da9#Da9#D#sa9a9bja9a9bja9.Ea9.7a9.Ea9a9a9#s#D#s#D#Dbl.s#Daw#x#IaC.WaCaCao.Wav#Ia1#I.Ca1#I.Cav.8aO.G#dbs#BaLaB.8aC#I.WaYbf#sbl#Da9a9.n#L.E#L#L.jbp.j#gasasa2bp.j#L#ga2bpa2#g#L#g#L#g#L#L#La9#Da9bl#s#p#Da9.7a9.E.7a9.7.7.n#Laf#L#L#gaj#L#g#ga2#g#gbp.j#ga2#g#ga2#g.jbp#gbpas#ga2#ga2#g.ja2.E#Laj#L#Laja2#Laja2aj#Laj#L.E#L.Eafajaf#L#Laf#L",
-"#L#L#L#L#La2bpa2#Laj#L#La2bpa2bp.L.L.jasaa#ga2#gaja2a2a2a2#La2#La2a2#L.j#La2afa2.3aj#p#Mbl#D#D.7ajaf#Laj#L#Lbp#Laj#Laf.n.7a9a9.7#pa9#p.NaYaYbl#Dbl#D#Da9#Da9.7a9a9a9a9afa9.7a9.7#Dbl#Dbl#D#D#D#D#xaYaYawaYaYaY#Ubn#I#I#I.Wao#v#vaC#I#x.W#Ibo.C.WavaoaZ.o.Yab#3.QaOaoaC.W#I#x.s.Nbl#sa9a9aj#La9#L#L#g#L#ga2#g#L.j#g#g#g#ga2bp#ga2.ja2#L#Laf#La9.7bl#DblblaYaYaYaYaj#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2a2#g#La2#La2#g#La2a2#L#L.ja2.ja2.j#L#Laj#L#L#Laj#Laj#Laj.3#Lafajaf#Lajafa9.na9a9.na9.na9",
-"#L#Laj#L#Laj#La2bp#L#gaj#L#L#Lajaa.jaaaaa2#ga2bp.3#L#L#La2#L.j#La2a2a2#La2#La2#L.3af#pblbl#Da9a9afaja2#La2#La2#L#Laf#L.7a9a9bja9a9#p#DblaYaw.Nbl#Dbl#Dbl#D#D.7a9a9afa9a9a9a9aj.7bl#D#D#sbl#Dbl#MaYawaY#xaY#xawaY#x#U#x#I.Cao.8aBaxav.W.C.Waoao.8aO#vaPay#daVbk.0#OaoaC.W#x#I.N.N#Dbl.na9a9#L.7aj#g.j#ga2bpa2#g#gasas#g.j#g#ga2#g#La2.ja2#Laja9a9a9a9bl#DaYawaYaY#La9.Eaf#L#Laj#L#L#Laj#L#L#L#L#Lbpa2#L#g#La2#g#L#gaja2#ga2#ga2#La2a2a2#La2a2.3#L.jaf.jaf.j#L.3#Laj.3aja2#Laj.3#Laja9af.n#L#Laf#L",
-"a9ajafaf#L#L#L#L#L#L#L#L#L#L#L#Laa#ga2#g.j#gbp#La2#L.ja2#La2#La2a2#La2a2a2#L.j#L.jaf.n#pbl#sa9.Eaf#Lafaj#Laj#L#Lajaf#La9a9bja9a9#Ma9bl#DaYaYbl#DaYbl#Dbl#Da9a9a9a9#p.naf.7a9.7a9.n#Da9#D#D#s#D#DaYblaY#MaY#MaYaY#MaYaw#I#IaC.8aObgaoaoao.8ambc#v#uar.M#d#4.G.y.8bgaoaC#x#I.N.N#s#pa9a9.7ajaf#L#La2bpa2.j#g#gaj#g#g#gas#ga2#g#L#La2a2#Laf#Laf#La9a9a9a9#D#Dbl.Nbl.E#L.7#L.7af.7#La9#L.7#L#L#L#L#La2#ga2#ga2#g#La2#L#ga2#L#g#L#Laj#L#Laj#Laj#Laj#Laf#L#La2afaj#Lajaf#Lajaf#Laj#Laja9afajaf#Lajafaj",
-"afaf#Lafajafajafajaf.Eaf#Laj#L#L#La2#L#L#gbpa2bp#La2#L.3#L.jafa2#La2a2#La2a2#L.3afaf#p#Mbla9a9.7afajaf#L#L#L#g#L#La9aja9a9#Da9.7#pbl#DaYaYaYbl#DaYblaY#Dbl#D#D#Dafa9afa9a9a9.7.7.7#Da9bja9#D#D#s#D#D#saYbl.NblaY#M#D.saw#I.WaOaB#vaO#v.8aOaO#v.y#3ad.Z#.#T#vav.haoaC#x#IaY.s#D#D.n#Dajaf.7#Laj#L#ga2#g#gbpa2#ga2a2as#ga2#ga2bp#La2a2a2a2a2#L#L#La9afa9#M#DblawaY#L.7af.E#Laj#L#L#Lajaf#L#L#L#L#Lbpa2#L#g#La2#gaja2#L#ga2#g#La2a2aj#L#L#L#L#Laf#L#Laj#Laj#L#Laf#Laj#L.7aj#L.Eaf.7.na9#D.n#Da9#Da9",
-"a9.na9a9a9a9#pa9a9a9a9a9a9a9a9.nafaj#L#L#L#Lbp#La2aja2#La2#La2a2#La2a2a2a2a2#La2aj#p#pbla9a9#Lajaf#Lafajafaj#L#Lajaf#La9.7.nbj#Da9blaYaY#x.N#DblaYblaY#DaY#Dbl#Da9a9a9a9.7a9.7.7a9.7.E.7.7.7.7a9#D#D#D#D#s#D#s#D.sbl#s.s#xaoaO#S.yaBaB#u#u#ubk#E#.ab#4#3.G.y.8bo#U#I#x.s.N#D#s#Da9#L.7aj#L#La2bp.jbpa2#La2#g#L#g.jas#g#ga2#Laja2#L.j#La2af#L#L#La9.7a9bj#Daw.Nbl.E#L.7#La9#L.7#L.7#L.7#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#La2bp#L#Laf#L#Lafaj.7ajaf#Laf#L#Laj#Laja9.na9.7afa9.Ea9a9a9a9a9a9.na9a9",
-"a9a9a9a9a9a9a9.n#paf#paf#p.n#p#pbl#D.na9a9#L#L#L#La2#La2#La2#La2a2a2a2#La2#La2afa9#p#M#pa9.nafa2afajaf#L#Lbp#L#L#Laf#La9a9#Da9a9#D#DaY#x#xaYaY#DblaYblaY#Dbl#Dblafa9afa9#Da9.7a9#L.7a9#Laf.7.n.7a9a9#s#D#D#D#D#D#s#D.s#x#I.8#Saz#u#u#uaZ.w.GbiaV#4.U#3ara5#vao.W#x#IaYaw#D#sa9a9#L.n#Laf#L#gaj#L#ga2#g.ja2#g.j#gas#gas#gaja2bp#La2a2a2a2#L#Laf#L#L#La9a9#Dbl.NaY.7#L.n#L.E#L#Lafaj#L#L#L#L#L#L#Lbpa2#L#g#L#ga2#ga2#ga2a2#gaja2#L#L#L#Laj.7#La9#L#L#Lajafaj#Laf#L.n.7a9.Ea9.Ea9.n#D#s#D#s#D#D#s#D",
-"a9.n#pa9.n#pa9#pa9.n#p.n#p#p#p.nblblbla9.na9#Laf#Lafa2aj.3#L.j#La2#La2#La2aja2#La9.nblbl#pa9#L.j#Laf#Laja2#La2aj#L#Laja9a9.7#D#s#p#DaY#x#x#xaY#DblblaYaYbl.Nbl#D#Dbl#D#Da9#Dbj#D.7#L.7#L.7af.7#L.7.na9a9.na9a9.n.NaYbobfaoaFaBazaz.w#uaP#3#4ad#4ap.O.O.O.w#S.8.5#Uaw#x.saY#s#D.n.7#L#Laja2aj#gas#L#gbp#gbpa2bpa2#gas.j#g#g#L#La2#La2#La2#L#L#L#L.7#L.7.7.E#D#s#D.na9#L.7af#L.7#L.7#La9#L#L#L#L#La2#ga2a2#ga2#L#g#La2bpa2#ga2#ga2.7a9.7#La9.7.7a9ajaf#L#Laf.7.na9#D.Ea9.7a9.7a9b.#D#D#D#D#D#D#D#D",
-".n#pa9#paf#p.n#p.n#p#p#p#p#p.n#p.b.R#Mbl#p.nafajafaja2#La2#L.3#La2a2aja2#L.3#L.ja9#pbl#Mbl.nafa2afajaf#La2#Lbp#L#Laf#La9.n#D#s#DblaYaY#xbn#xaY#DblaYblaYblaY#Dbla9bla9#D#D#D#Dbja9#La9#La9.7.7a9.7a9.7.7.7.E.7#D.N.sbf.Wam.y#uaz.Oar.Gal.Mbxadalbkbkbkbkbka7.yaF#I#IaY#s#Da9#s#Daj#Laj#L#g#L#g#g#gaja2a2a2#ga2#gas#gas#ga2#g#gaja2a2a2af#Laf#La9#Lajaf.7a9#D#s#Da9.Ea9.E#L.E#Laj#L#L#L#L#L#L#L#L#L#g#L#g#La2#ga2#ga2#ga2#L#g#La2#L#L#L.7#Laf#La9#L.E.7.7.Ea9.n.7.n.7a9.7.n.7.na9#D#D#s#D#s#D#s#D",
-"#Lafaj#L.7#L#L#Lafafajafaja9#pa9aYawaYaYawblblblafafaf#Laf#L#L#L.jaaafa2#L#Lafaf.n#F#M#pa9afaj.7#Lbp#Lbpbpaj#L.Eaf#Laj#D#D.N#D.N.naYaYbna0a0bnaY#DblaY#x#xaYaYblbl#D#Da9a9.7#L#L.7.7.7.7.7.7.E.7#Dbj#D.s.N.N#DboaY#MaY.W.8aZal#P#PaT#P#.a.ad.ObkaX.G.O#Taz#SaoaC#x#x#I.N.s#D.E.7af.7#L.E#L.Eaf#Laj#g#gbp.jbpa2aj#ga2#g#L#ga2#ga2#L#L#L#L#L#L#L#L.7#L.7a9.E#Da9#D.Ea9.7a9.7a9#La9#L.7aj#L#L#L#L#L#L#L#L#L#Lbpa2#L#L#g#L#ga2a2#ga2bpa2#La2#L#Laj#L#Laf#Laj#L.7#L.7af.7.E#L.7#L.7#L#sa9.7a9.7#L.7#L",
-".E.7.7#La9aj.7#Lafajafafafa9a9.nblbl#MaYblbl#Dblafajafaj#L.E#L#Laaa2a2aja2afajaf#p#p#pa9.naf.7#L#gaj#Lajbp.7#L.7ajafa9#D#D.NaY#xblaY#x#xama0a0aY#p#Dbl#xbnaYblaY#Dbl#Da9a9.7af.7.7.7.7.7.7.7.7.7#D#s#D.N.N.N.N.N#IaY.N#Iamanay.P.PaDaD#..M.O.G#u#u.w.GaP#u.ybgaCaC#x#IaY.N#s.7a9.7aja9#La9#L.E#L#L#ga2a2#ga2#ga2#g#L#ga2#ga2#g#g.7#L.7#L.7#L.7.7af#L#L#La9#Db.#Da9.7a9.Eaf.7a9.7#L#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#ga2a2#g#L#g#La2#ga2#g#L#ga2#La2#L.7#L.7a9aja9#L.E#La9aja9#L.n#L.na9aj#Laja9aj.7",
-"#L#Lafaj#L#Laf#Lajafaf.Eaf#sa9a9a9a9#pbl.nbl.n#p.nafa9#Laf.7#L#L#L.ja2#La2af#L.n#p#Mbla9a9aja9#Laj#Lbp#L#L#L.7.7#D#D#saYaw.N#xbf#MaYaw#xbna0a0aYblaYaY#xbn#xaYaYbl#D#D#Da9#D.7#L.7.7.7.7.7.7.7bj#s.7#D#s#D.N.sbfa0#UaoaO.yan.2.g#m.AbA#4ar#u.0#u#S#vaBaB#uaB#v.5aoamaC#x#IaY.N.na9.7.E#L.7af#L#La2#g#L#g#L#gbp#ga2#ga2#g#g#ga2#g#L#L#L#L#L#L#L#L#L.E#L.7.7a9#Da9.Ea9.7a9.7.7#L#L#L.7#L#L#L#L#L#L#L#L#L#L#Lbpa2#La2bpa2a2#ga2#ga2#L#ga2a2a2#g#La2#Laj#L#L#L#L#L#La9#L.7#L.7aj.7#La9.7#La9.7#La9#L",
-"#L#L.7#L.7#L.7#Lafaf#Laf#La9a9.na9#Da9.n#Da9#D#Dafaf#Lafaja9aj#La2a2af#Laf#Laja9#p#D#p.na9.7aj#L#L#L#L#Laj.7.7b.#D#saY.NaYbf#x#x#DaYaYaY#xbna0#xaYaYaY#xaYaYaYaY#Dblbl#D#Da9.7.7a9.7.7.7.7.7a9.7af.7#D.N.s.N#x#IaF.8amaF.0#uaybe#.ba#aaz#ua##vaOaOaO#v#v.y#uaBa#b#bga0a0awaYbl#D.Ea9a9a9.E.7a9.7#Laj#L#gaja2a2a2#ga2#g#ga2#ga2#g#L#L#L#L#L#L#L#L#L#L#L#La9.Ea9.7.7.n.7.n#La9.n.7af#L#L#L#L#L#L#L#L#L#L#L#La2bp#La2#ga2#g#La2bpa2#ga2#L#g#L#ga2#g#L#L#Laf.7#L.7#L#L#Laj#L#L#Laf#L.7#L.E#L.n#L.E#L",
-"#L#Laj#L#L#Laj#L#L#Laj#L.7.7a9.7a9a9a9#Da9a9.na9.naf.Eaf#L.7#La9ajaf#Lajaf#La9a9#M#pbla9a9#L#L.7aj#Laj#Lbjbj#sbjaY.N.Naw.N.Nawbf#DblaYaYaY#xbn.CbnaYaYaYaY#xaYa0bl#D#D#Da9#D.7#L.7#La9#La9#L.7.7a9#sblaYaYbnaCa0.5amaFaB#u#a#4abarazaBa#aO.5ao.5aoaoamaOaB#u#uaZaCa0bn#xaYaY#Dbla9a9.na9a9a9#La9#La2a2#L#g#g#L#g#g#ga2#ga2#g#ga2#ga2a2#ga2a2#La2#L#L#Laf.7.7.7a9a9.7a9.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#La2bpa2#ga2a2bpa2#ga2a2#g#La2#L#L.7#Laj#L#Laj.7af.7#La9#L.7ajaf.7#L#L#L.7af#L",
-"#L.7af.7#La9#L.7a2#L#L.7#L.n.7.na9a9.na9a9a9a9a9afaf#Laf#Laf.E#Lafajafaf#La9.na9#D#p#sa9.n.7aj#L.7#L.7a9.Ea9#Da9.NawaY.N.NaY.N.N#D#D#D#MaY#x#xa0ama0#xbnaYaYbn.CaYaYaY#D#D#D#D#Da9a9a9a9.7#Da9#s#D.NaY#x.Ca0amamaFaB.f.Oau#aazan#v#vaFam.5aCav.CavaoaoamaOaB#uan.Ca0#xawaY.s#D#s#Dbja9bja9.7a9a9a2#La2#La2a2a2a2#ga2#ga2#g#ga2#ga2#ga2a2#ga2#ga2#L#L#L.7a9.7a9.7.Ea9.Ea9.7af.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2a2#ga2#ga2#L#ga2#g#La2bpa2a2bp#L#L#L#L.7#L.7af#L#L#L#Laj#L#L#L#Laj#L#La9aj.7#L",
-"#L#L#L#Laj#L#L#Lajaf#Laja9.7.7a9.7a9a9a9a9.na9a9aja9#Laja9#L.7#Laf#Lafaja9a9#D#D.nblbla9b.#L.7.E.7.n.7.n#D#D#s#D#D#D#D#s#D#D.n#D#D#D#s#Dblawa0.Cama0a0aYaY#xa0amblaY#D.N#D#Dbj#Dbj#D#D#D#D#D#D#D.N#x#x#xbg#vbmaBbk#a#Ea7a7aZ#va#amb#ao.C.W.Cbf#IaqaoaoaoaO#SaZ#ubn#I#xaY.Na9a9.7a9a9a9a9a9a9a9a9#Lajaf#L#L#L#La2a2#g#g#ga2#ga2#ga2a2#ga2a2#ga2a2#L#L#L#L.7.Ea9.7a9.7a9#La9#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#g#L#g#La2bpa2#g#La2#ga2#ga2#ga2#L#L#Lajaf#L#L#L.E#L.7#L.7#L.7#L.7af.7aj.7af.7#L",
-".E.7.n#L.7#L.7af#L#L#L.7aj.7a9.Ea9a9a9.7a9a9.7a9afafafafaja9aj.7afaja9#La9a9#s#D#p#M#D#s#D.n.E.7a9.na9#D#sa9#D#D#D#s#D#D#Da9a9.n.N#D#D#Dbl#xa0ama0ambnaYaYbnama0aYaYaY.N#D#D#Dbj#D#D#D#D#s#D#Daw.C#I.Caobm.G#faG.yaBbh.l.taFb#.5a0a0aoa0#xbo#xboaqavaoamaC#Sa7an#I#x.N.s#Dbjaj#L.n#Da9#sa9a9a9a9#Laf#L#Laf#Laf#L#ga2#ga2#ga2#g#g#ga2#ga2#ga2a2#g#L#L#La9.7a9.7.7.7.n.7.7.7#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La2#ga2a2#ga2#ga2a2#g#L#g#La2bpa2#L#L#L#L.7#L.7#L#Lafaj#L#Lafaj#L#L#L#La9#L.7aj#L",
-"#L#L#L#Lajafaj#Laf#Lafaf#Lafajaf#L.jafajaf#Laja9aj#Laj#L#L#L#Laj.7.7.E#Laj#L.7.7bl.NawaY.NaY.N.s#s#D#sa9bj.Ea9.Ea9.na9.n#D#s#D#Da9.n#D#D.saY.s#x.R.Rbn#x#x#xaY.NbnaYblbl.na9.7.7#D.N.N.N.Nbfbfbfavama#aSaG#z.G.0aoa0aC#xaCbn.Wbn#I#xaY#I#x#x#I#x#Ia0avao#v.0aBa7#IaYa9.7.E.7#D#Da9a9a9a9.7a9.7afa2a2a2a2a2#g#ga2#ga2#g#ga2#g#ga2#ga2#g#ga2#g#ga2a2#g#L#L#L.7a9.7.na9a9afaj#La2a2#L#Laf#L#L#La2#L#L#La2#La2#La2#La2#L#L#L#L#L#L#La2a2a2a2#g#ga2#g#La2#La2#Lajafa2.7#L.7af.7#L.7afaj#L#Lajafafaf#L",
-"#Lafajaf#L#Laf#Lajafaj#L#Laf#Laf#Laf#Lafajaf#Da9.7a9.7.7af.Eaf.7.na9a9a9.7.7.n.7awaYawaYaw.s.N#D#Da9#D.na9.7a9.7.n.7.7.7#D#D.7.7#Da9#s#D.N#x.N#x#Ua0a0bna0bn#IaYb#am#xaY.N.N.N.Nbj#D.N#I#xaqaoa0a0a#a7#fa6az.0.5bnaCbnbn#x#x#x#xaYboaYbfaw.NaY#I#x#Iao.8.5#v#u.T#I.N#sbja9bj.7bj#sa9.Ea9a9.7a9a9#L.ja2a2.j#ga2#g.j#ga2#g#ga2#ga2#g#ga2#g#ga2#g#g#ga2#L#L#La9aja9a9af.7af#L#L#L#gafa2#La2afa2#La2.3#La2#La2#La2#La2#La2a2a2a2a2#La2a2#L#g#La2bpa2bpa2#ga2#L#La2#L#L#L#L#Laj#L#L#La2a2afafaj#Lajaf",
-"#L#L#L#L#L#Laj.7af#Laf#Lajaf.Eafajaf#Lafa9a9.n#D#D.n#Da9#s#D#D#D#D#s#D#s#D#D#D#sbl#s#D.s#D#s#D#s.7aj.7#L.7aj.7#L.7af.Ea9#L.7a9.7.na9#D#D#D.NaY#xa0.Vaoamama0ambna#b#amambn#x.C.Cawbf#xa0amamaF#v#vaBazaSa7a#aq.W#x#x.s#xaw#xaw#x.N.NaY#xaY#x#I.N#I#xavam.8.yana7#U#x#D.7b..7a9#Da9a9a9a9.7a9af.7a2#La2#L#ga2#g#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.7a9a9a9#La2#La2a2#L#Lafa2#La2#La2#L#L#La2#La2#La2#La2#L#L#L#La2#La2a2a2a2#g#ga2#g#La2bpa2a2#Laj#L#L#L#L.7#L.7#L.7af#L#Laf#Laf#L#L",
-".7#L#Laj#L#La9#La9a9a9a9a9a9a9a9af#L#D.n#D.7#D.7#D#D.N.s.N.N.N.sbl.NblaYblaYawaY#M#D#Ma9#D.nbj.7#L#L#Laj#L#Laj#Laj#L#L#L.7a9.E.7a9a9a9#DaY.s.N#xaCb#a#aFa#amamam#vaFamam#xa0#xam.CaCamamaObma7aza7aZbm.tam.C.Cbfaw#xaYaY.NaY.NaY#DaY.s#xawbfaY#x#x#Iaqao.8aZ#ua7ao#xaw#Da9b..7#Da9#s.7a9af.7a9a9a2#La2#La2#ga2#ga2#g#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#g#L#L.E#L.7afa9afa9#Laf#L#ga2#La2#La2#La2#La2af#La2#La2#La2#La2#La2a2a2#La2#La2a2#La2#La2bp#g#L#ga2a2#g#La2#L#L#L#L#L#L#Lafaj#Lafaj#Laf#Laf#L",
-"a9a9a9a9a9a9a9.n.7a9.n.7a9a9.n#D.na9#s#D#D#D#D#D#D#D.sblaY#saY#DaY#MaY#saYblaY#D#D#s#D.7.n.7bj.E#L#Laj#La2#La2#L#L#L#L#L.n.7a9.7a9.E#D#D.NaY.N#Iamam#v.0a#aFa#a#bmbgamaCbna0aoa0amaF#vaBa7a7.l.TaFb#b#amam#x.Nbj#x.N.s.NaY.NaY.N.N.NaY#x.N#IaY#I#x#Iaoaq.8.ybhazb#bn.N.N.7a9#D#s.7a9a9a9.7a9#La9#Lajaf#L#L#Lbp#L#ga2#ga2#ga2#g#ga2#g#ga2#g#ga2#ga2#L#L#L#L.7a9.Ea9a9a9a2#L#La2#g#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#La2#La2#La2a2a2#ga2#g#ga2#ga2bpa2a2#L#L#L#L#L#L#L#L.E#L.7a9a9a9a9a9a9.7a9",
-".7a9a9a9.n.7a9a9#s#Da9#Da9#D#D#D.7#D#D#DaY.Naw.Naw.NaY.NaY.NaY#s#D#D#D#D#s#D#s#D.na9a9.n.7.7.7#L#g.ja2#g.j#g.j#g.j.3aj#L.7aja9.Ea9a9a9#D.N.s#x#x.Cb#aF.yaZa#a##Sa##SaFamamaOa#aZazazaza7a7bmaFaFa0a0a0bn#IaYaY.Naw.NaYaY.N.N.Naw.NaY.Naw#x.N#x.N#x#I.Cao.5.ya7az.5aoaY.s#D.E#D#Da9.na9.7.na9a9a9#Laf#L#L#L#L#Lbpa2#g#ga2#g#ga2#ga2#ga2#g#ga2#g#ga2#g#L#L#Laf.7#La9afa9#L#L#La2a2#La2#La2#La2#La2#La2#L#L#L#La2#La2#La2#La2#La2#La2a2#L#g#L#g#L#g#La2a2bpa2#g.j#L#L#L#L.7af#L#L#La9.7a9a9.Ea9a9a9",
-"a9a9a9a9a9a9.na9#D#D#s#D#s#D#s#D#D#D.saY.s#xaY#x#D#M#D.nbl.nbl#Da9.Ea9.7a9.7a9.7#Laj#Laj#Laj#Laj#gas#gas#g#gas#ga2#L#La2af.7#L.7a9#s#D#D.NaYaYboa0a0aOa#a#a#aBbh.GaPa7az#uaS#TalbaaGa7aZaFaoambnaCa0#x#I#D#DaYaw.N.N.s.N.N#D.N.N.N.N#I.NaY.saY#I.N#I.C.8.5.ya7azaOb##x.N#Da9a9#sa9a9#D.na9.7a9.7a9a9.7#L#L.7bp#L#ga2#g#ga2#g#ga2#g#ga2#ga2#ga2#ga2#L#L#L#L.7a9.7.na9.7a2af#L#ga2#La2#La2#La2#La2#La2#L.3#La2#La2a2#La2#La2#La2#La2a2a2a2a2#g#ga2#ga2bp.ja2bpa2#L#Laj#L#Laj.7#L.7.na9a9.7a9a9.7a9",
-"afa9afa9.na9a9a9#s#D#D#D#D#D#D#D.saY.NaY.Naw.NaY.n#Da9a9a9a9a9#Daj.7#L#Laj#Laj#Laj#L#L#Laj.7bp.7as.jas.jas.jas.ja2.ja2#L#Laja9aja9a9#D#D.Naw.N#x#xa0am#va#a#bmaB#l#0.2.2.2#0ab.4arazaZa#aFa0.W.C#x#x.NaYaYaYblbl.N.N.N.Nbj#Dbj.NaY.NaY.N.NaY.NaY.NaY.Waqao.0#ua7aBaO.Waw#D.na9#Da9.na9a9a9a9a9af.7afa9.7#L.7.7bpa2#g#ga2#ga2#g#ga2#ga2#g#ga2#g#ga2#g#L#L#L.7.Eafa9afa9#L#L#La2#g#La2#La2#La2#La2#La2#L#L#L#La2#La2a2#La2#La2#La2a2#La2#L#g#L#g#L#g#La2#Lbpa2#La2#La9#L.7#Laf#L#La9.7.na9a9a9.na9",
-"#D#Ma9#Da9bl#M#DaYaYawaYblawaYaYaYawaYaYbl#D#D#s.7af.E#L.7aj.7#L#Lajbp#Lbp#L#L#L#ga2.j#g#g.j#g.j#g#g#g#g#g#g#g#g#ga2a2aj.7a9.7.7a9.na9#M#DaY.Nawbn#UaoaF#v.8am#va6a6ba#V.Z#oab.I.TbmaFaoam.C.C#I#x.s.N.N#D#D#D#DaY#DaYbl.NaY.N.s#D#M#D#D#s#D#D#s#Daw#x.CaC.5bc.yaBaZ#vam.Nbj#Db.#D#D.7a9.7#D#D.Na9a9.7a9#L#L#L#La2a2a2#ga2#ga2a2#L#L#L#L#L#L#L#L#Laf#L.na9a9#D#Da9a9a9a9#L#L#L#La2#La2#L#L#L#L#La2#La2a2a2a2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#L#L#L#L#L.7a9.7af#La9.7a9bja9#D",
-"bl#D#D#M#D#Dbl#D#MaYbl.saY.NblawaYaYaY#M#D#s#D#D.7#L.7#L#L#L#Laj#g#L#gaja2aj#gajas.jas#gas#g.j#gas.jas.jas.jas.ja2.j#L#Laf.E#D#Daja9a9#DaY.s#x#IaCamama##uazaz.G#.a..Z#Valarak#aaZ#Sa#ama0#U.C.CaYaY.NawaY#D#D#DaYaY.sbl.N.s.N.Na9a9a9a9#D#D#D#D#s.N.N#I.CaobybcbhaB#vaF.WaY.s.Nbl.s#D.na9#D#DaYafa9a9a9#L#L#L#L#ga2#ga2#gaaa2as#L#L#L#L#L#L#L#L#L#L#La9a9#D.7#D.na9#D#L#L#L#L#L#L#L#L#La2a2a2a2#L#La2#L#L#La2#La2#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L#L#Laj#L#Laja9.7.Eafaja9a9#sa9#D#D",
-"#D#M#Dbl#D#M#DblaY.NaYbl.NawaYaYaY#M#D#D#D#D.7afaja9#Lajbp#Lbpbp#Lajbp#Lbpbpa2bp#g#g#g.j#g#gas#g.j#g#g#g#g#g#g#ga2a2aj.7a9#Da9#Da9a9#s#D.s#x#I.Ca0aO#uazal.Y.A.1a.aHaGaz.Ta#bma##SaFaFbgama0.C#x.s.NaY.N.N#s#D#Dblbl#Dbl#D#D#D#D#Da9#D#D.7.E.7a9#D.saY#x.Wa0.8.5#S#uaB#S.5.C#x#x.NaYbl#Da9#D#D.Na9a9.7a9#L#L#L#La2asa2aaa2#ga2a2#L#L#L#L#L#L#L#La2af#L#La9.7a9#Da9a9.7#La9#L#L#L#L.3#La2#L#L#La2#Lafa2#La2a2#La2#La2#La2#La2#La2a2a2a2a2a2a2a2a2#L#L#L#L#L#L#L#L#La2.7#L#L.7af.7a9a9a9bja9#D#D#D",
-"aYaYaYawaYaYaY.saY#M.NawblaY#Daw#Dbl#D#s#D#La9.7#L#L#L#L#L#L#Lbpa2bpa2aj#ga2bpa2as.j#gas.j#g.j#g#gbp.j#L#gaja2bp.j#Laf#L.7#s.N#sbjb..N#Ibf.Waq.8#vaz#zaHbs.m.B.BauaSa#aFaFbgama0ambga#aFamam.W.CaYaY.NawaY#D#D#D#sbl#D#D#D#D.Nb.a9a9.n.7#La9.7b.#Da9.s.Nbo.C.Cava#aZaBaBaOaOb#ao#x#IaY#D.n#Da9#Da9a9a9#L#L#L#L#La2a2#ga2#ga2#ga2bpa2#ga2a2#ga2a2#La2af#L.7a9a9.7a9a9#D#L#L#L#L#Laf#L#L#La2a2a2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#La2#L#L#L#L#L#L#L#L#L#L#Laf#L#La9.7.7a9.7a9#D#D#s#D#D",
-"aYboaY#x#x#I#x#x#I#xaYawaY.NaYaY#D#M#Da9.7.7aj#L#L.E#L#Lbp#L#L#Lajbp#Lbp#Lajbpaj#gas#g#gas#gas.j#L#Lbp#Laj#gbp#L#Laj.7a9.7#Dbj.N.N.sbo.Caq.8#v#u#3adbe.A#Y#9.PbranaBb#amamaYaYaYa0am#vbmaOb#.C#x.s.N.NaY.N#Da9#D#pa9.na9#Da9.7a9.7a9.7a9.7.7.7.7a9#D#D.N.N#xbo.Cb#aOaF#vbma##vbmamam#xbl#D#D#D#Da9a9.7#Laf#L#L#L#g#La2bpa2#L#ga2a2bp#Lbp#L#Lbpa2#L#L#La9a9.7a9.7a9af.7af.7#L#L#La2#La2a2#L#La2a2#La2#La2#La2#L#La2#La2#La2#La2#La2a2a2a2a2a2a2a2#L#L#L#L#L#L#Laj#Laj#L.7aja9#L.na9#D#s#D#D#D.N.N",
-"#x#x#x#I#x#x#IbnaYaY#IaYaY#MaY#M#D#D#Da9.7#L#L#L#L#L#L#L#Lbp.E#Lbpa2bp.j#L#g#L#g.j#gas.j#g.j#g#g#Lbpajbp#Lbp#Laj#L#Laj.7.n.N.N.sbf.C.Caoa#.w.ObB.u#.#oa8aMabalanaBa#a#a0#xaYaYaY.Wamb##Sa#b#a0.C#xaY.NaY.s#D#D#D.nbla9a9#D.n.7a9#L#L#L#Laj#L#L.7.E.7b.a9.s.N.N.s.Camam.8aF#vaZ#uaFb##xaYaY#D#D#sa9a9a9.7#L#L#L#La2a2#ga2#ga2a2#g#L#L#L#L#L#L#L#L#La2af.7a9a9.7a9a9a9#D#L#L#L#L#La2#La2#La2#La2a2a2a2a2#La2#L.3#L#La2#La2#La2#La2a2#La2#La2#La2#L#L#L#L#L#L#L.7#L#Laf#L#L#L.7a9.7bja9#D#s#D.N.saY",
-".CaC.Ca0.Ca0#x.CawaYaY.Nbl.N#D#D#Da9.E.7aj#Lbp#L#L.7#Laj#L#Lbp#Lajbpaj#Lbpaj#Lbp#gas.j#gas#gas.jbpaj.7#Lajbp#Lbp#La9a9#D.N.s.N#x.WaqaO#ubk#zaHbA#Pbsbeab#a#ua#ambm.Fa0bn#xaY.N.s.Nbnb#bmaBa#aC.Caw.NaY.NaY#D#D#D#pa9a9a9a9.7a9#Laj.7#L#L#L#L#L#Lbja9bjbj#D.7.N.Nbo.C.Ca0a##vana7an#Sa0aYawbl#D#Da9a9.7af#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Laf#La9.n.7#Da9.7afa9#L.7a2#L#g#La2#La2#La2#L#L#La2a2#La2#La2#La2#La2#La2#La2#La2a2a2a2a2a2a2#L#L#L#L#L#Laj#Lafaj#L#L.Eaf.7#La9#s#D#DaY.NawaY#x",
-".C#xa0#x.W#x#x#x#DaY#Dbl.sblaY.Na9#D#L.7#L#L#Laj#Laj#L#Lbp#L.7#Lbpa2#L#g#L#g#L#g.j#gas#g#g.j#g.jbp.7#La3#La3aj.7.7aj.7#s.N.N#Ibf.8aF.y#3ad.A.MaT.P#V#P#Tan.5.C#Ia0b#bga0#xbf#xbf.N#xa0bm.T#Sao#x#x.NaY#s.N#D#D#D#p.nafa9.na9#L.7#L#L#L#Lbpaja3#L.Ebj.E.7#sbj#sbjbf.s#xavama#aBana7aZbgbnaY#D#D.7.na9a9.7#L#L#L#L#L#L#L#Lbp#L#L#L#L#L#L#L#L#L#L#La2a2#L.7a9a9a9.7a9a9a9#L#L#L#g#La2#La2#La2#La2a2#La2#La2#La2#La2#La2#La2#La2#La2a2#La2#La2#La2a2#L#L#L#L#L.7#L.7afaj#L#L#L.7a9#LaY.Naw.Naw#x#x#I",
-"aY.saY.NaY#DaY.N.na9.na9a9a9a9aja9a9a9a9.7a9.7a9#Laf#L#Laj#L#gaj#Lajbpaj#Lajbpaj#Lafaj#L#L.7.Ea3#L.Ebj#D.s.N#Db..7.7.N.N.WamamaOakaybs#Y.maDbaaHaga7#SamamaC.C.CaYamb#aFb##xaY#D.n.Nawa0#vaZaZa##xaw.N#Daf.na9#s#Da9a9a9.7af#Laf#La2#g#g#L#Lbp#L#L#L#L#L#L.7.7.7.7bj.N.Caoam#vaZaz.fanama0aY#Ma9aY#D#Da9a9.7.7#D#L#La2#La2#L#L#La2a2a2a2a2a2a2a2.7afa9a9#D.7#D.7af#L#L#L#La2#ga2a2a2a2a2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#La2#La2#La2a2a2#La2#L#Lafa9a9a9bja9#D#D#DaY.s.N#x#Ibn#x#x#x#x#U#x",
-"aY.Naw#D#D#s#D#Da9a9a9a9a9afa9a9a9a9.Ea9a9.na9a9afajaf#La2#L#L#Lbp.7bp.7bp.7bp.7a2a2#Laj.7.E.7.E#L.E#D.s.N.Nbjbj.N.s.N#xa0aO#u#E#V#2....#KaD.YaGa7bmaFaFaoama0.CbnaCb#aOama0.N#D#Dbl#xa0bmaB#ua##x#xaY#sa9.7a9.7#D#D.7a9a9aj#L#L.j#La2bpa2#Lbp.E#Laj#L.E#L.7b.#Db.#D.s#xa0.8a##v.6azbhaOam#xaYbl#Dbl#Da9#Da9.7.7#La2#La2a2a2a2#La2a2a2a2a2a2#La2#L#L#L#D.7a9#Da9#L.3afa2#La2bpa2bp#g#L#g#La2#L#g#La2#La2#La2#La2a2#La2#La2a2a2#La2a2a2aja2#L#La2#Lafaj#La9.E#Da9#s#D#Daw.NaY#IaYaYaYawaYawaYaYaY",
-"a9a9a9a9.na9a9.na9.na9.na9.na9a9a9.7a9a9.7a9.7a9#L#L#L#L#Laj#L#Laj#Laj#Laj#Laj#L.jbp#L#L.E#L.Ea3.n#D.Nbf.Cbo.Caobf.CamaOaBaz#EaraQ#.#o.Abzay.Gana#aFaFaOamam.C.Wbna0a0b#ama0#I.N#D#M#x.CaoaZbhaBa0#IaY#Da9#s.7a9#sa9#Da9a9#Laf#L#L#ga2#g#L#Lbpbp#L#L#L#L#L.7.7.7.7#D.NaY.Cambga#a7.6#ua#b#aoa0#xbl#D#Da9.7a9#Laf#L#La2#La2a2a2a2#L#L#L#L#La2#La2.7afa9a9#D.7#D.7afaf#L#La2#L#L#ga2a2#ga2#ga2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#La2#L#L#Laf#L#Lafajaf#L#Lafa9a9a9#Db.#D#DaY#DaY.N.N.N.s#D.N#D.N#D#s#D",
-"aj.7aj.7.7.7.7.7#Da9#Da9a9a9a9.7a9#Da9#s#D#D.n#Da9a9.na9.7.7bj.7bp#L#L#L#L#L#L#Laj#Laj.E.Ebjb..N#MawaCaoaoama0.Cb##va7#a.Oaz#uaZaZanaz#e.6anaZaFaBaOaF.5amama0a0#xaCa0ama0a0#xaYbl.NaY#xa0#vaZ.lama0#x#Mbl#D.7#D#Dbja9.Ea9af#L#La2#L#La2bp.j#Lbp#Laj#Lbpaj.7bj.7#s#D.s#x.Wa0amamanaB.0a##va#bgamaYaY#Da9a9a9#L#L#L#Laf#L#L#L.7#La2a2#La2#L#La2#L#L#L.7a9.7a9#Da9#L.3#La2#L#L#La2bpa2#g#La2bpa2bpa2#La2#La2#La2#La2#La2#La2a2#La2.3#L#La2#Laf#L#Lafaja9a9.7#s#D#D#Da9.s.N.s.Naw#Dbj.7b..7b..7bjbj",
-"#L#Laf#Lajafaj#Laf.7.7.7.7.7a9.Ea9bja9#D.7a9bja9a9.7a9.7a9.7.Ebjaj#Laj.7.E.E.7.E.7.E#D.s#xbo.C.WaCamb#a#.y.0.yaB.Gazazazbhbma#aFaFa#a#aZaBa#.5.5#SaFambgama0amam#x#xbna0a0aCa0#xaYawaY#Ia0aO.lbh#vb#bnaY#s#D#s#D#Da9#Da9.7ajaf#Laja2bp#g#L#Lbp#Lajbp#L#L#Lbj.7.7#Da9#DaY#x.CaCam.5a#aOa#a##va#a##xawaY#Da9.7#L#L.7af.7#La9#Laf#L.7af#Laf#L#Laf#Laf.7a9.7a9a9#D#Daf#L#La2#L#L#L#La2a2a2#ga2a2#ga2a2a2a2a2a2a2a2a2#La2#La2#L#L#L#L#Laf#Lafa9a9a9a9a9a9a9bj#D#D#D#D#D#D#Da9#Da9#D#s#L.7#L.7#L.E#L#L",
-"#Laj#Laj#L#L#L#L.7.n#La9aja9#L.7a9#s.7#Da9#Da9bj.n#Da9.7.E#Dbj#D#D#D#Da9#Da9#Da9.N#I#x.Wam.8.5#va#aBaP.G#a.U#4.Uaza7aZa#aFaFbmb#a#b#aFa#.8ama0ama0a0a0a0a0aC.Ca0#I#x#xa0b#a0a0a0aYaY.N.N#Iambm.lbmaFaobnaYaY#Dbj#D#s.7a9a9af#L#L#La2aj#ga2bp#Lbp#L#L#Lbp#L.7.E.7#D#D#D.saY#x.C.CaC.5am#v.5a#.0#va0bn#x.N#D#D.7.7a9.7a9.7a9.7.7a9#L#L#L.7af.7#L.7#L#L.7a9a9bja9#Da2afa2#La2#L#L#L#L#g#L#g#L#g#La2#La2#La2#La2#La2a2#L#L#La2afa2af#L#L#L.7a9.Ea9.7.n.7#Da9#s#D#D.N.N.sbj#sbjb..7bj#Laj#Laj#L#L.7#L",
-"bjbj.7bj.7.E.7.7.7.7a9.7a9.7a9.7#D#D#D#D#s#D#D#D#D#D#D#D#D.N.s.N.sbfbobf#Ibf#xboa0.8.5#v.yan.w.G#TabaMa8#cabalaZa#aFa#b#b#a0b#b#ama0aoa0a0#x#x.CawaYaY#Ubn#xaYaY#x#x#x.Rbna0a0amaYaY#D#DaY#UaF#GaZ#S.V#UaY.s#Dbj#s#Da9.n.7#La2af#L#La2#g#gajbp#L#Lbp#L#L#L.7bj.7a9#s#Dbl.N#x#x#x#x.C.Cam#va#a#.0aF.8a0#x#x#D#D#Da9#D.7#Da9a9.7.7#Laf#L#L#L#Laf#Laf.7a9a9.7a9#D#Daf#La2#La2#L#L#L#ga2#ga2a2#ga2bpa2a2a2a2a2a2a2a2#Lafa2#L#L#L#L#Laf#La9a9#La9a9a9a9#D.7#D#D#D#D#D.s.Nbja9.7.7a9.E#L.7.7.7.7aj.7aj",
-".7a9b..7.7bjbj#D.Eaf.7#L.7af.E#L#D#D#D#D#D#D#s#D#D#s#Dbj#D.s.N.N.C#x.C.C.C.W.C.Wby#vaBaz#T#4aH#..ga8bsbr.2al#TaZaFaFb#b#ama0a0a0.Cama0#xaY#x#x#xaYbl.NaYaYaYblaYbf#x#x#xbna0a0aobn#xaw#D.sa0.t#SbmbmaOa0#U.N#D#D#D#D#Da9a9#Laf#L#L#La2#L#g#L#Lbpa2ajbp#Laj.7.7.7#Dbl#DaY.N.N#Ibf.Naw.Cao.5.5a#a##va#ama0bf#D.N.N.7#Da9#D.7a9.7a9#L.7#La9#La9#L.7#L#La9.7a9bja9#Da2af#La2#L#L#L#L#g#La2bpa2bpa2#La2a2#La2#La2#La2#L#L#Laf#L.3#Laf.7a9af.7a9a9.7a9.7#D.n#D#D#D#D#Dbjbj#Dbj#s.7.E#La9.n.7.na9.7a9.7",
-"#Laj#Lafajafaj#La9#D#s#D#D#D#DaYaYaYawaYaY.NaY.N.C.C#x#IaYaY#M.namav.8.5#v.0.w.G#aau#4#4#z#3.Ga7#Z#0aM.gaTayaZa0a0a0a0#xbn#x#U#xawblawaY#D#M#D#D#D#Da9#D#sblaY#Mbl#Mblbl#DaYaYaYa0#IaY.N.NaY#Ua0.t.tbm.Fam#x.Nb.#Da9a9.7af#L#La2aj#L#L#L#L#Laj#L.7#L#L#L.7#L.7af.7.7a9.7.n#D#D.NawaYaY#x.CaCamao.0a#aB.0.taFb#.VaY#Da9a9af.7#D.N#Laf#L#L#L#L#Lafa9a9a9a9a9.7.7.7a2#La2a2a2a2a2a2a2a2a2a2a2a2a2a2#g#L#ga2a2#ga2a2a2a2a2a2#L#Laf.7#pa9a9a9#Dbj#D.N.na9a9a9b.#D#D#D#D#s#D#D#D#s#D#D.n.7#L#L#Laj#L.7",
-"aja2afaj#L.7.7#L#sa9#D#D#s#D#D.N#D#D#D.N.N.N.N#DaY.N#x#xaCamb#aF#SaZanaz.Galba.4.O#aaz#uaB.0aBan#Tbz.mab.2az.5#xa0bnaYaYaYaYaYaY#DaY.NaYbl#D#D#D#D.n#D#Dbl#Dbl.Na9bl#Dbl#DawaYaYbnaYaY#D.s.N#xaCbm.Fbm.tb#aC.N.Nbl.na9a9aj#L#L#L.7#L.7#L.E#L.7#L#L#L#L#L#L#Laj#La9aj.7.7.7#D.N#D#Dbl.N#xbn.Ca0ama##va##v#vbm#vaF#x#x#Da9a9#D#D#D#L#La9#L.7af.7#L#pa9afa9.7#D#La9#La2a2#La2#La2#La2#La2#La2#La2#La2#ga2a2bpa2bpa2a2a2a2a2a2#La9afa9.na9a9#D#D#Dbja9.nbj#D#D.NaY.saY.Nbl.sblaYaY.Na9.7#Laj.7.7#L.7",
-"#Laj#L#Laja9.E.7#La9.Ea9#D#D#s#Db.#D#D.Nbo.Caqaq.bbnbga#aZaS.G#q#t.HaQauaGar#a#a#vaOaF.5b#.8#vaB.2.A.1aDaka#amaYaYaYaYaYaYaY#D#D#D#D#s#D#D#D#D#D.7.7a9#D#D#D#Dbla9a9.n#D#D#D#Dblaw#xaw.N#DaYaYbnb#aF.taOb#.C#I.Na9a9.7a9a9#L.7#L#L#L#L#Laf#L#L#L.n#L#L#L#L#L#L#L#La9a9.7a9.Ebj#D#D#D.s.N#x#x.W.Ca0amamaFa##vbmaBb#bnaY#D#D#Da9bjaf#L#L#Laf#L#L#La9a9a9a9a9a9.7.7a2af#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#L#L#L#L#L#La2#L#Laf#La9.7a9a9afa9a9bj#s#D.Nbl.NblaY.NaY#xaYawaYawaYbl.sbl#M.7.E#L.7#L.Ea3.E",
-".7.7.E.7.Ebj.7.7.n.7a9.7#s.N.N#DaY.N#x.Cam.5a#aZaF#SaZa7arala6ay#W#W#kbhbmaFa#.5#x#x.CaCaoamaOaB#P#obsba#uam.C.NaYaYaY#D#D#D#D#Da9#Da9#D.7#Da9a9#La9.7.7a9bl#s#Da9a9a9bla9bl#D#DaY.NaYawaYaY#IaYa0aCb#.Va0a0#U.N#D#Da9.7a9.7aj#L#L#L#Laj.7#L#L#L#L#L#L#L#L#L#L.7#L#L.E#La9.7.7.7#D#D#DaY.s#x.C.C#x#Ia0aCama#a#aZa#.8a0#xaY#Da9af.7#Da9#D.7#Da9#Dafa9afa9.7a9#La9#L#L.3#L.3#L.3#L.3#Laf#L#L#L.3#L#L#L#L#L#L#L#L#L#L#L#L#La9.7a9a9a9#D.na9bl#DaY#s#x#x#x#Ia0#I#x#xawaYblaw.NaYaYaY.7#D.7.Ebja3.7.7",
-"#Db.#D#D#s.N.s.NaY.Naw.N.NaYbo#xa0b#a#bmaS#aa6.Kbaba#a.faZaFb#amb#b#ama0.C#xbf#xbobf.NaY#xao#v#u.q.qaGanamaYaY#DaY#sbl#Da9.7#L.7.7.E.7a9.E#L.7.E#L#L#La9.nbjbl#Da9a9.7a9.7#D#D#DblaY#xaYaY#IaYaY#xbna0bnbna0aCbn#sbl#Da9.7af.7a9#L#L.7#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#La9.7af.7a9aj.7#D#D.N.Nbo#x.Nbl#Ia0am.5aO.0aB.0b#.CaYbla9a9a9.7a9.7a9.7a9a9a9#pa9a9a9bj.7.7#L#L#L#L#L#L#L#L#L#L#Laf#L#L#L#L#L#L#L#L#L.7#La9#Lafa9bja9#D#D#D#Dbl#DaYaYaYaYaY.C#xama0.CaC.C.C#x#xboaYaY.NaY.N#s.N#D.N.s.NaEaW",
-".N.N.s.N.Nbf#xbfaCa0a0a0a0amam.8aZbhazaGau#j.e.e.6ana#.5ambn#xaY#I#x#xbo.N.N#saW#x#Ibfaw#x.5aZ.G.q.KaBam#xaY.s#D.7#Da9.7.E#L#L#L#Laf#L#L#L#L#L#L#Laj#L#L.7#Da9#Da9.7a9#D#D#Da9#D#DawaY#IbnaYaY.Naw#xbnbnbna0bna0aY#D#D#Da9.7#L.7#L#L#L#La9#L#L#L#L#L#L#L#L#L#L#Laj#L#L#L.n.7.7.7#La9.E.7#D.N.N.N#saY.N#x.Wa0.5aF.0aZ#v.5a0aY#Da9.7#Da9bja9#D.7#Dafa9afa9.7a9#La9#La9#La9#La9#La9#La9#L.7a9af.7af.7#L.7.7#L.7af.7.7a9.7#D#D#D#D.N.saYaY#x#I#xbnbnaOaoaoamaCa0a0bn#Ibn#x#x#x#x#I#x#xaYboaY.N#xbf#x",
-"#x#xa0.CaCa0aoa0aFa##v#vaZ#uaZaZarazazanbmaF.5a0.C#x#x.N#D#D#D#D#D#D.Nblbj#D.N.sbf#x#I.CbgaBaz.2baazaF#x.n.7#Dbla9.7.7#L#L#Lajbp#L#L.E#La9#L.7#L#Lbp#L#L.7#L#D.E#L#L.E.7.7.7.7#Dbj.N#xbna0#I.N#DaYawbna0bnbn.V#U#D#D#D#D#D.7a9.7#Laja9#Laj#L#L#L#L#L#L#L#L#L#L#L#La2#L#L#L#Laf.7#L#L#La9.7#s.N.N.7#D.N.N#x.CaCaq#vaZaBa#aF#xaYbl#D#D#D#D#D#D#D#Da9a9a9a9a9a9.7.7#L#La9.7a9a9#L#L#La9a9a9.7a9.7#L.7af.7af.7a9.7.7#D#D#D#D#D.N.NaY#x#x.Ca0b#ambgamaOb#aCa0.C#I#xaYa0a0#xbn#x#xbna0aCa0a0a0ao.CaCaq",
-"aoa0aoaO.5.8aFaO#u#uaSazaG#3araza#a#amam.C#x.s.Nafaf#La9bjaWbfbf.N.NaY#xawaYaYaY#x.C#xaCamaB#aaT.GaF.C#D#La9#L#D.7#Laj#L#Lbpbp#Lajaf#L#La2#L.j#Lbp#L#Lbpa9.7#Da9.7#La9#La9.7a9.7#Dbl#xaCbn#xaY.s#D.N#Ubnbnbnbna0bl#D#D.7a9.7#L.7a9#L#L#L#L#L#L#L#L#L#L.7#L#L#L#L#L#Laj#L.7#L#L.7a2.7#L.7.7#D.N.Nbj#D.s.N.N#I.Ca0aFaZaBaZ#vam#xaY.7#Da9#D.7#Da9#Dafa9afa9.7a9.7a9#L#Lafa9#La9#L#La9af.7a9a9a9afa9a9#L.7.7a9#L.7af#D#D#D.N.N.NaY.s#xama0.8aF#Sa##va0a0a0#xbnaYaYawbn.WbnaCbnaCa0aCaFb#aO.5aOaF.8aF",
-"aZ.ya#amaoaFaB.Taka6aGaraBaFa0#xbnaYaYaw#D#Da9#D#L.Eaf.7a9aj.7.7aja9.n.7#D#D.sbfaw.N.Wam#v.w.Ga7.C#IaY#D#s.7.n#Laja2#L#ga2#ga2#g#L#Lajafaj#L#L#Laj#L#L.na9a9.na9a9a9.na9a9#L.Ea9a9#saYaY#x.C#x#xaYbn#x#U#x#xa0aCbn#D.7#L.7a9a9#paj#L#L#L#L#L#L#L#L#L#L#L#g#L#L#L#L#L#L#L#L#L#L#Laj#Laf.Ea9.7.7a9#Da9#D#D#DaY.NawaY.pa#.0.0a#ambn.N.N#D#D#D#D#D.7a9af#L#L.7#L#L#L#L#L#La9a9.7a9#Da9a9#Da9bja9bj#D#D#D#D#D#D#D#D#D#s#D.saY#xbn.8aFaZaBaZa#aFama0aqaC#x.N#MaY#x.Ca0aFb#b#amamb#.5aFaoaOaFaOa#bmaZ.y",
-"aZa#aOa##v#vaB.T#4#z#a#uaFa0aC#xaYawaYbl#Da9#Da9.7a9.7#L.7a9.7a9af.Ea9.7#s.N.N.N#D#Ia0.8a#bkaraZ#IaY.s#D#Da9.7#Lbpa2bpa2#g.j#ga2ajaf#L#L#Laja2#Laf.7#L.7a9.7#Da9afa9a9a9a9.7a9#La9#Dbl#x#x#I#x#xawaY#U#xbn#Ia0.CbgaYa9#L#L#Lafa9#Laj#Lbp#Lbp#Lbp#Lbp#L#ga2#g#La2#L#L#Laj#Lbpaj#L#L.7#La9.7.7a9.7.E#D#D#D#D.saY.N#Ua0#va##S.0aOamaY.N#D#D#Da9#D#Dafa9a9af#L#L#L.7af#Laf#La9#Da9.7a9a9.7#D#D#D#D#Da9bja9a9#D#D#s#D.N.N#x.Ca0aoaF#vaZbmbmaOa0.W.C#x.C#xbl.NawaY.CamaCamaCamamambgamb#.5aOa##Sa#.yaZ",
-"#vaFaO#v.ybmaZazbaauazb#a0#x#xaYaYaY#D#sa9#D.E.7aj#L.7aja9aj#L.7aja9.n.7#D#D.sbfaY.WaCam#u#3a7aFaYaY#D#D.n.7ajafaj#gaj#g#L#g#Laj#L#Lajaf#Laf#Laj#L#L#La9a9#Da9a9.na9a9.7.n.7.7a9.na9aY#x#x#x#x#xaYaY#x.R#IbnbnaC.t.VaYa9.7aj#L#L#Lbp#L#Laj#La2#L.j#La2#g#g#g#gajbp#Lbp#L#L#L#Lbp#L#L#L.7a9.7.7.7a9#D#s#D#DaY.NaYaYa0ama#a#.yb#a0.N.N#D#Dbj#D#Da9a9a9.7a9bja9.7.7a9a9a9#D.7#D#D#D#D#Da9#Da9#D#D#Da9a9.n#D#DblaYaY.8b#.8aOaFaOaFaOb#bgama0#x#x#x.N#U#x#I#x#x#xaoama0bna0bnaoam.5amaOaFaFaF#va##vaZ",
-"aOaOaF#va#a#az#faS#ubmb#a0#xaY#Dbl.n#Da9a9.7#L#L#L#L#L#L#L#Laj#L#L.Ea9a9#s.N.N.s#x.Wb##v#Ebk#va0aw#D#D#Da9#L#L#Lbpa2#L#ga2#ga2#g#Laf#L#L#Laj#Laf#L.7#L.n.7#D.na9a9a9a9a9a9.7a9#La9#sbl.NaY#xaYaYblaYaw#x#x#x.C.C.Fb#bnbl#Da9.E#L#Laj#L#Lbp#Lbp#Lbp#Lbp#L#g#L#g#L#Laj#Lbp#Lbp#L#L.7#L.n#L#L.7af.7#Da9#D#D#D.NaY.saY#Ibn.5a#a#aFambf#x.NaY#D#D#D#Da9a9a9.7a9.7.7#L#D.nbj#D#D#D#D.Na9b.bl#Daw#xaYaYaYaYaY#Ia0a0aoam#uanaBa##vb#bgb#bnbnaYaYaYaYblaw#x#x#x#Ua0.Wa0a0.W.C.Wama0ambg.5aFaFa##va#a##va#",
-"b#ao#vbmaB#uaz.Gb#b#ama0#xaw.N#D#Da9a9a9.E#L#Laj#L#Laj#L#L#L#L#L.Ea9.n#D#D.N.N#x#Iao.5#u.Oazam.C#Dbl#sa9ajaf#La2.jbp.j#L#gajbpaj#Laj#Lajaf#L#Laj#L.n#La9a9a9a9#D.na9a9.Ea9.n.7a9a9#DaYaw#x.sbl#D#sblaYbl#I#x#Ua0b#bgb#bn#D#D.7#Lbj.7.7.7.7.E.7.7#L.j#La2#g#L#La2bp#L#Laj#L#Laj#L#L#L#L.7af.7.7.7a9.7#D#D#s.Nbl.NaYaY.CaCby#va#.8#xbfaY.N.s#D#Dbj#D#D#D#D#D#D#D#D#D#D#D#D.Naw.NaY#D.NaYaw#x#xa0aoamamaFaF#v.0bbanaBaZ#vaFb#am#x#xaYaYaYaY#IaY#D#D#x#x.Ca0avamama0.C#x.Ca0aoamaFa##uaZaBaZ.y#S.0.y",
-".8aOa##Sazar#ua#a0am#x#x#x.N#D.7.na9#L#L#Laj#Lbp#L#Lbp#L#Laj#Laj#La9.7.n#D.sbo#x.Wao#v.f#f.ya0bf#M#D#Da9a9#L.ja2#La2bp.j#L#ga2a2#Laf#Laf#Laj#Laf#L.7aj#Da9b.bl#Da9.na9a9a9a9.7.n#D#MaYbfaYaY#Da9#D#D#Daw.NaY#x#Ib#b#bg.VaYbl#s#L.Ebj.7b..7.7.7.7#Lbp#Lbp#L.jbp#L#L#Lbp#Lbp#Lbp#L.7aj#La9.7a9#L.7a9#s#D#D#DaY.Naw.N.s.CamamaOa#a#.W#xbf#xaY#D#D#Da9#Da9#Da9bj#Dbj#D.N.Naw.N#x#xbfaYaw#x.Ca0a0aFbma#aBaZbbaZ#uaZ.0bgb#a0am#x#x#xaYblaY#MaYaY#Dbl#DaY#xaCamamaoaqaC.C.Wamao.5a#a#.yaSazaZ#uaZ.yaOaF",
-".5aF#Sbhaza7aFa0a0bn#xaw.N#D.7.7af#L#L#L#La2#L.j#g#Lajbp#Lbp#Lbpaja9.n#D#s.N#I#I.WaF#uarazaF.W.Nbl#D.n#Laj#La2a2aj#g#L#g#L.jbpaj#Laj#L#Lajaf#Laj.7afa9.na9#D#D#Ma9#p#s#D#sa9.na9#DblawaYaw#Da9a9#D#D#saY.Naw#x#xaCb#.VaC.V#xaY#Dbj.nbja9bj#s.7.7aja2#L.j#Lbp#La2ajbp#L#L#L#L#L#L#L#L#L.Ea9.7.7a9#D.7#D#D#D#DaY.N.N.N#I.CaoaFa#aB.C#x#xbf#x.N.NaY#Dbl#D#D#D.N#D.NaY.saYaY.C.W.C.W.Caqa0.8a#aZaBan#u#uan#Sa#b#ama0bnaY#xaYaY.NaY.N#s#DaY#DblaY#Dbl#I#xam.8.5aOam.Cama0aoaFbmaBbha7#a#ea7an.y.yaF.8",
-"bc.y.wara7b#a0aoaYaYaYbl#Da9.7.7#Laja2#L#g.j#g#ga2bpa2bp.jbpaj#Laf.Ea9#s#D#I#I.C.WaOaz#EaZb#.C.N#sbla9afafaj#L.j#L#g#L.jbpa2bpa2#Lafajaf#L#L#Laf.E.7.n#Da9#D#sbl.n#D#M#s#D#s#D#s#DawaY.NaY#Da9.n#D#D#D#DaY.NaY#I.CaCam.Vb##U#xawa9bj.7b..7bj.7bj#Laj#Lbp#La2#L#Lbp#L#Lbpaj#Lbpaj.7#L.7af.7a9.7.Ea9#D#D#s#D.N.saYb..Nbf.Wa0aF.0#ua0.W.C#Ibfaw.NaY#saY.N.N.N.N.N.N.N#xaY#I#x.W#x.C.Wam.8aZ.waz#ubha#aFaFb#ambn.bblawaY#MaY.N.s.N.N#D#D#D#DaY.saY#I#xaCam.8aFbyaoaCaoamama#a7azararaya6.G.Gaz#u#v.8",
-".J.far.laobn#xaY#D#sa9#D.7a9aj#L#L#L#L#L#Lbp#Laj#g.j#ga2#L#L#Lbp.na9.7#s.N#I.Caobh#EaBaCbn.s#IaY#Ma9.n.7#L#L#L#Laj#Laj#L#Laj#L#L#L#L#L.7aja9.Ea9bl#M#D#M#DblaYblaYawaYaYawaY.NaYawaY#Mbl#D#D#D#Da9.n#D#s.Nbl.saY#x.RaY.N#xa0aFbm#IaYaY.N#s.7.E#L#L#La2#L#L#Lajbp#L#La2#L#L#L.7#La9a9a9.7#L.7.7.7#Da9#D#D#DaY.N.NaYaY#Ia0.5.8a#an.0.5bn#xbl.N#x.C#Dbl.sblaY#I#x.W.R#Ibna0aOa##vaZazararaz#ua#aFaO#x#I#x#Ibn#x#xaYaYaY#DblaY#Dbl#Dbl.NblaY.NaY#x#xaoaobnaY#xaCa#.0aOaOaOaFaFaFaFaF.l.Ta7bh.G.G#q#e",
-"araza7aFam#xaYawa9#Da9a9a9#L#L#L#L#Lbp.j#L#La2#Las#ga2#gbp#Laj#L.7.7.n#D#M#xaCaFbk#iaOaC#xblaY.Na9a9a9afaja9aj#L#L#Laf#Laf#Laf#Lajafaja9#L.7a9.Ebl.n#D#M#DawaYawbn#Ubn#I#x#I#xawaYawaYaY#D#s#D#D#D.n#D#DaY.s#x.N#U#IawaY#xbna0aF#x.W#xaw.N#D.7b.afajaf#L#Lbp#L#La2#L#L.E#L.7a9.7a9a9.na9.7a9.7.7#D#s#D#D#D.Nbl.Naw.N#x.CamaF.0.y.yaF.CaYaw#x.Caq#Ibn#x#x#x#xbna0aoamaF#vana7.wazaZan#uaZaOamamamaY.RaYaYawaYaYaYaYblaY#D#Dbl#DaY#DblaY.N#xaY#I#xbnbnawaYbnam#va#ama0a0aoamamaoam.taFbmaZ.6ar.2#4",
-".faBb#a0aY#xbl#Da9a9#D.E.7#L#L#L#g#ga2#g#g#g#g#g#g#g#ga2#L#L#L#L.n.7a9a9.N#Iam.8#f.Gb#bn#UaYaw.Na9.na9.7af#Laf#Lajafaj#Laj#Laj#Laf#Laf#L.na9a9#D#Mbl#M#DawaYaw#x#I#U#x#U#Ibn#I.NawblaY#s#D#D.N.sa9#s#D#M.NaY.s#xawaY#D.s#D.Nbnama0a0aC#x#xbl.NaY#La9#L.E#L#L#L#Laj#L#L#La9.7aja9a9a9a9#D.n.7a9.7#s#D#D.Naw.N.NaY#Dbl#I#xaC.5#va#aBaFa0aC.C.Caoa#ama0a0ambgaF#va##uan.w.wan.wanaZ#vaFb#ama0a0#x#xaYbfaY#xaY.Nbl.Nbl#D#D#Dbl#D#D#D#DaY#saY.N#x#x#xaYaYaYaY#Ia0bg.5bn#xbn#xbna0a0amaCb#ao.t#SaZar#a",
-"aFama0aY#xaY#Da9#D#Da9a9#L#L#L#g#ga2#gbpa2bpa2bpa2#ga2#gbpajbp#L#Da9.7#saYaY.W.5#EaraFa0#U.NblaYa9a9a9ajaf.E#La2#L#L#L#Laf#Lafaj#Lafaja9#D.n#D#D#s#DblawaY#I#x#Ibnbn#I#U#x#IaY.N.Rawbl#D#D#D.s.N#D#D.saY.saY#I#x.N#s#s.7bj.N#xa0aob#amaoa0#I#xaY#D.na9.7a9bpaj#L#L#L#La9.Ea9#D#D#D#D#D#D#D#Dbj#DaY.Nbl.N.N#x#xbfaw.NaY#xama0aOa#aBa#bgama0.5a#.0aFaOaF#SaZan#ua7bhazaBbhaBa#aFb#b#aCbnbn#x#xaYaw.Nblaw#D#Dbl#D#D#s#D#p#Da9#D#D#Dbl#DaY#x#xaw#x#xaY.NaY#x#x.C.C.CawaYaw#xaw#x#Ibn#x#Ua0a0amaFbmbm",
-"bn#xaYaYaY#Ma9af.7.n#L#L.7#L#ga2bp#ga2#g#ga2#ga2#ga2#L#L#L#L.7.7#s#D#s#D.N#xamaoaS.OaBam#xaYaw.N.na9a9#Laf#L#La2ajafaj#L#Laj#Lafaf.na9a9a9bl#D#Mbl#saYaw#x.b#x#x#U#Ibn#I#xawaY.saYaYbl#D#D#D.N#D#M#sblaw.N#I#x#I#D#sbj#Db..N.N.Camamb#am.pa0a0bn#D#Da9.7.7aj#Lbp#L#La9.7a9a9#s#D#MaY#D#Dbl.saY.N.N.N.s#x#xbf#I#x.NaY#I.CaCamam#vaBbm#SaF#va#a#aB#ubh#uanaBaBbmaZ.FaFb#b#a0aCbn#I#x.RaYawaYawaY.N#D#D#D#D#D#D#D#Da9#Da9#Da9#Da9a9.saYaw.Naw.N#xaY.N#x#xaY#xaC#xaYblaYaYaYaYaYaY#xaYblaY#Ua0a0.Vbn",
-".NaY#D#Da9a9a9#La9.7.7#L#L#g#L#ga2bpa2bpa2bp#gbp#g#Lbpaj#L.7.Ebjbj#D#Dbl.s#xaoa##TalaBam#x.NaY#Da9a9a9af#L#L#L#L#L#Lafaj#Laf#Lajafa9a9#p.n#D#M.NblaYaYawaY#x#I#x#Ibn#U#Ibn#I.NaYawaY#sbl#saY.s.N#sbl#s.NawaY#I#x#I.N#D#s#D.N#Ibnaoa0#Ia0a0b#aoamaw.N#Da9.7#L#L#L.7.n#L.7#s#DaW#DaYaYaY#I.NaY.N.N#I#x#xbf#x.C.C.C#x#I.Ca0amama#a#a7azaza7aZaB#uan#uan.laZ#SbmaFaF.V#Ubn#UaYaYawaYaYawaY.NaY.N#D.N.n#Da9#D.n#D.7a9#Da9bj.nbja9#s#DblaY#D#x#xaYaY#x#M.N#x#I#x#x#xaY#Dbl#DaYaYaY#xaw#x#IaYaYaY.baYaY",
-"#D#D#Da9a9#Lafaj#L#L#Laj#Lbp#ga2#g#ga2#g#ga2#ga2#g#L#Lbp.7.7.7#D#D#s#D.saY.C.8aB#4#zaZa0#xaYaw#Da9.na9#L#L#Laja2#Laj#L#Lafaj#L#L#p.n#pa9blblaYaYawawaYaY#I#x#x#Ibn#Ibn#I#x#U#x#IaYblaYaY.Nbl.saY#s#Daw#Dawbf#I#x#I#x.s.N.s#xa0aC.C.Ca0.CaCa0ambg#x.N.s#D.7aj.7aja9.7a9#sa9#D.s.NaYawaYaYaY.NaYaYbf#x.C#x.W.C.Caqavaqa0ao.5#va##vaS#W#aazazanbm#SaFaFa#aFaOaFbgb#aCbnbnaw#x#x.N.N#sbl#D#s.N.N.N.N.7.7.7.7.7.7a9.7.7.7a9.7a9.7.7.7aY#DawaY.NbfaY#x.NaY#x#x.C.WaY#D#M#DaY.NaY#x#x#x#x#x#xaYaY#Da9#D",
-"a9.7.7.7afaj#Laf#L#L#L#La2#La2#gbpa2bp#g#L#g#L#g#Lbp#L#L.7.7.7bj.s#D.NaY.Nao#v.QaD#za#am#xaY.N#D#pa9a9ajaf#Laf#L#Lafa2#La2#Lafaja9#p.na9#MblawblawaYaY#I#x#I#x#x#Ubn#Ibnaw#x#IaYaYawaY#M.saY.N.s#D#M#D.s.Naw#x#I.W#x#I.s#x.W#Ua0.Cava0.W.Ca0a0a0#I#IaY#D.7#L#L#La9.E#D#D#D.N#D.sbnbn#x#x#x#x#I#x.C#x.W.Caqamavam.C.5.5aFbya#.y.0.Gakar#e.TaBaFaF.5aFaOamb#a0aoambn#Ua0.C.Ca1bfbf.Nbl.N#D.N.N.N.Na9aj.7af#Laf#L.Eaf#L#L#L.7.n.7.n#DaYblbfaYaY#x#x.s#xbo#x.C#x.Na9#D#DaY.N#x#IaY#xama0bn#x#D#D.7#L",
-"#Laj#L#L.7#L#L#Laj#L#Lbp#g#g#g#La2a2a2a2#ga2#L#L#L#L#L#L.7a9.7a9#Da9.s#Iama##u#.bA.faFaYawaYaYbfa9a9afa9#L#L#Lajafajafafajaf#Lafafafa9a9bl#Dbl#s.RawaYaY.R#U.R#Ubn#Ubn#Ibn#U#x#x#M#D#D#Daw#D#s#DaYaw#s.n#D.s#I.Caoaoam.8.5aO##am#va#byaFbcaqav.CaFaOaFaC#x.N.saW.N#D.N.s.N#I#xbn#U#xaw.R#x#xbna0#U.Vamb#b#aFa#bmaBaZ#vaZ#v.0aB.yaFaO.5bgamamamaobn#U.C#Ua0aCbnbnawaY#MaYblaY.saY.7.n.7.na9.E.7.7#La9#Laj.7#L.7af#Lafaja9a9a9#Da9.Nbl.Naw#x.s#xaY#x#xbn#x.baYaY#Da9.na9#DaY#x#x#x#IaYaY#sbla9.na9",
-".7af.7#Lajaf.7#L#Lbp.j#L#g#L#g#ga2#ga2#g#La2#L#Laj#L#L.7a9.7.n.7#sbl.NaYaoa#azbAa6a7am.RaYaYaY#xafa9a9af#Laf#L#L#Lafaj#Laf#Lafajafaja9.n#D#M#DaYaw.R.RaY.baY#UaY#Ubn#UaYbn#x#I#x#M#D#M#D.s#D#s#D.s#Dbl#s#s#MbfavaCbgaCaoaC.5ao.5#vaOaOam.8.8amavb#b#aoaC#xaw.N.N#s.s.NaYaw#xbnbnaCa0a0a0amamaoaFaFaFa#.yan#u.G.6aBaBbmaO.5b#.5b#amaoa0a0amaCa0a0aY#xbn#Ibn#Ibn#IblawaYaY#M.Nbl.N.n.7a9.7a9.7afa9.7aj.7#L#L#L#L.7#Laf#La9a9#D.7#D#s#DaYaY.NaY#x#xbn#x#x#U#xaYawaYa9a9a9bl.NaY#x#x#xaYaYbl#Da9.7a9",
-"#L#L#L#L.7#L#L#L#La2#L#L#ga2#g#L#ga2a2a2#ga2#L#L#L.7#Laf.E.7.7#DawaY#I.CaoaBazbaaSa#.VbnawaYaY.N#pa9afa9a9#Laja9af#Lafafajaf#Lafa9#pa9blblbl#MaYaYaYaw.R#x#UaYbnaw#x.R#I.R#I#x#xaYaw.NaYaw.N.N.s#D.s.saw#I.CaoaoaO.F#vaOaO.8#vbc#va#aO#vaO.5.8aCaFaO#SaOaOao#I#x#MaYawbnbnaCa0b#a##va#a##vaZaZ#uazazbh.Galay.2alaFaOaFamaCa0aC.C#I#x#x#I#x#xaY#IaY#I#x#I#x#x#I#xbl#D#M#D#D#s#D#D.n.7.n.7.n.7.7.Eaf#L#L#L.7aj#L#Lajaf#La9.7a9a9.7bl#DaY.NaYaY#x#xaCa0#x#xbnawaY#D#Da9#D#DawaY#x#I#xaYaY#D#Da9a9a9",
-".7#L.Eaf#L#Laj#L#L#L#g#L#g#L#g#g.ja2a2#ga2bp#L#L#Laf#L.7.7a9.7#Dblaw#x.W.5az#aalaZb#a0bnaYaY#DaY#p#Da9afa9a9#L#Laja9aja9#La9aja9.na9#sbl.n.NblaYaw.R#xawbnaY#U#U#x.R#Ibn#I#x#I#xawaYaY.saY.s.N.N.s.saw.W.Waobc.yaBaB#u#S.y.y#va#aB#u.Qaz.waBaZ.yaZaB.0aBaB#vaO.5bn.Vb#am#Sa#aB#u.wbhazazbh.waz.GarazaSaz#a#a#a#ea0a0#Ubn#x#I#x#xaY#MaYblblawbl.NblaYaYaY#U#IaYaY#D#M#D#s#D#D.n#D.7a9.7a9.7a9.7a9#L#L.7af#L.7af.7af#L#L.na9a9bja9#D#D#DawaYbfaw#xbna0#x#UaYaYaYbl.n#Dbl#DaY.N#xaY#xaYaY#D#Da9a9.7",
-"#L#L#L#L.7#L#L#L#g#ga2#g#g#ga2bpa2#ga2a2#ga2#L#L.7#Laja9#La9#sa9.NaYaY.Wambk#zaraFamambnaYblaYbl#Dbla9a9.7a9.7a9a9.7a9a9.na9a9a9#Da9bl#DblawaY.N.RaYbnbnbn#Ubnbn#I#U#x#x#x#I#x#Ibl.Naw.NaYbf#I#x.s#x.WamaO.y#uazal.U#z.U#T.G.GaP#Tal#z.U#3al.Ualal#T.G#T.G#e.w.wa7#ua7a7aS.G#e#TaS.w.wanaz.wazaS#vaOa##va#aFaFam#UaY#xaYaY.NaY.s#D#D#D#s#D#D#D#s#D#saY.saY.NaY#sbl#D#M#D#D#Dbj#D.n#L.E#L.E#L#L#L.E#L#Laj#L#L#L#L#Laf#La9.7#Da9#D#D#DblbfaY.N#xaY.C#I#x#xaYaYaY#Dbl#D#D#Dblaw.NaYaYaYaY#D#pa9#La9",
-"#L#L.7aj#L#L#L#L#g#L#gbpa2bpa2#ga2asa2#g#La2#L#L#L#L#La9.7.7#D#sbl.N#Ia0#vaz#z#eam.Va0bnaYaYaYaY#Dbl#D#Da9a9.7.7a9a9a9.7#Da9#sa9bl#sbl.sbl.NblawaYbn#Ubn#Ibn.C#Ubn#x#U#x#I#x#IbfaYaw.NaY.N.saYboaYaCam.y#u#aau#4aH.4#..4aHbrbw#0.2bw.2aT.2ay.YaH#4#zal.o#T#Tal.U#aar.G.Ga4aPa4a4.ya#aZ.ya#a#a#aOa0bnaCbnaCbn#I#xblaYaY.s#D#sa9#Da9.na9a9a9.na9a9#D#D#D#D#s#D#s#D#D#s#D#D.n.7.E.7.n.7#La9#La9.E#Laf#La9#L.7#L.7afaj#L#La9a9.n#D.7bl#D#DaY.NaY#x#xbn#x.R#xaYaYaY#DaY#Dbl#D#D#DaYaYaYaYaY#D#Da9a9a9",
-"#L#Laf#L#L#L#L#La2#ga2#g#ga2#g#La2a2#ga2#ga2#L#L#L.E#L.7.n.7a9#D#D#I#xaoby.w#zaSa0aCa0bn#x.Rblblbl#D#D#D#D.7a9.Ea9.7a9a9.n.7a9a9#sbl#DblaYaw#x#x#xa0#xa0a0a0aCa0#I#U#x#I#x#I#xawaY#x#I.Nawbf#x#IaCbgaBaza6aT#P.uaybaay#3#aar.Gazaz.Gazaz.Gar#aa6.w#u#uaBaZaB#uazazazaS.0#S.0aFa#am.5aoa0am.Wam.C#I#x#x#I#x#I#xaw.N.N#s.N.N#Dbj#s#D#D.7.7.7#D#s.7a9.Ea9a9a9a9a9a9#s#p.na9bj#Dbjbj#Lajafaj#L#L#Laf.E#L#L#L#Laj#L#Laf#Laf.7a9bja9#D#D#DawaY#x.s#xaY#x#x#x#IaYaYawaYbl#D#D#DblaY#s#DaYaYaw#D#Daf.7af",
-"#L.7#L#L#L#L#L#L#L#gbpa2bp#g#L#La2#ga2a2#g#L#L#L#L#L.7a9#L.7#D#saY#x.C.8#va7albh.Ca0a0bnaY.RblblaY#Dbla9#Da9.7.7a9a9a9a9a9#D.n#Dbl#Dblaw#DaY#x#IbnbnaCa0#Ua0aCa0.CaC#x#I#x#I#Ibf#x#I#x#I#x#Ibo.C.paOa7#aay.K.K.K#Ear.faZa7#uaBaB#vbmaBaZa7an.TaZaOaF.FaFaOb#b##SaZ#va#aOama0.W#xavam.C.W.C#xaw#x#x#Ibfbf#xbf.N.N.saYaY#D.N.E#D.7a9#D#s.7#s#D#D#sa9.7a9.7.E.7.Ea9#s#D#s#D#s#D.Ea9.Eaf.E#Lajafaj#L.7#L.n.7#La9#L.E#Laf#L.na9#D.7a9#Dbl.NaY.NaY#x#x#x#U#x.RaYaYaYaY.N#xbl#D#D#D#DblaYaYaYbl#Da9a9.7",
-"#L.3a2a2a2a2asa2#ga2a2#ga2a2#ga2#ga2#ga2a2#ga2#L#L#Laj#L#L.7b..7#x#I#x#xaC#uar#e#Sa0.CaYaY#DaYaYa9#p#pa9a9a9a9a9#s#D#sbj#D#D#D#D#saYaY.Naw#x#x.Ca0aoa0a0aCbn#Ibnaw#U#U.CaCamaCaCaw#Mbn#UbnaCbgaoaZanaral.2alaPan.y.0.yaB.0a#a#a#.8aF#v.0#u.0#v.5aCam.8amaOamaoam.F.tbg#x.C.C#xaY.NaY.saY.Nawbf.N.N.N#D.s#D.N#D.Nbl#sbl#s#D#D#D.7.Ea9.7a9.7a9.7.7a9#s#D#D#Da9#D#D.na9.na9.na9a9.na9a9a9.naf#Lafaf.E#L.7#L#L#L#L#Lafaj#L#L#La9.na9bl#MblaYaY.baYaYbl#Dbl#DaYawaYaY#M#D#DaY#Dbl#D#DaYblbl#D#p#Dafa9",
-"afa2#La2a2#gaa#ga2a2bpa2#L#g#L#ga2a2#g#L#g#La2#g#L#L#Lbpaj#D.7bjaY.N.N#Iao#u#aayaFa0bnaYaYblaYaY#pa9a9blbl#D#M#D#Da9#Da9#Da9#s#Dbl#D#MaY#x#x#x.Wama0a0aCa0a0amao#Uaobg.8am.8amama0bgb#.8aFa#.0aZ#ua7#uaS#uanaBa#.8aFaOamaOamaCamb#ao.5a#.0#vaF.5a0a0aC.Ca0.Wa0am#ybgaC#xbf#I.NawaY.NaY.saY.NaYaw#D.s.N.N.N.s.N.sbl#sbl#D#D#D.n#D.7a9.7.n.7.n.7.n#D#D#s#D#s#Da9#Daja9a9.nafa9aja9aja9aja9af#L.n#L.7af.Eaf.E#L.7#Laf#Lafaf#La9.7a9blblblawaYaY.baY#Mbl#DaYaYaYaYaY.NaY#Dbl#s#Dbl#D#MaYa9bl#D#Da9a9",
-"afaf#La2a2a2#ga2#ga2a2#ga2a2#ga2bpa2a2#ga2#ga2#g#L#g#L#L#Lbj.Ebjaw#D.s#xaoana6abaOam#xaYaY#DaY.N#pa9#p#sbl#Dbl#D.n#D.na9.na9a9a9#sbl#DaY#I#x.Wbnb#bgb#amamao.8aFamaO.yaZ#u#u#S#vaZan.yaZaZ.6aSa4aBaZbma#aF.5ama0aCa0.CaCa0a0a0.Wbna0a0aoam.5aoa0#I#x#xbn#I#x#x#x.p.Vbn#x#I.NaYbl.N.NaY.N.NaY.N.NaYaY#DawblaY#DaYblaYblawaY.s#D#D.na9a9a9a9a9a9a9a9#D#D#Da9a9bja9a9.nafa9.Ea9a9.na9.na9.n#Lajaf#L.n#L.7#L#L#Laj#Lajaf#L#Laja9a9a9blblblaYaYaYaYaYbl#D#MblaYaYaYaYbl#saY#D#D#D.NaYblaYbl#D#p#Dafa9",
-"afajaf#La2a2a2a2a2#g#L#g#L#g#La2#ga2bpa2#La2bpa2aj#Lbp#Lajbj.7#s#D#Daw.C#v.GaTaD#vb#a0bnawaYaYaYaYblaYaYaYawaYaw#D#D#D#D#D#D#s#Dbl#saYaw#xa0a0a0bgamaOamaOa#a#a#.yan#u.G.Gaz.w.w#u#uan#uan.w.6.GaFaOaFaoaobn#I#x#I#x#I#x#x#I#xaY#x#I#xbn.CaC.Ca0#x#x#IaY#xawaYaw.R.bbnawblaYaw#DaY.saY.Naw.N#M.N#D#s#DaY.N.saY.NawaYaw#Dbl#DaYaY#D#s#D#s#D#s#Db.a9#D#s#D#s#D.n#Daf#L.na9aja9aja9afa9aja9afaf.7af.7#La9aj.7a9#L.7afaj#Laf#La9a9a9.na9blblaYawaYaYblbl#Dbl.saYaYawblaY#D#Dbl#DblblaYblbl#Dbl#Da9a9",
-"a9a9#L#L#L#L.jbpa2a2aja2#ga2#ga2#L#ga2#ga2#ga2#L#g#L#L#L#Lbj#s#D#saw#Iaq.y#3aH#Pa#bga0#UaYaY#xaYaYawaYaYaY#x.N#x.Naw.Naw.N.NaY.s#DblawbnaCamb#bgaFbma##S.0aB#u.yaz.w.waz.w#u.0a##SaFbma##Sa##Sa#amamaoa0#x#IaYawaYblawaYawaY#M.NaYaYawaY#I#x#x#U#x#x#xawaYaY#D#MaY#x.b#x#UaYaY#Daw#DaY#D#D#D#D#Dbl#Dbl#sblblbl#MaY.RaYaYawaY.s.Nbl#Dbl#D#Dbl#Dbl#D#s#D#D#D.7#D#Dajaf#La9.na9a9.na9.na9a9.n#Lajaf.E#L.7#La9aj.7#Lafaf#Laf#La9.Ea9a9#p.nblblaYaYaY#Dblbl.NblaYaYaY.Nbl#D#D#D#DaY#DaYblblbla9#Dafa9",
-"a9afa9ajafbpa2#L#ga2bpa2#L#g#La2bpa2a2bpa2#L#ga2#L#Lbp.7aj.7#Db.bl#x.Waobb.2a6ak#vb#a0#x.RaY#xaYaYaY.R#x#x#x#I#xawaYaYaYaY#xaw#xaYaw.Ca0b#aF#vaZaZana7.waz.G.Ga7#uaBaB.0a#aFamambnbnaCa0a0aCa0a0aoa0#IaYaw.Nbl.NaY#MaYbl#DblaY#DawaY.Nblbl#xbn.Ca0#I#xaY.N#Mbl#DawaY#Ibn#Ubn#I#x#D#D#D#D#D#D#s#D#D#saY#Dbl.s#DaYblaYaYawaYaYaYblbl.nbl.nbl.nbl.n#D#D#D#s#D#D#s#D#Lafaja9#paja9aja9af.naf.naf#Laf.7aja9aj.7#Laf.7afajaf#Laja9a9a9afa9#Dbl#sbl.Nblbl#sblaYaYaYaYaY#DaYaY#Dbl#DaYblaY#MaY#Dbl#Da9a9",
-"a9a9afa9#L#L#La2#ga2#La2#ga2a2#ga2#ga2a2#ga2a2bp#L.j#L#L.7#sbj#saY#Iaq.y.waXaraS#vb#a0#UaYaYawaYaYaYbn#x#U.Cbn.Caqaqavaqavaqaqaq#Ia0ao.5#vana7bh.Ga6al#aarbkaz#uaOamam.Cao#x#IaY#I#x#I#x#I#x#xawbn#xaw#D#D#D.sbfaY.N.saY.saY#D#D.Naw.N#saY.s.Cava0am.C#IaYaY#D#M.N#x.bbnaCa0a0#x#s#D#s#D#Da9#Da9blblbl#Mblblbl#MaYawblaYaYawaY.saYaYaYaYblblblbl#s#D#D#D#D#s#D#Daja9af.nafa9.na9.na9a9.na9#Lajaf.7af.7#L.n#L.E#Laf#L#Laf#La9a9.7a9a9a9a9#D#D#M#Dbl#Dblaw#DaYawaYaY#saYbl.Naw#DaYawblaYblbla9a9af",
-"afa9.7a9#L#L#L#L#La2#g#La2bpa2bpa2#L#g#L#g#L#ga2#Lbp#Laj.7bj.s#D.Waoao.waX#aazaSaFa0#xaYaYaYaYaYaYaY#xa0a0.Caoa0.8.8.5ao.5amaoamaCaoam#v#ubh.G#eayaTay.Gaza7aBa#aoaC.CaC.CaYaY#Mbf#x#xaY#xawaYaY.NaYaw#D#s.N#xaNaw.Nbl.Nbl.N.N#s#x.NaY#D.NaY#xaqa0aoa0#x.NaY#MaY#x#xbnbn.Vamaoam#D#D#D#s#D#sbja9.N#M.Nbl.N#M.NblblaY.RawaYaYaYaYblawblaYawaYawaY#D#s#D#M#D#D#D#Daf#L#La9a9.naf#La9af.n#L.nafafa9aj.7aj.7#L.7#L.Eafaj#Laf#La9a9a9aja9a9.na9bl#D#D#DblblaYaYaYaYaYaY#DaY#DaYblbl#DaYaYbl#sbl#Da9a9",
-".7a9a9.7a9a9.7a9#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lafa9a9#D#sbl.s.Waoan.G#Ea7aBaZ#vaFama0aCamamamb#.Va0aC.VaO.0#uaSaSazazan.Gak#a.Iay.Iar.Xar.Gazaz#uaB.yaO.5aoa0#Iaw.NaY.saY.N.N#D#s#D.N.N.N.N.s.NaY.NaY.NaY.saYa9bl#sbl#sbl.nbl#D#s#DawaY.saYawaY#x#U.CaC#xbf.N.s#I#x#Ia0aoamambf#I.N#D#DaYaY#Dbl#D#Dbl#D#Dbl#D#M#Dbl#Daw#D#M#DaYaYawaYblblaY#D.na9a9.na9.najaf.nafajaj#L#L#Laj#L.E#L.n#L.E#Lajaf#Laja9aja9.7a9#Lafafaj#L#Lajafa9a9a9bja9#D#D#sblaY#MaYaYaYaYaYaYaYawaYaYaY#xaY#UaYaYbl#Dafa9#L",
-"a9bja9a9.7a9a9.7#L#L#L#L#L#L#L#L.E#L#L#L#L#L#L.7aj#L#sa9#saY.saYbo.5.w.GazaB#San.l#vbgama0#xama0ama0a0bgaFbmanazak#aar#eazaz#aa6.e.e.XaraSazbhan#S#v#vaFaoa0aC.Cawaw.Naw.Naw.Naw#Da9#s#D.s.N.s.N.NaY.s.Naw.NaY.Nbl#saYblbl#Dbl#D#D#DaY#D.NaY.N#x#Ibna0a0a0.C#I#x#x#I#xaCamaFaOamaYaYaYaY.N.Nawbl#s#Dbl#D#sbl#D#Dbl#Daw#Dbl#Dbl#D#Mblblblaw#Dawbl.na9.na9.na9a9.naf.n#L.7aj#Laj#Laja9aj.7aja9aj.7#L.Eaf.7#L.7af.7afaj#L#Laf#Laf#La9.7a9a9b.a9#D#DaYblaYaYblaYaYaw.RaYbnaY#U#xbnbna0aYaYaYbl#Da9a9",
-"a9a9a9a9a9a9a9a9#L#L#L#L#L#Laf#Laf#Laf#L#Laf#Lafa9a9a9#D#D.Naw.N#x.8.w#e.lbma#az#uaZaFa0aC#x#x#x#x.WamamaF.y#ealayaG.G#eanaS#e#a.I#a.X.JanaZ#Sa#aOambga0.W#x#x.saY#saY.NaY.NaY.N#D#D#DaY.NaYaY#xawaYaYaYaYaY.saY#Dbl.N#M.Nawbl#D#M#D#MaYawaY#x#xbnaCam.8.5amamaCa0a0aob#aOaObm#v#x#I#x#xaY.N.NaY#Dbl#Dbl#D#Dbl#D#Dbl#Dbl#Dbl.sbl.N#Daw.NblaYblaYa9.n#p#sbl#Ma9bl.na9.na9.7.E.7.7.na9.na9a9.Ea9.n.7aja9.na9.Ea9.7af.7af#Laf#L#Lafa9a9a9#Da9#D#D#DblaYblaYawaYaY.R#xawaYaYaYbn.Cbn#xaYaYaY#D#D#D#D",
-"a9a9a9a9a9.7a9a9a9a9a9#Laf#L#L#La9.7.na9a9a9a9a9a9a9#s#D#s#D.Nbl#I#v.G.G#uaF#van#uaZ.8a0bnbnawbnavam.5#van#ealbra6#a#e.wana7#e#e.fakaz.TaBa#a#aFa0aoa0.Wbn.s#M.N#saY.sbl.saY.saY#s.Naw.Naw.N#I.N#x#I#x#x#IaYaY#IaYawaYawaYaY#xawaYaYaY.NaY#x#x#Iamb#aFa#a#aOamamamaob#b#aF#Sbmbmaoa0#x#xawbl#D#D#Dbl#D#sbl#Dbl#sbl#D#D#sbl#D#D#D#Mbl#DawblaY#saY#Mbl#Dbl#M#D#M#M#Da9#sa9.n#D#D#sa9.Ea9b..na9.7a9.na9.n.7.7a9.7a9aj#Lafaj#Lafaj#La9.Ea9.7#D.E#D#DblaY#MaYaYaYaYaYaY.R#x.R#xbn#U#xbnbnaYaYbl#Dbl#D",
-"a9a9a9a9afa9afa9af.nafaf#Lafa9a9afa9a9a9a9.na9.n#D#D#D#D#D#Daw.N#I.y.GazaZb#aOa#anaBa#aoa0aCbna0a0.5.8an.G.2.K#P#q#e.6anan.wazakazbha7aZaFam.8am#xaC.C#I#IaY#D#saY#saY.NaY.NaY.NblaYblaYaY#I#x#x#x#x#I#x#x#x#xaYaYbn#xbn#U#x.baY#x.s#x#x#I.Ca0.CbgaF#vbma#a#aOambgamb#aoaFaFaOaF#va0#x#I#x.Na9#D#s#Dbl#D#Dbl#D#Dbl#Dbl#D#Dbl#Dbl#DaYblaY#Dawbl#DaYaY#MaYawaYawaY.nbl#p#sa9#sa9#D#s#D#Da9#D.n#D.na9.na9a9.n#Da9#D#Lajaf#Laf#Laf#La9a9a9#Da9#Da9#DaYblaYaYblaYawbnawaYaYaYaYbn.Cbna0.Cbn#xaYaY#Da9",
-"#pa9a9a9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9a9a9a9#Da9#D#s#D#s#DaY.NaYaCaZ.6az.0aOaF#van#uan#vamamamamaOa#analba.g#P#P#a#Tan.y#uaZaza7an.laZa#bgama0.C#U.C#U#I.N#s#s#D#s.Naw.N#M.NaY.saYaw.Naw#x#x#x#U#x.baYbnaw#xawaY#Ubn#U#x#Ubn#xbn#xbn#Ia0a0a0aCa0b#.t.tbma#aFaFb#amamamam.Vb#b#.V#Sbga0#x#xbl#D#Dbl#Dbl#Dbl#s#Dbl#D#M#D#Dbl#sbl#Dblaw#DawblaY#DaYawaYaYaY#Ibn#Ibn#Mbl#s#D#D#Db.#D#sa9#s#s#s#D#s#D.n#D.na9#D#D#s#Dafafaf#L#Laf#L#La9a9.7.nbja9bj#DblawblaYaYaYaYaYaYaY#x.R#x#xbnbnbnawaYaYbl#Da9a9",
-"a9a9#pa9#pa9#pa9a9a9a9a9a9a9#pa9a9.n#p.nbl.n#pa9#D#D#D#D#D.Nawbfbn#vazaS#SaF.8#vaZ.6aBa##va##v.0a7.faG#PaD#V.Kay.XazanaB.0#vbm#SbmaZ#vamama0aC#xa0.W#x#x#I.N#D#s.N#M.NaY.NaY.saYaYaYaYaYawbn#x#x#x#xbn#Ibn#x#x#xbn#xa0bna0bnaCbn#xa0#x#xbn.Ca0am.V.Vb#aOaFb#bgamaC.C.CaCa0a0aCa0a#aFbgbnaY.N#D.7#D#M#D#Dbl#Dbl#D#D#Dbl#D#Dbl#D#D#M.NblaY#DawblaYaY#Ibn#Ibn#Ubn#IaYawaYawaYawaY.s#D#s#Da9#sa9#s#D#sa9#Dbl#s#D#D#Daj#L#Lafaj#Lafaja9a9a9#Da9#D#Da9blaYblaYawaY.R#xaY#M.RaYawbna0#IaYbl#Da9a9afafa2",
-"#pafa9afa9a9a9a9#pa9#pa9afa9a9a9#p#p#D#pbl#p.na9#D#D#D#DaY.NaY#Ia0#v.Gaz.0#vaF#vanaz.w#u.0#u.waP#A.f.Xa6.Ia6akaSanaZa#aFaoaFaOaF#SaFaFama0aC#x#x.Wa0.W#Ibf.N#sbj#M.N.saY#s.NaY.NaYaYaw#xaY#x#I#x.R#x#x#x#xaYbnaY.Cbnbn#xbn#x#xbn#x#I#xbn#xa0.Ca0.pb#b#aFb#aFb#.V.C.C#x.CaCa0#xa0.FaFaOa0aYbl#D#sbl#D#Dbl#Dbl#s#Dbl#D#M#Dbl#D#M.Nbl#DaYblawaY.saY#UaYbn#x#U#x#Ubnaw.Rawblaw.NawaY#s#s#s#s#D#s#D#sbl#Mbl.n#Dblbl#Dafaj#Laf#Laf#L#La9.7a9.7#s.7#DbjblaYblaYaYaYaYaYblaY#xaY#x#xbnaYbla9#p#p.naf#La2",
-"#L#La9a9a9afa9af.j#L#La2af#La9a9#sa9#s#D#DaYaYblawaYaY#I#xbn.Ca0#Ubg.laz#uaBanaBa6#a.Xa6#aak#ebh#Sbm.Fa#aFb#amaoa0aCa0aoa0amb#.8b#aoa0aCa0#xaC#x#I#xaY.N#M#D#D#s#D#sa9.7a9.7.n.7#D#D#D#s#DaYaYaY#sbl#Mbl#Dbl#D#Dawbl.Naw.NaYaYawaYaYaYaw#DaYbl#DaY.RaYaYbnbna0a0#Ubnbn#x#x#x#I#xa0bgaBb#a0.s.s#L.NaY.N.saY.N.NaYbl.NblaY#I#x#x#x#Mbl#MaYaY#x.b#x#xbn.Wambgamamam#Ua0bnaCa0a0amaoaw#x#x#x#I#Iaw#Mblbl#sblbl#D#D#Da9#pa9a9a9a9#Laf.na9a9a9a9#paf#pa9a9#MaYaY#x#xbnaw.RaYbna0a0a0aY#D#pa9a9#La9#L#L",
-"#L.7#Laf.7a9.7a9#Laf#Laf#La9.7#Da9a9blbl.Nbl#DaY#xaYaY#xaCa0amam.t#uazar#e#T#a#zacbaayaraS#uaZa#aFaFaFb#amaoama0a0a0aCa0a0ama0amaoa0a0a0aC#xaC#xbn#I.saY.s#D#sa9a9#sa9a9.Ea9.7a9#D#s#DaY#D#D#s.Nbl#D#D#D#D#Dbl#DaY#DaY#Dblbl#DaY#D#Dbl#DaYbl.NaY.baYaYaYa0#Ia0a0#x#UaY#x#U#x#xaYbnam.FaOa0#x.s.7aY.saY.NaY.NaY.sblawaY.N#x#Ibn#xaYawaY#xawbnaY#U#x#IaCa0aCbg.paobn#U#Ua0aCaCaCb#aCaC.C.Wa0.C.baYawawaYblaw#D.s.Nbla9#p.nafa9ajafa9#pa9#pafa9a9a9#pa9blaYaY.b#xaYaYawa0#xa0a0#UaYbla9a9a9a9#L.7#L",
-"#Laf#La9.7af.7af#L#Laja9.7a9a9bj#D#D#D#MaY.NaYaY#MaY#Ua0amam.5.5aSal#PabbrayaTaTaGara7aZaZaZbm#vb#amamaCa0#x.C#x#I#x#x.CaC.CaC.5b#aob#aCamaC#xbn#I#xaY.s#D#sa9#s#Da9.Ea9.7a9.Ea9#D#D#D#D#s#D#D#D#Dbl#D#M#Dbl#sbl#DaYblaY.saY#DaY#MaY.Nbl.sbl#D#DaYaY.baYaYbn.CbnbnaYaYbn#x#x#x#xaYbnam#Sama0.N#s.NaY.Naw.Naw.NaY.NblaYaw#x#x#x#IaYaYawbl#x#I#xa0#Ia0aC.pbgb#bgb#.pa0.V.pb#.Vb#bgbm.taOaFaFao#U#x.bbn#IaYaYaY.NaYbl#Dbl#Da9a9a9a9a9a9a9a9a9a9.na9a9a9bl#DblaY#x#xaY.R#xaCama0#x#xbl#s#Daf.7af.7#L",
-"#L#L.7a9.7a9a9.7af#La9a9a9#D#D#D#D#MaYaY.N#x#I#x#xaY#x#xamaO.0bbaT#PaD#VaTaRar#eaBaZbmaFaFamb#ama0aCama0.C.C#x#I#xaY#I#x#x.W.CaCaOaFaob#aoamaC.C#I.b.NaY#s#Da9.7.n.7a9.7.n.7a9.7#D#D#D#D#D#D#D#D#D#M#D#Dbl#D#Dbl#D#D#sbl#Dbl#D#D#D#D#Dbl#D#Dbl#DaYaYaYbn#x#x#x#IaYbnaY#IaY#xaY#IaYbna0aBbmao#x.NaY.saY.NaY.NaY.saYaw.NaY#x#I#x#xaw#x.N#I.C.CavaCaFaOa#aBa##vbm#Sbm.taFbmbmaZaBbh#kbhbhaZ#Sa#b#a0aCa0a0#U#xaYaw.Nbl#Mbl.n#D.n.7a9a9.na9a9#sa9#Da9a9a9.n#D#D#xaY#xawaYbnama0ambnaYblbl#Da9#Da9#L.7",
-"a9a9a9afa9#La9a9.na9a9bj.n#D#D#saY.NaY#x#x#x#x#x#Ubnambga#.0#u#uaH#4#aazanaBaZbm#SaFaOb#bgamamama0.C.C.W.C#Ibf#xbf#I#x#x.C.Cao.8a#aOaOamaoa0.Wa0aY#xaw.N#D#s.7a9.7.n.7a9.7#L.7aj#D#D#s#D#D#D#s#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#Dbl#D#Dbl#D#D#D#DblaY.NaYawaY#xbn#xaYaYaYbn#x#x#x#x#U#xamaBaBaBa0.Caw#xaY#IaY#xaY#x#x#x#Ibn#xa0.Wa0.CaoamamaCamao.5azaz.G.Gar#e.G#a#eaz#ear#e#a.X#a#jaGak.faSaZ#vb#ambga0a0a0#I#x#xaw#xblaY#Da9#Da9#D#D#Da9#Da9#Da9.na9a9#D#DblaY#x.Rbna0.Cama0#x#xbl#Dbla9#D.7.7a9",
-"a9.7a9.7a9.na9.7a9.7#s#D#D#D#D.N#x#x#x#I#x#x.Ca0amaOa#.yanaBan#u.6aBa#amb#a0b#amamb#amamamaoa0aoa0aCambn.C.C#x#Ia0.C.CaCamao.5aO#vaFaOb#aoa0a0.WaYaw.NaY#s#D.7.n.7a9.7.n.7a9.7a9#D#D#D#D#D#D#D#Dbl#D#Dbl#D#Dbl#D#D#Dbl#D#D#D#D#Dbl#D#D#D#Dbl#D#D#sbl#D.NaYaYaY#xaYaYaY#xaYaYaY#xaYa0a0bmaz#uaOam.C.W.C.C.C.C.W#x.W#xamamamaoam.5aoaF#v.y.0#uaB.wal.2ayal.2aya6aTa6alaR.2ayayaT#P#t.K.e.X.GaSaZaBaFb#amaoa0a0bna0aYaYawblbl#sa9bj.n.7#D.7a9bja9#Dafa9afa9bl.Naw.N#U.CaCaFaoamama0aYaY#D#D#Da9#L.7",
-"a9a9.na9.7a9a9a9a9#D#D.N#s#DaY.saY#x.C.Ca0aoamao.0aZaBaZaB.0aBa#amb#a0aCaC.pa0a0aob#ama0am.C.Ca0.5b#amaCam.W.C.CaCa0ao.5amaOaF#vaF.8amamama0aqa0aYaw.Naw#D#Da9.7.n.7a9.7.7af.E#L#Da9#Da9#Da9#Da9#Da9#Da9#Da9#Da9a9a9afa9afa9afa9a9a9a9a9a9a9a9a9bl#D#Dbl.N.NaYaYaY.RawbnaY#x#I#xawa0b##Sazbha##vamaqao.Cavamao.5ao.5.8.8aF#v.0.yaZaB.waza7az.G.G#aararar.X#a.Xar#eazazaralalalayayaya6.Ial.XaSaS#va#aFaO.5aC.CaC#xbnaY.N#M#D#D#D.7a9.7.Ea9.7.7.Eaf#La9#D#D.N.NaYbnbnamamb#aoama0aYawblaY#D#D#D.7",
-".7a9.7a9a9a9.Ea9bja9#s.NaYaw.NaYa0.Wa0aCamamao.5a7az.waZa#aFaFaFamamaC#xbn#xam.5amamamaoama0aoa0aOaFaoambgamaCam.8aFaOaFaOaFaF#vaFaFaOb#aoamaCamawaY.Naw#D#D.Ea9.7a9.7.n.7.7a9.7#D#D#D#D#D#D#D#D#D#Dbl#D#Mbl#D#Ma9a9a9a9a9a9a9a9.na9a9.na9a9.na9#D#D#D#DblaY.saYaYaYaY#xaY#xaY#xaYbnaObmazaZ#Sa#.8.8.8.5am.8.5.8a##va#.ybbbb.w#uazarar#a#eazaSaz#ua7aZaZaZaZ.Tbm#SbmbmaZan#uaSaz#aalaR.2.IaGaraSaZaBa#aFaoama0aC.R#IawaYbl#D#D#Da9.7.7a9.7.7a9.7af#L.na9#D#s.N.NaYaCamaoaFamama0aYaYaY#D#D#Dbj#D",
-".N.N.N.N#D#D#D#DawaY.Nbf#xaqaqavamamaF#v.0#u.w#e#va#b#.5amamamaF#I#x#x#x#Ia0#x#x#x#I#x#xa0ao.5amamaoaFa#a#aBaZaZ.TaBaZ#SaFaFaF.5ao.5aoam.C.W#x#xaYaY.saY.N#s#D#Dajafaja9a9a9.7a9#Da9bja9#D.7#Da9#Dbl#Dbl#D#Dbl#D#Da9.7a9.7a9a9bja9#Da9#D#D#Dbl.Nbl#Dbl#D#D#Dbl.NaYaYaYaYaYawaYaY.Nbfa0b#bmaBana#bma#bm#u.6#T.oaR.Gararal#aalalal#Taraz.6#uan.0.0b#.8b#aob#aoambgamam.8aoamaO.8aFaBbhaz.Gar.X.X#abhazan.TaZbmbma#aCa0#xaYbfaY#s#D.s.N#D#D#sa9.7.7#s.7.7.7a9a9#D.7#DaYam.5aOa#amambf.N.N#s#D.NaYbf",
-"aYaYaY.saY#s#D#D#D.s#x.Wao.8aq.5.yaB#uanaBan#uanaFaOamaob#aoamaobn#x#U.Ca0.C.C.Wbna0a0aoaF.5#va#.ya#.yaBaZaBbh#u#SaBaZaOa#.8aFbg.5aoamaobn.Cbn#x.sbl.NaY#D#Da9#Daf#L#La9.7a9a9.7#D#D#D#D#D#D#D#Dbl#Dbl#DaY#DaY#D#Da9a9.7a9#D.7a9a9a9a9#Dbl#D#D#D#D#D#D#D#D#D#D#DaYaYaYaYaYaYaYaY.N#x#xbgaFaZ#ua#bgaF#vanaz#ealalazazaz.Garaz#q#ebhananaZaZa#a#a#aCama0a0aoa0ama0aqaoamamaFaoam.8a##SaZ#uana7aSbhaBaZaZbmaOaFaOaFb#ambnbn#IaY.NaY#D#D#D#D.7.7b..7#D#Da9.7#s#D.n#D#MaY#Iama#aFaoa0#x.saY#D#Dbl.N#x",
-".Nbo.N.N#xbf#xbf#x#Ia0a0aOa#aBaz.GaP.wan.ya#a#a#aCamambgama0a0a0.Wa0.C#xa0a0a0amamaoaFama#a#.0#vaSazbh#uanaBanaZa#aOaFaO.5aOaqamaoama0.C.C#Ibn#IaYaYaw#D#s#D.E.7#Laf#La9a9.7a9a9.7a9.7a9.7a9.7a9#D#D#D#D#Dbl#D#Da9.7#Da9.7a9.7#Da9.na9a9#D#Dbl#Dbl#Dbl#Dbl#D#D#p#D#D#D#D#D#D#D#D.N#DaYa0b##SaBaZamamaF#v.0#u.6.wan#u#uaSananaZaBa##vaFaFaoamamama0a0aCa0bna0#xaCa0a0.Cao.CaoamaoaF.5aOaFaFa#aFaFaF.5aoamaFamaFaob#bga0aobnbn#x#x#M#Dbl#s#Da9.7a9.s#D#D#D.N#DaY.N#Daw#xa0aoaF.5b##IaYaY#DawaYaw#x",
-".N.N#Ibf#x.W.C.W.5#v.yaZ.G#z.Kba.o#e.w.0a#a##va#amamaOaFaOaFbgamama0amaoam.8.5.5a#aFaFa#aBan#ubh#a.Xar.Gbh#uaZaBaO.5aoamamaC.C.Wa0a0.W.C#I#x#x#xaY#saY#D#D.7af.7af#L#La9a9.7#D.7#Da9.7a9.7a9bja9a9a9a9a9a9a9a9afa9.7a9.7#L.7a9afa9a9a9a9a9#Da9#D#Dbl#D#D#D#p#D#D#D#D#Dbl#Dbl#Dbl.s.NaY#xa0a#aB.0amamamaFa#a#a#a#aBaZaZaZ#va#.0a#b#b#bgamambn.Cbn.Wa0.C.C.C.Wa0.C.C.C.Wa0.Ca0.Ca0aoamama0a0bn#Ubn.Wa0.Ca0.W.C#U#xb#.Vb#b#a0ama0a0aYaY#D#D#D#s#D#saYaY.s.NaYaw.NawaYaY#Ia0amamaOam.C#x#xaYaw#x#x.C",
-".C.W.Caqaq.5.5.5anaP.o.Ya8#obs.g#TaS.wan.0#va##v.0bm.0a#.0a#a#.yamaoaFamaOa#aOa##va##S.0aZ#uaSaz#aaG#a.Gaz#uan#u#vaOam.8aCaq.W.C.C.Wa0#x#x#x#IaYawbl#D#sa9a9#L#Lajaf#L.na9a9.7a9.7a9#D.7#Da9.7a9a9a9af.7afa9.7a9.7af#L#Laf#La9.7afafa9.na9a9bl#Da9.na9a9a9a9a9afa9.na9a9.7a9a9a9.N#D.N#M#xaOaZaBamaOam.8am.8a#.5a##va#aoaFaFamamaoa0a0bnaC#x#x#x#x#I#xaY#xaY#xaY#I#x#x#x#I#x#I#xa0bn#I#xawbl.Nbl.Naw.NaY.NaY#xaYaCa0ao.Vbgb#b#b#awbnaYaYblblaYbl.NawblaY.NaYaYaYawaY#x#Ia0bga#aOamaC.C#xa0.Wa0am",
-"aoaFa#aOa##v.y.ya4.2#4.4a8aDaTaRanananaZaBaFaFaF#v.0#v.0#v.0#v.0amb#aob#amam.5aFamaOaFa##v.0.yaZaz.wanazaz.w.w.waO#vao.5aoamaCam.Wa0#x#xaw#xaYaY#D#M#Da9a9.E#L#L#L#Laf.7a9.7#Da9.7a9#L#L#L#L.7#L#L#L#L#L#L#L#La2#La2#L#L#L#L#L#Lafajafafa9a9a9afa9a9a9a9a9afa9a9a9.7a9.7a9a9.7a9.N#D#D#DaYam#SaZaF.5aFamamamamaoaFamamb#amamaoa0a0bnaC#x#x#xaY#IaYaYaYaYaYaYaYaY#xaY#IaYaYaYaYaY.s#xaY#D#D#D.7.n#D#D#D#M#D.N.saY#xa0a0amamambgambnbn#UaY#x#xaY.saY#x.NaYaw#x#I#x#x#I#xa0a0aF#vaZ.5a#amaCa0am#v.5",
-"an#uan#uan#ua7#uaz#a.Gaz.GaSaZaZ#vbybca#.5aoamb#.5b#amb#amb#amb#aCama0amamaob#amaCa0a0aoaFaFa#byaOby#v.yaZaB#u#ua##v#S#v.5ao.5aoa0#I#xaY#x#IaYaw#Dbla9#s#L#L#La9#Laf#La9#La9.7a9#L#L.7af.7af#Laf#L#L#L#L#L#L#L#Laf#Lafa2af#L.3#Lafafafafa9afa9a9#Laf#Laf#L#Laf#L#L#L#L#L#L#L#L#L.s#D#s.7#DaCa##ua#.0.5.5amama0a0amaoamaCamaCa0#xbn#x#x#x#xawbfaY.N.N.N.s.N.N.s.Nbl.Nbl.NaY.NaY.Nbl#D#D#s.7.7#D.7a9.n#p#Dbl#DblaY#x#x#xbnbnama0am.Vama0b#aCa0#x#xbn#I#x#x#xbnbn#x.Ca0a0aCam#van.wan#vbyaF#va#.yan",
-"alal.Ga7bhaZaZaZa##Sa#aFb#ao.5.8aFaFamama0amamaobn#Ubn#Ua0#Ibn#Ua0a0a0aCa0amamao#x#xaCa0aoamao.5avam.8.8#v.yaB#u#SaBaB#u#S#vaO.8amaCbn#x#I#xawaYbl#sa9a9#La9.7ajafaj#La9#L.7#Da9.7#Laf#L#L#L#L.7a2#ga2a2a2a2a2a2#La2#L#La2#L#L#La2af#Laf.na9a9a9af#Laf#La9af.7af#L#L#L#L#Laj#L#L#D#D.7#s#D.CaBbhbb.y.0aOama0aoa0ama0ama0bnbn#xaYaCbnbn#x#xaYaY.Naw.NaY.NaY.NaY.NaY#DaY#M#Dbl#M#D#Da9.7a9#Dbjb..7afa9.na9bl#DaY.N#Ibf.W#xaC.Ca0amamb#b#a0ama0ama0#xbn#x#U#x#U.C#UamaCama0ao.0.w.6.wan.yan.yan.waP",
-"#q.6a#aF.5aCa0a0bnbna0aCa0amb#am#U.Vbnbn#xa0.C#x#x.NaY.NaY.N.N.N#D#s.NaY.NawaY.N#M.s.N#x.C.Wamaq#UaCaCb#bgaOa##vbg#v#v#u.w#uaZ.yaO.5aoama0.RaYaw#D#D.7.n#Laj#L#L#L#La2#La2#La2#g#Laf#L#L#L#La2#La2#L#La2#La2#L#La2af#L.3#Laf#Lafajaf#La2#La2#La2#L#L#Laf#La2#L#L#L#La2#L#Laf#L#La2#La9#D#x#xaoaO.Xbha#ama0#x#x.CaC.Ca0aC.C#x#IbnaYaYawaYaYaYaYaY.N#D#D#D#D#D#D#D#D#D#D#D#D#D#D#D.7.E.7.7.7af.7.7aj#L#L.7.E.N.N.NaY.N.N.N.NaY.NaYbl#IaYbna0aoaFaOamaoamamamaFaF.5b#aOa#a#aZ#u#a.2.waP.w.w.waZan#u",
-".GanaB.5a0a0#xaCbn#Ibna0a0a0amam.Va0bnbn#x#x#I.C.NaY.Naw.N#s#D#D#D#D#s#D#D#D#saY#D#DaY.saY#x.W.Cbn#Ua0aCaoamaOaFaob##v#uaB.y#vaOa#aO.5bga0#U#x.R#D#D.n.7.7#Lbp#L#La2#L#g#L#g#La2#L#L#Lafa2a2#La2#L#La2#La2#La2#Lafa2#L#La2#La2#Laf#L#Laf#Laf#L#L#Laf#L#La2#La2#La2af#Lafa2#L.3#L.j#La9#DaY#xa0#v#aa7a#b#a0bn#x.C#x#x#x#x#xbn#x#x#IaYaYaYaYaYawaY#D#D#D#D#D#D#D#D#Da9#D#D#Dbj#Da9a9#La9af.E.7a9#Laf#Laf.7a9#D.N.N.saY.Nbl#DaY#D.NaYaYaY#xa0b#.5aFbga#aFaFbma#.ybm#vaZ#SaBan.G#q.2.w#u.6#uan.y.0.0",
-".6#u.0b#a0#x#xa0bnbn#x#xbn#Ibn#x.RawaY#x#I#x#xbfaYaw.N#D#D.7.7.7a9#D#Da9#Da9#D#Da9a9#D#D.N.N#x#x#I#x#Ia0ao.8am.8aCa0bg#v#vaOb#aoaFaOaFama0a0#Ubn#s#D#Da9.E#L#Lajbpa2#ga2a2aja2#gafa2#La2#La2#La2#Laf#La2#L#Laf#La2#Laf#Laf#Laf#L#Laf#L#Laf#La2afa2#La2af#La2#L.3#La2a2#L#L#L#L#La2#La9#s.N#xa0bg.Xana#aFamam.C#xbn#xbn#x#x#x#xbnaYaYaYawaYaYaYaY#Da9#Da9#Da9#Da9.7#D.7a9.7a9a9.7.7.7.7.7a9#L.7.n#L#Laja9a9#D.saY#D.N#D#D#D#D.saY#DaYaYa0a0amb#aFbm#SbmaBaB#ubha7aB#u#uazaz#Tal#q#uanaB.0a#.0a##u",
-"azaBa#aobn#x#x#x#x#x#Ibn#xaY#xaYaYaYaYaY.NaY.NaY#D#D#D#D#D.7a9.7#sa9a9bja9.7#D.Ea9bj.n#D#D.NaY.N#MaYaY#Ia0aoaoam#IaCa0ao.5ao.CaCbg.5b#aoa0aC#xa0aYaY#s.7a9#Lbp#La2bpa2#L#g#L#ga2#Laf#L#La2#La2#La2#La2#La2#La2#Lafa2#Laf#L#L#L.3aj#L#La2ajaf#L#La2#L#La2#La2#La2#La2#La2a2a2afa2#La2#L#DblaY#IamazaSaBaFama0#x.C#xaY#xaY#x#U#x#xaYaYaYaYaYaYaY#D#D#D#Dbj#D#Dbj#Da9a9a9.7a9a9bja9.7afa9aja9.7af.7#Lafa9a9#D#D#D#D#D#D#D#D#D#D#D.NaY#I#xbnaoamam.5a#bma#aZaZaZaZ#uaZanaz#q#TaR.o#q#uaB.0a#.0#uaZ#u",
-"an#vb#a0#x#x#xaYaYblaYaYaYaYaYaYaYaYaYblaY.N.N.sbl#D#Da9#D.7a9#L#D.7#sa9.7a9.7#Da9a9#Da9a9#s#D.Naw#Daw#xaCa0.C#x#U#xaCaoaCa0#Ibna0a0aoa0aCa0a0#UaY#M#D#Da9.7#L.7a2a2#ga2a2#ga2#g#La2#La2#La2#La2#La2#La2#Laf#L#Laf#Lafaj#Laf#L#Lafa2af#L#La2#Lafa2#Laf#La2#La2#La2#La2#L#La2#L#La2#Laj#Dbl.NaY#UaZ.TaBaFam.C.C#xaYaYaYaYaYaY#x#xawaYaYaYaYaY#Dbl#D.Ea9a9.7a9a9.7#D.7#Da9bja9.7a9a9.n.7a9a9a9.na9a9a9a9.na9a9a9#D#D#D#D#D.7#D#D#DaY#x#x#xbna0aCamaFaOa#bma#bmaBaZaZaB.6.Gal.o#e.GazanaBaZ#u#u#uan",
-"#vaFama0awbnaYaYaY.NaY#D#DaY#D#M#Dbl#s#D#D#s#D#D#Dbl#D.n#Daf.E.7a9a9.7a9a9a9a9a9.7a9.7a9.7a9a9a9#D.n#D.N#x#I#I.W.C#I.Caoam#U#xaw#Ia0#I#x#x#I#x#IaYaY#Dblbja9a9#L#La2bpa2bpa2#La2#Laf#Laf#La2#La2af#L#La2#La2afa2#Laf#L#Lafaj#Laf#L#L#La2#Laf#La2#L#La2#La2#La2#L#La2#La2#L#La2#L#L#Lafa9#sblaY#xb#bm#SaFambn#xaYaYaYaYaYaYaYaYaYaYaYaYawaYaY#Dbl.7a9bja9.7a9bja9#L#L#La9.7a9a9.7a9.7a9a9.7a9.7a9a9a9a9a9a9a9a9a9#D#Da9#D#Da9#Da9.N.NaYaY#x#x#xaYa0ama0am.5aF.5a##vaZan#TaR.Gazana7.wan#uaZan#uaZ",
-"b#a0#xaYaYaYaY#x#DaY#D#D#M#Da9a9#D#D#D#D#Da9#D#p#Da9#D.7a9.7#L#La9a9a9.7#L#L.7a9.na9a9.7af#L#L#L#La9.7#s.N#I#x#x.C.CaCa0.W.W#xawaYawaYawaY.NaYaYaYawaY#sbl.7#D.7#L.ja2#ga2#ga2#g#La2#La2#Laf#L#L#La2af#L#L#L#Laf#Lajaf#Laf#Laf#Lajafaf#Laf#L#La2#Laf#Lafa2#La2#La2#L#L#L.3#Laf#La2#L#La9a9#D#MaY.b#yaFbgam#x.N#saYaYaYaYaYaYaYaYaYaYaYaYaYaY#Dbla9.7#L#L.7#L#L#L.7af#La9#La9#La9afafafafa9a9a9a9a9.na9a9a9.n#pa9.n.7a9.7a9.7a9.7#D#D#D#s#DblaYblaY#x#xaCa0aCa0amaOaZ#u#q.G.6#uaBana7azaZaZaZaZa#",
-"a0a0a0aYblaYaY#xaYaY#Dbl#Da9a9af.7.7#Da9a9a9a9a9a9a9.n#Da9.7#L#L#La9.7af#L#Lafa9.7a9#L#Lajafa2aj#L.7.n#D.N#xbo#I#x.Waq.8aoa0#I.Nawbl#sbl#DaY#saYawaYaYbl#D#Da9a9#L#Lbpa2#L#g#La2#Laf#Laf#La2#L.3#Laf#L#Lafaf#Laf#Laf#L#Laf#L#Lafaf#L#Laf#Laf#Lafa2#La2#L#La2#Laf#L#L.3#L#L#L#L#L#L#L#L.na9a9blblbn#Hbga0#xaYaYa9blaYblaYblaYblaYaYawaYaYaYaYbl#Da9a9a9a9a9a9a9a9#L#L#L.7a9.7a9a9#La9a9a9a9af.nafa9#pa9#pa9#pa9a9#Da9#D.7#Da9bja9a9.7a9a9a9#D#Dbl#D#saYaY#x.Cbn.WaF#San.Ga4aZa#a#aZ#uanaZaBa#bma#",
-"bnaYaYawaYaY#M.N#D#D#D#D#D#D#Da9a9#D.nbja9.7a9.7a9.7.7a9#La9a9a9.7a9#L#L.7af.7a9#Laf#Lafa9.7a9a9#L.7#La9a9#DaY#Ua0#UaCa0#I#x#I#I.N#s#D#D#sa9#D#Da9#D#s#D#Daw#DaYajaf#L#L#Laf#L#La2a2a2#La2#La2#L#La2a2a2a2bpaj#Lajaf#Lajaf#Lajafaja9ajafajaf#L#Lafafafafa2#L#L#La2#L#L#L.3#L.3#L#La2#L#Lafa9.na9aYbnb#b#am.C.NaWa9bj#D#Dbj#D.N.NaYaY#DawaY#DaY#D#D.7a9.7a9.7a9a9#Laf#Laf#Laf#L#Lafafaf#La9#D#D#D#L#Lafajaf#Laf#L#L#L#L#L#L.7.7.7a9a9.7a9#D#D#D#DaYaY.N#x#Ia0.Ca0aF#vaF#vaOb#aob#aoaFaBaZ.0a#.5am",
-"#U#x.RaYaYaYbl#D#D#D#D#s#D#Da9#D#D.7#Da9.7a9bja9.7a9af.7a9a9.7a9af.7a9af#L#L#La9a2afaj#L#La9.7a9aj#L#La9.nblaYaY#Ia0aC.W#x#I.N.s#D#s#D.n#D#D#D#sa9a9a9#Dbl#D#D.Na9a9a9a9a9#La9#L#Laf#Laf#Laf#Laf#Laj#L.7aj#L#L.7afajafaf#Laf#Laf#Laf#L#Laf#L#Lafafafaf#Lafa2#L#L#L#La2af#L#L#L#La2a2af#L#La9bja9.Rawa0.8a0.C.Nbj#Da9a9#Da9#D#DaY#DaYbl.Nblaw#Dbl#D.7a9a9.7a9a9bjaf#Lajaf#L#Laf#Lafafafa9a9#Da9#D#Laf#Laf#L#L#Lafaj#L#L.7#L.7af.7#La9a9.7#D#D#D#D#D.NaY#x#x.C.CaoaFaFaOaOamamamamaCaF#v#v.0#vb#am",
-"bnbnawaYaYaY#Dbl.n#D#D#Da9bja9bj.n#D.7a9#D.7a9a9a9.7a9a9#La9a9a9#L#L#L#L#Laf#L#La2a2a2af#La9a9a9#L#Laf.7a9#D#IaY#UbnaC#xaY.N.saY.s#D#Db.#D.n#D.7a9a9#Da9#D#D#D#Da9bja9#Da9#Da9#Da9a9a9a9a9a9a9a9#Laf#L#Lafafajaf#La9#Lajaf#Lajaf.7#Laf#L#Lajaf#Lajafaf.3#L#L#L#Laf#Laf#La2a2#La2#La2#La2af.Ea9.naY#xaCamam#x.Nbj#s.7#D#D#D#Dbj#D#Dbl#Dbl.Nbl#Dbla9a9a9a9a9a9a9a9afafafafajafafajafaf.na9a9a9#D#D#Lajaf#L#Lafa2#L#Laf#L#L#La9.7a9a9.7a9a9#Da9#D#D#D#MaY#x#x.CaCa0aFaOaFamaFaCa0a0bnaCb#aOaFaOama0",
-"#IaYaYaYawaYaw#D#D#D#s#D#sa9#sa9.7a9a9a9.7a9#L.7#La9af.7a9a9.Ea9afaj#Laf#L#La2#La2a2a2#La2#La9#L#L#Laja9a9blaYaY#I#U#xaw.Naw#D#Da9#sa9#sa9.7a9.7ajaf.Ea9a9.7a9#D#D#D#D#Dbj#D#D#Da9#D#D#D#sbl#D#sa9a9a9a9a9#Da9#Dafajafaf.Eaf.7afajaf#Lajafaf#Lafafafajaf#Laf#L#L#Laf#L#L#Lafa2#La2a2af#L#La9a9a9aw#x.Vaoa0#x.Nbja9#D#D.7#D#D#D#Dbl#DaY#DblaYaY.Na9a9a9a9a9.7a9a9#La9afa9afa9af#pafa9#pa9a9a9.7a9#Laf#Laf#L#L#L#Laf#L#Laf.7a9#D.7a9.7a9.7#D#Dbj#Dbl.NaY#x#I.Ca0aqbgaFamaoambn.Cbn#U#xbna0aCama0a0",
-"aYaY#IaYbl.N.N#D#s#D#D#D#D#D#Da9a9a9.7a9a9a9a9#Laf#L#Laf#L#Laf#L#Lafa2a2a2a2a2a2a2a2a2a2a2#L#Lafa2#L#La9a9#DaY#Ubn#I#xaYaw#D#s.sa9bj.n#Da9.Ea9.7#L.7#L#L.7a9.7#L#Da9#Da9#Da9#Da9#Dbl#Dbl#D#Dbl#Dbl#s#D.na9#s#D#Ma9a9.n#Laf#Lajaf#Laf#Laf#L#Lafajafafafaf#Laf#L#L#La2#L.3#L#L#Lafa2a2#L#Lafa9.na9#Dawa0bga0#x.N#s#Da9#D#D#D#D#D#D.Nbl#DaYaYaYawaYa9.na9#La9afa9afa9a9a9a9a9a9a9a9a9#pa9a9a9a9a9a9#L#Lafaj#L.3#La2afafa2af#La9a9a9afa9.7a9#D#D#D#D#DaY.N#x#xa0a0aoaFbgama0a0a0aCa0aYaY.baYbnbnaC#x",
-"aYaYblbl#D#Da9.7a9a9a9a9.na9a9.7ajafaj#L#L#La2#L#L#L#L#Lafaj#Lafa2a2#L.j#La2#La2a2a2a2#La2af#L#L#L#L#L#La9#MaYaY#Ibn#MaY#D.s#D#s.7.na9.Ea9.7aj#La2aj#L#Laj#L#L.7.7a9.7.7a9.7a9.7#M#Dbl#MblblaYbl.sbl#Dbl#D#Dbl#Daf.Ea9af.Eafa9af#Lafaj#L#Laf#Lafafafafafaf#Laj#L#Laf#L#La2afa2#La2#L.3#L#L.7#Da9#DaYaCama0#Ibla9#Dbj#D#Da9#D#D.N#MaY#DblawaYaYaY#pa9a9a9#pa9a9a9afa9afa9#p.na9a9#Mbla9a9a9#La9.7afaj#Laf#L#Laf#Laf#Laf.7afa9afa9a9.7a9#D.7#D#D#D#Dblaw#x#x.WamamaOb#aOa0aC.Cbn.C#U.RaYaY.b#xbna0",
-"aYaY#D#D#D#s.7.7a9.7a9.7a9a9.7a9#Laf#Laf#Laf#Lafa2a2a2a2#La2a2aja2a2.3a2a2a2a2a2aaaaa2a2a2a2a2#La2#L#La9a9#DaY#I.RaYaw#D#M#D#s#D.n.7a9.n#L.7af#La2a2a2#La2#L#L#La9a9.7a9a9.7a9a9a9#pa9a9a9.n#pblaYaY#IaY#IaYaw#x.na9af#Laf#Laj#Laf#La9afajaf#L#Lafafafaj#Laf#L#Lafa2#L.3#L#L#L#La2a2#L#Laf.na9.n#D.NbnaCaobn#D#s#D.n#D#D#D.N.NaY#DaY#Dbl.NaYaYaw#D#pa9#p.n#pa9#pa9a9.n#pa9#pa9#pa9#D#pa9afafajaf#Laf#L#Laf#L#Laj.3af.3afafa9a9a9.7a9.7a9#D#D#D#D.NaY.N#xa0ama0aob#ama0a0a0bn#Ibna0#x.bbnaY#Uamam",
-"#MaY#s#D#D.7#La9#L.7.na9a9.7a9a9#L#L#L#La2#La2#La2a2a2aja2#La2afa2aja2#La2a2a2a2#gaaa2a2a2a2a2a2a2#L#La9a9blaYaYaY#MaY#M.N#D.n#D.na9.n.7#L.E#L#L.ja2a2a2#g#L#L#L#Lajaf#Lajaf#L#La9a9#pa9#pbla9.naYawaYaYaY.RaYaY.na9.na9aj.7af.n#Lafaj#Laf#Lajafafajafafaf#L#L#L#Laf#L#La2afa2af#L#La2af#L.7a9a9.7aw#xaCa0#IaYa9#D#D#D#D#D.NaY.saY#Dbl#DaYaYaYaY.na9#pa9a9#p.na9af#p#pa9a9a9#pa9#Dbl#Da9.na9#L#Laf#L#Lafajaf#Lafafafafafafafa9a9afa9a9bja9bj#D#D#D#DaY#x.Wa0av.5.pamaCa0#Ua0#x#xa0bnaYaw.R.Cb#am",
-"amam#xbla9a9a9a9a9a9.7a9.7afa2#Laf#Laf#La2#La2#La2a2a2a2a2a2a2a2#Laf#Laf#La2#L.3a2a2a2a2asa2#La2#gafa9blaYawaYaYawbn#IaYawaw#D#Da9.Ea9#Lafaf#L#L#L#La2a2a2a2a2a2a2a2#La2af#L#Lafajaf#L.na9bja9#D#p#pbl#M#x#Ia0bn#I.NaY#D#Da9a9.7af.Eafa9aja9#Lafa9a9a9a9#Lafa9afajafafafaf#Lafafa2.ja2afajaf#L.na2a9aY.Cbgam#x#Ma9.n#Lajafa9.N.N#pa9bl.N#MaYaYaY#p#pa9#pa9#pa9#p#pa9#p.n#p#p.n#pa9#pa9a9#paf#pa9a9.n#pafafafafafafafa9afa9afa9a9.na9a9a9a9a9#D#D.n#paYaYa0amb#amb#a0a0a0.Ca0#I#xaw#xaY#x#xaCa0aC",
-"ama0#xbla9.na9a9bja9#Da9a9ajaf#La2aj#Lafa2#La2#La2a2#La2#La2#La2af#Lafa2#Laf#L#La2a2a2asa2a2a2a2a2#La9blaYaYaYawaYaY#xawaY.N#s#Daja9#Lafajaf#Laf#L.j#La2#La2#La2#La2#La2#L#L#L#L#L#Laf.7a9#D.n#Da9.nblblaYaY#xaC#x#IaY.s#D#sa9.na9a9a9a9a9a9a9a9a9afa9afa9a9#La9afafaj#Lafaf#Lafa2#La2#Lafafaj#La2.naw.CamaC#xaY#D#D#La9a9#sbl.Na9#M#DblaYaYaY#xbla9#p#pa9#pa9#pa9#pa9#p#pa9#p#p#pa9.n#pa9a9a9af#pafa9afa9a9afa9#La9af.7afa9afafa9afa9a9.na9#Dbl#p#pblbn#U.5bg.5a0aoa0a0#Ua0#xbnaYaYaY#U#xbn#xa0",
-"amaCaYaYaw#Dbl#sa9#D.7a9.7af#L#Lafaf#L#La2#La2#La2a2a2a2a2a2a2a2#L#L#Lafaja2#L.3a2a2a2#La2a2a2a2#ga9#D#MaYaY#UaY#xaw#Ibl.Naw#D#Dafafaja9#L#Laf#La2#La2a2a2a2a2a2a2.jafa2#Laf#Laf#Laf#La9a9.7#Da9a9a9#sblawaY#x#x#IaY.NaY#D#D#D#D#sbl#s#D#sa9a9.na9.na9a9.nafa9afafafafafafafajafa2#L.3#L#Laja9#Daj#DaY.Ca0aoa0aY#D#Ma9.na9#D#DaYblblblaYaYaYaYaYbl#pa9#pa9#pa9#pa9#p#Ma9bl#p#D#pa9a9#pa9#pa9#pa9#pa9#pa9#paf#pa9afa9afa9afa9afa9a9a9a9a9a9a9#Da9bla9awaYa0a0ama0b#a0a0a0#x#U#x#xaw#xaw#xbn#I#xa0",
-"b#b#aCaYaYbl#Dblbja9#D.na9#Lajaf#L#L#Lafa2#La2#La2a2#La2#La2#La2afafaj#L#Laf#L#La2#La2a2a2a2#La2#La9blaYbnbn.R#IaY#U#xaYaw.N#D#s#L.Eaf#Lafaj#L#L#La2#La2#La2#La2afa2a2a2#L#L#L#Lafajaf.7.n#Da9b.afa9a9a9#DaY#I#x.NaY#saY#s#D#s#DaYaYaYblaY#DaY#Dbla9a9a9a9a9a9a9.na9a9.na9a9a9a9#La2aj#Lafa9a9a9af#Mawa0aCa0a0bn.NaYbl#D#M#DaY.NaYaYaYawaYaYawaYbl.na9#pa9#pa9#pblbla9#p#pa9#p.na9#pa9.n#pafa9af.naf#pajafafafafa9a9a9afa9af.7afaf.nafa9a9af#D#DblblaYaY#xaCa0.Ca0aobnaCbn#xawaYaY.RaYaYaY#xbn#x",
-"a0bnbnbnaYaYbl#D.n#D#sa9a9#Laf#L#L.3#L#L#La2#Lafa2a2a2a2a2a2a2a2#L#Lafaf#L#La2#L#La2#L#L#La2#L#Laf.nblaY.bbn#U#x#Ubn#Ibl.NaYa9.7a9afaja9#Lafaf#La2a2aja2a2a2a2a2a2a2a2a2af#Laf#L#L#L#La9a9.7#Da9#Laja9#D#D.NaYaY#s#D#D#DaY.NaY.saY.saY.NblaY#DaY#sbl#sbla9#Da9#Da9a9.na9a9afa9ajafaf#Lafa9a9#D#sa9blaY#Ua0aob#aC#xaYaw#D#DblaY#IaYawaYaYaYaYaYaYbl#pbla9#pa9#pa9bl#M#p#D#p#M#p#pa9#pa9#pa9a9#pa9#p#pa9#p#pafafaf.nafa9a9#La9afafa9afa9a9afa9#Da9bl.NaYawbn#x#x#x#Ubna0#xbnaY#xaYawaYaw#xawaY#x#U",
-"#Ubn#Uam#UaYaYbl#Da9bja9a9#L#Laf#L#Laf#Laf#La2#La2a2#La2#La2#La2af#L#L#L#Laf#La2af#L#La2#L#La2#Lafa9bl.Ra0.pa0bn#U#xawaY#M.N#s.7.na9#Lafaj#L#Lafa2a2a2a2#La2#La2a2a2a2a2#L#L#L#Laf#Laf.7a9#D.7#Dafaf#L.na9#Daw.N.n#D#D#s#Daw#DaYaYaYaYawaYaYawbla9bla9bla9.n#D#Ma9a9a9#Da9#sa9#p#Laf#La9.7.n#D#D#DaYawa0a0aob#amaCa0aYaYaY#DaY#xaYaYaYaYaYbl#Dbl#p#pa9#pa9#pa9#p#pbl#p#pa9#pa9bl#p.na9a9#pa9#pa9af#pafa9af.na9afa9a9aja9a9afa9#Laf.7afa9.7afbl#D#D#DaYaYaY#xaY#xa0bnbn#U.RawaY.baYaYblaY.R#IaYaY",
-".Rbnb#a0a0#xaYbl#s#D#sa9.Eaf#L#La2#Laj#La2a2#L#La2a2a2a2a2a2a2a2#La2afa2afa2#Laf.7af#La9a9#Lafa9a9a9.R.Ra0.V#UbnaYaYaY#D#D#D#D.7afajaf.Eafaf#L#La2#La2#La2a2a2a2a2a2#La2#L.3.7#Lafaj#La9a9.n#Da9#Laj.7a9.7#D.N.Na9.n#D#DaY.NaY.sbl#Mblbl#Dbl#Dbl#D#Dbl#s#Dbl#Dbla9#Da9.nbla9a9#Dajaf.na9#D#D#D#sblawaY#x#Ub#b#aO.5a0aCaYaYawaY#x#xaYaYaY.sblbl.na9#pa9#pa9#pa9#pblbla9#M#p#Dblbl.n#p#p.na9#p.n#p.na9#pa9#pa9af#pa9afa9a9af#Laf#Lafafa9afa9a9#Da9bl#D#M.NaY.Naw#x#UbnbnaYaYaY#xaYbl#MblaYaYaYaY#I",
-"#Fbn.Vaoa0bnaYblbja9#Da9a9#Lajaf#Laf#Laf#L#L.3#La2a2#La2#La2#La2af#L#L#L#Lafaj#La9#L#La9a9#L#Lafa9blaw.R#Ua0bnbn#IaYaw#D#s#Da9#s#La9#Laf#L#L#L#La2a2a2.j#L#La2#La2a2a2a2#L#Laf#L#Laf#Laf.7#D.7#s#L#L#La9.7#D.sbf.n#Da9#Daw#DaY.N#pbl#M#D#p.n#pa9#sbl#D#D#Dbl#D#D.na9#Dbl.n#Da9a9af#La9.7a9#s#DaYaY#x.baYbnaoamaFaFaoa0#IbnaYaY.R#x#xaYaYbl#Da9#pa9#pa9#pa9#pbla9#M#pa9#pa9#p#Mbl#pa9a9a9#pa9a9#pa9#paf.naf#pafafa9a9a9afa9af.7afa9#L#La9a9af#D#D#D#DaY#D#DaY.NaYbnbn#U#x.baYaYaw#paY#D#MaY#IaYaY",
-"blaw#xa0ambn#xaYawblbl#D#pa9afafa2a2a2a2a2a2#La2#L#La2#La2#La2#La2a2a2afa2#La9a9a9a9a9#D#D#D#D#D#pbl#paY.Rbn#I#x#pa9a9a9a9.7.7a9afajaf.n#Laf#L#L#L#L#La2a2a2#ga2a2bpa2#L#L#L#L.7af#Laf.7a9a9a9#Da9a9#sa9#D#D#D.Na9a9a9#sbl#D#Ma9bl#Dblbl#Dblblbla9a9a9afa9a9a9a9a9a9afa9a9a9a9.nafa9a9.na9a9#D.naY.RaYbna0a0b#aobgb#bg.Va0aCaY#D#Mbl#Mbl#Dblbl#Dbl#Dbl#Dbl#Dblbla9#pbla9#p#pa9#p#p#p#p#p#pa9#pa9#p#p#p#pa9a9afa9aja9afaf#Lafaf#La9afa9#Lafa9a9af#sa9#Dbl#DaYbl.N#UbnbnbnaYaY#IaYaY#MaY#xaYaYaYaY",
-"aYaYbn.Ca0a0#I#xaYaYblbl.naf#Lafaja2#La2#La2a2a2#La2#La2#La2#La2a2a2#L#L#L#L#L#Lafa9af#D#p#Dbl#D#F.nblblaYaYaYaYa9.n.7a9a9.7a9.7afafaf#L#L#L#L#La2#ga2#ga2bpa2#L#ga2a2#L#L#L#L#L#Laj#Laf.7a9bja9.7#D.7#D#D#D.Naw#D#M#D#p#D#p#D#Dbl#sbl#Dblbl#Dbla9.na9.naf#paja9afa9.na9a9afa9a9afajafa9a9a9blblaYawaY#Ua0aC.5am.V.Vb#ama0aYaY#xblaY#DaYbl#M#Dbl#Dbla9bla9bla9bl#D#p.n#pbla9bl#p#p.na9#p.na9#p.na9bl.na9afa9a9a9a9afa9#La9af.7afa9a9#Laf#Lafa9a9a9a9a9#D#DaY#saYbnbn#U#x#UaYaYaYaYaYaYawaYaYaY#x",
-"aY#xbna0a0a0a0bnaYaY#Mbla9a9a9af#L#Laf#L#L#L#Lafa2#La2#La2#La2a2#La2afa2af#L.7#La9a9#D#D#D#D#DaY#pblbl#MaYaYbl.Na9a9a9.7a9#L.Eaf.naf#Laf#L#L#L#La2a2bpa2#ga2#ga2a2#L#L#L#L.7a9a9a9a9afa9a9#D#D#sa9.nbl#DaYblaYaYbl#D#D#D#M#Dbl#sblbl#Dbl#sbl#D#Ma9a9a9a9a9a9a9a9a9a9a9a9.na9a9a9.n#pa9a9#D#sbl#saYaY.RaY#xa0a0aCa0#Ua0aCbnaYaYawbl#sbl#M#Dblbl#D#pa9a9a9a9a9a9a9#p#p#D#p.n#pa9.n#p#p#pbl#pa9a9#p#pa9#p#pa9a9afa9af#Lafaf#Lafaf#La9a9afa9af#La9afa9a9bl#D#p#DaY#DbnaCbnbnaYaY#IaYaYaw#xaYaYbn#I.R",
-".Raw#xa0aC.Ca0a0.baYaYblbla9a9af#Laf#L#La2afa2#L#La2#Lafa2#La2a2a2a2a2#L#L#Laf#L#D#p#Dbl#DblaYaY#pblblbl#Dbl#D#Dafa9af#L#La9#L.7afaf#Lajaf#L#L#L#L#ga2a2#La2bpa2#L#L#Laf#La9.7#Da9a9a9#D#Dbl#DaYblblaYaYaYawaYaY#xawaYaYaYaYaYaYaYaYaYaYaY.NblaYa9a9#pa9a9#pa9#p.n#Da9a9a9#Da9#D#pa9bl.na9blaYblblaYaY#IaYbnbna0#Ua0b#b#a0aYaYblblbl.Nblbl#Dbl#Da9a9afa9afa9afa9#Ma9#pa9#pbl#pbl#p#p#pa9#pa9#pa9a9bl#p.na9a9a9a9#La9af.7afa9#La9afa9a9af.7afafafa9a9a9#D#D#DblaYbnbn#Ibn#IaY.RawaYaYaYaYaYaY#x#x",
-"bnbnbnbna0a0a0amaYaYaYaY#D.na9a9afa9afa9#L#L#Laf#L#L#La2#La2#L#La2#L#Laf#L#L#Laf#D#Dbl#DblaYaYaYa9.nblbl#D#D#Dblafaf#L#L#L#L#L#L.naf#Laf#L#L#L#L#ga2bpa2#ga2a2#gaf.3af.7afa9a9.n#D#Dbl#sblbl.NaYaYaYaYawaY#x#xaYaYaYaYaYawaYawaYaYawaYawaYblaYblblbl#Dbl#M#Dblbl#Dbl#D#Dbl#s#Dbl.n#pa9blawblawaYaw.RaY.RaY#U#xbn#UbnaCaOama0aYbl#Dbl#Mbl.Nblbl#Da9.na9a9a9a9a9a9a9#pbl#pa9#pa9#p#p#p#M#p#p.n#pa9.n#pa9#pa9a9afa9#Lafa9afa9#Lafafa9afafa9af#La9#La9af#Dbl#Daw.NawbnbnbnbnaYaY#xaYbn.baY.RaY#xbnbn",
-"ama0bna0#Uambgb#aY.RawaYbl#Da9a9a9.7a9.7a9af.7#L#La2af#Laf#L#L#La2a2#La2#Laf#L.7#pblblaYaYblaYaYblblbl#Da9a9a9.7afajaf#L.3#L#L#L#Lafaf#L#L#L#L#L#L#ga2a2bpa2bpa2#La9#Lafa9af#D#D#Dbl#DaYaYaw#xaYaYawaYaY#xbnbnaYawaYaYaYaYbnaYaYaY.RaY.RaY.baYawbl#Mblblblbl#Mblbl#D#D#M#Dbl#D#D#pbl#MblblaYaYaY.RaYaYawbnaYbnawaYaYa0aO.Fa0#x.R#Dbl.Nbl#Mbl#sbla9a9a9a9afafafaf#p#p.na9bl.nbl#p.n#p#pa9#pa9a9#p#pbl#pa9a9a9a9a9#La9afa9a9afa9#Laf#La9afa9af#Lafa9a9#D#Dbl#DblaYbna0#Ubn#I.RawaYawaYaYaY#UbnaCbn",
-".Va0bna0.V.Vb#.5bn#xaYaYaY#Da9a9a9#La9#La9#L#Laf#L#L#La2#La2afa2#La2#Laf#La9a9a9blaY#MaYaYaYaYaYbl#Dbl#Dafa9#L#Lafa2a2a2a2a2#L#Lafaj#Laf#L#L#L#La2a2bpa2#ga2a2#gafafafa9a9a9bl#pbl#DblaYaYaYaY#xaY.Rbnbn#Ua0a0a0aYaYaYaYaYaYaY#U.R.b.R.R#U.Rbn.RaYaYawblaYblaYbl.N#MaY#DaYblaYbl#sblblblawblaYaYawbnaY.RaYaw.RaY#IbnaCb#aOb#.Vbn#DblblawaYblbl#Da9a9a9a9.7a9.7a9#D#pbl#p#p#pa9#p#p#p#pbla9#pa9a9#pa9.n#pa9.na9a9afafa9a9afa9#Laf.7af#La9afa9#Lafa9a9a9bl#s#DaY#sbnbnbnbnaYaY#x.Rbnbnbnbnbn#xa0a0",
-"a0.Vbn.bbna0b#b##UbnaYaY#D#Ma9a9.Ea9a9a9.7a9.7#Lafa2a2#La2af#L#La2a2#L#L#Laf.7.7blblaYblaYaYaYaY#DaYa9a9a9#La2#La2a2#La2#L#ga2#Lafafafa2#L#L#L#L#L#ga2#g#La2bpa2afafa9af#p#Da9#D#DaY#D#DaYaYaY#x.RaYaYbnbna0a0a0aYaYaY.RaY#UaYaYaYaYaYaYaYaYaYaYawblaYaYaYblaYblaYbl.NblaY#s.Nblblbl#MblaYawaYaY.Raw.RawaY.b#x.baY#xa0aob#bga0bnbl#sblaYaYbl#sbla9.n.7a9.n.7a9a9#pa9#pa9#p#D#pbl#p#p.na9#p.na9#p.n#pbl#pa9a9a9af.7a9afa9.na9a9afaf#Lafa9afa9af#La9.nbl#D#D#DblaYbnbn#UaYaYaYawaY.RaY.Rawbnbna0a0",
-"aYaYaYaYaYaY.N#xaYaYawbnaYaYaYaYbl#Dafa9afa9.7#L#L#L#L#L#L#L#L#L.3a2afafa9#D#DaY.R.R#x.RaYawaYaYa9.7a9#L#L#Lafa2a2a2a2a2#g#L#L#Lafafajafafa2#L#L#L#L.7#L#L#L#L#L#L#L#Laf.7#La9a9a9.7a9#D#D#D#D#Dblbl#IaY#xaY#xaYaYaYaYawaYaYaYaYaYawaYaYawaYaYaw#Fbl#M#FblaYaYaY.R.R.R.R.R.R.R.RawaYaYaYaYaYaYawaYbl.NaYaYaYbn#Ibn.baY#Ua0aOb#.Vbg#HaY.bbla9a9.na9a9a9a9.7a9a9.Ea9#p.na9a9.n#pa9#pbl#p#pa9#p#pa9#p#pa9#pa9#pa9a9#pa9.na9afafaf#L#Laf#L#L#L#L#Lafa9a9a9#pblbl.Nbl#x.R#xaY.R#x#xaYaw.RaYaYaYaYaY#D",
-"aYblaYaYaY#IaY.NblawaYaYaYaYaYaY#Dbla9a9a9a9a9#L#L#L#L#L#L#L#L#L#Laf#Lafa9#Dbl.N.R.Raw.RaYaYaYaY.7#Da9.7af#La2#La2#ga2#ga2#L#L#Lafafafaf#L#L#L#L.7#L#L#L#L.7#L.7a2a2#L#Laf#La9bja9#D.7#D#D#D#D#D#D#DaYaYaYaYaY#xaYaYaYaYaYaYaYaw#xaY#xaYaYawaYaYbl#FblaY#MaYblaw.R.b.R#MaY#FaY#FaYaYaYblaY#MaYaYblawaY.RawaYawaYbnaY#Ibnao#SaBaF.p#H#U.RaY#Ma9#Da9a9.7a9a9a9a9a9a9a9a9#pa9#pa9.na9#pa9a9#pa9#pa9#p#D#p#s#pa9a9afa9af#pafafafafaf#L#L#Lafaj#Lafaja9#pa9a9#Dbl#DblaY#UaYaYaw#x#xbnaYblaw.RaYaY#Dbl",
-"blaYblaYaY#D.NaY#pblblaY.RaYaYaYbl#Dbl#Da9a9.7a9#L#L#L#L#L#Laf#Laf.nafa9#D#DaYaYbn.RbnaYaY.R#xaYa9.7a9#L#L#La2#La2a2#g#L#L#L#L.7afajafaf#Laf#L#L#L#L#L#L#L#L#L#La2#La2a2#L#L#L#L#L#La9.7#Da9bj#DblblaYaYaYaYaYaYbl#Dbl#D#Dbl#Dblbl#Mbl#MaYblaY#Mbl.nbl#pa9aYblaYblaYaYaY.RawaYaY#M#F#M#Fbl#F#F#M#p#p#p#MblaYaYaY#UbnbnaCam#SaBbm#H.p.p.RaYaYbla9.na9a9.na9a9a9a9a9#pa9a9#pa9#pa9#pbla9#pa9#pa9#pa9#p#p#pa9#pa9#pa9#pa9a9afafafaf.3afajafafafafafa9.n#pa9#p#Dbl.N.RbnaY.RaYbnaY#x.b.RaYaYblbl#Dbl",
-"#DblblaY#Dbl#D#Dbl#DawaYaYawaYaYaYaYbl#Dbl#D#Da9#Da9#Da9#Da9.7a9a9#p#Dbl#DaYaYaw.R.RaYbnaYaY#xaY#D#Da9.7#L#L#L#La2#ga2#L#L#L.7afafafafafaj#L#L#L#L#L#L#La2#L#L#La2a2a2#La2#L.7#La9#L.7a9.7#D#D#D.N#Dbl.sbl#D#Dbl#D#D#D#Dbl#D#D#Da9#D#D#Da9#D.n#D#pa9#pa9a9blblblblaYblblblblblbl#p#Fbl#p#pbl#pbl#p#M#pblbl#Faw#FbnbnaCamaCaF#SaZ#Hb#bgbnaw.Raw#Da9a9a9a9a9a9.na9afa9a9#p.na9a9#p.na9#pa9#pa9#pa9#M#p#D#p.na9a9a9af#pajafafafafaf#Lafa9afa9a9afaf#paf#p.n#Dbl#DblbnaYbn#Ubn#x#U#xbn.baYblaY#DaY#D",
-"blblaY#DaY#D#D#Dbl#Dbl#DblaYaYaYaYaYaYaY#M#Dbla9#D#D#D#D#D#D#D#Dbl#Dbl#DaYaYaYaYbn.R#U.RaY.R#xaY.7a9.7#Laf#La2#La2a2#L#L#L#La9.7afafafaf#Laf#L#La2#g#L#g#L#ga2a2a2a2#La2a2#La2#L#L#Laf.7a9a9#Da9#DblaYaYbl.Nbl#Da9a9a9a9a9a9a9a9.na9.na9a9.na9a9ajafa9.na9a9.na9blblbl#Dblblblbl#M#p#p#p#p#p.n#p#p#p#p#M#pblbl#MbnbnbnaCa0aF#SaZ.V.V.VbgbnaYaYaYbl#D#D#D#D#D#Dbla9#p.na9#pa9#pa9#pbla9#pa9#pa9#pa9#pa9#pa9#pa9af#pa9#pafafaf#Lafa9a9a9a9a9afa9a9afafa9#p#Dbl#saY#x.bbn#xbn#I#xbnbnbnbnawbl#Dblbl",
-"a9#pa9bl#M#Dbl#Da9a9#D#D#D#D#D.Nbn#U.RaYaYaY#D#Dbl#D#Dbl#D#Dbl#DaYblaYaYaYawaYaYaY.RaYbn#xaw#xaY.7a9#D#L.7a2#Laf#L#Laf#La9a9#Da9afafajaf#L#L#L#Lbpa2a2a2#ga2a2bpa2a2a2a2a2a2#La2.3#L#L#La9.7a9.7bl.NaYaY#D#pa9#pa9a9a9afafa9a9a9afafafajafafafafafajaf#La9a9a9bj.na9#D.n#Da9#s#D#p#p#p#p.n#pbl#p#p.n#pa9bl#Mblbl#UaY#U#x#Ub#aB.l.V.V.V.VaCbnaY.R#D#Mblbl#Mblblbla9#pa9#pafa9a9#pa9#p#pa9#pa9#pa9#pbl.n#D#pa9#pa9afafafafafafafafafa9#p.na9a9a9a9afafafa9#p#DaYaY.Rbn#x#Ubnbn#xaCa0aCbnaYaYblbla9",
-"#pa9#p#Dbl#Da9#Da9afa9bla9bl#DblaYaYbnaYaYaYaYaYblaYblaYblaYaYblaYaYaYaYaYaYaYaY.Rbn.R#xaY.RaYaYa9.7a9#Laf#L#L#Lafaf#Lafa9a9a9.nafafafaf#Laf#L#Laa#ga2#ga2a2#ga2aaasa2a2#La2a2#L#L#L.3#La9.7a9#DaYblaYblbla9a9ajaf#Laf#L#Lafajaf#Lafafaf#Laf#L#La2#L#L#L#L#L.7.7a9a9a9a9a9.na9a9.na9a9a9a9a9a9.na9a9.n#D#D#D#D#D#MblawawbnaC.F.t.Fb#.Vb#.Vbnaw#xaYaYaYaY.NaY#D#Da9#pa9a9#p.n#pa9.nbla9#pa9#pa9#pa9#p#p#pa9.na9afafafafafafafafafa9a9afa9af#pafafafafa9#p#Dblblaw#xbn#Ubn#x#IbnaCb#aCbnawaY#D.na9",
-"#pa9#pa9a9#Dbla9a9a9af#D#Da9#D#D#xbn#xbnaYaYblaYaYaYaYaYaYaYaYaYbnaYaYaYaYaYaYaY.R.R.RbnaYaYaYaY#D.7#Da9#La2#Lafajafafa9a9a9a9#Dafafafaf#La2#L#La2a2#ga2a2#gaaa2asaaa2a2a2a2a2a2a2#L#L#La9a9.7a9#D.saY#D.n#pafaf#Lafaj#L#Laf#L#Laf#L#L#L#L#Lafaja2a2a2a2#L.E#L#La9a9a9.7a9a9a9a9a9.7a9.na9a9a9a9.E#L.7.7#D#s#D#s#Fblbl#M#xbnbg.t.F.t.V.V.VaCa0aY#DaYaYaYaY.Nblbl.na9#p.na9a9#pa9#p#pa9#pa9#pa9#pa9#p#D#pa9#p#pa9afafafaf#Lafafa9af#pa9#pa9afa9afafaf#pa9a9#D#DaYbnbn#xbn#Ua0bna0bg.Va0aYblbl#pa9"
-};
diff --git a/tests/benchmarks/qimagereader/images/namedcolors.xpm b/tests/benchmarks/qimagereader/images/namedcolors.xpm
deleted file mode 100644
index f6485d5..0000000
--- a/tests/benchmarks/qimagereader/images/namedcolors.xpm
+++ /dev/null
@@ -1,18 +0,0 @@
-/* XPM */
-static char *xman[] = {
-/* width height ncolors chars_per_pixel */
-"8 8 3 1",
-/* colors */
-"e g4 black c pale turquoise 4",
-"f m white c light golden rod yellow g4 grey",
-"g g white c lemon chiffon m black",
-/* pixels */
-"eeeeeeee",
-"ffffffff",
-"gggggggg",
-"gggggggg",
-"gggggggg",
-"gggggggg",
-"gggggggg",
-"gggggggg"
-};
diff --git a/tests/benchmarks/qimagereader/images/negativeheight.bmp b/tests/benchmarks/qimagereader/images/negativeheight.bmp
deleted file mode 100644
index 875887a..0000000
Binary files a/tests/benchmarks/qimagereader/images/negativeheight.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/noclearcode.bmp b/tests/benchmarks/qimagereader/images/noclearcode.bmp
deleted file mode 100644
index 1a5ca9c..0000000
Binary files a/tests/benchmarks/qimagereader/images/noclearcode.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/noclearcode.gif b/tests/benchmarks/qimagereader/images/noclearcode.gif
deleted file mode 100644
index 27784d6..0000000
Binary files a/tests/benchmarks/qimagereader/images/noclearcode.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/nontransparent.xpm b/tests/benchmarks/qimagereader/images/nontransparent.xpm
deleted file mode 100644
index 00c21ef..0000000
--- a/tests/benchmarks/qimagereader/images/nontransparent.xpm
+++ /dev/null
@@ -1,788 +0,0 @@
-/* XPM */
-static char *dummy[]={
-"8 8 777 2",
-"#R c #000000",
-"fn c #000001",
-".e c #000069",
-".f c #00006d",
-".g c #00006e",
-"#d c #0042b4",
-"aJ c #010101",
-"g0 c #010102",
-"dr c #010202",
-"gd c #010203",
-"#J c #0157bb",
-"e. c #020202",
-"du c #020304",
-"fR c #030303",
-"jJ c #040404",
-"hf c #040608",
-"fE c #040609",
-"cO c #04070a",
-"k# c #050505",
-"gC c #050709",
-"ka c #060606",
-"br c #06080a",
-"dY c #06090d",
-"hI c #070707",
-"in c #07090b",
-"cL c #070a0e",
-"cd c #070b0f",
-"e0 c #080808",
-"gZ c #080b0e",
-"eu c #080b0f",
-"dz c #080c10",
-"hD c #090909",
-"fq c #090d11",
-"cH c #090e13",
-"jB c #0a0a0a",
-"#U c #0a0d0f",
-"a4 c #0a0d10",
-"g3 c #0a0d11",
-"fu c #0a0f14",
-"cj c #0a1016",
-"kb c #0b0b0b",
-"#n c #0b0d0f",
-"a1 c #0b0e10",
-"g8 c #0b0f13",
-"f4 c #0b0f14",
-"hE c #0c0c0c",
-"bf c #0c0f12",
-".X c #0c28a0",
-"bT c #0d0d0d",
-"ax c #0d1014",
-"hr c #0d1217",
-"dH c #0d141b",
-"jy c #0e0e0e",
-"aW c #0e1115",
-"eH c #0e141b",
-"bE c #0f0f0f",
-"ar c #0f1317",
-"g5 c #0f1419",
-"hg c #0f151a",
-"fh c #0f151c",
-"dJ c #0f171f",
-"gI c #101010",
-".z c #101094",
-"h. c #10161b",
-"gm c #10161c",
-"eL c #10171f",
-"hK c #111111",
-"at c #11161b",
-"fC c #111820",
-"dA c #111922",
-"aj c #1163c4",
-"bJ c #121212",
-"#Z c #12161a",
-"ba c #12171c",
-"ho c #12181e",
-"jK c #131313",
-"iq c #13191d",
-"cA c #131e2a",
-"c7 c #141414",
-"dR c #141e29",
-"jr c #151515",
-"aA c #151a1f",
-"hq c #151c23",
-"fl c #151e28",
-"eV c #151e29",
-"d4 c #161616",
-"hw c #161e25",
-"jk c #171717",
-"bs c #171d23",
-"g9 c #171f27",
-"eC c #17212b",
-"b9 c #172432",
-"d5 c #181818",
-"as c #181e24",
-"bn c #181f25",
-"bS c #191919",
-"gr c #19232d",
-"ed c #1a1a1a",
-".d c #1a1a6e",
-"gB c #1a242e",
-"eK c #1a2531",
-"dQ c #1a2633",
-"hL c #1b1b1b",
-"g1 c #1b242d",
-"g# c #1b252f",
-"eJ c #1b2734",
-"d1 c #1b2937",
-"bW c #1c1c1c",
-"gW c #1c262f",
-"ci c #1c2b3b",
-"cs c #1c2c3c",
-"e# c #1d1d1d",
-"#3 c #1d232a",
-"f8 c #1d2833",
-"fI c #1d2936",
-"eO c #1d2a38",
-"cw c #1d2e3f",
-"jR c #1e1e1e",
-"a2 c #1e262e",
-"eP c #1e2b39",
-"dE c #1e2d3d",
-"cF c #1e2f41",
-"aO c #1e6ec9",
-"c4 c #1f1f1f",
-"gx c #1f2a36",
-"c# c #1f3043",
-"j2 c #202020",
-"bk c #202931",
-"ht c #202c36",
-"eF c #202f3e",
-"b7 c #203245",
-"cB c #203246",
-"hG c #212121",
-"aE c #212932",
-"bp c #212a32",
-"hl c #212d38",
-"cc c #213347",
-".M c #214eb7",
-"hF c #222222",
-"#7 c #222a32",
-"fw c #223040",
-"eU c #223141",
-"jC c #232323",
-"bb c #232c35",
-"ga c #23303d",
-"cv c #23364a",
-"cn c #23364b",
-"jl c #242424",
-"gj c #243240",
-"cm c #24374c",
-"c. c #24384d",
-"bF c #252525",
-"be c #252f39",
-"gt c #253341",
-"dU c #253649",
-".Y c #256cc9",
-"jG c #262626",
-"h8 c #26333d",
-"hb c #263440",
-"gs c #263443",
-"cr c #263b51",
-"cW c #272727",
-"aC c #27313b",
-"a9 c #27313c",
-"fk c #273748",
-"eR c #27384b",
-"cq c #273d55",
-"jV c #282828",
-"#5 c #28313b",
-"b0 c #2877ce",
-"gL c #292929",
-"#Y c #29323c",
-"hu c #293744",
-"fK c #293a4d",
-"jP c #2a2a2a",
-"#w c #2a323b",
-"bg c #2a3540",
-"dF c #2a3f55",
-"jn c #2b2b2b",
-"a6 c #2b3641",
-"jY c #2c2c2c",
-"h5 c #2c3b47",
-"hp c #2c3c4a",
-"gp c #2c3c4d",
-"cx c #2c445e",
-"bU c #2d2d2d",
-"h# c #2d3e4c",
-"dS c #2d435b",
-"e5 c #2e2e2e",
-"cG c #2e4762",
-"jF c #2f2f2f",
-"aG c #2f3b48",
-"gU c #2f3f4e",
-"ck c #2f4966",
-"j0 c #303030",
-"a0 c #303d4a",
-"he c #304251",
-"cQ c #307ace",
-"e4 c #313131",
-"ew c #31465d",
-"dW c #314862",
-"ce c #314b68",
-"jm c #323232",
-"bm c #323f4d",
-"k. c #333333",
-"e3 c #343434",
-"hi c #344757",
-"eT c #344b64",
-"b8 c #34506f",
-"dj c #347fd1",
-"bX c #353535",
-"f9 c #35485c",
-"ac c #363636",
-"#V c #36434f",
-"fv c #364c64",
-"dV c #36506d",
-"c2 c #373737",
-"ev c #37506a",
-"bI c #383838",
-"bw c #384655",
-"h4 c #384b5a",
-"hk c #384c5d",
-"ea c #393939",
-"bh c #394857",
-"gX c #394d5f",
-"#e c #3981d2",
-"e6 c #3a3a3a",
-"eS c #3a546f",
-"em c #3a81d2",
-"#F c #3b3b3b",
-"eQ c #3b5571",
-"dT c #3b5776",
-"cI c #3b5c7f",
-"gJ c #3c3c3c",
-"hX c #3c5060",
-"fi c #3c546f",
-"gG c #3d3d3d",
-"jv c #3e3e3e",
-"az c #3e4e5e",
-"fL c #3e5772",
-"bK c #3f3f3f",
-"gD c #3f576f",
-"fJ c #3f5874",
-"d2 c #3f86d5",
-"jx c #404040",
-"#8 c #404e5d",
-"bv c #405161",
-"cf c #406389",
-"jL c #414141",
-"iG c #415561",
-"im c #415663",
-"gz c #415971",
-"et c #415d7c",
-"cz c #41658c",
-"f# c #418ad7",
-"jT c #424242",
-"gy c #425b74",
-"fs c #425d7a",
-"#K c #4288d4",
-"jQ c #434343",
-"eX c #438cda",
-"j8 c #444444",
-".L c #44449a",
-"eZ c #454545",
-"#s c #455362",
-"fx c #45617f",
-"cK c #456b94",
-"aP c #458cd5",
-"ab c #464646",
-".n c #46469f",
-"aH c #46586a",
-"gV c #465f74",
-"d0 c #46678c",
-"c9 c #474747",
-"aF c #47596c",
-"a3 c #475a6d",
-"ex c #476687",
-"jU c #484848",
-"by c #485b6e",
-"gq c #48627d",
-"dI c #486b91",
-"cC c #48709b",
-"js c #494949",
-"#2 c #495a6b",
-"ih c #49606f",
-"hm c #49637a",
-"gk c #49647f",
-"j7 c #4a4a4a",
-"dt c #4a6e94",
-"ak c #4a8dd7",
-"b1 c #4a90db",
-"c1 c #4b4b4b",
-"bx c #4b5f72",
-"fr c #4b698a",
-"dG c #4b6e95",
-"co c #4b75a2",
-"fW c #4b91db",
-"bD c #4c4c4c",
-"hc c #4c687f",
-"j6 c #4d4d4d",
-"#Q c #4d5f71",
-"ik c #4d6676",
-"hH c #4e4e4e",
-"#0 c #4e5f72",
-"aD c #4e6277",
-"b. c #4e6377",
-"gN c #4e91dc",
-"c0 c #4f4f4f",
-"bj c #4f6378",
-"dZ c #4f759e",
-"cD c #4f7aa9",
-"hN c #4f8dcd",
-"kd c #505050",
-"#S c #506275",
-"#6 c #506376",
-"ge c #506e8c",
-"af c #515151",
-"b# c #51667b",
-"dk c #5195df",
-"cT c #525252",
-".c c #525280",
-"bq c #52677d",
-"iH c #526b79",
-"fj c #527397",
-"eW c #52769d",
-"dy c #527aa5",
-"hJ c #535353",
-"#x c #536476",
-"eG c #53789f",
-"jM c #545454",
-"#r c #546577",
-"bz c #546a80",
-"dM c #547ca8",
-"fP c #5499e2",
-"jp c #555555",
-"iK c #556f7e",
-"bM c #565656",
-"fB c #56799f",
-"dC c #567fab",
-"gE c #569be2",
-"cU c #575757",
-"h7 c #57748b",
-"gc c #577797",
-"fN c #577ba1",
-"dx c #5780ad",
-"cg c #5787bb",
-"i4 c #585858",
-"iF c #587483",
-"hy c #587792",
-"g2 c #587893",
-"fy c #587ca3",
-"eA c #587ea7",
-"jW c #595959",
-"bu c #597087",
-"ia c #5984b2",
-"ae c #5a5a5a",
-"#t c #5a6c7f",
-"bd c #5a7189",
-"ij c #5a7789",
-"eI c #5a81ab",
-"bR c #5b5b5b",
-"ch c #5b8dc3",
-"en c #5b9be1",
-"ke c #5c5c5c",
-"cP c #5c8fc5",
-"j5 c #5d5d5d",
-"iN c #5d7fa0",
-"gl c #5d80a3",
-"fp c #5d83ac",
-"cl c #5d8fc6",
-"b2 c #5d9de6",
-"c8 c #5e5e5e",
-"hh c #5e7f9c",
-"hn c #5e809d",
-"i3 c #5f5f5f",
-"#1 c #5f758c",
-"a8 c #5f7890",
-"g7 c #5f819e",
-"cJ c #5f93cc",
-"jz c #606060",
-"ct c #6094cd",
-"bO c #616161",
-"eN c #618cb9",
-"jH c #626262",
-"iW c #627c8d",
-"hd c #6285a3",
-"ey c #628dbb",
-"dO c #6290c4",
-"ca c #6297d1",
-"jI c #636363",
-"eM c #638fbd",
-"jN c #646464",
-"fH c #648db9",
-"eE c #648fbe",
-"cb c #649ad5",
-"hA c #64a8e2",
-"jw c #656565",
-"#k c #65798f",
-"fF c #658eba",
-"fA c #658fbb",
-"fa c #65a4e7",
-"b3 c #65a6e8",
-"jX c #666666",
-"hW c #6688a3",
-"gh c #668cb2",
-"aI c #6696cb",
-"dN c #6697cc",
-"bA c #6699ce",
-"cu c #669edb",
-"#C c #676767",
-"f3 c #678db4",
-"dl c #67a6eb",
-"kc c #686868",
-"cS c #696969",
-"dK c #699bd2",
-"cN c #69a2e0",
-"cy c #69a3e1",
-"fX c #69a6e8",
-"jD c #6a6a6a",
-"av c #6a84a1",
-"ds c #6a9cd3",
-"dL c #6a9cd4",
-"jt c #6b6b6b",
-"fo c #6b97c6",
-"cE c #6ba5e4",
-"jS c #6c6c6c",
-"aV c #6c88a4",
-"ir c #6c8ea4",
-"il c #6c8fa5",
-"eD c #6c9bce",
-"dB c #6c9ed7",
-"dq c #6c9fd8",
-"cM c #6ca7e7",
-"cp c #6ca8e8",
-"eo c #6cabed",
-"i2 c #6d6d6d",
-"#T c #6d869f",
-"#W c #6d87a0",
-"gY c #6d94b5",
-"aa c #6d9bcb",
-"eB c #6d9dd0",
-"dw c #6da0d9",
-"dD c #6da1da",
-"b4 c #6dacee",
-"h9 c #6dafe2",
-"i6 c #6e6e6e",
-"bt c #6e8aa7",
-"fM c #6e9bcb",
-"dP c #6ea3dc",
-"b5 c #6eabee",
-"jd c #707070",
-"ix c #7088a2",
-"hx c #7098ba",
-"f7 c #7099c3",
-"dv c #70a5df",
-"b6 c #70adef",
-"iy c #70aff1",
-"dm c #70aff2",
-"jE c #717171",
-"#m c #7188a0",
-"#u c #7189a1",
-"aY c #718eac",
-"gO c #71aced",
-"jq c #727272",
-"gb c #729cc6",
-"hO c #72afee",
-"ib c #72afef",
-"e7 c #737373",
-"#y c #738ba4",
-"#A c #739eca",
-".j c #747474",
-"#9 c #748fab",
-"hs c #749ec1",
-"f6 c #749fca",
-".i c #757575",
-"#q c #758da6",
-"a5 c #7593b1",
-"bo c #7594b2",
-"ii c #759bb3",
-"fb c #75b3f4",
-"ep c #75b4f3",
-"is c #75b8e2",
-"ag c #767676",
-"fz c #76a6da",
-"ez c #76a9e0",
-"dX c #76adeb",
-".h c #777777",
-".m c #777794",
-"iX c #77a6b3",
-"dn c #77b1f4",
-"gK c #787878",
-"#4 c #7894b0",
-"fG c #78a9dd",
-"j# c #797979",
-"bV c #7a7a7a",
-"do c #7ab4f4",
-"jA c #7b7b7b",
-"io c #7ba3bc",
-"dp c #7bb5f5",
-".k c #7c7c7c",
-"bc c #7c9cbd",
-"gi c #7caad8",
-"aQ c #7cb0e7",
-"fY c #7cb8f9",
-"iM c #7cbee2",
-"j1 c #7d7d7d",
-"aX c #7d9ebf",
-"fm c #7db0e7",
-"j4 c #7e7e7e",
-".8 c #7ea5ce",
-"#D c #7f7f7f",
-"hv c #7facd3",
-"gn c #7faedd",
-"eb c #808080",
-"er c #80bdf9",
-"j3 c #818181",
-"hz c #81afd6",
-"gu c #81b0e0",
-"eq c #81bbf9",
-"fc c #81bbfc",
-"#b c #828282",
-"iE c #82aac0",
-"i5 c #838383",
-"ha c #83b1d9",
-"es c #83bcf9",
-"ad c #848484",
-"go c #84b5e6",
-".v c #858585",
-"#p c #85a0bc",
-"bN c #868686",
-"hZ c #86b3d6",
-"fD c #86bcf6",
-"fO c #86bcf7",
-"gP c #86c1ff",
-"di c #878787",
-"ft c #87bdf8",
-"bH c #888888",
-"iT c #88cfe2",
-"jZ c #898989",
-"#z c #89a5c3",
-"g. c #89bbee",
-"fg c #89c0fc",
-"fd c #89c2fd",
-"hP c #89c3ff",
-"jb c #8a8a8a",
-"#o c #8aa6c4",
-"jc c #8b8b8b",
-".S c #8baccf",
-"iI c #8bb6ce",
-"al c #8bb9e8",
-"hj c #8bbde7",
-"gw c #8bbef2",
-"ff c #8bc3ff",
-"fe c #8bc4ff",
-"fZ c #8bc6ff",
-"ec c #8c8c8c",
-"gv c #8cbff3",
-"jO c #8d8d8d",
-"a# c #8dadce",
-"ic c #8dc7ff",
-"#H c #8e8e8e",
-"a. c #8eaed0",
-"#L c #8ebae8",
-"hY c #8ebee3",
-"g4 c #8ec1ec",
-"iO c #8ecbff",
-"ju c #8f8f8f",
-"bi c #8fb5da",
-"h6 c #8fc0e5",
-"f5 c #8fc4f9",
-"jf c #909090",
-"bl c #90b6dc",
-"i1 c #90dfe2",
-"bC c #919191",
-"aB c #91b5dc",
-"aZ c #91b7dd",
-"hV c #91c2e8",
-"gf c #91c6fc",
-"gg c #91c7fd",
-"f0 c #91c8ff",
-"i7 c #929292",
-"gA c #92c8fe",
-"iz c #92ccff",
-"iU c #939393",
-"a7 c #93b9e0",
-"f2 c #93c9ff",
-"gQ c #93ccff",
-"e8 c #949494",
-".y c #9494b0",
-"h1 c #94c6ec",
-"f1 c #94caff",
-"j9 c #959595",
-"#X c #95b7da",
-"cX c #969696",
-"ay c #96bbe3",
-"#f c #96bde8",
-"aR c #96c3ee",
-"gR c #96cfff",
-".J c #979797",
-"hQ c #97cfff",
-"fT c #989898",
-"#j c #98b6d7",
-"#l c #98b7d8",
-"iJ c #98c7e1",
-"g6 c #98cffd",
-"jj c #999999",
-"aS c #99c4ee",
-"h3 c #99ccf4",
-"gS c #99d0ff",
-".l c #9a9a9a",
-".b c #9a9aa4",
-"aw c #9ac1ea",
-"gT c #9ad1ff",
-"dg c #9b9b9b",
-".N c #9bbee8",
-"aq c #9bc1eb",
-"am c #9bc4ee",
-"eg c #9c9c9c",
-"au c #9cc3ed",
-"ao c #9cc5ee",
-"c5 c #9d9d9d",
-"aT c #9dc7ef",
-"hU c #9dd2fb",
-"hR c #9dd3ff",
-"dh c #9e9e9e",
-"#v c #9ebee0",
-".Z c #9ec3e8",
-"#M c #9ec3ed",
-"#N c #9ec5ed",
-"ap c #9ec5ef",
-"aU c #9ec7f0",
-"h2 c #9ed4fd",
-"id c #9ed6ff",
-"df c #9f9f9f",
-"an c #9fc5ee",
-"h0 c #9fd5fe",
-"aM c #a0a0a0",
-"hT c #a0d6ff",
-"jh c #a1a1a1",
-"hS c #a1d7ff",
-"ji c #a2a2a2",
-"#P c #a2c7ed",
-"i8 c #a3a3a3",
-"#O c #a3c8ed",
-"iA c #a3daff",
-"j. c #a4a4a4",
-"je c #a5a5a5",
-"#g c #a5c8ed",
-"ip c #a5dafb",
-"iv c #a6a6a6",
-".F c #a6bed4",
-"de c #a7a7a7",
-"#h c #a7c9ed",
-"if c #a7ddff",
-"ie c #a7deff",
-"eh c #a8a8a8",
-"#i c #a8caee",
-"iL c #a8dbf8",
-"ig c #a8deff",
-"iP c #a8e0ff",
-"iY c #a8e2e6",
-"hC c #a9a9a9",
-".0 c #a9caed",
-"#B c #aaaaaa",
-"fU c #ababab",
-".5 c #abc9e9",
-"iB c #abe3ff",
-"e2 c #acacac",
-".6 c #accaea",
-"jo c #adadad",
-".1 c #adcbed",
-".7 c #adccec",
-"iD c #ade2ff",
-"iC c #ade3ff",
-"fS c #aeaeae",
-".4 c #aecded",
-"db c #afafaf",
-".A c #afbbe7",
-".2 c #afccee",
-".3 c #afceee",
-"d6 c #b0b0b0",
-"iQ c #b0e9ff",
-"bG c #b1b1b1",
-"jg c #b2b2b2",
-"#E c #b3b3b3",
-".O c #b3d1ed",
-"gF c #b4b4b4",
-"cY c #b5b5b5",
-"iR c #b5ebff",
-"hM c #b6b6b6",
-"iS c #b6ecff",
-"d9 c #b7b7b7",
-".U c #b8b8b8",
-".u c #b9b9b9",
-"dd c #bababa",
-".P c #bad4ee",
-"bL c #bbbbbb",
-".Q c #bbd4ef",
-".R c #bbd5f0",
-"e9 c #bcbcbc",
-"c3 c #bdbdbd",
-"f. c #bebebe",
-"d8 c #bfbfbf",
-".o c #bfc2e8",
-"iZ c #bffdff",
-"iw c #c0c0c0",
-"iV c #c1c1c1",
-"i0 c #c1feff",
-"ei c #c2c2c2",
-"ej c #c3c3c3",
-"#a c #c4c4c4",
-"el c #c5c5c5",
-"d7 c #c6c6c6",
-".r c #c6cbda",
-"ek c #c7c7c7",
-"aN c #c8c8c8",
-"#G c #c9c9c9",
-"aL c #cacaca",
-"ai c #cbcbcb",
-".B c #cbddf2",
-"bZ c #cccccc",
-".C c #cce0f3",
-"dc c #cdcdcd",
-"ah c #cecece",
-"da c #cfcfcf",
-".E c #cfe1f3",
-".D c #cfe1f4",
-"#I c #d0d0d0",
-"cV c #d1d1d1",
-"fQ c #d2d2d2",
-"bB c #d3d3d3",
-"#c c #d4d4d4",
-"d# c #d5d5d5",
-"aK c #d6d6d6",
-"cZ c #d7d7d7",
-"c6 c #d8d8d8",
-"gH c #d9d9d9",
-".W c #dadada",
-"gM c #dbdbdb",
-"bQ c #dcdcdc",
-"e1 c #dddddd",
-"cR c #dedede",
-"d. c #dfdfdf",
-"bP c #e0e0e0",
-"i# c #e1e1e1",
-"bY c #e2e2e2",
-".K c #e3e3e3",
-"ee c #e4e4e4",
-"d3 c #e5e5e5",
-"ef c #e6e6e6",
-".p c #e6e9f6",
-"fV c #e7e7e7",
-"eY c #e8e8e8",
-".a c #e9e9e9",
-".q c #e9edf8",
-".V c #eaeaea",
-"## c #ebebeb",
-"Qt c #ececec",
-".w c #ededed",
-".x c #eeeeee",
-"#. c #efefef",
-".# c #f0f0f0",
-".9 c #f1f1f1",
-".I c #f2f2f2",
-".T c #f3f3f3",
-"ja c #f4f4f4",
-"i9 c #f5f5f5",
-"hB c #f6f6f6",
-".H c #f7f7f7",
-".G c #f8f8f8",
-"i. c #f9f9f9",
-"kg c #fafafa",
-"kf c #fbfbfb",
-".t c #fcfcfc",
-".s c #fdfdfd",
-"it c #fefefe",
-"iu c #ffffff",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt"};
diff --git a/tests/benchmarks/qimagereader/images/pngwithcompressedtext.png b/tests/benchmarks/qimagereader/images/pngwithcompressedtext.png
deleted file mode 100644
index 01b2270..0000000
Binary files a/tests/benchmarks/qimagereader/images/pngwithcompressedtext.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/pngwithtext.png b/tests/benchmarks/qimagereader/images/pngwithtext.png
deleted file mode 100644
index 5d93799..0000000
Binary files a/tests/benchmarks/qimagereader/images/pngwithtext.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_adobedeflate_littleendian.tif b/tests/benchmarks/qimagereader/images/rgba_adobedeflate_littleendian.tif
deleted file mode 100644
index 78868b0..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_adobedeflate_littleendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_lzw_littleendian.tif b/tests/benchmarks/qimagereader/images/rgba_lzw_littleendian.tif
deleted file mode 100644
index 107eab7..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_lzw_littleendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_nocompression_bigendian.tif b/tests/benchmarks/qimagereader/images/rgba_nocompression_bigendian.tif
deleted file mode 100644
index c314bae..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_nocompression_bigendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_nocompression_littleendian.tif b/tests/benchmarks/qimagereader/images/rgba_nocompression_littleendian.tif
deleted file mode 100644
index 4f820f6..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_nocompression_littleendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_packbits_littleendian.tif b/tests/benchmarks/qimagereader/images/rgba_packbits_littleendian.tif
deleted file mode 100644
index ddeec38..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_packbits_littleendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/rgba_zipdeflate_littleendian.tif b/tests/benchmarks/qimagereader/images/rgba_zipdeflate_littleendian.tif
deleted file mode 100644
index 50a3024..0000000
Binary files a/tests/benchmarks/qimagereader/images/rgba_zipdeflate_littleendian.tif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/runners.ppm b/tests/benchmarks/qimagereader/images/runners.ppm
deleted file mode 100644
index fda1c97..0000000
Binary files a/tests/benchmarks/qimagereader/images/runners.ppm and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/task210380.jpg b/tests/benchmarks/qimagereader/images/task210380.jpg
deleted file mode 100644
index fd045ea..0000000
Binary files a/tests/benchmarks/qimagereader/images/task210380.jpg and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/teapot.ppm b/tests/benchmarks/qimagereader/images/teapot.ppm
deleted file mode 100644
index b8ab85f..0000000
--- a/tests/benchmarks/qimagereader/images/teapot.ppm
+++ /dev/null
@@ -1,31 +0,0 @@
-P6
-256 256
-255
-\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[7 eOLjQLmSMoTMnSMlRMhPL_9 \�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�nSMtVMzYN~[N~[N\N\O�\O�]O�]O�]O�]O�\O�\O}[NyYNtVM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�G-wXN}[N�]O�^O�_O�`O�`O�`O�`O�aO�aO�aO�aO�aO�aO�aO�aO�`O�_O�^O\N\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�aMLyYN�_O�aP�bP�cP�cP�dP�dP�dP�dP�dP�dP�dP�dP�dP�eP�eP�eP�eP�eP�dP�cP�_OpUM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�wXN�_O�dP�fP�gQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�fP�`O\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJiQL�bP�hQ�kQ�mR�nR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pS�qS�qS�rS�rS�rS�qS�oR�jQ�]O\KK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�fOLrUM�cP�lR�qS�tS�uT�wT�xT�xT�yT�yT�zT�zU�zU�zU�zU�zU�yT�xT�wT�tS�mR�aOhPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�a0	cNLqUM�\O�fQ�pS�wV�zV�|V�}V�V�VǀVɂW̅[Տe�w���ꪅĈg�qT�fQ{ZNYIK9\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�O1{G#�JkRMqUMtVN�iS�v\��d��b�zZ�vU�uT�sS�qS�nR�jQ�eP�^OrUM�Hh>!T4\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�G-V5wE"~I#�M%�U+�e7�l:�g2�b*�a(�`(�^(�])�^-�]1�S,qC$`9 R3G-\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@)J/i>!pA"tD"wF$yH&xH&tE$wE#yG%}M+�T4S5mE*Z7!K/B*;'\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��aO�oR�{UǀVυX<(F-a: e<!h>!j@#k@$h>"d<!c=$hD-fF2[<)K0@);'5$˂VǀV�|U_LKYIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��_O�xTɂW����֒k�|X�>�f-�^(�Z'�W&�T&�N>)F-J/b; g>#nD(jB&c<!b=%jH2_A/I0!<(8&5$�J�Y�S%8&;'?)E,<:HA=HE?IJAISFJYIKXIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��nR�}Uܘqʊe�vU�e,�V&�V�C
�@|>y<u:r9o7l6
-j5
-h4
-g3
-5$D,K/b; h>"wM1tK.e="a<#cA,U8&E-<(9&.!a0	b1	c1				
-
-+3#@)46G<:HMCIXHK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�U*�vT�~X�{Y�k+�W&�N$|>u:p8k5
-f3
-a0	_/	].	[-	�I�\*�_(�LkRMmSMmSMnSMnSMD,R3W5mA"|O0|P1j?"c<!a=%Y7"N1F,;'NCJNCJNDJODJODJODJh>!a: X/K%���������&4$+2F=;HPEJL&\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��lR�xT�sT�d)�O$w;m6
-g3
-a0	Z-	\/T*Q(�H�m8kRMmSMnTMoTMpTMpUM15G15G05G04G04GpUMpTM5^9 d<!yF#�O+�N,rC#qB"pB#k?"a: Z7 6ODJPDJPEJQEJQEJREJREJREJRFJSFJSFJSFJSFJe<!X/����������������- '0F�qS�gQ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fP�tS�mR�R%�Bf3
-^/	V+Q(L&I$r9�TlRMnSM46G47G47G46G46G46G46G46G36G36G25G25G15G04G/4F.3F���oA"�N$�O%�S)�R)�T&�T%�R%�O$�J#xE#�PDJQEJREJRFJSFJTFJTFJTGJUGJUGJUGJUGJVGJVGJVGJVGJVGJVGJY6N'����������������t;�O$�dP�oR�dP\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��pS�kQ�S%x=[-	R)I$E"@ ����M�]'pTM68G78G78G78G78G78G78G78G78G68G67G67G57G57G47G36G36G25Gp98eOLpUMtVMn7�f+�i,�i*�i*�h*�B
�`O~[NqUM[-	�HUGJUGJVGJVGJVHJWHJWHJWHKWHKXHKXHKXHKXHKXHKXIKXIKXIKXIKXIKh>!Y0�����������W+].	s=�M$�dP�lR\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�oTM�oR�dPvE"V+K%A 99����F�['qUMtVM99H:9H:9H:9H:9H:9H:9H:9H:9H:9H99H99H99H99H99H99H:9H;:H>;HB=HPDJ\JKmSMwXN|ZN�y[ᦆ֘u�{W�yU��]��b�tU�nR�hQ�aO{ZNvWNtVMvXNwXNyYNzYN{ZN|ZN}[N}[N~[N~[N~[N~[N~[N~[N~[N}[N}[N{ZNzYNxXN�L$f3
-���I$L&P(U*\.	�J#\O�jQ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��kR�aOo9
L&C!:4���f3
-�X&pUMuWMwXNxXN<:H<:H<:H<:H<;H<;H<;H<;H=;H=;H=;H=;H>;H>;H?<H@<HA=HC>HG@ILBIREJ[JKcNLjQL�pR�uT�zU�~VȁW˂X֎c�sҎe�{V�vT�pS�kR�gQ�bP�_O�^O�]O�\O�\O�\O�\O�]O�]O�]O�]O�]O�]O�]O�]O�]O�]O�]O�\O�\O~\N}[N|ZNxXN�T%H$���G#K%Q(W+zG#nTM�iQ\�\�\�\�\�\�\�\�\�\�\�\�dOLrUMuWNwXNyYN{ZN}[N{ZNwXNsVM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��`O�cPnA"M&@ 8F#���m6
-�W&rVMvWNyYNzYN|ZN}[N}[N><H?<H?<H?<H?<H?<H@<H@<H@<HA=HA=HB=HC>HE?IG@IIAIKBIODJSFJWHK�hQ�lR�pR�b(�i*�n+�|7�|6�r,�q+�p-�l+�g)�b(�sS�pS�lR�iQ�gQ�eP�cP�aP�aO�`O�`O�_O�_O�_O�_O�_O�_O�_O�_O�_O�_O�^O�^O�^O�^O�]O�]O�\O~[N{ZN�T%���F#B!Y,L&U*~I#�^O�`O\�\�\�\�cNLrUMzYN\O�^O�`O�bP�cP�dP�eP�fP�fP�fQ�fQ�fQ�eP�cP�aP~[N�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fPsVM^/	C!7
�������Q%tVMwXNzYN|ZN}[N\N\O�\O�]O�]O�]O�]OA=HB=HB=HB>HC>HC>ID?IE?IF@IG@IIAIKBI�cP�dP�eP�gQ�iQ�lR�nR�\'�d)�i*�m+�s/�s/�o+�n+�l*�i*�g)�c(�_(�qS�oR�mR�kQ�iQ�gQ�fP�eP�dP�cP�bP�bP�bP�aP�aP�aO�aO�aO�`O�`O�`O�`O�`O�`O�_O�_O�^O�^O�]O\O}[N�Q��D"?D"K%_/	kRL�fPODJSFJ�_O�bP�cP�eP�fQ�gQ�iQ�jQ�kR�lR�mR�nR�nR�oR�oR�oR�nR�mR�lR�iQ�eP�_O\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�B+�ePI#L&90���y<�PxXN{ZN}[N\N�\O�]O�]O�^O�^O�^O�_O�_O�_O�_O�`O�`O�`O�`O�aO�aP�bP�bP�cP�dP�eP�fP�gQ�hQ�iQ�kR�mR�Z'�_(�e)�h)�k*�n,�n,�m*�l*�j*�f)�e)�c(�_(�]'�pR�nR�mR�kR�jQ�iQ�gQ�gQ�fP�eP�dP�dP�dP�cP�cP�cP�bP�bP�bP�bP�bP�aP�aP�aO�aO�`O�`O�_O�_O�^O�]O�_(�@���B!I$B!N'w=�eP`LKbNLeOL�kR�mR�nR�oR�pS�qS�rS�sS�tS�tS�tS�uS�uS�tS�tS�sS�rS�pS�mR�jQ�bPjQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��bPpTME"5����������M$tVM{ZN}[N\O�]O�^O�^O�_O�_O�_O�`O�`O�`O�`O�aO�aP�aP�bP�bP�bP�cP�cP�dP�dP�eP�fP�gQ�hQ�iQ�jQ�kR�lR�mR�Z'�`(�d)�g)�g�j*�j*�i*�i*�g)�d)�c(�a(�_(�\'�pR�oR�nR�mR�kR�jQ�iQ�iQ�hQ�gQ�gQ�fP�eP�eP�eP�dP�dP�dP�cP�cP�cP�cP�cP�bP�bP�bP�bP�aP�aO�`O�_O�^O\N�Q����@ <G#_LK�cPlSMnTMpUMsVM�tS�uT�vT�wT�wT�xT�xT�wT�wT�vT�uT�tS�sS�qS�pS�oR�nR�kR�hQ�bPeOL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�wXN\NJ%0������1�JvWN}[N\O�]O�^O�_O�_O�`O�`O�`O�aO�aP�aP�bP�bP�bP�bP�cP�cP�dP�dP�dP�eP�eP�fQ�gQ�gQ�hQ�iQ�jQ�kQ�lR�mR�Y&�]'�`(�c(�e)�c�\�\�\�]�]�^�a(�`(�^'�['�['�oR�nR�mR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�eP�eP�dP�dP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�]O�O������G#7F#uWM�^OwXNxXNzYN{ZN|ZN�yT�yT�xT�wT�uT�sS�pS�mR�jQ�gQ�dP�bP�aP�aP�bP�cP�eP�cP|ZN\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[JK�bP^/	101|>wXN}[N�]O�^O�_O�`O�`O�aO�aP�aP�bP�bP�bP�cP�cP�cP�cP�dP�dP�dP�eP�eP�fP�fQ�gQ�gQ�hQ�hQ�iQ�jQ�kQ�kR�lR�mR�Y&�]'�`(�b(�[�g�i�h�f�d�e�c�U�_(�]'�['�Z'�nR�nR�mR�mR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�gQ�fQ�fQ�fP�fP�eP�eP�eP�eP�eP�dP�dP�dP�cP�cP�bP�bP�`O�^O�D
�����4M&�dPnSM|[N|[O|[OzZOxXN�rS�nR�hQ�cP�^OvXNiQL^KKRFJMCJJAIKBISFJ\JKnSMxYN�_O�\OaMK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�B!qUM�aPC!/00a0	uWN}[N�]O�_O�`O�`O�aP�aP�bP�bP�cP�cP�cP�cP�dP�dP�dP�eP�eP�eP�fP�fQ�fQ�gQ�gQ�hQ�hQ�iQ�iQ�jQ�jQ�kR�lR�lR�X&�['�^'�`(�Z�d�f�i�g�d�c�c�a�_�T�\'�['�Z'�Y&�nR�mR�mR�lR�lR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�fP�eP�eP�eP�dP�dP�cP�bP�aO�^Ox<�������:�aP�]Oj8sVMmSMfOL^KKUGJIAIQEJ?<H*1F(
-
-	
-@%<-$G?@�pfdNLuWM\NdNL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�TFJvWN�aP./01�E}[N�]O�_O�`O�aP�bP�bP�cP�cP�cP�dP�dP�dP�eP�eP�eP�eP�fP�fQ�fQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�jQ�jQ�kQ�kR�lR�lR�Y&�\'�^'�^�b�c�e�i �g�c�b�a�`�^�]�X�['�Z'�Y&�mR�mR�mR�lR�lR�lR�kR�kQ�kQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�eP�eP�dP�cP�aP�O�������������`O�`OoTMQEJC>IeZY638* B\�\�\�\�\�,4	.G1!\TU��rsVM{ZN`MK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�[JKyYN�bP/0�������N$�]O�_O�`O�bP�bP�cP�cP�dP�dP�dP�eP�eP�eP�fP�fP�fQ�fQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�jQ�jQ�kQ�kR�kR�lR�O�Z'�\'�^'�V�a�b�e�i!�f�b�a�`�_�]�\�Z�['�Z'�Y&�Q�mR�mR�mR�lR�lR�lR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fP�dP�cP�W&�������������dP�aPrUM
- B\�\�\�\�\�\�\�\�\�\�%7!!C*F#P){dY�ze��p�\OgPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ`LKvWN�aPm6
-���X,uWM�]O�`O�bP�cP�dP�dP�dP�eP�eP�fP�fP�fQ�fQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�kQ�kQ�kR�lR�lR�Z'�\'�]'�_�`�a�b�e�i"�e�a�`�_�_�]�\�\�Y�Z'�Z'�Z'�mR�mR�mR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�fQ�dP�_Oq8����������gQ�`OuWM�T%\�\�\�\�\�\�\�\�\�\� B B!!T,c5�F�T3ț~Ɠq�^OfOL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XHK_LKsVM�`O�cP������	�S%�]O�bP�cP�dP�eP�eP�fP�fQ�fQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�kQ�kR�kR�lR�lR�lR�\'�]'�^'�V�`�a�b�f�i"�e�a�`�_�_�]�\�\�R�Z'�Z'�['�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�gQ�eP�Sq8�������aO�gQ�`OtVM�X&\�\�\�\�\�\�\�\�\�\� B B Bl@!{A�L$�Y'��a�fP�aO]KK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�ODJ[JKaMKqUM\O�cP�^O������vE"�]O�aP�dP�eP�fP�fQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�^'�^'�_(�W�a�a�c�g �i"�e�a�`�_�_�^�\�\�R�['�['�]'�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kR�kR�kR�kR�kQ�kQ�kQ�jQ�jQ�iQ�hQ�eP�W&M&���oTM�iQ�eP�_OtVMmSMdOL\�\�\�\�\�\�\�\�\� B B B�J�Z'�_(�kQ�iQ�`OSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�TFJ\JKcNLlRMzYN�`O�ePzZN���	�\N�`O�dP�fQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�lR�lR�mR�a(�`(�`(�[�a�b�d�h!�i"�d�a�`�_�_�^�]�]�S�\'�]'�_(�nR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kQ�iQ�ePt:�������kQ�hQ�cP�]OtVMlSMa2
\�\�\�\�\�\�\�\�\� B B
-$5 �`(�e)�nR�jQ�^OJAI\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XIK^KKdNLhPLuWM�]O�bP�fQ�eP
m6
-�`O�cP�fQ�hQ�hQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�g)�c(�c(�b(�V�c�e�i!�i!�d�b�`�`�_�_�^�Q�]'�_(�`(�f)�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�mR�mR�nR�mR�mR�mR�mR�kR�hQ�Ga0	�bP�mR�jQ�fQ�aP}[NrUMmSM�L$\�\�\�\�\�\�\�\� B B
#C, 8&H.Z7 �pR�jQ{ZN\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�QEJ[JK`LKdNLhQLqUM{ZN�_O�cP�gQ�hQ���
-�bP�eP�hQ�iQ�jQ�jQ�kQ�kQ�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�nR�j*�g)�e)�d)�d�X�g�h�e�c�b�b�b�U�`(�a(�a(�c(�i*�oR�oR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�mR�jQ�Q%Z-	�jQ�nR�lR�hQ�dP�_OuWMpTMnSMkRLa: \�\�\�\�\�\�\� B B&D2
@*S6#G@IPDJ�hQmSM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ]KKbMLeOLiQLlRMvWN\O�aO�eP�hQ�jQ�gQ�oTM�gQ�iQ�kQ�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�l*�l+�j+�g)�f)�e)�d)�e)�e)�e)�e)�f)�i*�s0�s.�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pR�pR�pR�pR�pS�pS�pS�qS�qS�qS�qS�pS�qS�pS�nR�lR�I�hQ�pR�oR�mR�iQ�eP�aP�\OsVMpTMnTMlRM�X)\�\�\�\�\�\�\� B%C)D$;J/[8"LBITGJYIKWHK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK_LKcNLgPLjQLlRMpUMzYN�^O�bP�eP�hQ�kQ�lR�fQ- �hQ�jQ�lR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�pR�pR�pR�p�y-�w-�w-�y.�{-�u�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�qS�qS�qS�qS�qS�qS�qS�qS�qS�rS�rS�rS�rS�rS�rS�rS�sS�rS�qS�oR�iQ�iQ�qS�qS�pR�mR�jQ�gQ�cP�_O{ZNtVMpUMoTMmSMjQL_9 \�\�\�\�\� B"C(D#*A$[<)d<!QEJWHKXHKD>I\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JKaMKeOLhPLkRLmSMoTMuWM}[N�_O�bP�eP�hQ�kR�mR�nR�kR!-E�kR�mR�nR�oR�pR�pR�pS�pS�pS�pS�pS�pS�pS�pR�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�sS�sS�sS�sS�tS�tS�tS�tS�tS�uS�tS�sS�rS�nR�oR�sS�sS�rS�pR�mR�jQ�gQ�dP�aO\OyYNuWMqUMoTMnSMkRLo8
\�\�\�\�\� B'D+E$(1J/jH1NCJUGJYIKUGJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�XHK]KKbNLfOLiQLkRMmSMoTMqUMxXN\N�_O�bP�fP�hQ�kQ�mR�oR�pS�pR�hQ�mR�oR�pS�qS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�tS�tS�tS�uS�uS�uT�uT�uT�uT�uT�vT�wT�vT�vT�uT�tS�mR�tS�uT�uS�tS�rS�pR�mR�kQ�hQ�eP�aP�^O\N{ZNvXNqUMpTMnSMlRM�P%\�\�\�\� B#C*E$.E- .!G$Y:%d<"SFJYIKZIKNCJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�PDJZIK_LKdNLgPLjQLlRMnSMpTMqUMuWMyYN�\O�`O�cP�fP�hQ�jQ�mR�oR�qS�rS�rS�rS�mR��rS�sS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�sS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�uS�uS�uT�uT�vT�vT�vT�vT�vT�wT�wT�wT�wT�xT�xT�xT�yT�yU�xU�\'�qS�vT�wT�wT�vT�uT�tT�rS�oR�mR�kQ�hQ�eP�bP�`O�^O�\O|ZNxXNtVMpTMoTMmSMjQLh7\�\�\� B(D"-E*1F, 4#K)pL5PEJWHK[JKXHK:9H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�UGJ\JKaMLeOLhPLkRLmSMoTMpUMrVMvWNyYN|ZN�]O�`O�cP�eP�hQ�jQ�lR�nR�pS�qS�sS�tS�uS�tS�sS�mR^/	�vT�vT�vT�wT�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�wT�wT�wT�wT�wT�wT�wT�xT�xT�xT�xT�xT�xT�xT�yT�yT�zU�zU�{U�{V�|V�gQ�rS�wT�xT�yU�yU�zV�yV�xV�vU�tT�qS�oS�mR�jQ�hQ�eP�cP�bP�`O�_O�]O}[NyYNuWMpUMoTMmSMkRL}H#\�\�&D -E(1F/!2#8	W7"iA&UGJ[JK\JKREJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�MCIXIK^KKcNLfOLiQLkRMmSMoTMqUMsVMwXNzYN}[N�\O�^O�`O�bP�eP�gQ�jQ�kR�mR�oR�qS�rS�tS�uS�vT�vT�wT�wT�uT�sS�lR�_(�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�xT�xT�xT�xT�xT�xT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�yT�zT�zT�zU�{U�{U�{U�|U�|U�}V�~V�WÀY�iQ�rS�wT�yT�zU�|V�}X��Z]��]��]�~[�zY�wW�tU�qS�nS�lR�jQ�gQ�fP�eP�cP�bP�`O�_O�]O~\NzZNvXNqUMoTMnSMlRMiQLg=!\�
-!C+E'0F.4F7%8%U/lG.SFJZIK]KKZIKB=H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�REJZJK`LKdNLgPLjQLlRMnSMpTMqUMtWMxXN{ZN~[N�]O�^O�`O�aO�bP�dP�gQ�iQ�kQ�lR�nR�pS�rS�sS�tT�uT�vT�wT�xT�yT�yT�yT�yT�yT�xT�vT�rS�nR�hQ�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�|U�}U�}U�}U�}U�}U�}U�}U�~U�~U�~V�~V�VŀWƁX�a(�lR�rS�vT�yT�zU�|U�~V�XƂ[Ɇ_΋dӑjԓmԓnБlʌhĆd��_�{[�vW�sU�pS�nR�kR�iQ�hQ�gQ�fQ�eP�dP�bP�aO�_O�^O�\O|ZNxXNsVMpTMnTMmSMjQL�C B)D&/F-3F47G6%>"Y7 kA$YIK]KK^KKSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ\KKbMLeOLhPLkRLmSMnTMpTMrUMuWNyYN|ZN\N�]O�_O�`O�aP�bP�cP�eP�fP�hQ�jQ�lR�nR�oS�qT�sT�uU�vU�wV�xV�yV�yU�zU�zU�{U�{U�{U�|U�|U�|U�|U�|U�{U�{U�{U�zU�zT�yT�yT�xT�wT�vT�vT�vT�vT�wT�wT�wT�xT�yT�zT�zU�{U�{U�|U�|U�}U�VŀWǂYɄ\͈_ьdٔl�u�|쩂ſt명榁ޟ{՗sˎl†d�^�yZ�uW�qU�oS�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O}[NyYNuWMpTMoTMmSMkRLgPL&D#.E,3F46G;'<(D"iB(VGJ]KK`LK[JKB>H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^LKcNLfOLiQLkRMmSMoTMqUMsVMvXNzYN}[N�\O�^O�_O�`O�aP�cP�dP�eP�fQ�gQ�hQ�iQ�kR�mS�oT�rU�tW�wY�zZ�}\�]��^��^��^‚^\��Z�Y�X�~W�~W�~V�~V�~V�~V�~U�~U�~U�~U�U�U�V�V�V�V�VƀVƀVǀWǁWȂXɃZ˅[͇^ЊaӍdؒiܗn�t�z�����������������驅�~֘vˏmÇf��`�z[�vX�rU�pT�oS�nS�lR�kR�kR�jQ�iQ�hQ�fQ�eP�dP�cP�bP�`O�_O�]O~[NzYNvWNpTMoTMnSMkRMhQLo7,2F36G99HC+@ ]8 nA"\JK`ML_LKSFJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JK`LKdNLgPLjQLlRMnSMpTMqUMtVMwXNzZN}[N�]O�^O�_O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lR�mS�oU�rW�vZ�{]��a��fŊjˏnГqӕsՖsՖrՖqՔoӒmяjύg͊cˈaɆ^Ȅ\ǂ[ƁYŀXŀW�W�W�V�V�WŀWƀWǁXȂYɃ[ʅ\͇_ϊaҍeՑhٕmݙq�v�z�}꧀멃몄騃奀ߠ|ٛwӕȑmƉh��c�~^�yZ�vX�tW�sV�qU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fP�eP�cP�bP�aO�_O�^O\N{ZNwXNsVMoTMnSMlRMiQL~I#26G99G?<HA*E$	i@$ZIKaMLbML[JK;:H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�WHJ]KKbMLeOLhPLjRLlSMnTMpTMrUMuWMxXN{ZN~\N�]O�^O�`O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�kR�lS�mT�oU�rW�uZ�y]�~a��fŠl˒sԚzܡ�㧆諉뮋������묈訄�~ߞyڙt֕oҐjΌfˈbȅ_ƃ\ŁZĀY�X�W�~W�~W�~W�XÀXĀYŁZƃ\Dž^Ɇ`ˈb̊d͋f΍gΎiΎjΎj͎jˌiljgÆd��a�^�}]�|\�{[�yZ�xY�vX�tW�sV�qU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fP�eP�dP�bP�aO�_O�^O�\O|ZNxXNtVMpTMnSMmSMjQLgPL99G?<HG-E&b;!YIK`MLdOM`LKNCJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��lR�yT�~UʂXʃY�X�{W�tU�W'�[(�hQ�lR�cP�\OhQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^LKcNLfOLiQLkRLmSMoTMqUMrVMvWNyYN|ZN\N�]O�_O�`O�aP�bP�cP�dP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pU�sW�vZ�z]�b��gŠlɑsИy؞ޤ�㩊譍챐ﳑﳑ뭊穅⣀ݞzؘtғn΍iɉdƅ`Â]��[�~Y�}X�|W�|V�{V�{V�{V�{V�{V�|W�|W�}X�}Y�~Z�~Z�~Z�}[�}[�}[�~\�~\�~]�~]�~]�~]�}]�|\�z[�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O}[NyYNuWNpTMnTMmSMkRLhPL|H$D>IQ2P+XHK_LLfQOcNLXIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��qS�yT�~VΈ`遲ޜv��]�qS�L�G|>g3
-S)?*%.�hQ�hQ�eP�`OuWM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�SFJ[JK`LKdNLgPLjQLlRMnSMoTMqUMsVMwXNzYN}[N�\O�^O�_O�`O�aP�bP�dP�eP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pV�sX�vZ�z^�b��gËmʒsјz؟�ޤ�㩊譍ꯏ및ꯎ謋娇ं۞|֙wѓq̎lljgÅb��_�\�}Z�{X�zW�yV�yU�xU�xU�xT�xT�xU�xU�xU�yV�yV�yW�zW�{X�{Y�|Z�}[�}[�}\�~\�~]�~]�}]�|\�{\�z[�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�]O~[NzZNvWNrUMoTMmSMlRMiQLeOLJAIJ(h>!]KKfQOgQN_LKD>I\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��iQ�tS�yT�{U�YΌeרּ���՗u�|\�Z'�L�D
|>����������������eP�oR�qS�oR�mR�jQ�eP�^OhPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�WHJ\KKaMLeOLhPLjQLlRMnSMpTMqUMtVMwXNzZN}[N�]O�^O�_O�`O�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�kR�mS�nT�qV�sX�w[�{_��c��hČn˒tҙz؟�ޥ�㩉筍ꯎꯎꮍ竊䧆ߣ�۞|՘vГpˎkljfÅb��_�\�}Y�{X�zW�yV�xU�xU�xT�xT�xT�xU�xU�xU�xU�yV�yV�zW�zX�{Y�|Y�|Z�}[�}[�}\�}\�}\�}\�|\�{[�zZ�yZ�wY�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�^O\N{ZNwXNsVMoTMnSMlRMiQLfOLJ(V.]KKePNkUQcNLQEJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��]O�mR�qS�rS�tS�vT�wT�xU�{WĆbғqךxʏo
-����������������K�rS�vT�wT�vT�uT�sS�qS�nR�kQ�gQ�`OuWNY,\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�NCJYIK^KKbNLfOLhQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N�]O�^O�_O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�kR�mS�oT�qV�tX�w[�|_��d��iČn˓tҙz؟�ޥ�㩉笌鮎ꮎ魌檉㧅ߢ�ڝ{՗uϒpˍjƈf…b��^�\�|Y�{X�zV�yV�xU�xU�xT�xT�xT�xU�xU�xU�xU�yV�yV�yW�zW�{X�{Y�|Z�|Z�|[�}[�}\�}\�|\�|[�{[�zZ�xY�wX�vX�tW�sV�rU�pT�oS�nS�mR�lR�kR�jQ�jQ�iQ�hQ�gQ�fP�dP�cP�bP�aO�_O�^O�\O|ZNxXNtVMoTMnSMlRMjQLgPLzG#\JKcOMoXUgPMZIK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��fP�gQ�gQ�hQ�iQ�kQ�lR�nR�pR�qS�sS�tS������:"r<zYN�sS�yT�|U�~WƄ^ˊeˋgƈe��a�z[�tV�pS�mR�kQ�gQ�bPzYNkRL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�RFJZJK`LKcNLfPLiQLkRMmSMoTMqUMrVMvWNyYN|ZN\N�]O�^O�`O�aO�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lR�mS�oU�qV�tY�x\�|`��d��iōo˓uҙ{ٟ�ޥ�㩉笌鮍鮍謋婈⦄ޡٜzԗtϑoʌjƈe„a��^�~[�|Y�{X�zV�yV�xU�xU�xT�xT�xT�xT�xU�xU�xU�xV�yV�yW�zW�zX�{Y�{Y�|Z�|Z�|[�|[�|[�|[�{[�z[�yZ�xY�wX�vW�tW�sV�rU�pT�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�fP�eP�dP�bP�aP�`O�^O�]O}[NyYNuWNqUMnSMlSMkRLhPLcNLbNLpYVlUP`LK>;H\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\��jQ�`O{ZN�^'�^'�`(�e)�h)�k*�o+�b(�nR�yT�~UǁXҍd�w��詅ݟ}Ԙvȍm��e�}_�x[�y\�x[�tW�qT�mR�jQ�gQ�bP}[NlRM\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�VGJ\JKaMKdNLgPLjQLlRMnSMpTMqUMsVMvXNzYN|[N\O�]O�_O�`O�aP�bP�cP�dP�eP�fQ�gQ�hQ�iQ�jR�lS�mS�oU�rW�uY�x\�|`��d��jōo̓uҚ{٠�ޥ�㩉欋譍譌竊婇᥃ݠ~؛yӖtΑoʌjňe„a��^�~[�|Y�{W�zV�yV�xU�xU�xT�xT�xT�xT�xU�xU�xU�xU�xV�yV�yW�zX�zX�{Y�{Z�{Z�|Z�|[�|[�{[�{[�zZ�yZ�xY�wX�uW�tV�sV�rU�pT�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�^O�]O~[NzYNvWNrUMnSMmSMkRLiQLeOLoXUu]XdOLKBI\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�:9H\N�hQ�}\�uU�sT�tT�tS�qS�nR�nR�nR�lR�jQ�iQ�hQ�hQ�gQ�fQ�eP�eP�hQ�kR�mS�pU�tX�uY�sW�qU�mS�jQ�gQ�B�S%jQL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�LBIXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMtVMwXNzYN}[N�\O�^O�_O�`O�aP�bP�cP�eP�fP�fQ�gQ�hQ�iR�kR�lS�nT�pU�rW�uY�y]�}`��e��jŎp̔vӚ{٠�ޤ�⨉櫋笌笋櫊䨆ंܟ~ךxҕsΐnɌiŇe��a��^�~[�|Y�{W�yV�yV�xU�xU�xT�wT�wT�wT�xT�xU�xU�xU�xV�yV�yW�zW�zX�zY�{Y�{Z�{Z�{Z�{Z�{Z�zZ�yZ�yY�xY�vX�uW�tV�sU�rU�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�aP�`O�_O�]O\N{ZNwXNsVMnSMmSMkRMiQLfOL_LKhQMUGJ\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� (6BFP>=DKHMqjk�trwf`~kc�nd�qe�se�te��{�w`�v[\N�_O�cP�fP�iQ�jR�lS�oT�qV�qV�oT�lR�iQ�^�`O�Q%hPL\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�QEJZIK_LKcNLfOLiQLkRLmSMoTMpUMrUMuWMxXN{ZN~[N�]O�^O�_O�`O�aP�cP�dP�eP�fP�gQ�hQ�iQ�jR�kR�lS�nT�pU�rW�uZ�y]�}a��e��kƎp̔vӚ{ٟ�ޤ�⨈媊櫋櫊婈⦅ߣ�۞}֚xѕr͐mȋićd��a��]�~[�|Y�zW�yV�yU�xU�xU�wT�wT�wT�wT�wT�xU�xU�xU�xU�xV�yV�yW�zX�zX�zY�zY�{Y�{Z�{Z�zZ�zZ�yY�xY�wX�vX�uW�tV�sU�rU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�`O�_O�]O\O|ZNxXNtVMoTMmSMlRMjQLgPLbML[JK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�%5 (6$/79CEEKjgkrc_��{�uf��{�w_��q�]O�`O�cP�fQ�hQ�jR�lR�nT�oT�nT�kR�hQ�dP�]'�Q%\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�UGJ[JK`MKdNLgPLiQLkRMmSMoTMqUMrUMuWNxXN{ZN~[N�]O�^O�_O�`O�bP�cP�dP�['�d)�gQ�hQ�iQ�jR�kR�lS�nT�pU�rW�vZ�y]�~a��f��kƎp̔vӚ{؟�ݤ�ᧇ䩉媊媉䨇᥄ޡ�ڝ|՘wДȑmȊhĆd��`��]�}[�|Y�zW�yV�xU�xU�xU�wT�wT�wT�wT�wT�wU�wU�xU�xU�xV�xV�yW�yW�yX�zX�zY�zY�zY�zY�zY�yY�yY�xY�wX�vW�uW�tV�sU�qU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�_O�^O�\O|[NxYNtWMpUMmSMlRMjQLgPLcNLA;=\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�#*6+.8;:AHEJmgjd\]�pe��}�xc�w^��p�^O�aP�eP�gQ�iQ�lR�mS�nT�mS�jR�gQ�h*�X&�M$\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�C+WHJ]KKaMLdOLgPLjQLlRMnSMoTMqUMrVMvWNyYN|ZN\N�]O�^O�_O�aO�bP�cP�Y&�_(�c(�gQ�hQ�iQ�jR�kR�lS�nT�pV�sX�vZ�z^�~b��f��kƎp̔vҚ{؟�ݣ�ই㩉䩉䩈⧆ःܠ؜{ԗvϓqˎlljgÆc��`�]�}Z�{Y�zW�yV�xU�xU�wU�wT�wT�wT�wT�wT�wT�wU�wU�xU�xV�xV�xV�yW�yW�yX�yX�yY�zY�yY�yY�yY�xY�wX�wX�vW�uV�tV�rU�qU�pT�oS�nS�mS�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�_O�^O�\O}[NyYNuWNqUMmSMlRMjQLhPLdNL\1\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�+.775;ICFphh�zt�re��}�ya�vZ�]O�aP�eP�gQ�iQ�kR�lS�nT�lS�iQ�q.�b*�S%zG#\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�MCJXHK^KKbMLeOLhPLjRLlSMnSMpTMqUMsVMvWNyYN|ZN\N�]O�^O�`O�aO�bP�U&�\'�a(�g)�r/�hQ�iQ�jR�kR�mS�nT�pV�sX�v[�z^�~b��f��kƎp̔vҙ{מܣ�আ⨈㨈㨇ᦅޣ�۟~כyӖuΒpʍkƉg…c��_�]�}Z�{X�zW�yV�xU�xU�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�xU�xV�xV�xW�yW�yW�yX�yX�yX�yY�yY�xX�xX�wX�vW�uW�tV�sV�rU�qT�pT�oS�nS�mR�mR�lR�kR�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�`O�^O�]O}[NzYNvWNrUMmSMlRMjQLhQLeOL_LK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�,)/ZTVXON�uq�od��}�yb��s�]O�aP�eP�gQ�iQ�kR�lR�lS�kR�hQ�g*�\(�Q%`LK\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� B B_LKcNLfOLiQLkRLmSMoTMpTMrUMtVMwXNzYN}[N\O�]O�_O�`O�aO�Q%�Y&�^'�b(�i*�{8�hQ�iQ�jR�kR�mS�nT�qV�sX�v[�z^�~b��f��kƎp̔vҙ{מۢ�ߥ�ᧇ⧇ᦆऄݢ�ڞ}֚xҕt͑oɌjňf…b��_�\�}Z�{X�zW�yV�xU�xU�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�xV�xV�xV�xW�xW�yW�yX�yX�xX�xX�xX�wX�wW�vW�uW�tV�sU�rU�qT�pT�oS�nS�mR�mR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�dP�cP�bP�aP�`O�^O�]O~[N{ZNvXNrVMnSMlRMjRLhQLeOLaML+O�+O�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�HFLXQRTJH~pm�la��}�zc��t�tT�aP�dP�gQ�iQ�jR�lR�lS�jR�|:�e*�V&�N$\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\� B B`LKdNLgPLiQLkRMmSMoTMpUMrUMtVMwXNzYN}[N�\O�]O�_O�`O�aP�W&�['�_(�d)�l,݃@�t.�iQ�jR�kR�mS�oU�qV�sX�w[�z^�b��g��kƎp̔uљz֝~ڡ�ޤ�ॆআॅޣ�ܠ؝{ՙwєs̐nȌjňf��b��_�~\�|Z�{X�yW�yV�xU�wU�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�wU�wV�xV�xV�xW�xW�xW�xW�xX�xX�wX�wW�vW�uW�uV�tV�sU�rU�qT�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�hQ�gQ�fP�dP�cP�bP�aP�`O�^O�]O~[N{ZNwXNsVMoTMlRMjRLiQLfOLbML+O�+O�+O�+O�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�6./fZXeVRHAIZIKiQLuWM�tU�aO�dP�gQ�jQ�kR�lR�kR�iQ�n/�b,�R%rC"\�\�\�\�\�\�\�\�\�\�\�\�"Fx"Fx!Fx!Fx B B BdNLgPLjQLlRMmSMoTMqUMrUMtWMwXNzZN}[N�\O�^O�_O�`O�S%�X&�\'�a(�g+�s2�{9�j*�iQ�jR�kS�mS�oU�qV�sX�w[�z^�b��g��kƎp˓uИy՜}٠�ܢ�ޤ�ߤ�ޣ�ݡ�ڟ~כzӗvϓrˏmNjiće��a��^�~\�|Z�zX�yW�xV�xU�wU�wT�wT�wT�wT�wT�wT�wT�wT�wT�wU�wU�wU�wU�wV�wV�xV�xW�xW�wW�wW�wW�wW�vW�vW�uV�tV�sU�sU�rT�qT�pT�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�cP�bP�aP�`O�_O�]O~\N{ZNxXNsVMoTMlRMjRLiQLfPLbNL	+O�+O�+P�+P�+P�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@89dWT@<HE?IXHKiQLvWN�]O�bP�eP�hQ�jQ�lR�lR�kR�p+�f*�[)�O$\�\�\�\�\�\�\�\�:^�:^�:^�:^�"Fx"Fx"Fx B B B BeOLhPLjQLlRMnSMoTMqUMrUMuWMxXN{ZN~[N�\O�^O�_O�O$�V&�Z'�]'�d+�g+�}<�h*�hQ�iQ�jR�kS�mS�oU�qV�tY�w[�z_�b��g��kōpʒtЗyԛ}؟�ۡ�ݣ�ݣ�ܢ�۠؝|՚yҖuΒpʎlƊhÆd��a��^�~[�|Y�zX�yW�xV�xU�wU�wT�wT�wT�vT�vT�vT�vT�vT�vT�vT�wU�wU�wU�wU�wV�wV�wV�wV�wW�wW�wW�vW�vW�uV�uV�tV�sU�rU�qT�qT�pS�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNxXNtVMpTMlRMjRLiQLgPLcNL\JK+P�+P�+P�+P�+P�+P�,P�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�D::hZUC>IIAI\JKlRMyYN�^O�cP�gQ�iQ�kR�lR�kR�iR�t3�d-�S%I#\�\�\�:^�:^�:^�:^�:^�:^�:^�:^�:^�"Fx"Fx B B B BeOLhPLjRLlSMnSMpTMqUMrVMuWMxXN{ZN~[N�]O�^O�_O�S%�W&�['�^(�k2�i+�{:�gQ�hQ�iQ�jR�kS�mT�oU�qV�tY�w[�{_�b��f��kčoʒtϖxӚ|ם~٠�ۡ�ۡ�۠�ٞ~כ{ԘwДs̐oɌkʼng…c��`�]�}[�{Y�zX�yV�xV�wU�wU�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�wU�wU�wV�wV�wV�wV�vV�vV�vV�uV�uV�tV�tU�sU�rU�qT�pT�pS�oS�nS�mR�lR�lR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNxYNtWMpTMlRMjRLiQLgPLcNL_LK+P�+P�+P�,P�,P�,P�,P�,P�Nr�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�]QNl\VG@IMCI_LKoTM|ZN�`O�dP�gQ�jQ�kR�lR�kR�hQ�h*�^,�P%X3:_�:_�:_�:_�:_�:_�:_�:_�:^�:^�:^�:^�"Fx B B B BfOLiQLkRLmSMnTMpTMqUMrVMuWNxYN{ZN~[N�]O�^O�P%�U&�X&�['�`)�n4�n/�j*�gQ�hQ�iQ�jR�kS�mT�oU�qW�tY�w[�z^�~b��f��jČoɑsΕwҙ{՜}؞ٟ�ڟ�ٞ~ל|՚yҗvϓrˏnNjjĈf��c��`�]�}[�{Y�zW�xV�xU�wU�wT�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�vU�vU�vV�vV�vV�vV�vV�uV�uV�uV�tU�sU�rU�rT�qT�pT�oS�oS�nS�mR�lR�kR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\N|ZNyYNuWMpUMlRMjQLiQLgPLdNL_LK,P�,P�,P�,P�,P�Nr�Nr�Nr�Nr�Nr�Nr�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�aSOD>IJAIQEJbNLrUM~[N�aO�eP�hQ�jQ�kR�lR�jR�s0�e,�T&�K$;_�;_�;_�;_�;_�;_�;_�:_�:_�:_�:_�:_�:_� B B B BgPLiQLkRLmSMoTMpTMqUMsVMuWNxYN{ZN~[N�]O�M$�S%�V&�Y&�\'�e-�j/�z:�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�tY�w[�z^�~b��f��jÌnȐr͔vјyԛ|֝~מ~؞~ם}՛{ӘxЕt͒qʎmƊiÇe��b��_�~\�|Z�{Y�yW�xV�xU�wU�wT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�vU�vU�vU�vV�vV�uV�uV�uV�tU�sU�sU�rU�qT�qT�pS�oS�nS�nR�mR�lR�kR�kR�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�bP�aP�`O�_O�]O\O|ZNyYNuWMqUMlSMjQLhQLfPLdNL_LK,P�,P�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�dUOG@IMCITFJeOLtWM�]O�bP�fP�iQ�kR�lR�kR�iQ�j,�c/�P%[JK;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_� B B B BgPLiQLkRMmSMoTMpTMqUMsVMvWNyYN{ZN~[N|H#�Q%�T%�W&�Z'�]'�m5�f*�v5�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�sY�v[�z^�~b��e��i‹nǏq˓uϖxҙzԛ|֜}֜|՛{ԙyіvϓs̐oȍlʼnh†e��a��_�~\�|Z�zX�yW�xV�wU�wU�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vT�vU�vU�vU�uU�uU�uU�uU�uU�tU�tU�tU�sU�rU�rT�qT�pT�pS�oS�nS�mR�mR�lR�kR�jR�jQ�iQ�hQ�gQ�fQ�fP�eP�cP�bP�aP�`O�_O�^O\O|ZNyYNuWNqUMmSMjQLhQLfPLdNL`LKNr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�2#TB<JBIODJXHKiQLxXN�^O�cP�gQ�jQ�lR�lR�kR�o,�d+�U'�L$;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�;_� B B B BgPLiQLkRMmSMoTMpUMrUMsVMtVMyYN|ZN~[N�O$�S%�U&�X&�['�_(�s;�h+�`�fQ�gQ�hQ�iR�jR�kS�mT�oU�qW�sY�v[�z^�}a��e��i��mŎpʒt͕wЗyҙzӚ{Ԛzәyїwϔt͒qʏnNjjĈg��d��a�^�}\�{Z�zX�yW�xV�wU�wU�vT�vT�vT�vT�vT�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uU�uU�uU�uU�uU�uU�tU�tU�tU�sU�sU�rT�qT�qT�pS�oS�oS�nS�mR�mR�lR�kR�jQ�jQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\O|ZNyYNuWNqUMmSMiQLhPLfOLdNL`LKkPANr�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�#Gy#GybSNP<3NCJRFJ^LKoTM}[N�aO�eP�iQ�kQ�lR�lR�iQ�m-�g2�Q%]8 ;_�;_�;_�;_�;_�;_�;_�;_�;_�;_�!2 B B B BgPLjQLlRMmSMoTMpUMrUMsVMtVMyYN|ZN�M$�Q%�T%�V&�Y&�['�b+�q8�r3�eP�fQ�gQ�hQ�iR�jR�kS�mT�oU�qV�sY�v[�y^�}a��d��h��lčoȐr˓uΖwЗxјyјxїwϕu͒rːpȍlŊi‡f��c��`�~]�|[�{Y�yX�xW�wV�wU�vU�vT�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uU�uU�tU�tU�tU�tU�sU�sT�rT�rT�qT�qT�pS�oS�oS�nS�mR�lR�lR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\N|ZNyYNvWNqUMmSMiQLhPLfOLdNL`LKZIKNs�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�#Gy#Gy#Gy#Gy#GyhVPKBIQEJUGJeOLtVM�]O�bP�gQ�jQ�lR�lR�kR�gQ�d*�X)�N$;`�;`�;`�;`�;`�;`�;`�"Gy"Gy"Gy!2 B B B B BjQLlRMnSMoTMpUMrUMsVMtVMyYN�K$�P%�S%�U&�W&�Y&�\'�i2�h.�x8�eP�fQ�gQ�hQ�iQ�jR�kS�mT�nU�qV�sX�v[�y]�|`��d��g��kËnƏqʒs̔uΕvϖwϖvΕu͓sˑqɎnƋkÈh��e��b��_�~]�|[�zY�yW�xV�wV�wU�vT�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�sT�sT�rT�rT�qT�qT�pS�pS�oS�nS�nR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�]O\N|ZNyYNuWNqUMmSMiQLgPLfOLcNL`MKZIKOs�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GyYE<NDJTFJYIKkRLyYN�_O�dP�hQ�kQ�lR�lR�jR�o.�h2�R%c; <`�<`�#Gy#Gy#Gy#Gy"Gy"Gy"Gy* B B B B BjQLlRMnSMoTMqUMrUMsVMtVM~I#�N$�R%�T%�V&�X&�Z'�^(�q9�e*�j+�eP�fQ�gQ�hQ�iQ�jR�kS�mT�nU�pV�sX�uZ�x]�|`�c��f��j��mōpȐrʒt̓u͔u͓t̒sˑqɏonjlĊi‡f��d��a�^�}\�{Z�zX�xW�wV�wU�vU�vT�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�tT�tT�sT�sT�sT�rT�rT�rT�qT�pS�pS�oS�oS�nS�mR�mR�lR�kR�kR�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�bP�aO�`O�_O�]O\N|ZNyYNuWNqUMmSMhQLgPLeOLcNL`LKZIK,P�,P�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��v��v��=a�#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GygUOT>3REJVGJ`LKpTM}[N�aO�eP�iQ�kR�lR�lR�hQ�e)�^.�P%^8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMrUMsVMxF#�M$�Q%�S%�U&�W&�Y&�['�a+�s;�g+�dP�eP�fQ�gQ�hQ�iQ�jR�kS�lS�nU�pV�rX�uZ�x]�{_�~b��e��i��kÌnƎpȐrʑs˒sˑrʐqɏoǍmŋkÈh��e��b��`�~^�|[�{Z�yX�xW�wV�vU�vU�vT�uT�uT�uT�uT�uT�uT�uT�uT�uT�uT�tT�tT�tT�tT�tT�tT�tT�tT�sT�sT�sT�sT�rT�rT�rT�qT�qS�pS�pS�oS�nS�nR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�gQ�gQ�fP�eP�dP�cP�bP�aO�`O�^O�]O\N|ZNxXNuWMqUMmSMhPLgPLeOLcNL`LKZIK,P�,P�,Q�Os�Os�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��v��v��v��w��w��=a�=a�=a�#Gy#Gy#Gy#Gy#Gy#Gy#Gy#GymYPODJUGJXIKeOLtWM�]O�cP�gQ�jQ�lR�mR�kR�p.�g0�T&�N$]8 #Gy#Gy#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMrUMv>�L$�P%�R%�T%�V&�X&�Z'�\'�f0�m5�q3�dP�eP�fQ�gQ�gQ�hQ�jR�kS�lS�nT�pV�rX�tZ�w\�z_�}a��d��g��j��lČnƎpǏqȏqȏpǎoƍmŋkÉi��g��d��a�_�}]�|[�zY�yX�xW�wV�vU�vU�uT�uT�uT�uT�uT�uT�uS�uS�tS�tS�tS�tS�tT�tT�tT�tT�tT�sT�sT�sT�sT�sT�rT�rT�rT�qT�qS�pS�pS�oS�oS�nS�mR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aO�`O�^O�]O~\N{ZNxXNuWMqUMiQLgPLfOLeOLbNL_LKZIK,Q�,Q�,Q�,Q�,Q�Ot�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�v��v��v��v��w��w��w��w��w��w��w��w��=a�=a�=a�=a�=a�#Gz#Gz#Gz#Gz#Gz#Gz#GzgUOS=2RFJWHJ[JKlRMzYN�`O�eP�iQ�kR�mR�lR�iQ�h*�h4�R%�N$^9 [JK#Gy#Gy#Gy#Gy#Gy* B B B B BjQLlRMnSMoTMpUMI#�L$�O$�Q%�S%�U&�W&�X&�Z'�](�l5�f,�t5�dP�eP�fP�fQ�gQ�hQ�iR�kR�lS�mT�oV�qW�tY�v[�y^�|a�c��f��h��k��lÌnōnōoōnŌmċk‰i��g��e��c��`�~^�|\�{Z�yY�xW�wV�vU�vU�uT�uT�uT�uT�uT�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sT�sT�sT�sT�rT�rT�rT�rS�qS�qS�pS�pS�oS�oS�nS�nR�mR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�fQ�eP�eP�dP�cP�bP�`O�_O�^O�]O~[N{ZNxXNtVMqUMhPLgPLfOLdNLbML_LKbE6,Q�,Q�,Q�,Q�-Q�-Q�-Q�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�w��w��w��w��w��w��w��w��w��w��w��w��w��w��=a�=a�=a�=a�=a�=a�=a�#Hz#Gz#Gz#Gz#Gz#Gz#GzmYPPDJUGJYIKbMLqUM\N�bP�fQ�jQ�lR�mR�lR�p,�e+�\+�R%�N$b; ]8 [7 XHKO+N1L/L/L/K/K/e<!�J#{=�J$�L$�N$�O$�P%�S%�T%�V&�X&�Y&�['�`+�m7�d)�h*�dP�dP�eP�fQ�gQ�hQ�iR�jR�lS�mT�oU�qW�sY�v[�x]�{`�~b��e��g��i��j��lŠlËlÊlŠk��i��h��f��c��a�_�}]�{[�zY�xX�wW�wV�vU�uU�uT�uT�uT�tT�tT�tS�tS�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�lR�lR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�bP�aP�`O�_O�^O�]O~[NzZNwXNtVMpTMgPLfOLeOLcNLaMK^KKbE6,Q�-Q�-Q�-Q�-Q�-Q�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@d�@d�@d�w��w��w��w��w��w��w��w��w��w��w��x��x��=b�=b�=b�=b�=b�=b�=b�=b�#Hz#Hz#Hz#Hz=a�=a�gUOS=2RFJWHKZJKiQLvXN�^O�cP�hQ�kR�mR�mR�kR�m-�j3�W(�R%�O$e<!c; a: ^9 ]8 [7 X6X6X6�K$�M$�_(yF#�U&�N$�N$�O$�P%�R%�S%�U&�W&�X&�Z'�\(�d.�j2�f*�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�mT�nU�pW�sX�uZ�w\�z_�}a�c��e��g��i��j��j��j��j��i��g��f��d��b��`�~^�|\�zZ�yY�xX�wW�vV�uU�uU�uT�tT�tT�tT�tS�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�mR�lR�kR�kR�jQ�iQ�iQ�hQ�gQ�gQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�\O}[NzYNwXNsVMoTMgPLfOLdOLcNL`MK]KKaE6-Q�-Q�-Q�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@d�@d�@d�@e�@e�@e�@e�@e�w��w��w��x��x��x��x��x��x��x��x��>b�>b�>b�>b�>b�>b�>b�>b�=b�=b�=b�=b�=b�=b�=b�=b�YE<bJ>UGJYIK_LKnSM|ZN�`O�eP�iQ�lR�mR�mR�iQ�g*�j4�W'�R%�Q%h>!g=!f=!d<!c; b; `: �N$�`(�b(�d)�f)|H#�X&�X&�W&�Q%�R%�T%�V&�W&�Y&�['�](�d.�e,�n1�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�pV�rX�tZ�v\�y^�{`�~b��d��e��g��h��h��h��h��g��f��d��b��a�~_�|]�{[�yZ�xX�wW�vV�vU�uU�uT�tT�tT�tT�tS�tS�tS�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�oS�oS�nR�nR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aO�`O�^O�]O\O}[NyYNvWNrVMoTMfOLeOLdNLbML`LK\KKaE6Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Qu�Qu�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�-R�-R�.R�.R�~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@d�@d�@d�@e�@e�@e�@e�@e�@e�@e�@e�Ae�Ae�Ae�x��x��x��x��x��x��x��x��x��x��>b�>b�>b�>b�>b�>b�>b�$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�>b�gVOS=2RFJWHK[JKeOLsVM�]O�bP�gQ�jQ�lR�mR�lR�r/�g*�h2�U&�S%�R%�Q%�Q%�P%�['�]'�`(�b(�d)�f)�g)�i*�j*I#�Z'�Z'�Z'�Z'�Z'�['�['�\'�]'�_)�d,�d)�q3�bP�cP�dP�eP�fQ�fQ�gQ�hQ�iR�kS�lS�mU�oV�qW�sY�u[�x]�z^�|`�~b��d��e��f��f��f��f��e��d��b��a�~_�}^�{\�zZ�yY�wX�wW�vV�uU�uU�tT�tT�tT�tS�tS�tS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�pS�pS�pS�oS�oS�oR�nR�nR�mR�mR�lR�kR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�cP�cP�bP�`O�_O�^O�]O\N|ZNyYNuWNrUMnSMjQLdNLcNLaMK_LK[JK`D6Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�-Q�-Q�-Q�-R�-R�-R�-R�-R�-R�-R�-R�-R�.R�.R�Rv�Rv�Rv�~��~��~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�@e�@e�@e�@e�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�x��x��x��x��x��x��x��y��y��>b�>b�>b�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�>b�YD<W?3UGJYIK\JKjRLxXN�_O�dP�hQ�kR�mR�mR�kR�p.�h,�f/�[(�X&�X&�Z'�\'�^'�`(�c(�e)�g)�i*�j*�l*�m*�o+�\'�\'�\'�\'�\'�]'�]'�^'�_(�a)�c*�e*�i+�bP�cP�dP�dP�eP�fQ�gQ�hQ�iR�jR�kS�mT�nU�pW�rX�tZ�v[�x]�z_�|`�~b��c��d��d��d��d��c��b�a�~_�}^�{\�z[�yZ�xX�wW�vV�uU�uU�tT�tT�tT�tT�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�pS�oS�oS�oR�nR�nR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O~[N{ZNxXNtWMqUMmSMiQLcNLbML`LK^KKbR_D5Pt�Pt�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�-R�-R�-R�-R�-R�-R�-R�.R�.R�Rv�Rv�Rv�Rv�Rv�~��~��~��~��~��~��~��~��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�y��y��y��y��y��y��y��Ae�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�Q@:R<2fL@WHJZJKaMKoTM|ZN�`O�eP�iQ�lR�mR�mR�jR�o-�i-�h0�`)�]'�]'�`(�b(�d)�f)�h)�j*�k*�m*�n+�p+�q+�r,�]'�]'�]'�^'�_(�_(�`(�`(�b)�c)�i.�`O�aP�bP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�oV�qW�sY�uZ�w\�y]�{_�|`�}a�~b�b�b�b�a�~`�}_�|^�{]�z[�yZ�xY�wX�vW�uV�uU�tU�tT�tT�sT�sS�sS�sS�sS�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�pS�pS�pS�oS�oR�oR�nR�nR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�hQ�hQ�gQ�fQ�eP�dP�dP�cP�bP�aO�`O�_O�]O\O}[NzYNwXNtVMpTMlRMhPLcNLaMK_LK]KKbR]C5Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�-R�-R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv���������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�y��y��y��Af�Af�Af�$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>b�>b�>b�>b�WD<V>3TFJXHK[JKfOLsVM�]O�bP�gQ�jQ�lR�mR�mR�kR�m,�i,�j/�d+�c)�c(�e)�f)�h*�j*�l*�n+�o+�q+�r+�s,�t,�K$�^(�_(�_(�`(�a(�a)�b)�d*�f+�m1�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�kS�lT�mT�oV�pW�rX�tY�v[�w\�y]�z^�{_�|`�}`�}`�}`�}_�|^�{^�{\�z[�yZ�xY�wX�vW�uV�tU�tU�tT�sT�sT�sS�sS�sS�sS�sS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�pS�pS�pS�oS�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�jQ�jQ�iQ�iQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O\N|ZNyYNvWNsVMoTMkRLgPLbML`LK^KK\JK~aR[B5Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Af�Af�Af�y��Af�Af�Af�Af�Af�Bf�$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c�>c�>b�>b�O?:[E<dK?UGJYIK\KKjRLxXN�^O�cP�hQ�kQ�lR�mR�mR�t.�q.�j+�k-�i,�h*�h*�j*�k*�l*�n+�p+�q+�s,�t,�u,�v,�w,�`(�`(�a)�b)�c*�d+�f+�g,�k0�m1�`O�aO�bP�cP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lT�nU�oV�qW�sX�tZ�v[�w\�y]�z^�z^�{^�{^�{^�{^�z]�z\�y[�xZ�wY�vX�vW�uV�tV�tU�sT�sT�sT�sT�sS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�pS�pS�pS�pS�oR�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�aP�`O�_O�^O�\O~[N{ZNxYNuWNqUMmSMiQLeOLaMK_LK]KKlN>|aRZA5-Q�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rw���������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Af�Af�Af�Af�Af�y��y��y��z��z��z��Bf�Bf�Bf�Bf�Bf�$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$Hz$Hz$Hz$Hz>c�>c�>c�>c�VC<T=3}cVWHJZIKaMLoTM|ZN�`O�eP�hQ�kQ�lR�nR�nS�t.�v2�m+�l+�l+�l+�m+�n+�o+�p+�r+�s,�u,�u,�v,�w-�x-�y-�b*�c+�e,�g-�i/�k0�m2�p4�i-�_O�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jS�lT�mT�nU�pV�qW�sY�tZ�v[�w[�x\�y]�y]�y]�y]�y\�y\�x[�xZ�wY�vX�uW�uW�tV�tU�sU�sT�sT�rT�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pR�oR�oR�oR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�jQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtVMpTMlRMhPLdNL`LK^KKmO?kN>^C6W@5-Q�-Q�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�Rv�Rw�Rw�Rw��������ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Af�Af�Af�Af�Af�Af�Af�Af�z��z��z��z��z��z��z��z��z��z��z��Bf�Bf�Bf�Bf�$I{$I{$I{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$H{$Hz$Hz$Hz$Hz$HzYE<W?4�gYXHKZJKfOLsVM\N�aO�eP�iQ�kR�mR�nS�nS�mS�|7�s/�o,�o,�p+�q+�r,�s,�t,�v,�w-�x-�y-�z.�{/�|/�e-�g/�j1�m3�o5�o5�r7�n3�c)�_O�`O�aP�bP�cP�dP�dP�eQ�fQ�gQ�hQ�iR�jR�kS�lT�mU�oV�pV�qW�sX�tY�uZ�v[�w[�w[�w[�w[�w[�wZ�wZ�vY�vX�uW�tW�tV�sU�sU�sT�rT�rT�rS�rS�rS�rS�rS�rS�rS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�dP�dP�cP�bP�aO�`O�_O�^O�]O~[N{ZNyYNvWNsVMoTMkRLgPLbML^LKnP?lO?iM>\C6T>4-Q�-Q�-Q�-R�Qu�Qu�Qv�Qv�Qv�Qv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Rw�Sw���ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Af�Af�Bf�Bf�Bf�z��z��z��z��z��z��z��z��z��z��z��z��z��z��z��Bf�Bf�Bf�$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$H{$H{$H{$H{?c�?c�?c�?c�$H{$H{$H{SB;R<2zbVUGJXIK[JK[JKuWN�\O�aP�fP�iQ�lR�mR�nS�nS�pT��9�9�w2�w0�v/�v.�x/�z0�z0�|1�~2�3�5�6�8�8�m4�o7�q8�u;�s9�s8�j0�]O�^O�_O�`O�aP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jS�kS�lT�nU�oV�pV�qW�rX�sY�tY�uY�uZ�uZ�vZ�vY�uY�uX�uX�tW�tV�sV�sU�sU�rT�rT�rT�rS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pR�pR�oR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�iQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtVMqUMnSMiQLeOL`LK]KKmP?kN?|aSZA5P<4-R�-R�-R�-R�-R�-R�Qv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R���׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀��Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�\�\�Bf�z��z��z��z��z��z��z��z��z��z��z��z��z��{��{��{��{��{��{��Bf�Bf�Bf�%I{$I{$I{$I{$I{$I{$I{$I{$I{$I{$I{?c�?c�?c�?c�?c�?c�?c�?c�?c�$H{$H{$H{jXP^H=}dXUGJXHKZIKkRLwXN�]O�bP�fQ�iQ�kR�mR�nS�pT�qU�rU�;�>�?�<�9�;�=��=��>�A��D��H��K��E�r:�t;�t;�t<�t:�n4�f,�]O�^O�_O�`O�aO�bP�cP�cP�dP�eP�fQ�gQ�hQ�iR�jR�kS�lS�mT�nU�oV�pV�qW�rW�rX�sX�tX�tX�tX�tX�tX�tW�sW�sV�sV�rU�rU�rT�qT�qT�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�qS�pS�pS�pS�pS�pS�pS�pR�pR�oR�oR�oR�oR�nR�nR�nR�nR�mR�mR�mR�lR�lR�kR�kR�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�cP�cP�bP�aO�`O�_O�^O�]O~[N{ZNyYNvWNsVMpTMlRMgPLcNL�gU�eUlO?~bT{`SW@5-R�-R�-R�-R�-R�-R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Ei�Ei�Ei���׀�׀�׀�׀�׀�׀�׀�׀�׀�׀�׀��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�\�\�z��z��z��z��z��z��z��z��{��{��{��{��{��{��{��{��{��{��{��{��{��Bg�Bg�Bg�%I{%I{%I{%I{%I{%I{%I{@d�?d�?d�?d�?d�?d�?d�?d�?d�?c�?c�?c�?c�$I{$I{L=:WD<v_T�gZuZLWHKYIKmSMyYN�^O�cP�fQ�iQ�kQ�mR�nS�pT�qT�sV�wX�8��C��I��J��N��R��T��U��V��Z��_��S�u=�t=�s;�q9�o6�h.�a)�\O�]O�_O�_O�`O�aP�bP�cP�dP�eP�eQ�fQ�gQ�hR�iR�jR�kS�lT�mT�nU�oU�pV�pV�qW�rW�rW�rW�rW�rW�rW�rV�rV�rU�rU�qU�qT�qT�qT�qS�qS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pS�pR�pR�pR�oR�oR�oR�oR�oR�oR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�dP�cP�bP�aP�`O�_O�^O�]O\O}[NzYNwXNtWMqUMnSMjQLeOL�iV�fU�eUcT|bTcK>`KA-R�-R�-R�.R�.R�.R�.R�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�Ei�Ei�Ei�Ei�Ei�Ei���ׁ�ׁ�ׁ�ׁ�ׁ�ׁ��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�\�\�\�\�\�\�\�\�z��z��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��{��|��Cg�Cg�%I{%I{%I{@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�?d�?d�?d�?d�?d�?d�$I{$I{dUPYE<xaVlSGw]OVHJbMLoTMzYN�^O�vR�eP�hQ�jQ�mR�nR�pS�qT�uV�yZ�{[�^��a��cʌiΏlђn��X��_��a��S��U�q:�n7�k3�h0�c*�^(\N�]O�^O�_O�`O�aO�bP�bP�cP�dP�eP�fQ�fQ�gQ�hR�iR�jR�kS�lS�mT�mT�nU�oU�pV�pV�qV�qV�qV�qV�qV�qU�qU�qU�qT�qT�pT�pT�pS�pS�pS�pS�pS�pS�pS�pS�pS�pR�pR�pR�pR�pR�pR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�dP�dP�cP�bP�aP�`O�_O�^O�]O�\O~[N{ZNyYNvWNrVMoTMlRM|WBwUA�hV�fVlO@~cTzaTaI>XG@-R�.R�.R�.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.R�.S�Ei�Ei�Ei�Ej�Ej�Ej�Ej�Ej���ׁ�ׁ��Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ei�Ei�Ei�\�\�\�\�\�\�{��{��{��{��{��{��{��{��{��{��{��{��{��{��|��|��|��|��|��|��|��|��|��Cg�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�?d�$I{$I{RA;P<3zcXnVI�uh�~pdNLpUM��w�zZ�vS�eP�gQ�jQ�lR�mR�oS�pT�uV�vW�xY�|\��_ÆdƉgȊhʌi̎kΏl��R�F�k4�g1�d-�b+�_(�Z'}[N�\O�]O�^O�_O�`O�aP�bP�cP�cP�dP�eQ�fQ�gQ�gQ�hR�iR�jR�kS�kS�lT�mT�nT�nU�oU�oU�pU�pU�pU�pU�pU�pT�pT�pT�pT�pS�pS�oS�oS�oS�oS�oS�oS�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�nR�mR�mR�mR�lR�lR�lR�kR�kR�kQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fP�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O~\N|[NzYNwXNtVMpUM�pY�oXzWBuUB�gVlP@jO@|bUx`TcMB3!.R�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�.R�.R�.R�.R�.R�.R�.R�.R�.R�.S�.S�.S�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej���؁��Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�Ej�\�\�\�\�Bg�{��{��{��{��{��{��{��|��|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�|��@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{;0/SB;R=4fODpXL�xk��r�vb��z��x�{[Ïl�dP�gQ�iQ�jQ�lR�nR�pS�qT�rT�tU�wW�{Z�}\�|\�}\�~]�]�}+�~6�d.�a+�_)�^(�\'zYN|ZN~\N�]O�^O�_O�_O�`O�aP�bP�cP�dP�dP�eQ�fQ�gQ�gQ�hR�iR�jR�jS�kS�lS�lT�mT�mT�nT�nT�nT�oT�oT�oT�oT�oT�oS�oS�oS�oS�oS�oS�oS�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�oR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O\N}[NzZNxXNuWMrUM�rZ�pY|XCxVCsTBmQAkOA~cVzaU`I>\IARv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�.R�.R�.R�.R�.R�.S�.S�.S�.S�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���؂�؂�؂�؂�؂��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�\�\�Bg�{��|��|��|��|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�}��@e�@e�@e�@e�@e�@e�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{<1/J82^I@gQFqYN�xl��s�vc�{d��y�{\�wUči�eP�gQ�hQ�kQ�mR�mR�nR�oS�pS�rT�tU�tU�tU�tU�tU�tU�t.�L&�](�['�Z'�Y&xYN{ZN}[N\N�]O�^O�_O�`O�aO�aP�bP�cP�dP�eP�eQ�fQ�gQ�gQ�hR�iR�iR�jR�kS�kS�lS�lS�mS�mS�mS�nS�nS�nS�nS�nS�nS�nS�nS�nS�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kR�kQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�fQ�fP�eP�eP�dP�cP�bP�bP�aO�`O�_O�^O�]O\O}[N{ZNxYNvWNsVM�s[�rZ~ZD�nY�kYqSBkPAiOA|cVbK?\G>NB?Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�.S�.S�.S�.S�.S�.S�Fj�Fj�Fj�Fj�Fj�Fj���؂�؂�؂�؂�؂�؂�؂�؂�؂�؂��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Cg�Cg�|��|��|��|��|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�}��Ae�Ae�Ae�@e�@e�@e�@e�@e�@e�@e�@e�@d�@d�@d�@d�@d�@d�@d�@d�@d�@d�%I{@d�@d�<1/H72\I@ePGpYN�xm��t�vc�{e��z��u‘p�wU�uQ�eP�gQ�iQ�jQ�jQ�lR�mR�nR�nR�oR�oR�oR�oR�oR�gb; �Z'�Y&�W&�S%vXNyYN{ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�dP�dP�eQ�fQ�gQ�gQ�hQ�iR�iR�jR�jR�kS�kS�lS�lS�lS�lS�mS�mS�mS�mS�mS�mR�mR�mR�mR�mR�mR�nR�nR�nR�nR�nR�nR�nR�nR�nR�nR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�kR�kR�kQ�jQ�jQ�jQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O}[N{ZNyYNvXNtVM�u\�]E�[E�oZ�mZ�kYnRBjOB}cVdL@`I?XGARv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�.S�.S�.S�.S�/S�Fj�Fj�Fj�Fj���ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق�ق��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ق��Cg�Cg�|��|��|��|��|��|��|��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�}��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�@e�@e�@e�@e�@e�@e�@e�@d�%I{%I{%I{%I{%I{@d�@d�<10F61o]Vye]�oe�xm��u�ud�{e�}d�|a��t��pÏl�uQ�dP�eP�fQ�gQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ_9 �X&�V&�T%rUMuWMwXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�bP�bP�cP�dP�dP�eQ�fQ�fQ�gQ�hQ�hR�iR�iR�jR�jR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�mR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O~[N{ZNyYNwXNtVMrUM�^F�]F�q\�o[�lZqTD�fX}dWeMAbK@O=6NB@Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�/S�/S�Fj�Fj�Fj���ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ك�ك�ك��Cg�Cg�Cg�}��}��}��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�%I{%I{%I{%I{%I{%I{%I{%I{%I{@d�@d�E:9D61m\Vwe]lXOuaX�k_��z��|�|e�|c�|`�z]�yXnÏlĎkĎi�dP�eP�fP�fP�fP�fP�fP�fP�fP[7 �U&�T%�P%pTMsVMuWMxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�bP�bP�cP�dP�dP�eP�eQ�fQ�gQ�gQ�hQ�hQ�iR�iR�jR�jR�jR�kR�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kQ�kQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�bP�bP�aO�`O�_O�^O�]O�\O~[N|ZNyYNwXNuWMrUM�`G�^G�r]|ZFxXFtVE�gY~eY{cXbLA[H?REA.R�.R�Rv�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx���ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك�ك��Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj�Fj���ك�ك�ك�ك�ك��Cg�Cg�}��}��Cg�Cg�Cg�Cg�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�Ae�%I|%I|%I|%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{%I{@e�@e�B99B51k[Vud]iWPr_Wye]��y��|��}�|e�|c��w�{^�z\�yZ��p�xW�wU�wU�wU�wUÎlÎlŽlŽlkD(�S%�P%nSMoTMqUMsVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�cP�dP�eP�eQ�fQ�fQ�gQ�gQ�hQ�hQ�iQ�iR�iR�jR�jR�jR�jR�kR�kR�kR�kR�kR�kR�kR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�lR�kR�kR�kR�kR�kQ�kQ�kQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�cP�cP�bP�aP�aO�`O�_O�^O�]O�\O~[N|ZNyYNwXNuWMrUM�w_�v_�t^~\GzYGvWF�j[fZ|dYybX\I@VGB5/2.R�.R�.R�.R�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Fk�Fk�Fk�Fk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��Fk�Fk�Fk�Fk�Fk�Fk�Fk�Fk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��}��}��}��}��Ch�Ch�Ch�Ch�Ch�Ch�Ch�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�~��Ae�Ae�Ae�Ae�Ae�%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{%I{%I{%I{%I{@e�@e�<68?31gYVpa\bRMjYTq`Z�j`��z��}��}��|��{��z��x��w�z^��t��s��s��s��r��r��r��r�h2�O$�L$mSMnSMnTMoTMtVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�aO�aP�bP�cP�cP�dP�dP�eP�eQ�fQ�fQ�gQ�gQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�kQ�kQ�kQ�kR�kR�kR�kR�kR�kR�kR�kR�kR�kQ�kQ�kQ�kQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�bP�bP�aP�`O�`O�_O�^O�]O�\O~[N|ZNyYNwXNtWM�z`�y`�w`�u_�]I|[HwXG�l\�i[}eZycYr_WjZU;23.R�.R�.R�.R�.R�.R�.R�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��Gk�Gk�Gk���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ��}��}��}��}��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh���Af�%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I|%I{%I{Ae�Ae�Ae�?89H=<gZXpb_aSPi[Vud]��x��{�uf�wf�yf��|��|��{��y��y�zb�zb�za�ya�ya�ya^=%�V)kRLlRMmSMmSMnSMoTMoTMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�`O�`O�aP�bP�bP�cP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�jQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fP�eP�eP�dP�dP�cP�cP�bP�aP�aO�`O�_O�^O�^O�]O\O}[N{ZNyYNwXNtVM�{b�za�xa�wa�_J~\IyZItWH�j]g[dNDr`Xj[VOCB.R�.R�.R�.R�.R�.R�.R�.R�.S�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��~��~��~��~��~��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�������Dh�%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|%I|%I|%I|Ae�Ae�Ae�4285.0G??g\[XMK`TRg[Y�yt{h`�lb�od�re�uf�vf�wf�we�we��{��{��{��z��zbD.�T+�\EkRLkRMlRMmSMnSMnSMsVMvWNxXNzYN|ZN~[N�\O�]O�^O�_O�_O�`O�aO�aP�bP�cP�cP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�fQ�fQ�fP�eP�eP�dP�dP�cP�cP�bP�bP�aP�`O�`O�_O�^O�]O�]O\N}[N{ZNyYNvXNtVM�fL�dL�cL�bL�vb�ta�r`�o_pVHkSGcOE]KDj[WNCB���.R�.R�.R�.R�.R�.S�.S�.S�.S�.S�.S�Sx�Sx�Sx�Sx�Tx�Tx�Tx�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Gk�Gk�Gk�Gk�Gk���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��~��~��~��~��~��~��Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh���������������Di�&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|Ae�Ae�Ae�-*.3-0G@Ae\]jabs`Ssjk|qo�vrtd_{ha�lc�mc�mc�nc�nc��y��y��y��y\A.~ZE�[F�]G�^GkRLlRMlSMmSMqUMsVMuWNwXNyYN{ZN}[N\O�]O�]O�^O�_O�`O�`O�aP�aP�bP�cP�cP�dP�dP�dP�eP�eP�fQ�fQ�fQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�iQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�fQ�fQ�fP�eP�eP�eP�dP�dP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O\O~[N|ZNzYNxXNvWNsVM�gN�fM�dM�cM�wc�ub�sb�parWIkSHbOF]KEj\X_UT@<?.R�.R�.R�.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�Tx�Tx�Tx�/S�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��~��~��~��~��~��~����Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Di�Di����������������ր�ր�ր��Ei�Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|('.,*/>:?YUY`QGfVLudXjeitlm{po|qp}rp~rpsqsq�tq�r_=1+xJ)�o[~[F�\G�^H�_I�`IkRLlRMnSMpTMrVMuWMwXNyYN{ZN}[N~\N�\O�]O�^O�_O�_O�`O�`O�aP�bP�bP�cP�cP�cP�dP�dP�eP�eP�eP�fP�fQ�fQ�fQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�hQ�gQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fP�eP�eP�eP�dP�dP�dP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O�\O~\N}[N{ZNyYNwXNuWM�iO�hO�gO�eO�ze�yd�wd�tc�rbtYKjTIaOG[KFj]Y^UU?;@.R�.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�/S�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ�ۅ�ۅ������������������Dh�Dh�Dh�Dh�Di�Di�Di�Di�Di��������ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր��Ei�Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|Af�Ae�Ae�%J|%J|%J|%I|%I|%I|%I|���#-#%.()1MEAQIEUMI]SL]TM=4.1+(=.#6,&5( 1%"�lY�n[�p\�r]�]H�_I�`J�wa�ybkRLmSMpTMrUMtVMvWNxXNzYN|ZN}[N\N�]O�]O�^O�_O�_O�`O�aO�aP�aP�bP�bP�cP�cP�dP�dP�dP�eP�eP�eP�eP�fP�fP�fQ�fQ�fQ�fQ�fQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�gQ�fQ�fQ�fQ�fQ�fQ�fP�fP�eP�eP�eP�eP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�_O�_O�^O�]O�]O\O}[N|ZNzYNxXNvWN��g��g��g�hP�fP�|f�zf�xe�vd�scsYLiTK_NHYKFh\Z]UV=;@.R�.S�.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�/S�/S�/S�/S�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl�Gl���ۅ�ۅ�ۅ������������������Di�Di�Di�Di�Di�Di��ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�׀�׀�׀��Ei�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Af�Af�Af�Af�Af�%J|%J|%J|%J|%J|%J|%I|%I|%I|,
+,!.! "`E6�iY�lZ�o\�q]�s^�^J�va�wb�yc�zd�{e�}foTMqUMsVMuWNwXNyYN{ZN|ZN~[N\O�]O�]O�^O�_O�_O�`O�`O�aO�aP�bP�bP�cP�cP�cP�dP�dP�dP�dP�eP�eP�eP�eP�eP�eP�eP�eP�fP�fP�fP�fP�fP�fP�fP�eP�eP�eP�eP�eP�eP�eP�dP�dP�dP�dP�cP�cP�cP�bP�bP�aP�aO�`O�`O�_O�_O�^O�]O�]O\O~[N|[N{ZNyYNwXN��i��i��i��i��h�hR�fQ�dQ�bP�wfx]O�pdkbtd_m`]OEDG?A;:@.S�.S�.S�.S�.S�/S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�/S�Gl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܅�܅��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܅��������������������Ei���ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�ր�׀�׀�׀�׀�׀�׀��Bg�Bg�Bg�Bg�Bg�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Af�Af�%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|%I|���
+,YA5jPBpSD�l[�o]�q^�t`�_K�wb�yc�ze�{f�}g�h��i�lSrVMtWMvWNxXNyYN{ZN|[N~[N\O�]O�]O�^O�_O�_O�`O�`O�`O�aP�aP�bP�bP�bP�cP�cP�cP�cP�dP�dP�dP�dP�dP�dP�dP�dP�eP�eP�eP�eP�eP�dP�dP�dP�dP�dP�dP�dP�cP�cP�cP�cP�bP�bP�bP�aP�aO�`O�`O�`O�_O�^O�^O�]O�]O\O~[N|[N{ZNyYNxXN��j��j��j��j��j��j�hS�gS�eR�cR|`Q�sf�oe}jcrd`k_]LCDC=@,,3(4F(4F.S�.S�/S�/S�/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty����Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl����Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Ch�Ch��ր�ր�ր�ր��Ei�Ei�Ei���ր�ր�ր�ր�ր�ր�׀�׀�׀��Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|%I|%I|%I|#5H71O;3V?4iOBoSDsVF�o]{[I^K�`L�bN�dO�{f�}g�~h��j�kT�mU�oV�qW�rWwXNxXNzYN{ZN}[N~[N\O�]O�]O�^O�^O�_O�_O�`O�`O�`O�aO�aP�aP�bP�bP�bP�bP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�cP�bP�bP�bP�bP�aP�aP�aO�`O�`O�_O�_O�_O�^O�^O�]O�\O\N~[N|ZN{ZNyYN�oT�oT�oT�nT��l��l��l�jU�iT�hT�fT�cS�vi�rg�nfyidqdah^^HBD?<@)+3OZkMYk(5F(5F(5F/S�/S�/S�/S�/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Ty�Uy���܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Dh�Dh�Dh�Ch�&K}&K}&K}&K}&K}&K}Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|&J|&J|&J|&J|&J|Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%J|%I|%I|A99N?;L:2T>4gNBlRD�k\�n^z[J~^L�aN�cO�dP�fQ�gR�hT�jU�lV�nW�pX�rX�sY��q��q��r��r��r��s�z[�z[�z[�{[�{[�{ZœrŒqŒqŒpŒpőo�yV�xV�xU�wT�wT�aP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�bP�aP�aP�aP�aP�aO�aO�`O�`O�`O�_O�_O�^O�^O�^O�]O�]O�\O~\N}[N|ZNzYN�pT�pU�pU�pU�oV�oV�nV�mV�lV�kV�jV�hV�fU~cU�uj�qh~mfugdkaad\^E@D98?$(2minffm^blV^lMYk(5F(5F/S�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy���܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|&J|%J|%J|%J|%J|%J|%J|%J|Ae�Ae�;GY<68I=:I82Q=4XA6~fZ�j\�m^�p`|]L�`N�cP�eQ�gS�j��l��m��n�oX�qY�rZ�t[��r��s��s��t��t��t�z]�{]�{]�{\�{\�{\�{[ēsērĒrĒqĒpđp�yWĐoÐnÏmÏlŽlŽk��k�aO�aO�aO�aO�aO�aO�aO�`O�`O�`O�`O�`O�`O�_O�_O�_O�_O�^O�^O�]O�]O�]O\O~\N}[N|ZN��l��l��m�qV�qV�qV�pW�pW�oW��n��n��n��n��n�~n�eW�xl�tk�piykfodcf_`JDG@>C*,5$1MYk�tr~tstmolinadmX_lNZkMZkTx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy���݆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm���݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J}&J}&J}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|&J|&J|&J|&J|Af�Af�Af�Af�;GY;GY;GY1'!D:9N?;N;3]I?zdY�h[�l^�oa�sc�ue�bQ�dR�fT�l��m��n��o��p��q��r��s�v]�w]��u��u��u��u��v�{^�{^�|^�|]�|]�{\�{\�{[�{[�zZ�zZ�yY�yX�xXonn��m��m�uT�uS�tS�tS�tR�sR�sQ�_O�_O�_O�^O�^O�^O�^O�^O�]O�]O�]O�rS�rS�rS��k��l��l��m��m��m��n��n�qW�qX�qX��o��o��p��p��p��p�p�}o{cXv`Vp]U}nishfhaba\_DAF::B$)4�MYkMYkMYk�tc�tq\QPPIKFDI;>H/8GMZkTx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy���݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm�Hm�Hm�Im�Im�Im�Im�Im���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�&K}&K}&K}&K}&J}&J}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�&J|&J|&J|&J|&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;GY;GY;GY;GY;,#I=:H82YF?^JA|e[�j]�n`�qc�te�wg�yi�|k�~l��n��o��p��q��s��s�u]�v^�w^�x_�y_�z_�z_�{_��w��w��v��v��v“u“u“t�{\�{\�z[�zZ�yZ�yY�xX��p��o�wW�vV�vV�uU�uU�uT�tT��l��k��k��k��k��k��k�sT�rT�rT�rT�rT�rU�rU�rV��n��n��n��o��o��o��p��p�qY��q��q��r��r��r��r��q�gZ{dYvaXp^WiYU`TRVNOb]aEBH<<D36@MYkMYkMYkMYkMZk-.1W>+[NL^SQWNNKFJ?AI2:HTx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Im�Im�Im�Im���݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Ch�&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�Bg�Bg�Bf�Bf�Bf�&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HY;GY3("D::B41RB=YG@wcZ}g\�k_�nb�rd�ug}aR�dT�gV�iX�kY��q��r��s��t�p^�q^�w`�x`�y`�z`�za�{a��x��x��w��w��w��v��v��v��u��u��t��s��s��r��r��q��q��p��p��o��o�vW��n��n��n��n��n��n��m�tV�sV�sV�sV�sV�sW�sW�sX�sX��p��p��p�sY�sY�rZ�r[�r\�q\�p]��t��t��s��s�h\{e[vbYo^XhZV`USXPQNJMECJRS[47A+((MYkMYkMYkMZk(5F(5F(5FOHJT=+YML_SRZQQMGJABI2:H/T�Uy�Uy�Uy�Uy�Uy�Uy���݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ��'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Bg�Bg�Bg�Bg�&J|&J|Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HY>DM>DM;HY89<:+#9&B52I94ZHAxd[}g^�k`�nc�rey_R}bT�eV�gX�iY�k[�l\�n]�o^��v��v�va�wa�xa�yb�zb�{b�{a��x��x�|a�|a�|`�{`�{_�{_�{^�z^��u��t��t��s��s��r��r�wZ�wZ�vY�vY�vY�uX�uX�uX�uX��p��p��p��p��p��p��p��q��q�tZ�t[�s\�s\�s]�r]�r^�q^�p^�o^�n^�l^�j^h]{f\ub[n^YgZW_UTWPQOKOEEKST]JNY>=?JJIMYkMYk(5F(5F(5F(5F(5F)5G)5GK=4S<*XMLbWVYPPLGJ@AI/T�/T�Uy�Uy�Uy���އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ��'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J|&J|&J|&J|&J|Bg�Bg�Bg�Bf�Bf�Bf�Bf�Bf�Bf�;HY;HY;HY;HY;HY;HYCIR>DMCIR;HYCIR.$0"8&?*G/V=+w[F{g^�kanXMs\Px_S{bU~dW�fY�hZ�j\�l]�m^��v��w��x��y��y��z��z��z��z��z�{b�{b�{b�{b�{a�{a�{`�{`�z_�z_�z^��u�y]�y]�x]�x\�w\�w[�w[�v[�v[�v[�v[��r��r��r��s��s��s��s��t��u��u�t^�s_�s_�r_�r`�q`�p`��w��v��v��u�~twd]sb[l^ZeYW]TUUORLJOYYaRU^JOZ>>@!$)RXaMYk39B-3<-3<(5F)5G)5G)5G)5G)5GFDJK9*^K=YONg\\TLMIFJ:>I0T�0T�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�In�In�In�In�In�In���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈��In�In�In�In�In���߈�߈�߈�߈�߈��'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Di�Di�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�Cg�&J}&J}&J}&J}&J|&J|&J|&J|&J|Bg�Bg�Bg�Bg�Bg�Bf�Bf�<HZ<HZ<HZ<HZ;HY;HYCIR>EM>EMCIR;HY;HYCIRCIR)6&8&@*H0I1!\B0}_JhTKjM8q[Pt]Sw`U{cW~eY�g[�i\�k^�m_��v��w��x��y��z��z��{��{��{��{��{�zd�zd�zc�zc�zc��y��y��y��x��x��x��w��w��w��w�w_�w_�w_��v��v��v��v��w��w��w��w��w��w��x��x��x��x��x��x��x��x��w��v�~v�|t�ys�vrh\YcXX[TUSNRIHOUXaNS^JFE>>A')+"%(4:C(5F(5F3:B3:B-3<-3<)5G)5G)5G)5G)5G)5GE:4O:*TKLbXWcZZPIKDCJIm�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈��In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn���߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߉�߉�߉�߉�߉��Jn���߉�߉�߉�߈�߈�߈�߈��'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Ch�Ch�Ch�Ch�Ch�Ch�Cg�Cg�Cg�Cg�&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J|&J|&J|Cg�Cg�Cg�Bg�Bg�Bg�<HZ<HZ<HZ<HZ<HZMS\CIR>EMCIRCIRCIR888DGNCJRCIRBBB(0 8&<)G0M5"X@0z^K�bF�kUlXPp[Rs^TvaVzcX}fZg\�i]��u��v��w��x��y��z��z��{��{�ve�ve�we�we��|��|��{��{��{��{��{��{��z��z��z��z��z��y�vb�vb�vb�ub�ub�uc�tc�tc�sb�sc�rc�qc��y��y��y��x��x��w�w�|u�yt�vs~sqyooslmVQTOLR[\dQU`KHHAAD:<@68; &�Z`i-4<%');AJ4:C4:C4:C-4<)5G)5G)5G)5G)6G)6G@84H8-N?5YPQmccoghd`dIn�In�In�In�In�In���߈�߈�߈�߈�߈�߈�߈�߈�߈��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��Jn�Jn�Jn���߉�߉�߉�߉�߉�߉��'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei�Ei�Ei�Ei�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�Dh�Ch�Ch�Ch�&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}&J}&J}&J}Cg�Cg�Cg�Cg�<IZ<IZ<HZ<HZ<HZ<HZ?EN?ENCJRCJRCJRCJRCJRUU\CJRCJRBDG''''''(. 9(:(B-O8'kUFt[I�hQyic}le�og�rj�tl�wn�yp�zq�|s|g]~h_�j`�ka�la�ob�pc�qd�rd�rd�se�te�te�ue��|��|��|��|��|��|��|��|�ue�ud�ud�td�td�sd�sd�rd�rd�qd�qd�pc�oc�nc��y��y��x�~w�}w�{v�yu�vs}srxopqknkgkdbhGGOVYcPLLBCF;>B9;>68;����Z`iZ`iMZk)5G4:C-4<4:C4:C-4<;BJ)5G)6G)6G)6G)6G)6GC6-L;.leg�{{ypqhbeVYcJn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉�߉�߉�߉�߉��������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn����������������'L~'L~'L~'L~'L~'L~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�Dh�Dh�Dh�'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}&J}&J}Cg�Cg�Cg�<IZ<IZ<IZ<IZ<IZ<IZ?ENDJSDJSDJS?EN?EN?EN<HZ04?'.6'.6&(+'''''',)1#7&;)M8)S;+mVG�dKseawhc{kfnh�pj�rl�tm�votaZvc[wd]yf^zg_{h`|i`~ja�kb�lb�mc�nc�od�pd�pd�pd�pd�pe��{�pe�pe�pe�pe�pd�od�od�nd�md�mc�lckc}jc|jbyhb�}w�{w�yv�wu�ut}sryqqunpojmhfkKKRDFOD><535=AG=?D?AD<?B&(+"$'����������KRZTZcMZkKOVRYaSYb.4=.4=4:C.4=4:C)6G)6G)6G)6G)6G)6GWMFaRGhbe{su�}}kde_^dJn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���߉�߉��Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�������������������������������������������������Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�������������Fj�Fj�Fj�Fj�Fj�'L~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}&J}&J}&J}Cg�>==<IZ<IZ<IZ<IZ<IZMT\DJS?ENDJS?EN?EN?EN")1")1C5+//3(.7&),'''''''''"""
., 7(8'A1&F4(L8*oXIw]Jpdasfcvhexkg{mi~oj�qll\Xn^Yp`Zpa[qa\rb]rc^sc^sd_ue`wf`xgayhayhayhb�x�y�y�y�y�y�y�~ywgbvfateasd`qd`pc`nb_la_�ut|ssxqrunpZUXVRWROUMMSHIRIC@967-/3'+0(*-ACF?AD;=@#%(������������JMPU[dSYbKPVW]fY`hSYbSYb.4=4;C4:C.4=)6G)6G)6GCPaCPaCPaFED]PGdaesmo���mefb_dJn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn����Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Jo�Ko�������������������������������������Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�������Fj�Fj���ك�ك�ك�ڃ�ڃ�ڃ�ڃ��Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&K}&J}@K[=IZ<IZ<IZ<IZ<IZNT]DJS?ENDJS#)2#)2#)2#)2#)2'.6A4+028(.7'),)))######"""6$nP?
.+>1(B3)B2&F4'E4)gTGlXJs^OzcTzaPqfethgvjhbVTcWUdXVeYWfZXg[Yh\Zi]Zi][j^\�us�ususts~tt~tt}tt|st{stut~tt|sszrsyqrwpquoqsmpqloXTXTQWPOULLSSJEA<:=99757335./2113)+.'),)+.8:="(���3@Q���������������JMPV\eT[cNZlNZlZ`iZ`iZ`iZ`iSYbY`h4;C.4=)6GCPaCPaCPaCPaCPaEQbZOGa_emhk���nfgeaeJn�Jn�Jn�Jn�Jn�Jn����������������Jo�Jo�Jo�Jo�Jo�Jo�Jo�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko������ኮኮኮኮኮኮ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڃ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ��Ej�Ei�Ei�Ei�Ei�'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K}'K}'K}'K}'K}'K}'K}Di�Di�Di�Di�Dh�Dh�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}&K}&K}&K}&K}$.>=I[=I[<IZ<IZ<IZ?FN'.6#)2#)2#)2#)2#)2#)2(.7#)2,=@<A348)/8"$'"$'######""""	kF+;(
"6*#5*">2)>0&A2'C3(I8-^OFbRHfUJjXMq^RwcVzfYfRDfQCdN@zdTqijrjksklrklrklrklqjmpjmpjmojmojmnimmimkhliflscYm`Xg\VbYT^VRE>;A<:>98:77645:873220/0,-/)+.*,/#%( &������15;5BS������������������KKKJMP]dlU[dNZlNZlZ`iTZcZaiZaiZ`iZ`iSZb���LS[V]eDPbDPbDPbDPbDPbDPbWMF^^diei����rkeaeJo�Jo�Jo�Jo����������������������������Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ኯኯኯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���ڃ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ۄ��Gk�'L~'L~'L~'L~'L~'L~'K~'K~'K~'K~'K~'K~'K~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Di�Di�Di�Di�Di�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}&K}&K}&K}&K}%/> ,>=I[=I[ ,> ,>#)2(.7#)2(.7#)2#)2#)2#)2(.7(.7(.767@D>A214$+3#%("$'###""""""&&&888888cB*}\I@!%+%!5*$:/(;0)<1*>3+@4+>1(bUKN@6OA6L=3QB8M?4_RKaTLbUMcVNcVNcVObVOaVOaUO`UO_UO^UO^TO\SOYRNWPNUOMWPKYSOWRN;63953:76755333,/2'),%(+"%(!'			���"&,KXi04:������������������JMP]_b^emU[dNZlNZlT[cU[dU[dU[d[aj���������������W]fDPbDPbDPbDPbDPbDPb�nS��w�|m����qjKo�Ko�Ko������������ኮኮኮኮኮኯኯኯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp���ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ڄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ��Gk�Gk�Gk�Gk�Gk�Gk�'L~'L~'L~'L~'K~'K~'K~Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Ei�Di�Di�'K}'K}'K}'K}Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}'K}&K}*2? ->=I[=I[ ,> ,> ,>#)2#)2#)2(.7(.7#)2#)2(.7(.7(.7(.7/28:79G@A<89',4#%(#%(######""""""8888888887'vS:�jW;)�
-
&3#.$-% .% .& /&!,#,#@70A71XNHXNHWNHWNHZRLYQLYQLXQLWQLWPLUOLSNLQMKOLJMJJ0//.-.,,-&(+"(!'			���15;6CT37=������������������������MMMKMP^ad_enY`hNZlNZlU\dV\e���������������������������������DQbDQbDQbDQbDQbMUc����yl��|�oiKo���ኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯ�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp���⋯⋯⋯�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ڄ�ڄ�ڄ�ڄ�ڄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk�Gk���ۅ�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}'K}'K}'K}'K}'K}HO\=J[=J[=J[ -> ,> ,>(.7#)2#)2(.7(.7(.7#)2(.7(.7(/7(/7)/8/28114H7,99@.05&,5$&)$$$######"""(((8888888888888884"nO9�gX�jZE/ (�-"

-%' %$#" ! !$


						���48>7CU:GX���������������������������JJJLLLKMPagp_enNZlLPV������������������������������������������������DQbDQbDQbDQbNVc�uo�rjѼ������ዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⋰⋰⋰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ��Gk�Gk�Gk�Gl�Gl�Gl���܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�'K}'K}'K}'K}Dh�Dh�Dh�IP\=J[=J[=J[=J[ -> ->(.7#)2#)2(.7(.7(.7#)2(.7(/7(/7)/8)/8)/803966:E?AC>A856,07%'*%')$$$######(((DDDBBB8888888880 cF1w]O�cS{`QS;+57'


* 															��	
	;?E7CU;HY=I[���������������������������������JJJMMMKMPacfbhq������������������������������������������������������������������EQcHScNVd������ȵ������ዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⋰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���ۄ�ۄ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅��Gl�Gl���܅�܅�܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇��Dh�Dh�Dh�Dh�=J[=J[=J[=J[=J[=J[ ->(/7#)2#)2(.7(.7(.7#*2(/7)/8)/8)/8)/8)08*0903:56:88@KBB=;@348*08&(+'(*%%%$$$(((EEE(((&&&���">-"bF3oXMs[Ow]Py^P�qbpXMdH5R<,Q;, &%%#'-"'-&3DS_qP\nR_p>J\?K]<AG������������������������������������������%%%DDDACF��������������������������������������������������������������������������������������������������⋯⋯⋰⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���⌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰㌰�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅�܅�܅�܅�܅�܅�܅��Gl�Gl���܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇��Dh�Dh�=J[=J[=J[=J[=J[=J[=J[(/739B#)2(.7(/7(/7#*2$*3)/8)/8)/8)08*09+19(-5*.5/16437D>AG@B::@66:-29'),)'%BBBFFFEEE)))))))))&&&���������������																					������������������������������������������@@@FFFACFZ\_[ajagp������������������������������������������������������������������������EQcGRcKTdPWd��������⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌰�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq���㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���ۅ�ۅ�ۅ�ۅ�ۅ�ۅ�܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆��Hl�Hl�Hl�Hl�Hl���܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇��Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�ށ��>J\>J\=J[=J[=J[=J[FLU39B#*2(/7)/7)/8$*3$*3$*3)/8)08*09*09*19',5(-5*.6.17338@<=G@BH@BXW]UUXLPWFHKDFHKKKHHH+++%%%%%%$$$###!!!!!!777777777777777777777AAAFFFACFACF\^aeltbhqDQbDQbDQb������������������������������������������������������������ERcERcERcERcHScLUdRXd|nj��⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌰㌱㌱㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���܅�܅�܅�܅�܅�܅�܅�܅�܅�܅�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���܆�܆�܆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hl�Hl�Hl�Hl�Hl���݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ށ�����������>J\=J[=J[FLUFLU(/7(/7*08*08%+3$*3$+3$+3*09*09*19&,5&,5'-6).6*/7-18NPURRVXUVc]^f^_[X]\XYTUZLQYKMPFHJ)))(((&&&%%%%%%$$$$$$###!!!!!!!!!777777777BBBEEEACGADGFIL\ckZ`iTZcDQbDQbDQbagpbiqcircir������������������������������������������������Y`hY_hERcERcERcGSdJTdNVdTYeLp�Lp���㌰㌰㌰㌱㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱�Mq�Mq���㍱㍱㍱䍱䍱䍱䍱䍱䍱䍱䍱䍱䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲䍲�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���܅�܅�܅�܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݆�݆�݆�݆�݆�݆�݆�݆�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇��Hm���އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ށ��������������������FLUFLUFLU)/8+08+08&+3&+3%+4%+4%+4*19+1:&,5'-5'-6(.6FLTHMTINUKOVOQWSTXYWX`[^lbac]_f_\a_aY\aRX_,.1*,.*+-***((('''&&&%%%%%%$$$$$$$$$###!!!!!!!!!!!!!!!%%%%%%%%%%%%"""""""""KKKJJJFFFGIL]_b^dm\bkV]eDQbEQcEQcEQccirdjsdksektdjsdjscir���������������������������������������[ajZ`iOU^ERcERcFRdFRdITdLUdPWeVZeLp�Lq�Lq�Lq���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱䍱䍱䍱䍱䍱䍲䍲䍲�Mq���䍲䍲䍲䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr�Mr���܆�܆�܆�܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�އ��Hm�Hm�Hm���އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ށ��������������������������������-18,18',3',4',4&,4%,4+1:,2:'-5DJSEKSEKTFLTFLUHMUINVKOWLPWQSYTUZWWZpjje^`offb\_h`]eaaCCG8;A27?-/2+-/.+)******)))((('''&&&&&&%%%%%%$$$$$$$$$$$$$$$$$$######???EEEEEEEEE((((((###&&&%%%HJMHJMHJMHJM_en]dlZ`i_enEQcEQcEQcEQcbhqektflufluflufluektektdksdjscjr������������������������������\ckQW`[ajZaiOU^FRdFRdFRdHSdKUdNVeRXeX\fLq�Mq�Mq�Mq�Mq���㍱㍱㍱㍱㍱䍱䍱䍱䍱䍲䍲䍲䍲䍲䍲䍲䍲䎲䎲䎲䎲䎲�Mr�Mr�Mr�Mr�Mr���䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲厲厲厲厲厲厲厲厲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���܆�܆�܆�܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ��Hm�Hm�Hm�Hm�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ނ�����������������������������������PT[KOVJOV(-4(-4'-5'-5JOXEKSEKSEKTFLTFLTGMUGMUHNVIOWKPWLQXMRYPTZTV[\]a_^asljd^azporjkE@CLEBIEFEDG29A28A17@135,.1+-0+,/./1..0'),)))++++++++++++***FFFFFFACFACFEEEACFACF���JLOJLOKQZ_en]clY_hU[dEQcEQcEQcEQcEQcagp[aj\bk\bkgnvgnvgmvgmvfluflueltektdksdjscjrcir���������������TZcSYbRYaRXaQW`[bj[ajZ`iFSdFSdGSdJTdLVePXeTZfZ]fMq�Mq�Mq�Mq�Mq�Mq�Mq���䍲䍲䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���厲厲厲厳厳厳厳厳厳厳厳厳厳厳厳厳厳厳厳右右右右右右右�Nr�Nr�Nr�Nr�Nr���右冪܆�܆��Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl���݇�݇�݇�݇�݇�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ�އ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�߈�߈�߈�߈�߈�߈�߂��������������������������������������LPVLPWKPW���������������FLTFLTFLUGMUGMUHMVHNVINWIOWKPXLQYMRYNSZTX`X[a[]b]^c__ccacib`JDGi__aYYPJLD@C=;AKEDTQR@?A>>A;<A17@06?/6>/5>.4=-4<IOXHOWMS\������������������������QX`EQcEQcEQcEQcEQcEQc`fo[bj\bk]cl]dl^dm^dm]dlhnwhnwgnvgmvgmvfluflueltektdksdjscircir������V\eU[d_fn^emSYbRXaQX`[bjPV_OV^FSdGSdITeLVeNWeRYfW[f\^gMq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲䎲厲厲厲厲�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右右右右右右右右右右右右右右右右右右右右右右右�Ns���右右右�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm���އ�އ�އ�އ�އ�އ�އ�އ�އ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߈�߉�߂�����������������������������������������������������������������������������������������JPXJPXKQYQW_RW_SX`TY`UZaW[bZ]c\^c^_dCDHDDHTRSWQO@=BNHKbYZ^VWUNPMGJFAEgcgcaf���������������������������������������������EQc`go[aj]cl]cl^dm^em_en_en_en_en^em^dm^dmioxhnwhnwgnvgmvgmvfluflueltektdjsdjscir���W]fagp`go`fo_enSYbRXa\ck[bj[ajFSdGSdITeKUeNWeQXfTZfY]g``gMq�Mq�Mr�Mr�Mr�Mr�Mr�Mr�Nr���厲厲厲厲厳厳厳厳厳厳右右�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns���右右右右右揳揳揳揳揳揳揳揳揳揳揳揳援援援援援援援援�Os�Os���援援�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm���އ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈�߈�߈�߈�߉�߉�߉�߉�߉�߉�߉�߉�߂��������������������������������PRWOQWTW\���������������������������������������������������������������������������������������`dkbek^af_ag`bgabgiko_en^emhnw������������������������������������������������������`fo`fo`fo`fo`fo`fo`fo_fn_fn_en_en^em^dm^dmioxhowhnwgnvgmvgmvflufluektekt������������ahpagp`foTZcSYbRYa\ck\bkPV_GSeITeKUeMWePXfSZfW[f\^gdbhMr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右右右右�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os���援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴�Os�Os�Os�Os�Os���搴�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im���ވ�ވ�ވ�ވ�ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߃��������������������CPaCPaOVbRSWQRWPRWUW]���������������������������������������������������������������������������������������U[dU\dW]eW]eX]eV\e������������������������������������������������������������������agpagp`go`go`fo`fo`fo`fo_fn_en_en^em^dmioxioxhowhnwgnvgmvgmv���������������������������`foTZcSZbRYaQX`\bkGSeITeKUeMWfPXfSYfV[gZ]g_`hNr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Nr���右右右右右�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os���搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴�Os�Os�Os�Os�Os�Os�Os�Os�Os�Hl�Hl�Hl�Hl�Hl�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���ވ�ވ�ވ��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�������������������CPaCPaCPaCPaCPaQWcYY\XX\RSXWX]bdi���������������������������������������������������������������������������������������U[dU[dU[d���������������������������������������������������������������������������agpagpagp`go`go`fo`fo`fo_fn_en_en_enipxioxioxhowhnw������������������������������������TZcSYbRYa\ck\bjIUeKVeMWfOXfRYfU[gX\g\^gcbhNr�Nr�Nr�Nr�Nr�Nr�Nr�Nr�Ns�Ns�Ns�Ns�Ns�Ns�Os���援�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot���琴琴琵琵琵琵琵琵琵琵琵琵琵琵琵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�����������������������������������KQZFLUFMUCPaCPaCPaCPaSXcRWcddgddhddiceicej������������������������������������������������������������������������������������U[d���������������������������������������������������������������������������������������agpagpagp`go`fo`fo`fo_fn_en_enjpyipxiox���������������������������������������������SYbRXa]ckIUeKVfMWfOXfQYfT[gX\g[^h_`hgdiNr�Nr�Ns�Ns�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os����Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot�Ot�Ot�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�Hm�Hm�Hm�Hm�Hm�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In����������������������������������CPaCPaKQZFMUKRZKRZCPaCPaCPaCPaUYcTXcRWceeheeieeiefjefk���������������������������������������������������������������������������Z`iZ`iZ`iU[d���������������������������������������������������������������������������������������agpagpagp`go`fo`fo`fo_fn_enjpy���������������������������������������������������������JUfKVfMWfOXfRYgTZgW\g[^h^`hcbijfiNs�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os���搴搴搴琴�Os�Os�Os�Ot�Ot�Ot�Ot�Ot�Ot�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt���瑵瑵葵葵葵葵葵葵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߈�߈�߈�߈�߉��Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�������������������������CPaCPaT[cKQZFMUKRZKRZLR[GMV@BDCPaDPbWZcVYcTXcSXcgfi\[_ggjggkfgl������������������������������������������������������������������ioxioxipxjpyjpyjqy`fo���������������������������������������������������������������������������������������agpagpagp`go`fo`fo���������������������������������������������������������������������NWfPXgRYgT[gW\gZ]h^_hbaigdimgjOs�Os�Os�Os�Os�Os�Os�Os�Os�Os���琵琵琵琵琵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu���蒶蒶蒶蒶�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉��Im�Im�Im�Im�Im�Im�Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�������������Jn�Jn�CPaCPaU[dKRZGMVLR[LR[LR[GMVGNVHNWDPbDPbY[dWZdVZdUYcTYchgi]\_hhkhhl]^b������������������������������������������������������jowjpxjpxjpxjpyjpykqykqzkqzkqz`fo���������������������������������������������������������������������������������������agpagpagp������������������������������������������������������������������������������RZgU[gW\hZ^h]_haaiecijfjOs�Os�Os�Os�Os�Os�Os�Ot�Ot���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pt�Pu�Pu�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu���蒶�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��Im�Im�In�In�In�In�In�In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn����Jn�Jn�Jn�CPaCPaCPaKRZV\eGMVLR[LR[LR[GNVHNWHOWIOXIOXDPb[\dZ[dX[dWZdVZdUYd_]__]`jil_^b__c���������������������������������������������lpwlpwlpxlqxlqylqylqylqylqzlrzlrzlr{lr{agp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W\hZ^h]_i`aidciiejmgjOs�Ot�Ot�Ot�Ot�Pt�Pt���瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶葶�Pt�Pu�Pu�Pu�Pu�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu����Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�߉��������In�In�In�In�In�In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኮ�Jn�Jn�AFLCPaDPbLR[LR[V]eLR[LR[LS[HNWHOWIOXIPXJPYKQZBFL^]d\]d[\dY[dX[dWZdVZd`^``_akjma`ca`d���������������������������������mpvmpwmqwmqxmqxmqxmrymrymrymrzmrzmrzmr{ms{ms{ms{ahpms|������������������������������������������������������������������������������ahpagplr{������������������������������������������������������������������������������������������`aiccihejlgjpikPt�Pt�Pt�Pt�Pt���瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv���铷铷铷�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�Im�Im�Im�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉�߉�߉�߉�߉�����������������������������In�In�In�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኮኮኯኯኯ�Jn�DPbDPbLR[LR[W]fLR[LS[MS\HNWIOXIPXJPYKQZLR[PRUQSVDQb^^e]]e\]eZ\dY[dX[dWZdb_ab`bb`cbad���������������������������cekcfkoqwoqworxorxoryoryosyoszoszoszns{ns{ns{ns{chpchqchqchqnt|���������������������������������������������������������������������bhqms|ms|ls{lr{lr{������������������������������������������������������������������������������������������gejlgkohkPt�Pt�Pt�Pt���葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv���铷ꓷꓷꓷꓷꓷꓷ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�\�Im�Im�Im�Im�Im�Im���߉�߉�߉�߉�߉�߉��������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኯኯኯኯዯዯዯᄑ�DPbDPbV\eW]fLR[GNVHNWHOWIOXJPYQW`RXaSYbRYaTUXTUXBFLa_e`^e^^e]]e\]eZ\eY[eX[dW[dnlmomndbd���������������eeiefjefkefkegleglegmpsxpsypsypszptzptzpt{pt{pt{pt{pt|diqdiqdiqdiqdiqdiqot}���������������������������������������������������������bhqbhqms|ms|ms|ls{lr{lr{krzkqzkqz���������������������������������������������������������������������������������������nhkqjkPt�Pt���蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷钷钷铷铷铷铷铷铷铷铷�Qv�Qv�Qv�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�\�\�\�\�\�Im�Im�Im���߉�߉�߉�����������������������������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ኯዯዯዯዯዯዯዯዯᄑ�������U\dV]eLS[HNWHNWIOXOU^JQYQW`RYaTZcagpacfmjiflugnvaVPb`ea_e_^e^^e]]e[]eZ\eZ\eY[epmnpnoece������fehffigfjggjggkgglghlghmghmghnrtyrtzrtzrtzru{ru{ru{qu{fjpfjqfjqejqejqejqejqejrdjrou}������������������������������������������������mt|bhqms|ms|ms|ls{ls{lr{lr{krzkqzkqzjqyjpy���������������������������������������������������������������������������������������Pu���蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓷ�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�\�\�\�\�\�\����������������������������������������������������������������������������������������Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯዯᄑ����������LR[GNVHNWHNWIOXOU^[ajRXaSYbU[dahpcirektgmvioxjpyBGMbWPc`fb`f`_e_^e^^e]]e\]e[\eZ\eY[erop���gegsqssqtsruhgjhhkhhlhhlhimhimhinhjnhjosuzsu{su{sv{hjphkqgkqgkqgkqgkqgkqfkrfkrfjrfjrejrpu}���������������������������������������mt|bhqbhqbhqms|ls{ls{lr{lr{krzkqzkqzjqyjpyjpyioxiox���������������������������������������������������������������������������������sklQu�Qu���钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸ�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw�Rw�Rw���딸딸딸딹딹딹딹딹딹딹딹딹딹땹땹땹땹�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�\�\�\�\�\�\���������������������������������������������������������������������������ኮኮኮኮኮ�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯዯዯዯ⅑�������������HNWHNWIOXOU^\bk]cl^emU\dbhqdjsfluhnwipxkqzlr{ahpeXPdWPdafc`fa`f`_f__f^^e]^e���������������ifgtrsurtusuutvjiljiljimjjmjjnjjnjkojkojkpikpikpikpikqikqikqhkqhkqhkqhkrgkrgkrgkrgkrfkrqv}������������������������������bhqbhqbhqahpahpagpagplr{lr{krzkqzkqzjqyjpyjpyioxiox]cl\ckgnv������������������������������������������������������������������������pjlrklulmQu�Qu�Qu���铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹땹�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Sx�Sx�Sx�\�\�\�\�\�\�\������������������������������������������������������ኮኮኮኮኮኯኯኯኯኯኯኯ�Jn�Jn�Jn�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋰⅑�������������������NT]OV^[bj]cl_enagpX^gdksfmuhnwjpykrzagpbhqahphZQfYQgcfebfdafc`fb`f������������������������jghkgivsuvtvvtwvuwkjmkjmkknkknkkovwzvw{vw{vw{klpjlqjlqjlqjlqilqilqilqhkrhkrhkrhkrgkrgkrfkr������������������bhqbhqahpahpbhpagpagp`go`go`fokqzkqzjqyjpyjpyipxioxiox]cl\ck\bk[bjfmuflu���������������������������������������������������������������nilpjlrklulmQu�Qu�Qu�Qu�Qv���铷ꓷꓸꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딸딸딹딹딹딹딹땹땹땹�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹땹땹땹땹앹앹앹앹앹앹앺앺앺앺앺앺앺앺앺앺앺�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�\�\�\�\�\�\�\������������������������������������ኮኮኮኮኮኯኯኯኯኯኯኯዯዯዯዯዯዯ�Jn�Jn�Jn�Jn���ዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰→����������������������[aj]cl_enagpX^gZ`i\bkioxjqylr{ahpbhqahpagp_fnj[QiZQhcg������������������������������������kghlhiwtuxuvxuwxvxxvxmkmxwyxwzxwzxw{ww{ww{ww{wx|klqklqklqjlqjlqjlqjlqilqikqhkqhkqhkqgkqgjq���������eiqeipdipdipchpchpbhobgoagoafo_en_en_enjpyipxioxiox]cl]cl\bk\bk[aj[ajfluZ`iY_hZ_h������������������������������������������������������lhlnilpjlrkmtlmwnmQv�Qv�Rv�Rv�Rv�Rv�Rv���ꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딸딹딹딹딹땹땹땹땹땹땹땹땹땹땹땹땹땹땹�Sx�Sx���앺앺앺앺앺앺앺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺�Tx�Tx�Tx�Tx�Tx�Tx�Tx�\�\�\�\�\�\�\�\������������ኮኮኮኮኮኯኯኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Jo���ዯዯዯዯ⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⅒�������������������������QX`_emagpY_gZai\bk^dm`folr{ahpahpchpbgolqyhnwl\Q���������������������������������������������\]fmiimijmjknjknklnkmnkmywyywzywzyx{xx{xx{xx{xx{wx|llpklpklqklqjlqjlqjkqikqikqhkpsv|sv|su|ru{fipfipeipeiodhodhocgocgnbgnbfnafn^dm^dm]dliox]cl^cl]ck]bk\bj[aj[aifltektY_hX_gIVgMXhNXh���������������������������������������������lhmojmqjmpjmskmtlmvmmRv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv���ꔸ딸딸딹딹딹딹땹땹땹땹땹땹땹땹땹땹땹땹앹앹앹앺앺앺앺앺얺�Tx���얺얺얺얺얺얺얺얺얺얺얺얺얺얺얺햺햺햺햺햺햺햺햻햻햻햻햻햻햻햻�Ty�Ty�Ty�Ty�Ty�\�\�\�\�\�\�\�\���ኮኮኯኯኯኯኯኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ�Jo�Jo�Jo���⋯⋯⋯⋰⋰⋰⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⋕����������������������������choZ_g\ai^dk^dm`folr{ls{agpdipchomqx���������������������������������������������������������]^f]^f\^fzvvzvwoklokmolmolnnlnzxzzxzyxzyx{yx{xx{xx{xx{llpllpklpklpvw{uw{uv{tv{tv{���������ruzfiofhnehnehndgncgmcgmbfmbfmaellpxlpwkpwkov^cj^cj]bj]bihmugltgltfksKWhKWhOYhPYhQZhR[iS[iU\i���������������������������������limojmrknslmtlmrkmvmmvmnyonRv�Rv�Rv�Rv�Rv�Rv�Rw�Rw�Rw�Rw���땹땹땹땹땹땹땹땹땹땹앹앹앹앺앺앺앺얺얺얺얺얺얺얺얺�Tx�Tx�Tx�Tx�Tx���햺햺햺햺햻햻햻햻햻햻햻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�\�\�\�\�\�\�\�\�\���ኯኯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ⋯⋯�Jo�Jo�Jo�Jo�Jo���⋰⋰⋰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰→����������������������������������^bi`dkbfmdhokrzlr{lr{qt{psy������������������������������������������������������������������__g^_g^_g]^g{vv{ww{wxolmolmolmolnzxzzxzzxzyxzyxzmlomlollolkowwzvwzvvz���������������������rtyqsyegmegmdglorxoqwnqwmqwmpvlpvlovkouknu_bijntimtimthlsNXhNXhPZhQZhR[iS[iT\iU\iW]iX^jY^j[_j������������������������njnpkorlotmnumnvmnvnnwnnxnnyonRv�Rv�Rw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw���땹땹땹앹앹앺앺앺얺얺얺얺얺얺얺얺얺얺얺얺얺햺�Tx�Tx�Tx�Ty�Ty�Ty�Ty�Ty���헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�\�\�\�\�\�\�\�\�\���ዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯�Jo�Jo�Jo�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㏗�������������������������������������dglfhnru{krzsu{rtz������������������������ª�Ĭ�©����������������������������������������baga`g``g``g__g^_g]_gpkkpklpll{wx{wx{wyzwynlmnlnnlnmknmknlknlkn������������������������������fglegkefkdfkoqvoqvnpunpumoumou`ci`bh_bh_bhPYhPYhQZhRZiS[iT[iU\iV]iW]iX^jY^jZ_j[_j\`j^ak`bkack���������������okormpunpvopwoownoxnnxonyonzon{pn{poRw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx���얺얺얺얺얺얺얺얺얺얺얺햺햺햻햻햻햻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy���헻헻�Vz�\�\�\�\�\�\�\�\�\�\���ዯዯዯዯዯዯዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰⌰⌰⌰⌰⌰㌰㌰㌰㌱㌱㌱㌱㌱㑘�������������������������������������rtyhjotv{���������������������������������Ȯ�ϳ�ϳ�ǫ����������������������������������������dbhcbhbahaaha`h``h_`g__g^_g]_gokkokk{wxzwxzwxzwxyvxmjl���������������������������������������efjeeideioptoptnotbchachabgS[hS[hS[iT[iU\iU\iV\iW]iW]iX^jY^jZ_j[_j\`j]aj_ak`bkbckcdkeelgfligm������qlptoqwpryqrzqqzppzppzpozpo{po|po|qo|qoSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx���얺얺얺햺햺햻햻햻햻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz����\�\�\�\�\�\�\�\�\�\���ዯዯዯ⋯⋯⋯⋯⋯⋰⋰⋰⋰⋰⋰⋰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���⌰⌰⌰㌰㌰㌰㌱㌱㌱㌱㌱㌱㍱㍱㍱㌇����������������������������������������������������������������������������������ͱ�ҵ�ҳ�а�������������������������������������������fciechdbhcbhbahbahaahaah``h_`h_`h^_h]_hzvvzvv������������������������������������������������qptppsV\iV\iV\iU\iU\iV\iV]iW]iX]iX^iY^jZ_jZ_j[_j\`j]`j^aj_ak`bkbckcckddkeelgfligmkinnjoqlp���wpszst}tu~tt}ss}rr|rq|qp}qo}qo~qo~ro~roSw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx���햻헻헻헻헻헻헻헻헻헻헻헻�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz����\�\�\�\�\�\�\�\�\�\�\�\���⋰⋰⋰⋰⋰⋰⋰⋰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���㌱㌱㌱㌱㌱㌱㍱㍱㍱㍱㍱㍱㍱㍱㔚����������������������������������TYeSYekjmvvy���������������������������������Ÿ�Ĭ�ҳ�ұ�ұ�Ѱ�������������������������������������������iejhejfdieciecidbicbicbhbahaahaah������������������������������������������������������������Y^iX^iY^iY^iY^iZ^iZ_i[_j\_j\`j]`j^aj^aj_aj`bkabkbckcdkddkfelgflhfljgmkhmnjnplo������������¹��xx�wv�vu�ustrsqrprpsp�sp�sp�spSw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy���헻헻헻�Uy�Uy�Uz�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����\�\�\�\�\�\�\�\�\�\�\�\�\���⋰⌰⌰⌰⌰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱㗛����������������������������VZeVZeVZeVZeVZeVZeVZe���������������������������̾���Ģ��ұ�Ԭ�ή�Ѱ����������������������������������������������milkgljfkhejgejfdjfdieci���������������������������������������������������������������������]`j]`j^`j^aj^aj_aj`aj`bjabkbckcckcdkddkedkfelgflifljglkhmmimnjnpkosmp���������ż�Ⱦ�ʿ�ɾ�Ƚ�ǻ��wu�us�tr�tq�tp�tp�tp�tp�tpSx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy����Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�V{�W{�W{����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���⌰⌰⌰⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp���㍱㍱㍱㍱㍱㍱㍱㍱㍱㍱䍱䍱䍱䙜�������������������Y\eY\eX\eX\eX\fX\fX\fX\fX\fY\fY\f������������������ŷ��þ�������źֲ�Ū�ɬ�̮�ٲ����������������������������������������������rmqpkoojnmimkhl������������������������������������������������������������������������������bcjbckcckcckddkedkeekfekgelhflifljgljglkhmmimnjmpknrlotnpwpr������ż��������������¿���ʾ�ɼ�Ǻ��vr�uq�uq�up�up�uq�uqTx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz����Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���⌰⌰�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp���㍱㍱㍱㍱䍱䍱䍱䍱䍲䍲䍲䍲䛞�������������[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]f[]fa`g���������������˼��������ɾ���꽛������ĥ�˭�Ѱ�ӳ�������������������������ú�Ļ�ż�Ľ�ü�������ztvxru���������������������������������������������������������������������������������������hfkhfkiflifljglkgllhllhlmimnimojmpjmqknsmovopyqr|st¹�Ƽ����������������������������̾�ʼ�ɺ�ȹ��vq�vq�vq�vq�vq�vqTx�Tx�Tx�Tx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz����Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�W|�������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp���䍱䍱䍱䍲䍲䍲䍲䍲䎲䎲䎲䘜�������]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^f]^fdbghdhmfh������õ�����������÷ؾ�������������������ͮ�ղ�������������������������Ĺ�ƽ�ɿ���������ň����ƿ�ý����������������������������������������������������������������������������������������nilnilnilojmpjmqkmrkmslntmnvnowopzqq}ss�wvǽ��������������������������������ÿ���;�˼�ʺ�ɺ�ɹ��wq�wq�wq�wqTx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䍲䍲䎲䎲䎲䎲䎲䎲䎲䎲䛞�]^f^^f^_f^_f^_f__f__f__f__f__g__g__g__g__g__gfchkehoghtjizmjƶ��ü����Ǽٿ�۾�������������������������������������������������ö�Ź�Ȼ�˿�������������������������������ž�º����������������������������������������������������������������������������slmtlmumnvnnwnoyoo{qp|rrts�vu�zx����������������������������������������½Ͽ�ͽ�̼�˻�˺�˺�˺��xr�xrUy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�������W{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䎲䎲䎲䎲䎲䎲䎲䎲�Lp�[]f^^f__f``f``g``ga`ga`ga`ga`ga`ga`gbagbagbaghdhmfiqiivki|ok�vp��z����¶پ������搴濱����������������������������������������´�ö�ŷ�Ǻ��zw�~z��~���������������������������������ɿ�ƽ�ú�������������������������������������������������������������������zpo|qo}rptr�us�xu�{x�~{�������������������������������������������ľ���п�ν�μ�ͼ�ͻ�ͻ�ͻ�ͻ��xrUy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{������������W{�W{�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Ko�Ko�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���䎲䎲䎲䎲䎲�Lp�Lp�Lq�Lq�]^f__f``ga`gbagbagcagcagcagcagdbgdbhdbhechieiogisjixljpk�xq��z��}���ۿ��°��搴搴濱�������²�²�³�³�³�³�³�³�ó�ó�ô�ô�ĵ��tp�vr�xt�{w�~z��}�������������������������������������¿˿�ȼ�ƺ�ĸ�¶����������������������������������������������µ�ö�ķ��vs�xu�{w�~y��|����������������������������������������������ž�¼���о�Ͻ�Ͻ�ϼ�ϼ�ϼ�μ�ͼ����Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{���������������X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X|�X}�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Kp�Kp�Kp�Kp�Kp�Kp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp���厲厲�Lq�Lq�Lq�Lq�Lq�Lq�__fa`gb`gcagcagdbgdbgebgebhfchfchhdihejlgkqikukjzmj�qk�xq��z��y�}o�}m��搴搴搴搴搴����²�ó�ó�Ĵ�Ĵ�Ĵ�Ŵ�Ĵ�Ŵ�Ŵ�Ŵ��rl�sm�sn�to�up�wq�ys�{v�}x��{��~����������������������������������þ���Ϳ�˽�ɻ�ǹ�Ƹ�ŷ�ŷ�Ķ�Ķ�Ķ�õ�õ�Ķ�Ķ�ŷ�Ʒ�Ǹ�ȹ�ɺ�ʻ�̼�ξ��~y��{�������������������������������������������������ƿ�ü���ҿ�Ѿ�Ѿ�Ѿ�ѽ�н�н�Ͻ����Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{������������������X|�X|�X|�X}�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq����Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�``gbagcagdbgebgfchfchgchgdhhdijfjlhlpjnumnxml|ol�qk�wp��y��v�|n�}nNr�Nr���琴琴琵琵琵����ij�Ŵ�Ŵ�Ƶ�Ƶ�Ƶ�Ƶ�ǵ��sl�sl�sm�sm�tm�tn�uo�vp�wq�ys�{u�}w�y��{��}��~����������������������Ŀ�ý������ξ�̽�˼�ʻ�ʺ�ɹ�ɹ�ȸ�ȸ�ȸ�ȸ�ȸ�ɹ�ʹ�ʺ�˻�̼�ν�Ͽ�����¼��|������������������������������������������������ǿ�ļ�º���ӿ�ӿ�ҿ�Ҿ�Ҿ�Ҿ�Ѿ����Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W{������������������������Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq���厳右�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�a`gcagdbgebhfchgchhdhidhjeikgjnjmqmpzrr}rq~qn�rl�wo��w��u�|n�~nNr�Nr�Nr�Nr���琵瑵瑵瑵瑵�Ĵ�Ŵ�Ƶ�ǵ�ȶ�ȶ��tl�tm�tm�tm�tm�tm�tm�un�un�vo�wo�xp�yr�zs�|u�}w�x��y��{��{�ſ�ƿ�ƿ�ſ�ľ�ý�¼������п�ν�ͼ�ͼ�̻�̻�˺�˺�˺�˺�˺�̺�̻�ͼ�ν�Ͼ�ѿ�����»��z��}������������������������������������������������ǿ�ż�ú������������Կ�Կ�ӿ�ҿ�����V{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|���������������������������������Y}�Y}�Y}�Y}�Y~�Y~�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�Z�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq���右右右右右右�Mq�Mq�Mq�Mq�Mq�Mq�Mq�a`gdbgfchfchhdhhdhjehkfilgjpknups~vw�wv�uq�sm�vn�u��u�|nNr�Nr�Nr�Nr�Nr�Nr�Nr���瑵瑵瑵瑵盖�ŵ�Ƕ�ȶ��tm�tm�um�um�um�um�um�um�um�vn�vn�vn�wo�wo�xp�yq�zr�{s�|t�}v�~w�w��x�û�ü�û�»�º������ҿ�ѿ�о�Ͻ�Ͻ�μ�μ�μ�λ�λ�μ�μ�ϼ�н�Ѿ�ҿ�����º��y��z��|������������������������������������������������Ⱦ�ż�ú�¹���������������������Ѿ����������W{�W{�W{�W{�W|�W|�W|�X|���������������������������������������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�Z�Z�Z�[�[�[�[�[�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq���右右右右右右右右右�Mq�Mq�Mq�Mq�Mq�[QIbagebhgchhdhidhjehkfimgjqkmwqs~wz�~}�{w�uo�vm�}r��t�|nNr�Nr�Nr�Nr�Nr�Ns�Ns�Ns���瑵瑵葵葶葶�ql�sl�tm�um�um�um�vm�vm�vm�vn�vn�vn�vn�wn�wn�wo�xo�xo�yp�yq�zq�{r�{s�|t�}t�}u�~u������������������ӿ�ҿ�Ҿ�Ѿ�ѽ�ѽ�н�н�н�ѽ�ѽ�Ѿ�Ҿ�ӿ���������w��x��z��|��~����������������������������������������������Ⱦ�Ƽ�ĺ�ù�¸�¸�������������������������������W|�W|�X|�X|�X|������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z�Z�Z�Z�[�[�[�[�[�[�[�[�[�[�[�[�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq���右右右右右右右揳揳揳援�Mq�Mq�Mq�Mq�Mq�]^gcahechgdhiehjeikfimgioikvoq�yz������{u�vn�zp��t�|nNr�Nr�Nr�Ns�Ns�Ns�Ns�Os�Os�Os���葶葶�Os�Os�Os��rl�tm�um�vm�vm�vn�wn�wn�wn�wn�wn�wn�xn�xn�xo�xo�xo�yo�yp�zp�zq�{q�{r�|r�|s�|s�}s������Կ�Կ�Կ�Կ�ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Ӿ�Կ�Կ��������v��w��x��y��{��}��~����������������������������������������ʿ�Ƚ�ƻ�ź�Ĺ�ø�ø�¸�¸�¸�¸���������������������X|�X|��������������������������������������������������������������������Z�[�[�[�[�[�[�[�[�[�[�[�[�[�[�[��[��[��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lp�Lp�Lp�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�Mq���右右右右右揳揳揳援援援援援搴搴�Mq�Mq�Mr�Mr�^_gdbhfchhdhjeilfimgiohjslm|uw��������|�xp�yo��t�}o�{nNs�Ns�Ns�Ns�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Os�Ot�Ot��sm�um�vm�vn�wn�wn�xn�xn�xn�xn�xo�xo�yo�yo�yo�yo�yo�zp�zp�zp�{q�{q�{q�|r�|r�|r�|rտ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�տ�����������t�u��v��w��x��z��{��}��~������������������������������������ɾ�Ƚ�ƻ�ź�Ĺ�ĸ�ø�ø�ø�ø�ø�¸�������������������X|�X|������������������������������������������������������������������������������[�[�[�[�[�[�[��[��[��[��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Lq�Lq�Lq�Lq�Lq�Lq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���右右揳揳揳援援援援援搴搴搴搴搴搴搴搴�Mr�Mr�Nr�_`gdbhgdhieikfimgiohjqjkxpq�|}�������}v�xn�}r�~q�{nNs�Ns�Os�Os�Os�Os�Os�Os�Os�Os���蒶蒶�Os�Ot�Ot�Ot�Pt�Pt��tm�vn�wn�wn�xn�xn�xn�yo�yo�yo�yo�zo�zo�zo�zo�zp�zp�{p�{p�{p�{q�|q�|q�|q�|q�|r�|rֿ��������������������������������������~t�t��u��v��v��w��x��z��{��|��}��~���������������������~�˿�ʾ�ɽ�ȼ�ǻ�ƺ�Ź�Ĺ�ĸ�ĸ�ĸ�ĸ�ø�ø�¸������������������X}�X}�Y}�Y}���������������������������������������������������������������������������������������[��\��\��\��\��\��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���揳揳揳援援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴�Nr�Nr�Nr�``hechhdijeilfingipijtlm~uv��������~�yp�{o�r�{nOs�Os�Os�Os�Os�Os�Os�Os���蒶蒶蒶蒶蒶�Ot�Pt�Pt�Pt�Pt�Pt�Pt��un�wn�xn�xn�yo�yo�yo�zo�zo�zo�zo�{o�{p�{p�{p�{p�{p�|p�|p�|q�|q�|q�}q�}q�}q�}r�}r�������������������������������s�s��t��t��u��v��v��w��x��y��z��{��|��}��}��}��~��}��}��}��|��{��z�ȼ�Ȼ�ǻ�ƺ�ƹ�Ź�Ź�Ź�Ź�Ĺ�Ĺ�Ĺ�ù�������������������Y}�Y}�Y}�Y}�Y}�Y}�Y}���������������������������������������������������������������������������������������������\��\��\��\��\��\��\��\��\��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq�Mq�Mq�Mq���援援援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵�Nr�Nr�aahechheikfimgiohjrjkxop�}|�������~v�yn�r�|oYTROs�Os�Os�Os�Os�Os���蒶蒶蒶钶钷钷钷铷�Pt�Pt�Pt�Pt�Pt�Pt�Pt��vn�xn�xo�yo�zo�zo�zo�{o�{p�{p�{p�|p�|p�|p�|p�|p�|q�}q�}q�}q�}q�}q�}q�~q�~r�~r����������������µ�¶�s�s�s��s��t��t��u��u��v��v��w��x��y��y��z��{��{��{��{��{��{��{��{��z��y��x��x�Ǻ�Ǻ�ƺ�ƹ�ƹ�ƹ�Ź�Ź�Ź�Ź�Ĺ��������������������Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Y~�Z~��������������������������������������������������������������������������������������������������\��\��]��]��]��]��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq�Mq�Mq�Mq���援援援搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琵琵琵琵琵瑵瑵瑵�Nr�aahfciieilfingjpijtlm}tu��������~�zp�|p�q�znOs�Os�Os�Os�Os���蒶蒶钶钷钷钷铷铷铷铷铷�Pt�Pt�Pt�Pt�Pu�Pu�Pu��wn�xo�yo�zo�zo�{p�{p�|p�|p�|p�|p�}p�}q�}q�}q�}q�}q�~q�~q�~q�~q�~r�~r�r�r�r�µ�µ�¶�¶�s��s��s��s��s��t��t��t��u��u��v��v��w��w��x��x��y��y��z��z��z��z��y��y��y��x��x��w��w��w�Ǻ�Ǻ�ƹ�ƹ�ƹ�ƹ�ƹ�Ź�Ĺ��������������������Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������������������������������������������������������������������������������������]��]��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Mq�Mq���搴搴搴搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵�X\gbahfdiieilgjohjqjkvno�{{�������v�zo�r�|oOs�Os�Os�Os���钶钷钷钷铷铷铷铷铷铷铷铷铷ꓷ�Pu�Pu�Pu�Qu�Qu�Qu�Qu��xo�yo�zo�{p�{p�|p�|p�|p�}p�}q�}q�~q�~q�~q�~q�~q�~q�r�r�r�r�r�r��r��r��r�ö��s��s��s��s��s��t��t��t��t��u��u��u��v��v��v��w��w��x��x��x��x��y��y��x��x��x��x��w��w��w��w��w��v�Ǻ�Ǻ�Ǻ�Ǻ�ƺ�ƺ�ź���������������������Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�������������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���搴搴搴搴搴搴搴搴搴搴搴搴琴琴琴琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵蝡�bbigdijeimgjohjskl{rr��������~�{q�|p�~q�ynOs���钶钷钷钷铷铷铷铷铷铷铷铷铷ꓷꓸꓸꓸ�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu��xo�zp�{p�{p�|p�}p�}q�}q�~q�~q�~q�~q�q�r�r�r�r��r��r��r��r��r��s��s�Ķ�Ķ��s��s��s��s��t��t��t��t��t��u��u��u��v��v��v��w��w��w��w��x��x��x��x��x��x��x��w��w��w��w��w��w��w��w�Ⱥ�Ǻ�Ǻ�Ǻ�ƺ�ĺ�����������������Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[����������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���搴搴搴搴搴琴琴琴琵琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葶葶蠢�cbigdijfjmgjpikvmn�yy�������v�zo�r�|o��钷钷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꔸꔸꔸꔸꔸ�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv��yp�zp�{p�|q�}q�}q�~q�~q�~q�q�r�r��r��r��r��r��r��r��s��s��s�Ŷ�Ŷ�Ŷ�ŷ�ŷ��t��t��t��t��t��t��u��u��u��u��u��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�Ⱥ�Ǻ�ƺ�����������������Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[�[��[��\�����������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���琴琴琴琵琵琵琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葶葶葶葶蒶蒶蒶蠢����hdikfjnhjrjlyqr���������{q�|p�´Լ���铷铷铷铷铷铷铷铷ꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸ딸�Qu�Qu�Qv�Qv�Qv�Rv�Rv�Rv��zp�{p�|q�}q�~q�~q�q�r�r��r��r��r��r��r��s��s��s��s�Ŷ�ŷ�ŷ�Ʒ�Ʒ�Ʒ�Ʒ�Ʒ��t��t��t��u��u��u��u��u��u��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w�ǻ���������������Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\�����������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���琵琵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒍����������lgjohktlnvw��������wվ��µ���ʸ���铷铷铷铷ꓷꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹땹땹�Qv�Rv�Rv�Rv�Rv�Rv�Rv�Rv��zp�|q�}q�~q�~r�r�r��r��r��r��s��s��s��s��s�ŷ�Ʒ�Ʒ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ǹ�Ǹ�Ǹ��u��u��u��u��u��u��u��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��w��x��x��x��x��xY}��������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\��\��\��\��]��������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蚟����������lgjpikwoq�������Կ�����õ־���铷铷ꓷꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹땹땹땹땹땹땹�Rv�Rv�Rv�Rv�Rv�Rv�Rw�Rw��|q�|q�~r�~r�r��r��r��r��s��s��s��s�Ʒ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ȸ��u��u��u��u��v��v��v��v��v��v��w��w��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��xY}�Y}�Y}�Y}��������Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\��\��\��\��\��]��]��]��]��]�����������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���瑵瑵瑵瑵瑵葵葵葵葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷霡�������������rkm����������ûԾ��µ���л���ꓸꓸꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹�Rv�Rv�Rv�Rv�Rw�Rw�Sw�Sw�Sw�Sw��}r�~r�r��r��s��s��s��s�ŷ�Ʒ�Ʒ�Ʒ�Ƿ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ȸ�ɹ�ɹ�ɹ�ɹ��v��v��v��v��v��v��v��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��x��xY}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��]��^�����������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���葵葵葶葶葶葶葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钶钷钷钷铷锜�������������mhkunq���������Ӿ�����öؿ���ꔸꔸꔸꔸꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺얺얺�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw��r��s��s��s�ŷ�ŷ�Ʒ�Ʒ�Ƿ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ȸ�ɸ�ɹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʹ��v��v��v��v��w��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��x��xY}�Y}�Y~�Y~�Z~�Z~����������Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��]��^��^��^��^��^��������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���葶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷闞�������edjifknilzsu���������Ծ��ö���Խ���ꔸꔸꔸꔸꔸ딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Tx�Tx�Tx��ķ�ŷ�ŷ�Ʒ�Ʒ�Ǹ�Ǹ�Ǹ�ȸ�ȸ�ȸ�ɸ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʹ�ʺ�˺�˺��v��v��w��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��x��x��y��y��yY}�Y}�Y~�Y~�Z~�Z~�������������������[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��^��^��_��������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���蒶蒶蒶蒶蒶蒶蒶蒶蒶蒶钶钶钷钷钷钷铷铷铷铷铷铷铷铷铷鍙����\_iabjfdjjfkpkn~xz������ҽ�����ķ�����ꔸꔸ딸딸딹딹딹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺햺햻햻�Sw�Sw�Sw�Sw�Sx�Sx�Tx�Tx�Tx�����ŷ�Ʒ�Ƹ�Ǹ�Ǹ�ȸ�ȸ�ɹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʹ�ʺ�˺�˺�˺�˺�˺�̺��w��w��w��w��w��w��x��x��x��x��x��x��x��x��x��y��y��y��y��yY}�Y~�Y~�Z~�Z~�Z~����������������������������[�[�[��[��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��^��_��_��_��_��_��_��������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���蒶蒶蒶钶钶钶钷钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷ꓷ�Pt�PYhW]i]`ibbjfekkgltnr������{tӾ��ĸ�µվ���딹딹딹땹땹땹땹땹땹땹땹땹앹앺앺얺얺얺얺얺얺얺얺햺햻햻헻헻헻�Sw�Sx�Sx�Tx�Tx�Tx�Tx�����ɸ�Ǹ�ȸ�ȹ�ɹ�ɹ�ɹ�ʹ�ʹ�ʺ�ʺ�˺�˺�˺�˺�̺�̻�̻�̻�̻��w��w��x��x��x��x��x��x��x��x��y��y��y��y��y��yY}�Y}�Y~�Z~�Z~�Z~�Z~�������������������������������������\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��_��_��`�����������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���钶钷钷钷钷铷铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸ�Pt�Pt�JVhRZhX]i]`jbcjgekmimwru�~�|w�yp�·�ķ�����땹땹땹땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺얺햺햻햻헻헻헻헻헻헻헻�Tx�Tx�Tx�Tx��������ɹ�ɹ�ʹ�ʺ�ʺ�˺�˺�˺�˺�̺�̻�̻�̻�ͻ�ͻ�ͻ�ͻ��x��x��x��x��x��x��y��y��y��y��y��yY}�Y}�Y~�Y~�Z~�Z~�Z~�Z~����������������������������������������������\��\��\��\��]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��_��`��`��`��`��`��`��������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷铷铷铷铷铷铷铷铷铷铷铷ꓷꓷꓸꓸꓸꓸ�Pt�Pt�Pt�JVhMXhT[iY^i^ajccjgeknjo}uw�zw�xq�{r��v���ֿ���땹땹땹땹땹땹앹앺앺앺얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx������������̺�˺�˺�̻�̻�̻�̻�ͻ�ͻ�ͻ�ͼ�ͼ�μ�μ��x��x��x��y��y��y��yY}�Y}�Y}�Y}�Y~�Z~�Z~�Z~�Z~�Z~�Z~����������������������������������������������������]��]��]��]��]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��`��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷铷铷铷铷铷铷ꓷꓷꓷꓸꓸꓸꓸꔸꔸ�Pt�Pt�Pt�Pu�JVhJVhOYiU\iZ_j_ajcckhflpkput�vq�xp��w��s�}p��땹땹땹앹앺앺앺얺얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx�Tx�������������������򕓒�м�Ѽ�ѽ�ѽ�ѽ�����X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������������������������������������������]��]��]��]��^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��`��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���铷ꓷꓷꓷꓸꓸꓸꓸꔸꔸꔸꔸ�Pt�Pu�Pu�Pu�Pu�Pu�JWhJWhJWhQZiV]i[_j`bkddkhglunp�sq�vp�u��v�~qQv���앹앺앺얺얺얺얺얺얺얺얺얺햺햻햻헻헻헻헻헻헻헻헻�Tx�Tx�Ty�Ty�Uy�������������������������������������������Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z����������������������������������������������������������������������^��^��^��^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꓸꓸꓸꔸꔸꔸꔸꔸꔸꔸ�Pu�Pu�Pu�Pu�Qu�Qu�Qu�JWhJWhJWhJWhR[iW]j\`jabkedknjmzpo�to�|t��y�~qRv�Rv�Rv���얺얺얺얺얺얺얺햺햻햻햻헻헻헻헻헻헻헻�Tx�Ty�Ty�Uy�Uy�Uy�Uy���������������������������������������������������Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�������������������������������������������������������������������������������^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꔸꔸꔸꔸꔸꔸꔸ�Pu�Pu�Qu�Qu�Qu�Qu�Qu�Qu�JWhJWhJWhKWiKWiS\iX^j]`kackgeltlnro�yr��z�rIMSRv�Rv�Rv���얺얺얺얺햺햻햻헻헻헻헻헻헻헻헻�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy��������������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z����������������������������������������������������������������������������������������_��_��_��_��_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��a��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���ꔸꔸꔸꔸ딸�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�KWiKWiKWiKWiKWiOZiT\jY_j^akbcknimzon�vp��|��s��qRv�Rv�Rv�Rv�Rw���햻햻햻헻헻헻헻헻헻헻헻�Tx�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz����������������������������������������������������������������������Z~�Z�Z�������������������������������������������������������������������������������������������������_��_��_��_��`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��a��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���딹�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�KWiKWiKWiKWiKWiMXiQ[jV]jZ_k_akbclumn�tp��|��t��rRv�Rv�Rw�Rw�Rw�Sw�Sw���헻헻헻헻헻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������������������������������[����������������������������������������������������������������������������������������������������������`��`��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qu�Qv�KWiKWiKXiKXiKXiKXiNYjS\jW^k\`k_bkqkm~ro��{��vRw�Rw�Rw�Rw�Sw�Sw�Sw�Sw�Sw���헻헻헻�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������������������������������������[�������������������������������������������������������������������������������������������������������������`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qu�Qu�Qu�Qu�Qu�Qu�Qv�Qv�Qv�Qv�KXiKXiKXiKXiKXiKXiLXiPZjT]jY_k]akmim{po��z��uRw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw����Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{������������������������������������������������������������������������������[�[�[�[��������������������������������������������������������������������������������������������������������������a��a��a��a��a��a��a��b��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Qv�Qv�Qv�Qv�Qv�Rv�Rv�Rv�KXiKXiKXiKXiKXiKXiLXjMYjQ[jV]kZ`kigmwnn��|��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{��������������������������������������������������������������������������[�[�[�[��\��\��\��������������������������������������������������������������������������������������������������������������a��a��a��b��b��b��b��b��b��b��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rv�Rv�Rv�KXiKXiLXjLXjLXjLXjLXjOZjS\kW^kigm�tp��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|���������������������������������������������������������������������[�[�[�[��\��\��\��\��\��\��������������������������������������������������������������������������������������������������������������b��b��b��b��b��b��b��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rv�Rv�LXjLXjLXjLXjLXjMYjR[kW^k]alro��sSw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx����Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|������������������������������������������������������������������[�[�[��[��\��\��\��\��\��\��\��]��]��������������������������������������������������������������������������������������������������������������b��b��b��c��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rv�Rv�Rv�Rv�Rv�Rw�Rw�LYjLYjLYjLYjT]kZ_lhfm�uqSw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty����Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|������������������������������������������������������������[�[�[��\��\��\��\��\��\��\��]��]��]��]��]��]��������������������������������������������������������������������������������������������������������������c��c��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Rw�Rw�Rw�Rw�Sw�Sw�Sw�ddmaclupr��{Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy����Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�Y}�Y}�������������������������������������������������������[�[�[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��������������������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�����Uy�Uy�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}����������������������������������������������[�[��[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^�����������������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sw�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy��������Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�V{�V{�W{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~����������������������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��������������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sw�Sw�Sw�Sx�Sx�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy����������Vz�Vz�Vz�Vz�Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~����������������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_�����������������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Sx�Sx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�������������Vz�V{�V{�V{�W{�W{�W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�������������������������[��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��������������������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz����������������W{�W{�W{�W{�W{�W{�W{�W|�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[����������������\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`�����������������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Tx�Tx�Tx�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz��������������������W{�W{�W{�W{�W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�[�[�[�[�[�[�������\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a�����������������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Tx�Ty�Ty�Ty�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Vz�Vz���������������������������W{�W|�W|�X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��\��\��\��\��\��\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��������������������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz���������������������������������X|�X|�X|�X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�[�[�[�[�[�[�[��[��\�����������\��\��\��]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b�����������������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uy�Uy�Uy�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�����������������������������������������X|�X|�X|�X|�X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\�����������������]��]��]��]��]��]��]��^��^��^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b�����������������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uy�Uy�Uz�Uz�Uz�Vz�Vz�Vz�Vz�Vz�Vz�������������������������������������������������X}�X}�Y}�Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��������������������������]��]��]��]��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��������������������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Uz�Vz�Vz�Vz�Vz�Vz�Vz�Vz�Vz����������������������������������������������������������Y}�Y}�Y}�Y}�Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\�����������������������������������^��^��^��^��^��^��^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c�����������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Vz�Vz�Vz�Vz�Vz�Vz����������������������������������������������������������������������Y}�Y}�Y~�Y~�Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��\�����������������������������������������^��^��^��^��^��_��_��_��_��_��_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��c��d��������������������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�Vz�Vz�Vz�V{����������������������������������������������������������������������������������Z~�Z~�Z~�Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��\��\��\��\��\��������������������������������������������������^��_��_��_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d�����������\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�V{�������������������������������������������������������������������������������������������Z~�Z~�Z~�Z~�Z�Z�[�[�[�[�[�[�[�[��[��\��\��\��\��\�����������������������������������������������������������_��_��_��_��_��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������Z~�Z�Z�[�[�[�[�[�[�[��[��\��\��\��\��\��\��������������������������������������������������������������������_��`��`��`��`��`��`��`��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��c��d��d��d��d��d��d��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\���������������������������������������������������������������������������������������������������������[�[�[�[�[�[��[��\��\��\��\��\��\��\��������������������������������������������������������������������������`��`��`��`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������[�[�[�[��[��\��\��\��\��\��\��\��\��������������������������������������������������������������������������������`��`��a��a��a��a��a��a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\������������������������������������������������������������������������������������������������������������������[��\��\��\��\��\��\��\��\��]�����������������������������������������������������������������������������������������a��a��a��a��a��b��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������������������\��\��\��\��\��]��]��������������������������������������������������������������������������������������������������a��a��b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������\��\��]��]��]��������������������������������������������������������������������������������������������������������b��b��b��b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������]��]�����������������������������������������������������������������������������������������������������������������b��b��b��c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������������������������������������������]�����������������������������������������������������������������������������������������������������������������������c��c��c��c��c��c��d��d��d��d��d��d��e��e��e��e��e��e��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������������]��]��]��������������������������������������������������������������������������������������������������������������������������c��c��d��d��d��d��d��d��e��e��e��e��e��e��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������������]��]��^��^��^��^��������������������������������������������������������������������������������������������������������������������������d��d��d��d��d��e��e��e��e��e��e��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������������^��^��^��^��^��^��^��������������������������������������������������������������������������������������������������������������������������d��d��d��e��e��e��e��e��e��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������������������������������^��^��^��^��^��^��^��^��_��_��������������������������������������������������������������������������������������������������������������������������e��e��e��e��e��f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������������^��^��^��^��^��^��^��_��_��_��_��_��_��������������������������������������������������������������������������������������������������������������������������e��e��f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\����������������������������������������������������������������������������^��^��^��^��^��^��_��_��_��_��_��_��_��_��`�����������������������������������������������������������������������������������������������������������������������������f��f��f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�������������������������������������������������������������������^��^��^��^��^��_��_��_��_��_��_��_��_��`��`��`��`��`��������������������������������������������������������������������������������������������������������������������������f��f��\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�\�
\ No newline at end of file
diff --git a/tests/benchmarks/qimagereader/images/test.ppm b/tests/benchmarks/qimagereader/images/test.ppm
deleted file mode 100644
index 05d627c..0000000
--- a/tests/benchmarks/qimagereader/images/test.ppm
+++ /dev/null
@@ -1,2 +0,0 @@
-P6 10 10 1023
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
\ No newline at end of file
diff --git a/tests/benchmarks/qimagereader/images/test.xpm b/tests/benchmarks/qimagereader/images/test.xpm
deleted file mode 100644
index 5fcf075..0000000
--- a/tests/benchmarks/qimagereader/images/test.xpm
+++ /dev/null
@@ -1,260 +0,0 @@
-/* XPM */
-static char * test_xpm[] = {
-"256 256 1 1",
-" 	c grey",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                ",
-"                                                                                                                                                                                                                                                                "};
diff --git a/tests/benchmarks/qimagereader/images/transparent.xpm b/tests/benchmarks/qimagereader/images/transparent.xpm
deleted file mode 100644
index 5ddcf0b..0000000
--- a/tests/benchmarks/qimagereader/images/transparent.xpm
+++ /dev/null
@@ -1,788 +0,0 @@
-/* XPM */
-static char *dummy[]={
-"8 8 777 2",
-"#R c none",
-"fn c #000001",
-".e c #000069",
-".f c #00006d",
-".g c #00006e",
-"#d c #0042b4",
-"aJ c #010101",
-"g0 c #010102",
-"dr c #010202",
-"gd c #010203",
-"#J c #0157bb",
-"e. c #020202",
-"du c #020304",
-"fR c #030303",
-"jJ c #040404",
-"hf c #040608",
-"fE c #040609",
-"cO c #04070a",
-"k# c #050505",
-"gC c #050709",
-"ka c #060606",
-"br c #06080a",
-"dY c #06090d",
-"hI c #070707",
-"in c #07090b",
-"cL c #070a0e",
-"cd c #070b0f",
-"e0 c #080808",
-"gZ c #080b0e",
-"eu c #080b0f",
-"dz c #080c10",
-"hD c #090909",
-"fq c #090d11",
-"cH c #090e13",
-"jB c #0a0a0a",
-"#U c #0a0d0f",
-"a4 c #0a0d10",
-"g3 c #0a0d11",
-"fu c #0a0f14",
-"cj c #0a1016",
-"kb c #0b0b0b",
-"#n c #0b0d0f",
-"a1 c #0b0e10",
-"g8 c #0b0f13",
-"f4 c #0b0f14",
-"hE c #0c0c0c",
-"bf c #0c0f12",
-".X c #0c28a0",
-"bT c #0d0d0d",
-"ax c #0d1014",
-"hr c #0d1217",
-"dH c #0d141b",
-"jy c #0e0e0e",
-"aW c #0e1115",
-"eH c #0e141b",
-"bE c #0f0f0f",
-"ar c #0f1317",
-"g5 c #0f1419",
-"hg c #0f151a",
-"fh c #0f151c",
-"dJ c #0f171f",
-"gI c #101010",
-".z c #101094",
-"h. c #10161b",
-"gm c #10161c",
-"eL c #10171f",
-"hK c #111111",
-"at c #11161b",
-"fC c #111820",
-"dA c #111922",
-"aj c #1163c4",
-"bJ c #121212",
-"#Z c #12161a",
-"ba c #12171c",
-"ho c #12181e",
-"jK c #131313",
-"iq c #13191d",
-"cA c #131e2a",
-"c7 c #141414",
-"dR c #141e29",
-"jr c #151515",
-"aA c #151a1f",
-"hq c #151c23",
-"fl c #151e28",
-"eV c #151e29",
-"d4 c #161616",
-"hw c #161e25",
-"jk c #171717",
-"bs c #171d23",
-"g9 c #171f27",
-"eC c #17212b",
-"b9 c #172432",
-"d5 c #181818",
-"as c #181e24",
-"bn c #181f25",
-"bS c #191919",
-"gr c #19232d",
-"ed c #1a1a1a",
-".d c #1a1a6e",
-"gB c #1a242e",
-"eK c #1a2531",
-"dQ c #1a2633",
-"hL c #1b1b1b",
-"g1 c #1b242d",
-"g# c #1b252f",
-"eJ c #1b2734",
-"d1 c #1b2937",
-"bW c #1c1c1c",
-"gW c #1c262f",
-"ci c #1c2b3b",
-"cs c #1c2c3c",
-"e# c #1d1d1d",
-"#3 c #1d232a",
-"f8 c #1d2833",
-"fI c #1d2936",
-"eO c #1d2a38",
-"cw c #1d2e3f",
-"jR c #1e1e1e",
-"a2 c #1e262e",
-"eP c #1e2b39",
-"dE c #1e2d3d",
-"cF c #1e2f41",
-"aO c #1e6ec9",
-"c4 c #1f1f1f",
-"gx c #1f2a36",
-"c# c #1f3043",
-"j2 c #202020",
-"bk c #202931",
-"ht c #202c36",
-"eF c #202f3e",
-"b7 c #203245",
-"cB c #203246",
-"hG c #212121",
-"aE c #212932",
-"bp c #212a32",
-"hl c #212d38",
-"cc c #213347",
-".M c #214eb7",
-"hF c #222222",
-"#7 c #222a32",
-"fw c #223040",
-"eU c #223141",
-"jC c #232323",
-"bb c #232c35",
-"ga c #23303d",
-"cv c #23364a",
-"cn c #23364b",
-"jl c #242424",
-"gj c #243240",
-"cm c #24374c",
-"c. c #24384d",
-"bF c #252525",
-"be c #252f39",
-"gt c #253341",
-"dU c #253649",
-".Y c #256cc9",
-"jG c #262626",
-"h8 c #26333d",
-"hb c #263440",
-"gs c #263443",
-"cr c #263b51",
-"cW c #272727",
-"aC c #27313b",
-"a9 c #27313c",
-"fk c #273748",
-"eR c #27384b",
-"cq c #273d55",
-"jV c #282828",
-"#5 c #28313b",
-"b0 c #2877ce",
-"gL c #292929",
-"#Y c #29323c",
-"hu c #293744",
-"fK c #293a4d",
-"jP c #2a2a2a",
-"#w c #2a323b",
-"bg c #2a3540",
-"dF c #2a3f55",
-"jn c #2b2b2b",
-"a6 c #2b3641",
-"jY c #2c2c2c",
-"h5 c #2c3b47",
-"hp c #2c3c4a",
-"gp c #2c3c4d",
-"cx c #2c445e",
-"bU c #2d2d2d",
-"h# c #2d3e4c",
-"dS c #2d435b",
-"e5 c #2e2e2e",
-"cG c #2e4762",
-"jF c #2f2f2f",
-"aG c #2f3b48",
-"gU c #2f3f4e",
-"ck c #2f4966",
-"j0 c #303030",
-"a0 c #303d4a",
-"he c #304251",
-"cQ c #307ace",
-"e4 c #313131",
-"ew c #31465d",
-"dW c #314862",
-"ce c #314b68",
-"jm c #323232",
-"bm c #323f4d",
-"k. c #333333",
-"e3 c #343434",
-"hi c #344757",
-"eT c #344b64",
-"b8 c #34506f",
-"dj c #347fd1",
-"bX c #353535",
-"f9 c #35485c",
-"ac c #363636",
-"#V c #36434f",
-"fv c #364c64",
-"dV c #36506d",
-"c2 c #373737",
-"ev c #37506a",
-"bI c #383838",
-"bw c #384655",
-"h4 c #384b5a",
-"hk c #384c5d",
-"ea c #393939",
-"bh c #394857",
-"gX c #394d5f",
-"#e c #3981d2",
-"e6 c #3a3a3a",
-"eS c #3a546f",
-"em c #3a81d2",
-"#F c #3b3b3b",
-"eQ c #3b5571",
-"dT c #3b5776",
-"cI c #3b5c7f",
-"gJ c #3c3c3c",
-"hX c #3c5060",
-"fi c #3c546f",
-"gG c #3d3d3d",
-"jv c #3e3e3e",
-"az c #3e4e5e",
-"fL c #3e5772",
-"bK c #3f3f3f",
-"gD c #3f576f",
-"fJ c #3f5874",
-"d2 c #3f86d5",
-"jx c #404040",
-"#8 c #404e5d",
-"bv c #405161",
-"cf c #406389",
-"jL c #414141",
-"iG c #415561",
-"im c #415663",
-"gz c #415971",
-"et c #415d7c",
-"cz c #41658c",
-"f# c #418ad7",
-"jT c #424242",
-"gy c #425b74",
-"fs c #425d7a",
-"#K c #4288d4",
-"jQ c #434343",
-"eX c #438cda",
-"j8 c #444444",
-".L c #44449a",
-"eZ c #454545",
-"#s c #455362",
-"fx c #45617f",
-"cK c #456b94",
-"aP c #458cd5",
-"ab c #464646",
-".n c #46469f",
-"aH c #46586a",
-"gV c #465f74",
-"d0 c #46678c",
-"c9 c #474747",
-"aF c #47596c",
-"a3 c #475a6d",
-"ex c #476687",
-"jU c #484848",
-"by c #485b6e",
-"gq c #48627d",
-"dI c #486b91",
-"cC c #48709b",
-"js c #494949",
-"#2 c #495a6b",
-"ih c #49606f",
-"hm c #49637a",
-"gk c #49647f",
-"j7 c #4a4a4a",
-"dt c #4a6e94",
-"ak c #4a8dd7",
-"b1 c #4a90db",
-"c1 c #4b4b4b",
-"bx c #4b5f72",
-"fr c #4b698a",
-"dG c #4b6e95",
-"co c #4b75a2",
-"fW c #4b91db",
-"bD c #4c4c4c",
-"hc c #4c687f",
-"j6 c #4d4d4d",
-"#Q c #4d5f71",
-"ik c #4d6676",
-"hH c #4e4e4e",
-"#0 c #4e5f72",
-"aD c #4e6277",
-"b. c #4e6377",
-"gN c #4e91dc",
-"c0 c #4f4f4f",
-"bj c #4f6378",
-"dZ c #4f759e",
-"cD c #4f7aa9",
-"hN c #4f8dcd",
-"kd c #505050",
-"#S c #506275",
-"#6 c #506376",
-"ge c #506e8c",
-"af c #515151",
-"b# c #51667b",
-"dk c #5195df",
-"cT c #525252",
-".c c #525280",
-"bq c #52677d",
-"iH c #526b79",
-"fj c #527397",
-"eW c #52769d",
-"dy c #527aa5",
-"hJ c #535353",
-"#x c #536476",
-"eG c #53789f",
-"jM c #545454",
-"#r c #546577",
-"bz c #546a80",
-"dM c #547ca8",
-"fP c #5499e2",
-"jp c #555555",
-"iK c #556f7e",
-"bM c #565656",
-"fB c #56799f",
-"dC c #567fab",
-"gE c #569be2",
-"cU c #575757",
-"h7 c #57748b",
-"gc c #577797",
-"fN c #577ba1",
-"dx c #5780ad",
-"cg c #5787bb",
-"i4 c #585858",
-"iF c #587483",
-"hy c #587792",
-"g2 c #587893",
-"fy c #587ca3",
-"eA c #587ea7",
-"jW c #595959",
-"bu c #597087",
-"ia c #5984b2",
-"ae c #5a5a5a",
-"#t c #5a6c7f",
-"bd c #5a7189",
-"ij c #5a7789",
-"eI c #5a81ab",
-"bR c #5b5b5b",
-"ch c #5b8dc3",
-"en c #5b9be1",
-"ke c #5c5c5c",
-"cP c #5c8fc5",
-"j5 c #5d5d5d",
-"iN c #5d7fa0",
-"gl c #5d80a3",
-"fp c #5d83ac",
-"cl c #5d8fc6",
-"b2 c #5d9de6",
-"c8 c #5e5e5e",
-"hh c #5e7f9c",
-"hn c #5e809d",
-"i3 c #5f5f5f",
-"#1 c #5f758c",
-"a8 c #5f7890",
-"g7 c #5f819e",
-"cJ c #5f93cc",
-"jz c #606060",
-"ct c #6094cd",
-"bO c #616161",
-"eN c #618cb9",
-"jH c #626262",
-"iW c #627c8d",
-"hd c #6285a3",
-"ey c #628dbb",
-"dO c #6290c4",
-"ca c #6297d1",
-"jI c #636363",
-"eM c #638fbd",
-"jN c #646464",
-"fH c #648db9",
-"eE c #648fbe",
-"cb c #649ad5",
-"hA c #64a8e2",
-"jw c #656565",
-"#k c #65798f",
-"fF c #658eba",
-"fA c #658fbb",
-"fa c #65a4e7",
-"b3 c #65a6e8",
-"jX c #666666",
-"hW c #6688a3",
-"gh c #668cb2",
-"aI c #6696cb",
-"dN c #6697cc",
-"bA c #6699ce",
-"cu c #669edb",
-"#C c #676767",
-"f3 c #678db4",
-"dl c #67a6eb",
-"kc c #686868",
-"cS c #696969",
-"dK c #699bd2",
-"cN c #69a2e0",
-"cy c #69a3e1",
-"fX c #69a6e8",
-"jD c #6a6a6a",
-"av c #6a84a1",
-"ds c #6a9cd3",
-"dL c #6a9cd4",
-"jt c #6b6b6b",
-"fo c #6b97c6",
-"cE c #6ba5e4",
-"jS c #6c6c6c",
-"aV c #6c88a4",
-"ir c #6c8ea4",
-"il c #6c8fa5",
-"eD c #6c9bce",
-"dB c #6c9ed7",
-"dq c #6c9fd8",
-"cM c #6ca7e7",
-"cp c #6ca8e8",
-"eo c #6cabed",
-"i2 c #6d6d6d",
-"#T c #6d869f",
-"#W c #6d87a0",
-"gY c #6d94b5",
-"aa c #6d9bcb",
-"eB c #6d9dd0",
-"dw c #6da0d9",
-"dD c #6da1da",
-"b4 c #6dacee",
-"h9 c #6dafe2",
-"i6 c #6e6e6e",
-"bt c #6e8aa7",
-"fM c #6e9bcb",
-"dP c #6ea3dc",
-"b5 c #6eabee",
-"jd c #707070",
-"ix c #7088a2",
-"hx c #7098ba",
-"f7 c #7099c3",
-"dv c #70a5df",
-"b6 c #70adef",
-"iy c #70aff1",
-"dm c #70aff2",
-"jE c #717171",
-"#m c #7188a0",
-"#u c #7189a1",
-"aY c #718eac",
-"gO c #71aced",
-"jq c #727272",
-"gb c #729cc6",
-"hO c #72afee",
-"ib c #72afef",
-"e7 c #737373",
-"#y c #738ba4",
-"#A c #739eca",
-".j c #747474",
-"#9 c #748fab",
-"hs c #749ec1",
-"f6 c #749fca",
-".i c #757575",
-"#q c #758da6",
-"a5 c #7593b1",
-"bo c #7594b2",
-"ii c #759bb3",
-"fb c #75b3f4",
-"ep c #75b4f3",
-"is c #75b8e2",
-"ag c #767676",
-"fz c #76a6da",
-"ez c #76a9e0",
-"dX c #76adeb",
-".h c #777777",
-".m c #777794",
-"iX c #77a6b3",
-"dn c #77b1f4",
-"gK c #787878",
-"#4 c #7894b0",
-"fG c #78a9dd",
-"j# c #797979",
-"bV c #7a7a7a",
-"do c #7ab4f4",
-"jA c #7b7b7b",
-"io c #7ba3bc",
-"dp c #7bb5f5",
-".k c #7c7c7c",
-"bc c #7c9cbd",
-"gi c #7caad8",
-"aQ c #7cb0e7",
-"fY c #7cb8f9",
-"iM c #7cbee2",
-"j1 c #7d7d7d",
-"aX c #7d9ebf",
-"fm c #7db0e7",
-"j4 c #7e7e7e",
-".8 c #7ea5ce",
-"#D c #7f7f7f",
-"hv c #7facd3",
-"gn c #7faedd",
-"eb c #808080",
-"er c #80bdf9",
-"j3 c #818181",
-"hz c #81afd6",
-"gu c #81b0e0",
-"eq c #81bbf9",
-"fc c #81bbfc",
-"#b c #828282",
-"iE c #82aac0",
-"i5 c #838383",
-"ha c #83b1d9",
-"es c #83bcf9",
-"ad c #848484",
-"go c #84b5e6",
-".v c #858585",
-"#p c #85a0bc",
-"bN c #868686",
-"hZ c #86b3d6",
-"fD c #86bcf6",
-"fO c #86bcf7",
-"gP c #86c1ff",
-"di c #878787",
-"ft c #87bdf8",
-"bH c #888888",
-"iT c #88cfe2",
-"jZ c #898989",
-"#z c #89a5c3",
-"g. c #89bbee",
-"fg c #89c0fc",
-"fd c #89c2fd",
-"hP c #89c3ff",
-"jb c #8a8a8a",
-"#o c #8aa6c4",
-"jc c #8b8b8b",
-".S c #8baccf",
-"iI c #8bb6ce",
-"al c #8bb9e8",
-"hj c #8bbde7",
-"gw c #8bbef2",
-"ff c #8bc3ff",
-"fe c #8bc4ff",
-"fZ c #8bc6ff",
-"ec c #8c8c8c",
-"gv c #8cbff3",
-"jO c #8d8d8d",
-"a# c #8dadce",
-"ic c #8dc7ff",
-"#H c #8e8e8e",
-"a. c #8eaed0",
-"#L c #8ebae8",
-"hY c #8ebee3",
-"g4 c #8ec1ec",
-"iO c #8ecbff",
-"ju c #8f8f8f",
-"bi c #8fb5da",
-"h6 c #8fc0e5",
-"f5 c #8fc4f9",
-"jf c #909090",
-"bl c #90b6dc",
-"i1 c #90dfe2",
-"bC c #919191",
-"aB c #91b5dc",
-"aZ c #91b7dd",
-"hV c #91c2e8",
-"gf c #91c6fc",
-"gg c #91c7fd",
-"f0 c #91c8ff",
-"i7 c #929292",
-"gA c #92c8fe",
-"iz c #92ccff",
-"iU c #939393",
-"a7 c #93b9e0",
-"f2 c #93c9ff",
-"gQ c #93ccff",
-"e8 c #949494",
-".y c #9494b0",
-"h1 c #94c6ec",
-"f1 c #94caff",
-"j9 c #959595",
-"#X c #95b7da",
-"cX c #969696",
-"ay c #96bbe3",
-"#f c #96bde8",
-"aR c #96c3ee",
-"gR c #96cfff",
-".J c #979797",
-"hQ c #97cfff",
-"fT c #989898",
-"#j c #98b6d7",
-"#l c #98b7d8",
-"iJ c #98c7e1",
-"g6 c #98cffd",
-"jj c #999999",
-"aS c #99c4ee",
-"h3 c #99ccf4",
-"gS c #99d0ff",
-".l c #9a9a9a",
-".b c #9a9aa4",
-"aw c #9ac1ea",
-"gT c #9ad1ff",
-"dg c #9b9b9b",
-".N c #9bbee8",
-"aq c #9bc1eb",
-"am c #9bc4ee",
-"eg c #9c9c9c",
-"au c #9cc3ed",
-"ao c #9cc5ee",
-"c5 c #9d9d9d",
-"aT c #9dc7ef",
-"hU c #9dd2fb",
-"hR c #9dd3ff",
-"dh c #9e9e9e",
-"#v c #9ebee0",
-".Z c #9ec3e8",
-"#M c #9ec3ed",
-"#N c #9ec5ed",
-"ap c #9ec5ef",
-"aU c #9ec7f0",
-"h2 c #9ed4fd",
-"id c #9ed6ff",
-"df c #9f9f9f",
-"an c #9fc5ee",
-"h0 c #9fd5fe",
-"aM c #a0a0a0",
-"hT c #a0d6ff",
-"jh c #a1a1a1",
-"hS c #a1d7ff",
-"ji c #a2a2a2",
-"#P c #a2c7ed",
-"i8 c #a3a3a3",
-"#O c #a3c8ed",
-"iA c #a3daff",
-"j. c #a4a4a4",
-"je c #a5a5a5",
-"#g c #a5c8ed",
-"ip c #a5dafb",
-"iv c #a6a6a6",
-".F c #a6bed4",
-"de c #a7a7a7",
-"#h c #a7c9ed",
-"if c #a7ddff",
-"ie c #a7deff",
-"eh c #a8a8a8",
-"#i c #a8caee",
-"iL c #a8dbf8",
-"ig c #a8deff",
-"iP c #a8e0ff",
-"iY c #a8e2e6",
-"hC c #a9a9a9",
-".0 c #a9caed",
-"#B c #aaaaaa",
-"fU c #ababab",
-".5 c #abc9e9",
-"iB c #abe3ff",
-"e2 c #acacac",
-".6 c #accaea",
-"jo c #adadad",
-".1 c #adcbed",
-".7 c #adccec",
-"iD c #ade2ff",
-"iC c #ade3ff",
-"fS c #aeaeae",
-".4 c #aecded",
-"db c #afafaf",
-".A c #afbbe7",
-".2 c #afccee",
-".3 c #afceee",
-"d6 c #b0b0b0",
-"iQ c #b0e9ff",
-"bG c #b1b1b1",
-"jg c #b2b2b2",
-"#E c #b3b3b3",
-".O c #b3d1ed",
-"gF c #b4b4b4",
-"cY c #b5b5b5",
-"iR c #b5ebff",
-"hM c #b6b6b6",
-"iS c #b6ecff",
-"d9 c #b7b7b7",
-".U c #b8b8b8",
-".u c #b9b9b9",
-"dd c #bababa",
-".P c #bad4ee",
-"bL c #bbbbbb",
-".Q c #bbd4ef",
-".R c #bbd5f0",
-"e9 c #bcbcbc",
-"c3 c #bdbdbd",
-"f. c #bebebe",
-"d8 c #bfbfbf",
-".o c #bfc2e8",
-"iZ c #bffdff",
-"iw c #c0c0c0",
-"iV c #c1c1c1",
-"i0 c #c1feff",
-"ei c #c2c2c2",
-"ej c #c3c3c3",
-"#a c #c4c4c4",
-"el c #c5c5c5",
-"d7 c #c6c6c6",
-".r c #c6cbda",
-"ek c #c7c7c7",
-"aN c #c8c8c8",
-"#G c #c9c9c9",
-"aL c #cacaca",
-"ai c #cbcbcb",
-".B c #cbddf2",
-"bZ c #cccccc",
-".C c #cce0f3",
-"dc c #cdcdcd",
-"ah c #cecece",
-"da c #cfcfcf",
-".E c #cfe1f3",
-".D c #cfe1f4",
-"#I c #d0d0d0",
-"cV c #d1d1d1",
-"fQ c #d2d2d2",
-"bB c #d3d3d3",
-"#c c #d4d4d4",
-"d# c #d5d5d5",
-"aK c #d6d6d6",
-"cZ c #d7d7d7",
-"c6 c #d8d8d8",
-"gH c #d9d9d9",
-".W c #dadada",
-"gM c #dbdbdb",
-"bQ c #dcdcdc",
-"e1 c #dddddd",
-"cR c #dedede",
-"d. c #dfdfdf",
-"bP c #e0e0e0",
-"i# c #e1e1e1",
-"bY c #e2e2e2",
-".K c #e3e3e3",
-"ee c #e4e4e4",
-"d3 c #e5e5e5",
-"ef c #e6e6e6",
-".p c #e6e9f6",
-"fV c #e7e7e7",
-"eY c #e8e8e8",
-".a c #e9e9e9",
-".q c #e9edf8",
-".V c #eaeaea",
-"## c #ebebeb",
-"Qt c #ececec",
-".w c #ededed",
-".x c #eeeeee",
-"#. c #efefef",
-".# c #f0f0f0",
-".9 c #f1f1f1",
-".I c #f2f2f2",
-".T c #f3f3f3",
-"ja c #f4f4f4",
-"i9 c #f5f5f5",
-"hB c #f6f6f6",
-".H c #f7f7f7",
-".G c #f8f8f8",
-"i. c #f9f9f9",
-"kg c #fafafa",
-"kf c #fbfbfb",
-".t c #fcfcfc",
-".s c #fdfdfd",
-"it c #fefefe",
-"iu c #ffffff",
-"#RQtQtQtQtQtQt#R",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"QtQtQtQtQtQtQtQt",
-"#RQtQtQtQtQtQt#R"};
diff --git a/tests/benchmarks/qimagereader/images/trolltech.gif b/tests/benchmarks/qimagereader/images/trolltech.gif
deleted file mode 100644
index f674369..0000000
Binary files a/tests/benchmarks/qimagereader/images/trolltech.gif and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/tst7.bmp b/tests/benchmarks/qimagereader/images/tst7.bmp
deleted file mode 100644
index 6d3ac92..0000000
Binary files a/tests/benchmarks/qimagereader/images/tst7.bmp and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/images/tst7.png b/tests/benchmarks/qimagereader/images/tst7.png
deleted file mode 100644
index 96efae4..0000000
Binary files a/tests/benchmarks/qimagereader/images/tst7.png and /dev/null differ
diff --git a/tests/benchmarks/qimagereader/qimagereader.pro b/tests/benchmarks/qimagereader/qimagereader.pro
deleted file mode 100644
index 276ac33..0000000
--- a/tests/benchmarks/qimagereader/qimagereader.pro
+++ /dev/null
@@ -1,27 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qimagereader
-
-SOURCES += tst_qimagereader.cpp
-
-!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
-!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
-!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
-!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
-QT += network
-
-wince*: {
-   addFiles.sources = images
-   addFiles.path = .
-
-   CONFIG(debug, debug|release):{
-   imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*d4.dll
-   }
-
-   CONFIG(release, debug|release):{
-   imageFormatsPlugins.sources = $$(QTDIR)/plugins/imageformats/*[^d]4.dll
-   }
-   imageFormatsPlugins.path = imageformats
-   DEPLOYMENT += addFiles imageFormatsPlugins
-}
-
diff --git a/tests/benchmarks/qimagereader/tst_qimagereader.cpp b/tests/benchmarks/qimagereader/tst_qimagereader.cpp
deleted file mode 100644
index 3f38d19..0000000
--- a/tests/benchmarks/qimagereader/tst_qimagereader.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QBuffer>
-#include <QDebug>
-#include <QFile>
-#include <QImage>
-#include <QImageReader>
-#include <QImageWriter>
-#include <QLabel>
-#include <QPixmap>
-#include <QSet>
-#include <QTcpSocket>
-#include <QTcpServer>
-#include <QTimer>
-
-typedef QMap<QString, QString> QStringMap;
-typedef QList<int> QIntList;
-Q_DECLARE_METATYPE(QImage)
-Q_DECLARE_METATYPE(QRect)
-Q_DECLARE_METATYPE(QSize)
-Q_DECLARE_METATYPE(QColor)
-Q_DECLARE_METATYPE(QStringMap)
-Q_DECLARE_METATYPE(QIntList)
-Q_DECLARE_METATYPE(QIODevice *)
-
-//TESTED_FILES=
-
-class tst_QImageReader : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QImageReader();
-    virtual ~tst_QImageReader();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void readImage_data();
-    void readImage();
-
-    void setScaledSize_data();
-    void setScaledSize();
-
-    void setClipRect_data();
-    void setClipRect();
-
-    void setScaledClipRect_data();
-    void setScaledClipRect();
-
-private:
-    QList< QPair<QString, QByteArray> > images; // filename, format
-};
-
-tst_QImageReader::tst_QImageReader()
-{
-    images << QPair<QString, QByteArray>(QLatin1String("colorful.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("font.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("crash-signed-char.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("4bpp-rle.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("tst7.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("16bpp.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("negativeheight.bmp"), QByteArray("bmp"));
-    images << QPair<QString, QByteArray>(QLatin1String("marble.xpm"), QByteArray("xpm"));
-    images << QPair<QString, QByteArray>(QLatin1String("kollada.png"), QByteArray("png"));
-    images << QPair<QString, QByteArray>(QLatin1String("teapot.ppm"), QByteArray("ppm"));
-    images << QPair<QString, QByteArray>(QLatin1String("runners.ppm"), QByteArray("ppm"));
-    images << QPair<QString, QByteArray>(QLatin1String("test.ppm"), QByteArray("ppm"));
-    images << QPair<QString, QByteArray>(QLatin1String("gnus.xbm"), QByteArray("xbm"));
-#if defined QTEST_HAVE_JPEG
-    images << QPair<QString, QByteArray>(QLatin1String("beavis.jpg"), QByteArray("jpeg"));
-    images << QPair<QString, QByteArray>(QLatin1String("YCbCr_cmyk.jpg"), QByteArray("jpeg"));
-    images << QPair<QString, QByteArray>(QLatin1String("YCbCr_rgb.jpg"), QByteArray("jpeg"));
-    images << QPair<QString, QByteArray>(QLatin1String("task210380.jpg"), QByteArray("jpeg"));
-#endif
-#if defined QTEST_HAVE_GIF
-    images << QPair<QString, QByteArray>(QLatin1String("earth.gif"), QByteArray("gif"));
-    images << QPair<QString, QByteArray>(QLatin1String("trolltech.gif"), QByteArray("gif"));
-#endif
-#if defined QTEST_HAVE_MNG
-    images << QPair<QString, QByteArray>(QLatin1String("ball.mng"), QByteArray("mng"));
-    images << QPair<QString, QByteArray>(QLatin1String("fire.mng"), QByteArray("mng"));
-#endif
-}
-
-tst_QImageReader::~tst_QImageReader()
-{
-}
-
-void tst_QImageReader::init()
-{
-}
-
-void tst_QImageReader::cleanup()
-{
-}
-
-void tst_QImageReader::readImage_data()
-{
-    QTest::addColumn<QString>("fileName");
-    QTest::addColumn<QByteArray>("format");
-
-    for (int i = 0; i < images.size(); ++i) {
-        const QString file = images[i].first;
-        const QByteArray format = images[i].second;
-        QTest::newRow(qPrintable(file)) << file << format;
-    }
-}
-
-void tst_QImageReader::readImage()
-{
-    QFETCH(QString, fileName);
-    QFETCH(QByteArray, format);
-
-    QBENCHMARK {
-        QImageReader io("images/" + fileName, format);
-        QImage image = io.read();
-        QVERIFY(!image.isNull());
-    }
-}
-
-void tst_QImageReader::setScaledSize_data()
-{
-    QTest::addColumn<QString>("fileName");
-    QTest::addColumn<QByteArray>("format");
-    QTest::addColumn<QSize>("newSize");
-
-    for (int i = 0; i < images.size(); ++i) {
-        const QString file = images[i].first;
-        const QByteArray format = images[i].second;
-        QSize size(200, 200);
-        if (file == QLatin1String("teapot"))
-            size = QSize(400, 400);
-        else if (file == QLatin1String("test.ppm"))
-            size = QSize(10, 10);
-        QTest::newRow(qPrintable(file)) << file << format << size;
-    }
-}
-
-void tst_QImageReader::setScaledSize()
-{
-    QFETCH(QString, fileName);
-    QFETCH(QSize, newSize);
-    QFETCH(QByteArray, format);
-
-    QBENCHMARK {
-        QImageReader reader("images/" + fileName, format);
-        reader.setScaledSize(newSize);
-        QImage image = reader.read();
-        QCOMPARE(image.size(), newSize);
-    }
-}
-
-void tst_QImageReader::setClipRect_data()
-{
-    QTest::addColumn<QString>("fileName");
-    QTest::addColumn<QByteArray>("format");
-    QTest::addColumn<QRect>("newRect");
-
-    for (int i = 0; i < images.size(); ++i) {
-        const QString file = images[i].first;
-        const QByteArray format = images[i].second;
-        QTest::newRow(qPrintable(file)) << file << format << QRect(0, 0, 50, 50);
-    }
-}
-
-void tst_QImageReader::setClipRect()
-{
-    QFETCH(QString, fileName);
-    QFETCH(QRect, newRect);
-    QFETCH(QByteArray, format);
-
-    QBENCHMARK {
-        QImageReader reader("images/" + fileName, format);
-        reader.setClipRect(newRect);
-        QImage image = reader.read();
-        QCOMPARE(image.rect(), newRect);
-    }
-}
-
-void tst_QImageReader::setScaledClipRect_data()
-{
-    setClipRect_data();
-}
-
-void tst_QImageReader::setScaledClipRect()
-{
-    QFETCH(QString, fileName);
-    QFETCH(QRect, newRect);
-    QFETCH(QByteArray, format);
-
-    QBENCHMARK {
-        QImageReader reader("images/" + fileName, format);
-        reader.setScaledSize(QSize(300, 300));
-        reader.setScaledClipRect(newRect);
-        QImage image = reader.read();
-        QCOMPARE(image.rect(), newRect);
-    }
-}
-
-QTEST_MAIN(tst_QImageReader)
-#include "tst_qimagereader.moc"
diff --git a/tests/benchmarks/qiodevice/main.cpp b/tests/benchmarks/qiodevice/main.cpp
deleted file mode 100644
index 4af697c..0000000
--- a/tests/benchmarks/qiodevice/main.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <QIODevice>
-#include <QFile>
-#include <QString>
-
-#include <qtest.h>
-
-
-class tst_qiodevice : public QObject
-{
-    Q_OBJECT
-private slots:
-    void read_old();
-    void read_old_data() { read_data(); }
-    //void read_new();
-    //void read_new_data() { read_data(); }
-private:
-    void read_data();
-};
-
-
-void tst_qiodevice::read_data()
-{
-    QTest::addColumn<qint64>("size");
-    QTest::newRow("10k")      << qint64(10 * 1024);
-    QTest::newRow("100k")     << qint64(100 * 1024);
-    QTest::newRow("1000k")    << qint64(1000 * 1024);
-    QTest::newRow("10000k")   << qint64(10000 * 1024);
-#ifndef Q_OS_SYMBIAN // Symbian devices don't (yet) have enough available RAM to run these
-    QTest::newRow("100000k")  << qint64(100000 * 1024);
-    QTest::newRow("1000000k") << qint64(1000000 * 1024);
-#endif
-}
-
-void tst_qiodevice::read_old()
-{
-    QFETCH(qint64, size);
-
-    QString name = "tmp" + QString::number(size);
-
-    {
-        QFile file(name);
-        file.open(QIODevice::WriteOnly);
-        file.seek(size);
-        file.write("x", 1);
-        file.close();
-    }
-
-    QBENCHMARK {
-        QFile file(name);
-        file.open(QIODevice::ReadOnly);
-        QByteArray ba;
-        qint64 s = size - 1024;
-        file.seek(512);
-        ba = file.read(s);  // crash happens during this read / assignment operation
-    }
-
-    {
-        QFile file(name);
-        file.remove();
-    }
-}
-
-
-QTEST_MAIN(tst_qiodevice)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qiodevice/qiodevice.pro b/tests/benchmarks/qiodevice/qiodevice.pro
deleted file mode 100755
index 749a4d6..0000000
--- a/tests/benchmarks/qiodevice/qiodevice.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qiodevice
-TARGET.EPOCHEAPSIZE = 0x100000 0x2000000
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qmatrix4x4/qmatrix4x4.pro b/tests/benchmarks/qmatrix4x4/qmatrix4x4.pro
deleted file mode 100644
index e82d9de..0000000
--- a/tests/benchmarks/qmatrix4x4/qmatrix4x4.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qmatrix4x4
-
-SOURCES += tst_qmatrix4x4.cpp
-
diff --git a/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp b/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp
deleted file mode 100644
index e962198..0000000
--- a/tests/benchmarks/qmatrix4x4/tst_qmatrix4x4.cpp
+++ /dev/null
@@ -1,672 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtOpenGL module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtTest/QtTest>
-#include <QtGui/qmatrix4x4.h>
-
-class tst_QMatrix4x4 : public QObject
-{
-    Q_OBJECT
-public:
-    tst_QMatrix4x4() {}
-    ~tst_QMatrix4x4() {}
-
-private slots:
-    void multiply_data();
-    void multiply();
-
-    void multiplyInPlace_data();
-    void multiplyInPlace();
-
-    void multiplyDirect_data();
-    void multiplyDirect();
-
-    void mapVector3D_data();
-    void mapVector3D();
-
-    void mapVector2D_data();
-    void mapVector2D();
-
-    void mapVectorDirect_data();
-    void mapVectorDirect();
-
-    void compareTranslate_data();
-    void compareTranslate();
-
-    void compareTranslateAfterScale_data();
-    void compareTranslateAfterScale();
-
-    void compareTranslateAfterRotate_data();
-    void compareTranslateAfterRotate();
-
-    void compareScale_data();
-    void compareScale();
-
-    void compareScaleAfterTranslate_data();
-    void compareScaleAfterTranslate();
-
-    void compareScaleAfterRotate_data();
-    void compareScaleAfterRotate();
-
-    void compareRotate_data();
-    void compareRotate();
-
-    void compareRotateAfterTranslate_data();
-    void compareRotateAfterTranslate();
-
-    void compareRotateAfterScale_data();
-    void compareRotateAfterScale();
-};
-
-static qreal const generalValues[16] =
-    {1.0f, 2.0f, 3.0f, 4.0f,
-     5.0f, 6.0f, 7.0f, 8.0f,
-     9.0f, 10.0f, 11.0f, 12.0f,
-     13.0f, 14.0f, 15.0f, 16.0f};
-
-void tst_QMatrix4x4::multiply_data()
-{
-    QTest::addColumn<QMatrix4x4>("m1");
-    QTest::addColumn<QMatrix4x4>("m2");
-
-    QTest::newRow("identity * identity")
-        << QMatrix4x4() << QMatrix4x4();
-    QTest::newRow("identity * general")
-        << QMatrix4x4() << QMatrix4x4(generalValues);
-    QTest::newRow("general * identity")
-        << QMatrix4x4(generalValues) << QMatrix4x4();
-    QTest::newRow("general * general")
-        << QMatrix4x4(generalValues) << QMatrix4x4(generalValues);
-}
-
-QMatrix4x4 mresult;
-
-void tst_QMatrix4x4::multiply()
-{
-    QFETCH(QMatrix4x4, m1);
-    QFETCH(QMatrix4x4, m2);
-
-    QMatrix4x4 m3;
-
-    QBENCHMARK {
-        m3 = m1 * m2;
-    }
-
-    // Force the result to be stored so the compiler doesn't
-    // optimize away the contents of the benchmark loop.
-    mresult = m3;
-}
-
-void tst_QMatrix4x4::multiplyInPlace_data()
-{
-    multiply_data();
-}
-
-void tst_QMatrix4x4::multiplyInPlace()
-{
-    QFETCH(QMatrix4x4, m1);
-    QFETCH(QMatrix4x4, m2);
-
-    QMatrix4x4 m3;
-
-    QBENCHMARK {
-        m3 = m1;
-        m3 *= m2;
-    }
-
-    // Force the result to be stored so the compiler doesn't
-    // optimize away the contents of the benchmark loop.
-    mresult = m3;
-}
-
-// Use a direct naive multiplication algorithm.  This is used
-// to compare against the optimized routines to see if they are
-// actually faster than the naive implementation.
-void tst_QMatrix4x4::multiplyDirect_data()
-{
-    multiply_data();
-}
-void tst_QMatrix4x4::multiplyDirect()
-{
-    QFETCH(QMatrix4x4, m1);
-    QFETCH(QMatrix4x4, m2);
-
-    QMatrix4x4 m3;
-
-    const qreal *m1data = m1.constData();
-    const qreal *m2data = m2.constData();
-    qreal *m3data = m3.data();
-
-    QBENCHMARK {
-        for (int row = 0; row < 4; ++row) {
-            for (int col = 0; col < 4; ++col) {
-                m3data[col * 4 + row] = 0.0f;
-                for (int j = 0; j < 4; ++j) {
-                    m3data[col * 4 + row] +=
-                        m1data[j * 4 + row] * m2data[col * 4 + j];
-                }
-            }
-        }
-    }
-}
-
-QVector3D vresult;
-
-void tst_QMatrix4x4::mapVector3D_data()
-{
-    QTest::addColumn<QMatrix4x4>("m1");
-
-    QTest::newRow("identity") << QMatrix4x4();
-    QTest::newRow("general") << QMatrix4x4(generalValues);
-
-    QMatrix4x4 t1;
-    t1.translate(-100.5f, 64.0f, 75.25f);
-    QTest::newRow("translate3D") << t1;
-
-    QMatrix4x4 t2;
-    t2.translate(-100.5f, 64.0f);
-    QTest::newRow("translate2D") << t2;
-
-    QMatrix4x4 s1;
-    s1.scale(-100.5f, 64.0f, 75.25f);
-    QTest::newRow("scale3D") << s1;
-
-    QMatrix4x4 s2;
-    s2.scale(-100.5f, 64.0f);
-    QTest::newRow("scale2D") << s2;
-}
-void tst_QMatrix4x4::mapVector3D()
-{
-    QFETCH(QMatrix4x4, m1);
-
-    QVector3D v(10.5f, -2.0f, 3.0f);
-    QVector3D result;
-
-    m1.optimize();
-
-    QBENCHMARK {
-        result = m1 * v;
-    }
-
-    // Force the result to be stored so the compiler doesn't
-    // optimize away the contents of the benchmark loop.
-    vresult = result;
-}
-
-QPointF vresult2;
-
-void tst_QMatrix4x4::mapVector2D_data()
-{
-    mapVector3D_data();
-}
-void tst_QMatrix4x4::mapVector2D()
-{
-    QFETCH(QMatrix4x4, m1);
-
-    QPointF v(10.5f, -2.0f);
-    QPointF result;
-
-    m1.optimize();
-
-    QBENCHMARK {
-        result = m1 * v;
-    }
-
-    // Force the result to be stored so the compiler doesn't
-    // optimize away the contents of the benchmark loop.
-    vresult2 = result;
-}
-
-// Use a direct naive multiplication algorithm.  This is used
-// to compare against the optimized routines to see if they are
-// actually faster than the naive implementation.
-void tst_QMatrix4x4::mapVectorDirect_data()
-{
-    mapVector3D_data();
-}
-void tst_QMatrix4x4::mapVectorDirect()
-{
-    QFETCH(QMatrix4x4, m1);
-
-    const qreal *m1data = m1.constData();
-    qreal v[4] = {10.5f, -2.0f, 3.0f, 1.0f};
-    qreal result[4];
-
-    QBENCHMARK {
-        for (int row = 0; row < 4; ++row) {
-            result[row] = 0.0f;
-            for (int col = 0; col < 4; ++col) {
-                result[row] += m1data[col * 4 + row] * v[col];
-            }
-        }
-        result[0] /= result[3];
-        result[1] /= result[3];
-        result[2] /= result[3];
-    }
-}
-
-// Compare the performance of QTransform::translate() to
-// QMatrix4x4::translate().
-void tst_QMatrix4x4::compareTranslate_data()
-{
-    QTest::addColumn<bool>("useQTransform");
-    QTest::addColumn<QVector3D>("translation");
-
-    QTest::newRow("QTransform::translate(0, 0, 0)")
-        << true << QVector3D(0, 0, 0);
-    QTest::newRow("QMatrix4x4::translate(0, 0, 0)")
-        << false << QVector3D(0, 0, 0);
-
-    QTest::newRow("QTransform::translate(1, 2, 0)")
-        << true << QVector3D(1, 2, 0);
-    QTest::newRow("QMatrix4x4::translate(1, 2, 0)")
-        << false << QVector3D(1, 2, 0);
-
-    QTest::newRow("QTransform::translate(1, 2, 4)")
-        << true << QVector3D(1, 2, 4);
-    QTest::newRow("QMatrix4x4::translate(1, 2, 4)")
-        << false << QVector3D(1, 2, 4);
-}
-void tst_QMatrix4x4::compareTranslate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, translation);
-
-    qreal x = translation.x();
-    qreal y = translation.y();
-    qreal z = translation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        QBENCHMARK {
-            t.translate(x, y);
-        }
-    } else if (z == 0.0f) {
-        QMatrix4x4 m;
-        QBENCHMARK {
-            m.translate(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        QBENCHMARK {
-            m.translate(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::translate() to
-// QMatrix4x4::translate() after priming the matrix with a scale().
-void tst_QMatrix4x4::compareTranslateAfterScale_data()
-{
-    compareTranslate_data();
-}
-void tst_QMatrix4x4::compareTranslateAfterScale()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, translation);
-
-    qreal x = translation.x();
-    qreal y = translation.y();
-    qreal z = translation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.scale(3, 4);
-        QBENCHMARK {
-            t.translate(x, y);
-        }
-    } else if (z == 0.0f) {
-        QMatrix4x4 m;
-        m.scale(3, 4);
-        QBENCHMARK {
-            m.translate(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        m.scale(3, 4, 5);
-        QBENCHMARK {
-            m.translate(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::translate() to
-// QMatrix4x4::translate() after priming the matrix with a rotate().
-void tst_QMatrix4x4::compareTranslateAfterRotate_data()
-{
-    compareTranslate_data();
-}
-void tst_QMatrix4x4::compareTranslateAfterRotate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, translation);
-
-    qreal x = translation.x();
-    qreal y = translation.y();
-    qreal z = translation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.rotate(45.0f);
-        QBENCHMARK {
-            t.translate(x, y);
-        }
-    } else if (z == 0.0f) {
-        QMatrix4x4 m;
-        m.rotate(45.0f, 0, 0, 1);
-        QBENCHMARK {
-            m.translate(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        m.rotate(45.0f, 0, 0, 1);
-        QBENCHMARK {
-            m.translate(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::scale() to
-// QMatrix4x4::scale().
-void tst_QMatrix4x4::compareScale_data()
-{
-    QTest::addColumn<bool>("useQTransform");
-    QTest::addColumn<QVector3D>("scale");
-
-    QTest::newRow("QTransform::scale(1, 1, 1)")
-        << true << QVector3D(1, 1, 1);
-    QTest::newRow("QMatrix4x4::scale(1, 1, 1)")
-        << false << QVector3D(1, 1, 1);
-
-    QTest::newRow("QTransform::scale(3, 6, 1)")
-        << true << QVector3D(3, 6, 1);
-    QTest::newRow("QMatrix4x4::scale(3, 6, 1)")
-        << false << QVector3D(3, 6, 1);
-
-    QTest::newRow("QTransform::scale(3, 6, 4)")
-        << true << QVector3D(3, 6, 4);
-    QTest::newRow("QMatrix4x4::scale(3, 6, 4)")
-        << false << QVector3D(3, 6, 4);
-}
-void tst_QMatrix4x4::compareScale()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, scale);
-
-    qreal x = scale.x();
-    qreal y = scale.y();
-    qreal z = scale.z();
-
-    if (useQTransform) {
-        QTransform t;
-        QBENCHMARK {
-            t.scale(x, y);
-        }
-    } else if (z == 1.0f) {
-        QMatrix4x4 m;
-        QBENCHMARK {
-            m.scale(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        QBENCHMARK {
-            m.scale(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::scale() to
-// QMatrix4x4::scale() after priming the matrix with a translate().
-void tst_QMatrix4x4::compareScaleAfterTranslate_data()
-{
-    compareScale_data();
-}
-void tst_QMatrix4x4::compareScaleAfterTranslate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, scale);
-
-    qreal x = scale.x();
-    qreal y = scale.y();
-    qreal z = scale.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.translate(20, 34);
-        QBENCHMARK {
-            t.scale(x, y);
-        }
-    } else if (z == 1.0f) {
-        QMatrix4x4 m;
-        m.translate(20, 34);
-        QBENCHMARK {
-            m.scale(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        m.translate(20, 34, 42);
-        QBENCHMARK {
-            m.scale(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::scale() to
-// QMatrix4x4::scale() after priming the matrix with a rotate().
-void tst_QMatrix4x4::compareScaleAfterRotate_data()
-{
-    compareScale_data();
-}
-void tst_QMatrix4x4::compareScaleAfterRotate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(QVector3D, scale);
-
-    qreal x = scale.x();
-    qreal y = scale.y();
-    qreal z = scale.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.rotate(45.0f);
-        QBENCHMARK {
-            t.scale(x, y);
-        }
-    } else if (z == 1.0f) {
-        QMatrix4x4 m;
-        m.rotate(45.0f, 0, 0, 1);
-        QBENCHMARK {
-            m.scale(x, y);
-        }
-    } else {
-        QMatrix4x4 m;
-        m.rotate(45.0f, 0, 0, 1);
-        QBENCHMARK {
-            m.scale(x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::rotate() to
-// QMatrix4x4::rotate().
-void tst_QMatrix4x4::compareRotate_data()
-{
-    QTest::addColumn<bool>("useQTransform");
-    QTest::addColumn<qreal>("angle");
-    QTest::addColumn<QVector3D>("rotation");
-    QTest::addColumn<int>("axis");
-
-    QTest::newRow("QTransform::rotate(0, ZAxis)")
-        << true << qreal(0.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-    QTest::newRow("QMatrix4x4::rotate(0, ZAxis)")
-        << false << qreal(0.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-
-    QTest::newRow("QTransform::rotate(45, ZAxis)")
-        << true << qreal(45.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-    QTest::newRow("QMatrix4x4::rotate(45, ZAxis)")
-        << false << qreal(45.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-
-    QTest::newRow("QTransform::rotate(90, ZAxis)")
-        << true << qreal(90.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-    QTest::newRow("QMatrix4x4::rotate(90, ZAxis)")
-        << false << qreal(90.0f) << QVector3D(0, 0, 1) << int(Qt::ZAxis);
-
-    QTest::newRow("QTransform::rotate(0, YAxis)")
-        << true << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-    QTest::newRow("QMatrix4x4::rotate(0, YAxis)")
-        << false << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-
-    QTest::newRow("QTransform::rotate(45, YAxis)")
-        << true << qreal(45.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-    QTest::newRow("QMatrix4x4::rotate(45, YAxis)")
-        << false << qreal(45.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-
-    QTest::newRow("QTransform::rotate(90, YAxis)")
-        << true << qreal(90.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-    QTest::newRow("QMatrix4x4::rotate(90, YAxis)")
-        << false << qreal(90.0f) << QVector3D(0, 1, 0) << int(Qt::YAxis);
-
-    QTest::newRow("QTransform::rotate(0, XAxis)")
-        << true << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::XAxis);
-    QTest::newRow("QMatrix4x4::rotate(0, XAxis)")
-        << false << qreal(0.0f) << QVector3D(0, 1, 0) << int(Qt::XAxis);
-
-    QTest::newRow("QTransform::rotate(45, XAxis)")
-        << true << qreal(45.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
-    QTest::newRow("QMatrix4x4::rotate(45, XAxis)")
-        << false << qreal(45.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
-
-    QTest::newRow("QTransform::rotate(90, XAxis)")
-        << true << qreal(90.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
-    QTest::newRow("QMatrix4x4::rotate(90, XAxis)")
-        << false << qreal(90.0f) << QVector3D(1, 0, 0) << int(Qt::XAxis);
-}
-void tst_QMatrix4x4::compareRotate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(qreal, angle);
-    QFETCH(QVector3D, rotation);
-    QFETCH(int, axis);
-
-    qreal x = rotation.x();
-    qreal y = rotation.y();
-    qreal z = rotation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        QBENCHMARK {
-            t.rotate(angle, Qt::Axis(axis));
-        }
-    } else {
-        QMatrix4x4 m;
-        QBENCHMARK {
-            m.rotate(angle, x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::rotate() to
-// QMatrix4x4::rotate() after priming the matrix with a translate().
-void tst_QMatrix4x4::compareRotateAfterTranslate_data()
-{
-    compareRotate_data();
-}
-void tst_QMatrix4x4::compareRotateAfterTranslate()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(qreal, angle);
-    QFETCH(QVector3D, rotation);
-    QFETCH(int, axis);
-
-    qreal x = rotation.x();
-    qreal y = rotation.y();
-    qreal z = rotation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.translate(3, 4);
-        QBENCHMARK {
-            t.rotate(angle, Qt::Axis(axis));
-        }
-    } else {
-        QMatrix4x4 m;
-        m.translate(3, 4, 5);
-        QBENCHMARK {
-            m.rotate(angle, x, y, z);
-        }
-    }
-}
-
-// Compare the performance of QTransform::rotate() to
-// QMatrix4x4::rotate() after priming the matrix with a scale().
-void tst_QMatrix4x4::compareRotateAfterScale_data()
-{
-    compareRotate_data();
-}
-void tst_QMatrix4x4::compareRotateAfterScale()
-{
-    QFETCH(bool, useQTransform);
-    QFETCH(qreal, angle);
-    QFETCH(QVector3D, rotation);
-    QFETCH(int, axis);
-
-    qreal x = rotation.x();
-    qreal y = rotation.y();
-    qreal z = rotation.z();
-
-    if (useQTransform) {
-        QTransform t;
-        t.scale(3, 4);
-        QBENCHMARK {
-            t.rotate(angle, Qt::Axis(axis));
-        }
-    } else {
-        QMatrix4x4 m;
-        m.scale(3, 4, 5);
-        QBENCHMARK {
-            m.rotate(angle, x, y, z);
-        }
-    }
-}
-
-QTEST_MAIN(tst_QMatrix4x4)
-
-#include "tst_qmatrix4x4.moc"
diff --git a/tests/benchmarks/qmetaobject/main.cpp b/tests/benchmarks/qmetaobject/main.cpp
deleted file mode 100644
index c375a16..0000000
--- a/tests/benchmarks/qmetaobject/main.cpp
+++ /dev/null
@@ -1,159 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtCore>
-#include <QtGui>
-#include <qtest.h>
-
-class tst_qmetaobject: public QObject
-{
-Q_OBJECT
-private slots:
-    void initTestCase();
-    void cleanupTestCase();
-
-    void indexOfProperty_data();
-    void indexOfProperty();
-    void indexOfMethod_data();
-    void indexOfMethod();
-    void indexOfSignal_data();
-    void indexOfSignal();
-    void indexOfSlot_data();
-    void indexOfSlot();
-};
-
-void tst_qmetaobject::initTestCase()
-{
-}
-
-void tst_qmetaobject::cleanupTestCase()
-{
-}
-
-void tst_qmetaobject::indexOfProperty_data()
-{
-    QTest::addColumn<QByteArray>("name");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->propertyCount(); ++i) {
-        QMetaProperty prop = mo->property(i);
-        QTest::newRow(prop.name()) << QByteArray(prop.name());
-    }
-}
-
-void tst_qmetaobject::indexOfProperty()
-{
-    QFETCH(QByteArray, name);
-    const char *p = name.constData();
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    QBENCHMARK {
-        (void)mo->indexOfProperty(p);
-    }
-}
-
-void tst_qmetaobject::indexOfMethod_data()
-{
-    QTest::addColumn<QByteArray>("method");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->methodCount(); ++i) {
-        QMetaMethod method = mo->method(i);
-        QByteArray sig = method.signature();
-        QTest::newRow(sig) << sig;
-    }
-}
-
-void tst_qmetaobject::indexOfMethod()
-{
-    QFETCH(QByteArray, method);
-    const char *p = method.constData();
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    QBENCHMARK {
-        (void)mo->indexOfMethod(p);
-    }
-}
-
-void tst_qmetaobject::indexOfSignal_data()
-{
-    QTest::addColumn<QByteArray>("signal");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->methodCount(); ++i) {
-        QMetaMethod method = mo->method(i);
-        if (method.methodType() != QMetaMethod::Signal)
-            continue;
-        QByteArray sig = method.signature();
-        QTest::newRow(sig) << sig;
-    }
-}
-
-void tst_qmetaobject::indexOfSignal()
-{
-    QFETCH(QByteArray, signal);
-    const char *p = signal.constData();
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    QBENCHMARK {
-        (void)mo->indexOfSignal(p);
-    }
-}
-
-void tst_qmetaobject::indexOfSlot_data()
-{
-    QTest::addColumn<QByteArray>("slot");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->methodCount(); ++i) {
-        QMetaMethod method = mo->method(i);
-        if (method.methodType() != QMetaMethod::Slot)
-            continue;
-        QByteArray sig = method.signature();
-        QTest::newRow(sig) << sig;
-    }
-}
-
-void tst_qmetaobject::indexOfSlot()
-{
-    QFETCH(QByteArray, slot);
-    const char *p = slot.constData();
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    QBENCHMARK {
-        (void)mo->indexOfSlot(p);
-    }
-}
-
-QTEST_MAIN(tst_qmetaobject)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qmetaobject/qmetaobject.pro b/tests/benchmarks/qmetaobject/qmetaobject.pro
deleted file mode 100644
index 78300f6..0000000
--- a/tests/benchmarks/qmetaobject/qmetaobject.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qmetaobject
-
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qnetworkreply/qnetworkreply.pro b/tests/benchmarks/qnetworkreply/qnetworkreply.pro
deleted file mode 100644
index 1e67d81..0000000
--- a/tests/benchmarks/qnetworkreply/qnetworkreply.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qnetworkreply
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-QT += network
-
-CONFIG += release
-
-# Input
-SOURCES += tst_qnetworkreply.cpp
diff --git a/tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp
deleted file mode 100644
index a92359f..0000000
--- a/tests/benchmarks/qnetworkreply/tst_qnetworkreply.cpp
+++ /dev/null
@@ -1,656 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-// This file contains benchmarks for QNetworkReply functions.
-
-#include <QDebug>
-#include <qtest.h>
-#include <QtTest/QtTest>
-#include <QtNetwork/qnetworkreply.h>
-#include <QtNetwork/qnetworkrequest.h>
-#include <QtNetwork/qnetworkaccessmanager.h>
-#include <QtNetwork/qtcpsocket.h>
-#include <QtNetwork/qtcpserver.h>
-#include "../../auto/network-settings.h"
-
-
-class TimedSender: public QThread
-{
-    Q_OBJECT
-    qint64 totalBytes;
-    QSemaphore ready;
-    QByteArray dataToSend;
-    QTcpSocket *client;
-    int timeout;
-    int port;
-public:
-    int transferRate;
-    TimedSender(int ms)
-        : totalBytes(0), timeout(ms), port(-1), transferRate(-1)
-    {
-        dataToSend = QByteArray(16*1024, '@');
-        start();
-        ready.acquire();
-    }
-
-    inline int serverPort() const { return port; }
-
-private slots:
-    void writeMore()
-    {
-        while (client->bytesToWrite() < 128 * 1024) {
-            writePacket(dataToSend);
-        }
-    }
-
-protected:
-    void run()
-    {
-        QTcpServer server;
-        server.listen();
-        port = server.serverPort();
-        ready.release();
-
-        server.waitForNewConnection(-1);
-        client = server.nextPendingConnection();
-
-        writeMore();
-        connect(client, SIGNAL(bytesWritten(qint64)), SLOT(writeMore()), Qt::DirectConnection);
-
-        QEventLoop eventLoop;
-        QTimer::singleShot(timeout, &eventLoop, SLOT(quit()));
-
-        QTime timer;
-        timer.start();
-        eventLoop.exec();
-        disconnect(client, SIGNAL(bytesWritten(qint64)), this, 0);
-
-        // wait for the connection to shut down
-        client->disconnectFromHost();
-        if (!client->waitForDisconnected(10000))
-            return;
-
-        transferRate = totalBytes * 1000 / timer.elapsed();
-        qDebug() << "TimedSender::run" << "receive rate:" << (transferRate / 1024) << "kB/s in"
-                 << timer.elapsed() << "ms";
-    }
-
-    void writePacket(const QByteArray &array)
-    {
-        client->write(array);
-        totalBytes += array.size();
-    }
-};
-
-
-class QNetworkReplyPtr: public QSharedPointer<QNetworkReply>
-{
-public:
-    inline QNetworkReplyPtr(QNetworkReply *ptr = 0)
-        : QSharedPointer<QNetworkReply>(ptr)
-    { }
-
-    inline operator QNetworkReply *() const { return data(); }
-};
-
-
-class DataReader: public QObject
-{
-    Q_OBJECT
-public:
-    qint64 totalBytes;
-    QByteArray data;
-    QIODevice *device;
-    bool accumulate;
-    DataReader(QIODevice *dev, bool acc = true) : totalBytes(0), device(dev), accumulate(acc)
-    {
-        connect(device, SIGNAL(readyRead()), SLOT(doRead()));
-    }
-
-public slots:
-    void doRead()
-    {
-        QByteArray buffer;
-        buffer.resize(device->bytesAvailable());
-        qint64 bytesRead = device->read(buffer.data(), device->bytesAvailable());
-        if (bytesRead == -1) {
-            QTestEventLoop::instance().exitLoop();
-            return;
-        }
-        buffer.truncate(bytesRead);
-        totalBytes += bytesRead;
-
-        if (accumulate)
-            data += buffer;
-    }
-};
-
-class ThreadedDataReader: public QThread
-{
-    Q_OBJECT
-    // used to make the constructor only return after the tcp server started listening
-    QSemaphore ready;
-    QTcpSocket *client;
-    int timeout;
-    int port;
-public:
-    qint64 transferRate;
-    ThreadedDataReader()
-        : port(-1), transferRate(-1)
-    {
-        start();
-        ready.acquire();
-    }
-
-    inline int serverPort() const { return port; }
-
-protected:
-    void run()
-    {
-        QTcpServer server;
-        server.listen();
-        port = server.serverPort();
-        ready.release();
-
-        server.waitForNewConnection(-1);
-        client = server.nextPendingConnection();
-
-        QEventLoop eventLoop;
-        DataReader reader(client, false);
-        QObject::connect(client, SIGNAL(disconnected()), &eventLoop, SLOT(quit()));
-
-        QTime timer;
-        timer.start();
-        eventLoop.exec();
-        qint64 elapsed = timer.elapsed();
-
-        transferRate = reader.totalBytes * 1000 / elapsed;
-        qDebug() << "ThreadedDataReader::run" << "send rate:" << (transferRate / 1024) << "kB/s in" << elapsed << "msec";
-    }
-};
-
-class DataGenerator: public QIODevice
-{
-    Q_OBJECT
-    enum { Idle, Started, Stopped } state;
-public:
-    DataGenerator() : state(Idle)
-    { open(ReadOnly); }
-
-    virtual bool isSequential() const { return true; }
-    virtual qint64 bytesAvailable() const { return state == Started ? 1024*1024 : 0; }
-
-public slots:
-    void start() { state = Started; emit readyRead(); }
-    void stop() { state = Stopped; emit readyRead(); }
-
-protected:
-    virtual qint64 readData(char *data, qint64 maxlen)
-    {
-        if (state == Stopped)
-            return -1;          // EOF
-
-        // return as many bytes as are wanted
-        memset(data, '@', maxlen);
-        return maxlen;
-    }
-    virtual qint64 writeData(const char *, qint64)
-    { return -1; }
-};
-
-class ThreadedDataReaderHttpServer: public QThread
-{
-    Q_OBJECT
-    // used to make the constructor only return after the tcp server started listening
-    QSemaphore ready;
-    QTcpSocket *client;
-    int timeout;
-    int port;
-public:
-    qint64 transferRate;
-    ThreadedDataReaderHttpServer()
-        : port(-1), transferRate(-1)
-    {
-        start();
-        ready.acquire();
-    }
-
-    inline int serverPort() const { return port; }
-
-protected:
-    void run()
-    {
-        QTcpServer server;
-        server.listen();
-        port = server.serverPort();
-        ready.release();
-
-        QVERIFY(server.waitForNewConnection(10*1000));
-        client = server.nextPendingConnection();
-
-        // read lines until we read the empty line seperating HTTP request from HTTP request body
-        do {
-            if (client->canReadLine()) {
-                QString line = client->readLine();
-                if (line == "\n" || line == "\r\n")
-                    break; // empty line
-            }
-            if (!client->waitForReadyRead(10*1000)) {
-                client->close();
-                return;
-            }
-        } while (client->state() == QAbstractSocket::ConnectedState);
-
-        client->write("HTTP/1.0 200 OK\r\n");
-        client->write("Content-length: 0\r\n");
-        client->write("\r\n");
-        client->flush();
-
-        QCoreApplication::processEvents();
-
-        QEventLoop eventLoop;
-        DataReader reader(client, false);
-        QObject::connect(client, SIGNAL(disconnected()), &eventLoop, SLOT(quit()));
-
-        QTime timer;
-        timer.start();
-        eventLoop.exec();
-        qint64 elapsed = timer.elapsed();
-
-        transferRate = reader.totalBytes * 1000 / elapsed;
-        qDebug() << "ThreadedDataReaderHttpServer::run" << "send rate:" << (transferRate / 1024) << "kB/s in" << elapsed << "msec";
-    }
-};
-
-
-class FixedSizeDataGenerator : public QIODevice
-{
-    Q_OBJECT
-    enum { Idle, Started, Stopped } state;
-public:
-    FixedSizeDataGenerator(qint64 size) : state(Idle)
-    { open(ReadOnly | Unbuffered);
-      toBeGeneratedTotalCount = toBeGeneratedCount = size;
-    }
-
-    virtual qint64 bytesAvailable() const
-    {
-        return state == Started ? toBeGeneratedCount + QIODevice::bytesAvailable() : 0;
-    }
-
-    virtual bool isSequential() const{
-        return false;
-    }
-
-    virtual bool reset() const{
-        return false;
-    }
-
-    qint64 size() const {
-        return toBeGeneratedTotalCount;
-    }
-
-public slots:
-    void start() { state = Started; emit readyRead(); }
-
-protected:
-    virtual qint64 readData(char *data, qint64 maxlen)
-    {
-        memset(data, '@', maxlen);
-
-        if (toBeGeneratedCount <= 0) {
-            return -1;
-        }
-
-        qint64 n = qMin(maxlen, toBeGeneratedCount);
-        toBeGeneratedCount -= n;
-
-        if (toBeGeneratedCount <= 0) {
-            // make sure this is a queued connection!
-            emit readChannelFinished();
-        }
-
-        return n;
-    }
-    virtual qint64 writeData(const char *, qint64)
-    { return -1; }
-
-    qint64 toBeGeneratedCount;
-    qint64 toBeGeneratedTotalCount;
-};
-
-class HttpDownloadPerformanceServer : QObject {
-    Q_OBJECT;
-    qint64 dataSize;
-    qint64 dataSent;
-    QTcpServer server;
-    QTcpSocket *client;
-    bool serverSendsContentLength;
-    bool chunkedEncoding;
-
-public:
-    HttpDownloadPerformanceServer (qint64 ds, bool sscl, bool ce) : dataSize(ds), dataSent(0),
-    client(0), serverSendsContentLength(sscl), chunkedEncoding(ce) {
-        server.listen();
-        connect(&server, SIGNAL(newConnection()), this, SLOT(newConnectionSlot()));
-    }
-
-    int serverPort() {
-        return server.serverPort();
-    }
-
-public slots:
-
-    void newConnectionSlot() {
-        client = server.nextPendingConnection();
-        client->setParent(this);
-        connect(client, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
-        connect(client, SIGNAL(bytesWritten(qint64)), this, SLOT(bytesWrittenSlot(qint64)));
-    }
-
-    void readyReadSlot() {
-        client->readAll();
-        client->write("HTTP/1.0 200 OK\n");
-        if (serverSendsContentLength)
-            client->write(QString("Content-Length: " + QString::number(dataSize) + "\n").toAscii());
-        if (chunkedEncoding)
-            client->write(QString("Transfer-Encoding: chunked\n").toAscii());
-        client->write("Connection: close\n\n");
-    }
-
-    void bytesWrittenSlot(qint64 amount) {
-        Q_UNUSED(amount);
-        if (dataSent == dataSize && client) {
-            // close eventually
-
-            // chunked encoding: we have to send a last "empty" chunk
-            if (chunkedEncoding)
-                client->write(QString("0\r\n\r\n").toAscii());
-
-            client->disconnectFromHost();
-            server.close();
-            client = 0;
-            return;
-        }
-
-        // send data
-        if (client && client->bytesToWrite() < 100*1024 && dataSent < dataSize) {
-            qint64 amount = qMin(qint64(16*1024), dataSize - dataSent);
-            QByteArray data(amount, '@');
-
-            if (chunkedEncoding) {
-                client->write(QString(QString("%1").arg(amount,0,16).toUpper() + "\r\n").toAscii());
-                client->write(data.constData(), amount);
-                client->write(QString("\r\n").toAscii());
-            } else {
-                client->write(data.constData(), amount);
-            }
-
-            dataSent += amount;
-        }
-    }
-};
-
-class HttpDownloadPerformanceClient : QObject {
-    Q_OBJECT;
-    QIODevice *device;
-    public:
-    HttpDownloadPerformanceClient (QIODevice *dev) : device(dev){
-        connect(dev, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));
-    }
-
-    public slots:
-    void readyReadSlot() {
-        device->readAll();
-    }
-
-};
-
-
-
-
-class tst_qnetworkreply : public QObject
-{
-    Q_OBJECT
-
-    QNetworkAccessManager manager;
-private slots:
-    void httpLatency();
-
-#ifndef QT_NO_OPENSSL
-    void echoPerformance_data();
-    void echoPerformance();
-#endif
-
-    void downloadPerformance();
-    void uploadPerformance();
-    void performanceControlRate();
-    void httpUploadPerformance();
-    void httpDownloadPerformance_data();
-    void httpDownloadPerformance();
-
-};
-
-void tst_qnetworkreply::httpLatency()
-{
-    QNetworkAccessManager manager;
-    QBENCHMARK{
-        QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/"));
-        QNetworkReply* reply = manager.get(request);
-        connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-        QTestEventLoop::instance().enterLoop(5);
-        QVERIFY(!QTestEventLoop::instance().timeout());
-        delete reply;
-    }
-}
-
-#ifndef QT_NO_OPENSSL
-void tst_qnetworkreply::echoPerformance_data()
-{
-     QTest::addColumn<bool>("ssl");
-     QTest::newRow("no_ssl") << false;
-     QTest::newRow("ssl") << true;
-}
-
-void tst_qnetworkreply::echoPerformance()
-{
-    QFETCH(bool, ssl);
-    QNetworkAccessManager manager;
-    QNetworkRequest request(QUrl((ssl ? "https://" : "http://") + QtNetworkSettings::serverName() + "/qtest/cgi-bin/echo.cgi"));
-
-    QByteArray data;
-    data.resize(1024*1024*10); // 10 MB
-    // init with garbage. needed so ssl cannot compress it in an efficient way.
-    for (int i = 0; i < data.size() / sizeof(int); i++) {
-        int r = qrand();
-        data.data()[i*sizeof(int)] = r;
-    }
-
-    QBENCHMARK{
-        QNetworkReply* reply = manager.post(request, data);
-        connect(reply, SIGNAL(sslErrors( const QList<QSslError> &)), reply, SLOT(ignoreSslErrors()));
-        connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-        QTestEventLoop::instance().enterLoop(5);
-        QVERIFY(!QTestEventLoop::instance().timeout());
-        QVERIFY(reply->error() == QNetworkReply::NoError);
-        delete reply;
-    }
-}
-#endif
-
-void tst_qnetworkreply::downloadPerformance()
-{
-    // unlike the above function, this one tries to send as fast as possible
-    // and measures how fast it was.
-    TimedSender sender(5000);
-    QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(sender.serverPort()) + "/?bare=1");
-    QNetworkReplyPtr reply = manager.get(request);
-    DataReader reader(reply, false);
-
-    QTime loopTime;
-    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-    loopTime.start();
-    QTestEventLoop::instance().enterLoop(40);
-    int elapsedTime = loopTime.elapsed();
-    sender.wait();
-
-    qint64 receivedBytes = reader.totalBytes;
-    qDebug() << "tst_QNetworkReply::downloadPerformance" << "receive rate:" << (receivedBytes * 1000 / elapsedTime / 1024) << "kB/s and"
-             << elapsedTime << "ms";
-}
-
-void tst_qnetworkreply::uploadPerformance()
-{
-      ThreadedDataReader reader;
-      DataGenerator generator;
-
-
-      QNetworkRequest request("debugpipe://127.0.0.1:" + QString::number(reader.serverPort()) + "/?bare=1");
-      QNetworkReplyPtr reply = manager.put(request, &generator);
-      generator.start();
-      connect(&reader, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-      QTimer::singleShot(5000, &generator, SLOT(stop()));
-
-      QTestEventLoop::instance().enterLoop(30);
-      QCOMPARE(reply->error(), QNetworkReply::NoError);
-      QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-void tst_qnetworkreply::httpUploadPerformance()
-{
-#ifdef Q_OS_SYMBIAN
-      // SHow some mercy for non-desktop platform/s
-      enum {UploadSize = 4*1024*1024}; // 4 MB
-#else
-      enum {UploadSize = 128*1024*1024}; // 128 MB
-#endif
-      ThreadedDataReaderHttpServer reader;
-      FixedSizeDataGenerator generator(UploadSize);
-
-      QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(reader.serverPort()) + "/?bare=1"));
-      request.setHeader(QNetworkRequest::ContentLengthHeader,UploadSize);
-
-      QNetworkReplyPtr reply = manager.put(request, &generator);
-
-      connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
-      QTime time;
-      generator.start();
-      time.start();
-      QTestEventLoop::instance().enterLoop(40);
-      qint64 elapsed = time.elapsed();
-      reader.exit();
-      reader.wait();
-      QVERIFY(reply->isFinished());
-      QCOMPARE(reply->error(), QNetworkReply::NoError);
-      QVERIFY(!QTestEventLoop::instance().timeout());
-
-      qDebug() << "tst_QNetworkReply::httpUploadPerformance" << elapsed << "msec, "
-              << ((UploadSize/1024.0)/(elapsed/1000.0)) << " kB/sec";
-}
-
-
-void tst_qnetworkreply::performanceControlRate()
-{
-    // this is a control comparison for the other two above
-    // it does the same thing, but instead bypasses the QNetworkAccess system
-    qDebug() << "The following are the maximum transfer rates that we can get in this system"
-        " (bypassing QNetworkAccess)";
-
-    TimedSender sender(5000);
-    QTcpSocket sink;
-    sink.connectToHost("127.0.0.1", sender.serverPort());
-    DataReader reader(&sink, false);
-
-    QTime loopTime;
-    connect(&sink, SIGNAL(disconnected()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-    loopTime.start();
-    QTestEventLoop::instance().enterLoop(40);
-    int elapsedTime = loopTime.elapsed();
-    sender.wait();
-
-    qint64 receivedBytes = reader.totalBytes;
-    qDebug() << "tst_QNetworkReply::performanceControlRate" << "receive rate:" << (receivedBytes * 1000 / elapsedTime / 1024) << "kB/s and"
-             << elapsedTime << "ms";
-}
-
-void tst_qnetworkreply::httpDownloadPerformance_data()
-{
-    QTest::addColumn<bool>("serverSendsContentLength");
-    QTest::addColumn<bool>("chunkedEncoding");
-
-    QTest::newRow("Server sends no Content-Length") << false << false;
-    QTest::newRow("Server sends Content-Length")     << true << false;
-    QTest::newRow("Server uses chunked encoding")     << false << true;
-
-}
-
-void tst_qnetworkreply::httpDownloadPerformance()
-{
-    QFETCH(bool, serverSendsContentLength);
-    QFETCH(bool, chunkedEncoding);
-#ifdef Q_OS_SYMBIAN
-    // Show some mercy to non-desktop platform/s
-    enum {UploadSize = 4*1024*1024}; // 4 MB
-#else
-    enum {UploadSize = 128*1024*1024}; // 128 MB
-#endif
-    HttpDownloadPerformanceServer server(UploadSize, serverSendsContentLength, chunkedEncoding);
-
-    QNetworkRequest request(QUrl("http://127.0.0.1:" + QString::number(server.serverPort()) + "/?bare=1"));
-    QNetworkReplyPtr reply = manager.get(request);
-
-    connect(reply, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-    HttpDownloadPerformanceClient client(reply);
-
-    QTime time;
-    time.start();
-    QTestEventLoop::instance().enterLoop(40);
-    QCOMPARE(reply->error(), QNetworkReply::NoError);
-    QVERIFY(!QTestEventLoop::instance().timeout());
-
-    qint64 elapsed = time.elapsed();
-    qDebug() << "tst_QNetworkReply::httpDownloadPerformance" << elapsed << "msec, "
-            << ((UploadSize/1024.0)/(elapsed/1000.0)) << " kB/sec";
-}
-
-QTEST_MAIN(tst_qnetworkreply)
-
-#include "tst_qnetworkreply.moc"
diff --git a/tests/benchmarks/qobject/main.cpp b/tests/benchmarks/qobject/main.cpp
deleted file mode 100644
index 7f24ebd..0000000
--- a/tests/benchmarks/qobject/main.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtCore>
-#include <QtGui>
-#include <qtest.h>
-#include "object.h"
-#include <qcoreapplication.h>
-#include <qdatetime.h>
-
-enum {
-    CreationDeletionBenckmarkConstant = 34567,
-    SignalsAndSlotsBenchmarkConstant = 456789
-};
-
-class QObjectBenchmark : public QObject
-{
-Q_OBJECT
-private slots:
-    void signal_slot_benchmark();
-    void signal_slot_benchmark_data();
-    void qproperty_benchmark_data();
-    void qproperty_benchmark();
-    void dynamic_property_benchmark();
-    void connect_disconnect_benchmark_data();
-    void connect_disconnect_benchmark();
-};
-
-void QObjectBenchmark::signal_slot_benchmark_data()
-{
-    QTest::addColumn<int>("type");
-    QTest::newRow("simple function") << 0;
-    QTest::newRow("single signal/slot") << 1;
-    QTest::newRow("multi signal/slot") << 2;
-}
-
-void QObjectBenchmark::signal_slot_benchmark()
-{
-    QFETCH(int, type);
-
-    Object singleObject;
-    Object multiObject;
-    singleObject.setObjectName("single");
-    multiObject.setObjectName("multi");
-
-    singleObject.connect(&singleObject, SIGNAL(signal0()), SLOT(slot0()));
-
-    multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(slot0()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal1()));
-    multiObject.connect(&multiObject, SIGNAL(signal1()), SLOT(slot1()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal2()));
-    multiObject.connect(&multiObject, SIGNAL(signal2()), SLOT(slot2()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal3()));
-    multiObject.connect(&multiObject, SIGNAL(signal3()), SLOT(slot3()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal4()));
-    multiObject.connect(&multiObject, SIGNAL(signal4()), SLOT(slot4()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal5()));
-    multiObject.connect(&multiObject, SIGNAL(signal5()), SLOT(slot5()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal6()));
-    multiObject.connect(&multiObject, SIGNAL(signal6()), SLOT(slot6()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal7()));
-    multiObject.connect(&multiObject, SIGNAL(signal7()), SLOT(slot7()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal8()));
-    multiObject.connect(&multiObject, SIGNAL(signal8()), SLOT(slot8()));
-    // multiObject.connect(&multiObject, SIGNAL(signal0()), SLOT(signal9()));
-    multiObject.connect(&multiObject, SIGNAL(signal9()), SLOT(slot9()));
-
-    if (type == 0) {
-        QBENCHMARK {
-            singleObject.slot0();
-        }
-    } else if (type == 1) {
-        QBENCHMARK {
-            singleObject.emitSignal0();
-        }
-    } else {
-        QBENCHMARK {
-            multiObject.emitSignal0();   
-        }
-    }
-}
-
-void QObjectBenchmark::qproperty_benchmark_data()
-{
-    QTest::addColumn<QByteArray>("name");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->propertyCount(); ++i) {
-        QMetaProperty prop = mo->property(i);
-        QTest::newRow(prop.name()) << QByteArray(prop.name());
-    }
-}
-
-void QObjectBenchmark::qproperty_benchmark()
-{
-    QFETCH(QByteArray, name);
-    const char *p = name.constData();
-    QTreeView obj;
-    QVariant v = obj.property(p);
-    QBENCHMARK {
-        obj.setProperty(p, v);
-        (void)obj.property(p);
-    }
-}
-
-void QObjectBenchmark::dynamic_property_benchmark()
-{
-    QTreeView obj;
-    QBENCHMARK {
-        obj.setProperty("myProperty", 123);
-        (void)obj.property("myProperty");
-        obj.setProperty("myOtherProperty", 123);
-        (void)obj.property("myOtherProperty");
-    }
-}
-
-void QObjectBenchmark::connect_disconnect_benchmark_data()
-{
-    QTest::addColumn<QByteArray>("signal");
-    const QMetaObject *mo = &QTreeView::staticMetaObject;
-    for (int i = 0; i < mo->methodCount(); ++i) {
-        QMetaMethod method = mo->method(i);
-        if (method.methodType() != QMetaMethod::Signal)
-            continue;
-        QByteArray sig = method.signature();
-        QTest::newRow(sig) << sig;
-    }
-}
-
-void QObjectBenchmark::connect_disconnect_benchmark()
-{
-    QFETCH(QByteArray, signal);
-    signal.prepend('2');
-    const char *p = signal.constData();
-    QTreeView obj;
-    QBENCHMARK {
-        QObject::connect(&obj, p, &obj, p);
-        QObject::disconnect(&obj, p, &obj, p);
-    }
-}
-
-QTEST_MAIN(QObjectBenchmark)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qobject/object.cpp b/tests/benchmarks/qobject/object.cpp
deleted file mode 100644
index d775a32..0000000
--- a/tests/benchmarks/qobject/object.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include "object.h"
-
-void Object::emitSignal0()
-{ emit signal0(); }
-
-void Object::slot0()
-{ }
-void Object::slot1()
-{ }
-void Object::slot2()
-{ }
-void Object::slot3()
-{ }
-void Object::slot4()
-{ }
-void Object::slot5()
-{ }
-void Object::slot6()
-{ }
-void Object::slot7()
-{ }
-void Object::slot8()
-{ }
-void Object::slot9()
-{ }
diff --git a/tests/benchmarks/qobject/object.h b/tests/benchmarks/qobject/object.h
deleted file mode 100644
index 7e4933f..0000000
--- a/tests/benchmarks/qobject/object.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef OBJECT_H
-#define OBJECT_H
-
-#include <qobject.h>
-
-class Object : public QObject
-{
-    Q_OBJECT
-public:
-    void emitSignal0();
-signals:
-    void signal0();
-    void signal1();
-    void signal2();
-    void signal3();
-    void signal4();
-    void signal5();
-    void signal6();
-    void signal7();
-    void signal8();
-    void signal9();
-public slots:
-    void slot0();
-    void slot1();
-    void slot2();
-    void slot3();
-    void slot4();
-    void slot5();
-    void slot6();
-    void slot7();
-    void slot8();
-    void slot9();
-};
-
-#endif // OBJECT_H
diff --git a/tests/benchmarks/qobject/qobject.pro b/tests/benchmarks/qobject/qobject.pro
deleted file mode 100644
index 2855de4..0000000
--- a/tests/benchmarks/qobject/qobject.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qobject
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-HEADERS += object.h
-SOURCES += main.cpp object.cpp
diff --git a/tests/benchmarks/qpainter/qpainter.pro b/tests/benchmarks/qpainter/qpainter.pro
deleted file mode 100644
index 5ac8c64..0000000
--- a/tests/benchmarks/qpainter/qpainter.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qpainter
-
-SOURCES += tst_qpainter.cpp
diff --git a/tests/benchmarks/qpainter/tst_qpainter.cpp b/tests/benchmarks/qpainter/tst_qpainter.cpp
deleted file mode 100644
index 39b2244..0000000
--- a/tests/benchmarks/qpainter/tst_qpainter.cpp
+++ /dev/null
@@ -1,1633 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QPainter>
-#include <QPixmap>
-#include <QDialog>
-#include <QImage>
-#include <QPaintEngine>
-#include <math.h>
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-Q_DECLARE_METATYPE(QLine)
-Q_DECLARE_METATYPE(QRect)
-Q_DECLARE_METATYPE(QSize)
-Q_DECLARE_METATYPE(QPoint)
-Q_DECLARE_METATYPE(QPainterPath)
-Q_DECLARE_METATYPE(QPainter::RenderHint)
-Q_DECLARE_METATYPE(QPainter::CompositionMode)
-Q_DECLARE_METATYPE(QImage::Format)
-
-enum PrimitiveType {
-    Primitive_Int_DiagLine,
-    Primitive_Int_VerLine,
-    Primitive_Int_HorLine,
-    Primitive_Int_Rect,
-    Primitive_Int_Ellipse,
-    Primitive_Int_Pie,
-    Primitive_Int_Arc,
-    Primitive_Int_Chord,
-    Primitive_Int_TriPoly,
-    Primitive_Int_RectPoly,
-    Primitive_Int_2RectPoly,
-
-    Primitive_Float_DiagLine,
-    Primitive_Float_VerLine,
-    Primitive_Float_HorLine,
-    Primitive_Float_Rect,
-    Primitive_Float_Ellipse,
-    Primitive_Float_Pie,
-    Primitive_Float_Arc,
-    Primitive_Float_Chord,
-    Primitive_Float_TriPoly,
-    Primitive_Float_RectPoly,
-    Primitive_Float_2RectPoly,
-
-    Primitive_Float_TriPath,
-    Primitive_Float_RectPath,
-    Primitive_Float_2RectPath,
-    Primitive_Float_EllipsePath,
-    Primitive_Last_Primitive
-
-};
-
-
-enum StateChanges {
-    ChangePen         = 0x0001,
-    ChangeBrush       = 0x0002,
-    ChangeClip        = 0x0004,
-    ChangeTransform   = 0x0008
-};
-
-
-struct PrimitiveSet {
-    QRect i_rect;
-    QLine i_line_diag;
-    QLine i_line_ver;
-    QLine i_line_hor;
-    QPolygon i_poly_tri;
-    QPolygon i_poly_2rects;
-    QPolygon i_poly_rect;
-
-    QRectF f_rect;
-    QLineF f_line_diag;
-    QLineF f_line_ver;
-    QLineF f_line_hor;
-    QPolygonF f_poly_tri;
-    QPolygonF f_poly_2rects;
-    QPolygonF f_poly_rect;
-
-    QPainterPath f_path_tri;
-    QPainterPath f_path_2rects;
-    QPainterPath f_path_rect;
-    QPainterPath f_path_ellipse;
-};
-
-
-class tst_QPainter : public QObject
-{
-    Q_OBJECT
-
-    public:
-    tst_QPainter()
-    {
-        setupBrushes();
-        createPrimitives();
-        m_surface = surface();
-    }
-
-private slots:
-    void beginAndEnd();
-
-    void saveRestore_data();
-    void saveRestore();
-
-    void drawLine_data();
-    void drawLine();
-    void drawLine_clipped_data();
-    void drawLine_clipped();
-    void drawLine_antialiased_clipped_data();
-    void drawLine_antialiased_clipped();
-
-    void drawPixmap_data();
-    void drawPixmap();
-
-    void drawImage_data();
-    void drawImage();
-
-    void drawTiledPixmap_data();
-    void drawTiledPixmap();
-
-    void compositionModes_data();
-    void compositionModes();
-
-    void fillPrimitives_10_data() { drawPrimitives_data_helper(false); }
-    void fillPrimitives_100_data() { drawPrimitives_data_helper(false); }
-    void fillPrimitives_1000_data() { drawPrimitives_data_helper(false); }
-    void fillPrimitives_10();
-    void fillPrimitives_100();
-    void fillPrimitives_1000();
-
-    void strokePrimitives_10_data() { drawPrimitives_data_helper(true); }
-    void strokePrimitives_100_data() { drawPrimitives_data_helper(true); }
-    void strokePrimitives_1000_data() { drawPrimitives_data_helper(true); }
-    void strokePrimitives_10();
-    void strokePrimitives_100();
-    void strokePrimitives_1000();
-
-    void drawText_data();
-    void drawText();
-
-    void clipAndFill_data();
-    void clipAndFill();
-
-    void drawRoundedRect();
-    void drawScaledRoundedRect();
-    void drawTransformedRoundedRect();
-
-    void drawScaledAntialiasedRoundedRect_data();
-    void drawTransformedAntialiasedRoundedRect_data();
-    void drawAntialiasedRoundedRect();
-    void drawScaledAntialiasedRoundedRect();
-    void drawTransformedAntialiasedRoundedRect();
-
-    void drawScaledImageRoundedRect_data();
-    void drawTransformedImageRoundedRect_data();
-    void drawImageRoundedRect();
-    void drawScaledImageRoundedRect();
-    void drawTransformedImageRoundedRect();
-
-    void drawScaledBorderPixmapRoundedRect_data();
-    void drawTransformedBorderPixmapRoundedRect_data();
-    void drawBorderPixmapRoundedRect();
-    void drawScaledBorderPixmapRoundedRect();
-    void drawTransformedBorderPixmapRoundedRect();
-
-    void drawTransformedTransparentImage_data();
-    void drawTransformedSemiTransparentImage_data();
-    void drawTransformedFilledImage_data();
-    void drawTransformedTransparentImage();
-    void drawTransformedSemiTransparentImage();
-    void drawTransformedFilledImage();
-
-private:
-    void setupBrushes();
-    void createPrimitives();
-
-    void drawPrimitives_data_helper(bool fancypens);
-    void fillPrimitives_helper(QPainter *painter, PrimitiveType type, PrimitiveSet *s);
-
-    QTransform transformForAngle(qreal angle);
-
-    QPaintDevice *surface()
-    {
-        return new QPixmap(1024, 1024);
-    }
-
-
-    QMap<QString, QPen> m_pens;
-    QMap<QString, QBrush> m_brushes;
-
-    PrimitiveSet m_primitives_10;
-    PrimitiveSet m_primitives_100;
-    PrimitiveSet m_primitives_1000;
-
-    QPaintDevice *m_surface;
-    QPainter m_painter;
-
-};
-
-void tst_QPainter::createPrimitives()
-{
-    for (int i=0; i<3; ++i) {
-        PrimitiveSet *ps;
-        int size;
-        switch (i) {
-        case 0:
-            ps = &m_primitives_10;
-            size = 10;
-            break;
-        case 1:
-            ps = &m_primitives_100;
-            size = 100;
-            break;
-        case 2:
-            ps = &m_primitives_1000;
-            size = 1000;
-            break;
-        }
-
-        ps->f_rect = QRectF(0, 0, size, size);
-        ps->f_line_diag = QLineF(0, 0, size, size);
-        ps->f_line_ver = QLineF(10, 0, 10, size);
-        ps->f_line_hor = QLineF(0, 10, size, 10);
-        ps->f_poly_rect = QPolygonF() << QPointF(0, 0)
-                                      << QPointF(size, 0)
-                                      << QPointF(size, size)
-                                      << QPointF(0, size);
-        ps->f_poly_2rects = QPolygonF() << QPointF(0, 0)
-                                        << QPointF(size * 0.75, 0)
-                                        << QPointF(size * 0.75, size * 0.75)
-                                        << QPointF(size * 0.25, size * 0.75)
-                                        << QPointF(size * 0.25, size * 0.25)
-                                        << QPointF(size, size * 0.25)
-                                        << QPointF(size, size)
-                                        << QPointF(0, size);
-        ps->f_poly_tri = QPolygonF() << QPointF(size / 2.0, 0)
-                                     << QPointF(0, size)
-                                     << QPointF(size, size);
-
-        ps->f_path_tri.addPolygon(ps->f_poly_tri);
-        ps->f_path_rect.addRect(ps->f_rect);
-        ps->f_path_2rects.addPolygon(ps->f_poly_2rects);
-        ps->f_path_ellipse.addEllipse(ps->f_rect);
-
-        ps->i_rect = ps->f_rect.toRect();
-        ps->i_line_diag = ps->f_line_diag.toLine();
-        ps->i_line_hor = ps->f_line_hor.toLine();
-        ps->i_line_ver = ps->f_line_ver.toLine();
-        ps->i_poly_tri = ps->f_poly_tri.toPolygon();
-        ps->i_poly_rect = ps->f_poly_rect.toPolygon();
-        ps->i_poly_2rects = ps->f_poly_2rects.toPolygon();
-    }
-}
-
-void tst_QPainter::drawLine_data()
-{
-    QTest::addColumn<QLine>("line");
-    QTest::addColumn<QPen>("pen");
-
-    QVector<QPen> pens;
-    pens << QPen(Qt::black)
-         << QPen(Qt::black, 0, Qt::DashDotLine)
-         << QPen(Qt::black, 4)
-         << QPen(Qt::black, 4, Qt::DashDotLine)
-         << QPen(QColor(255, 0, 0, 200))
-         << QPen(QColor(255, 0, 0, 200), 0, Qt::DashDotLine)
-         << QPen(QColor(255, 0, 0, 200), 4)
-         << QPen(QColor(255, 0, 0, 200), 4, Qt::DashDotLine);
-
-    QStringList penNames;
-    penNames << "black-0"
-             << "black-0-dashdot"
-             << "black-4"
-             << "black-4-dashdot"
-             << "alpha-0"
-             << "alpha-0-dashdot"
-             << "alpha-4"
-             << "alpha-4-dashdot";
-
-    int i = 0;
-    foreach (QPen pen, pens) {
-        const QString s = QString(QLatin1String("%1:%2")).arg(penNames[i]);
-        QTest::newRow(qPrintable(s.arg("horizontal")))
-            << QLine(0, 20, 100, 20) << pen;
-        QTest::newRow(qPrintable(s.arg("vertical:")))
-            << QLine(20, 0, 20, 100) << pen;
-        QTest::newRow(qPrintable(s.arg("0-45:")))
-            << QLine(0, 20, 100, 0) << pen;
-        QTest::newRow(qPrintable(s.arg("45-90:")))
-            << QLine(0, 100, 20, 0) << pen;
-        QTest::newRow(qPrintable(s.arg("90-135:")))
-            << QLine(20, 100, 0, 0) << pen;
-        QTest::newRow(qPrintable(s.arg("135-180:")))
-            << QLine(100, 20, 0, 0) << pen;
-        QTest::newRow(qPrintable(s.arg("180-225:")))
-            << QLine(100, 0, 0, 20) << pen;
-        QTest::newRow(qPrintable(s.arg("225-270:")))
-            << QLine(20, 0, 0, 100) << pen;
-        QTest::newRow(qPrintable(s.arg("270-315:")))
-            << QLine(0, 0, 20, 100) << pen;
-        QTest::newRow(qPrintable(s.arg("315-360:")))
-            << QLine(0, 0, 100, 20) << pen;
-        ++i;
-    }
-}
-
-void tst_QPainter::setupBrushes()
-{
-    // Solid brushes...
-    m_brushes["black-brush"] = QBrush(Qt::black);
-    m_brushes["white-brush"] = QBrush(Qt::white);
-    m_brushes["transparent-brush"] = QBrush(QColor(255, 255, 255, 0));
-    m_brushes["alpha1-brush"] = QBrush(QColor(255, 255, 255, 100));
-    m_brushes["alpha2-brush"] = QBrush(QColor(255, 255, 255, 200));
-
-
-    // Patterns
-    m_brushes["dense1-brush"] = QBrush(Qt::Dense1Pattern);
-    m_brushes["dense2-brush"] = QBrush(Qt::Dense2Pattern);
-    m_brushes["dense3-brush"] = QBrush(Qt::Dense3Pattern);
-    m_brushes["dense4-brush"] = QBrush(Qt::Dense4Pattern);
-    m_brushes["dense5-brush"] = QBrush(Qt::Dense5Pattern);
-    m_brushes["dense6-brush"] = QBrush(Qt::Dense6Pattern);
-    m_brushes["dense7-brush"] = QBrush(Qt::Dense7Pattern);
-    m_brushes["hor-brush"] = QBrush(Qt::HorPattern);
-    m_brushes["ver-brush"] = QBrush(Qt::VerPattern);
-    m_brushes["cross-brush"] = QBrush(Qt::CrossPattern);
-    m_brushes["bdiag-brush"] = QBrush(Qt::BDiagPattern);
-    m_brushes["fdiag-brush"] = QBrush(Qt::FDiagPattern);
-    m_brushes["diagcross-brush"] = QBrush(Qt::DiagCrossPattern);
-
-    // Gradients
-    QGradientStops gradient_white_black;
-    gradient_white_black << QPair<qreal, QColor>(0, QColor(Qt::white));
-    gradient_white_black << QPair<qreal, QColor>(1, QColor(Qt::black));
-
-    QGradientStops gradient_white_black10;
-    for (int i=0; i<10; ++i) {
-        gradient_white_black10 << QPair<qreal, QColor>(i/10.0, QColor(Qt::white));
-        gradient_white_black10 << QPair<qreal, QColor>(i/10.0+0.05, QColor(Qt::black));
-    }
-
-    QGradientStops gradient_white_alpha;
-    gradient_white_alpha << QPair<qreal, QColor>(0, QColor(Qt::white));
-    gradient_white_alpha << QPair<qreal, QColor>(0, QColor(Qt::transparent));
-
-    QGradientStops gradient_white_alpha10;
-    for (int i=0; i<10; ++i) {
-        gradient_white_alpha10 << QPair<qreal, QColor>(i/10.0, QColor(Qt::white));
-        gradient_white_alpha10 << QPair<qreal, QColor>(i/10.0+0.05, QColor(Qt::black));
-    }
-
-
-    for (int j=0; j<4; ++j) {
-        QLinearGradient lg;
-        lg.setStart(0, 0);
-
-        QRadialGradient rg;
-        QConicalGradient cg;
-
-        QGradientStops stops;
-        if (j == 0) stops = gradient_white_black;
-        else if (j == 1) stops = gradient_white_black10;
-        else if (j == 2) stops = gradient_white_alpha;
-        else if (j == 3) stops = gradient_white_alpha10;
-        lg.setStops(stops);
-        rg.setStops(stops);
-        cg.setStops(stops);
-
-        for (int i=0; i<6; ++i) {
-            lg.setSpread((QGradient::Spread) (i % 3));
-            lg.setCoordinateMode((QGradient::CoordinateMode) (j / 3));
-
-            QString name = QString::fromLatin1("-%1%2")
-                           .arg(lg.spread())
-                           .arg(lg.coordinateMode());
-
-            lg.setFinalStop(100, 0);
-            m_brushes["hor-lingrad-w/b-brush" + name] = QBrush(lg);
-
-            lg.setFinalStop(0, 100);
-            m_brushes["ver-lingrad-w/b-brush" + name] = QBrush(lg);
-
-            lg.setFinalStop(100, 100);
-            m_brushes["diag-lingrad-w/b-brush" + name] = QBrush(lg);
-
-            rg.setRadius(100);
-            rg.setCenter(0, 0);
-            rg.setFocalPoint(50, 50);
-            m_brushes["radgrad-brush" + name] = QBrush(rg);
-
-            cg.setCenter(0, 0);
-            cg.setAngle(40);
-            m_brushes["congrad-brush" + name] = QBrush(cg);
-        }
-    }
-
-    // Set up pens...
-
-
-//     m_pens["black-pen"] = QPen(Qt::black);
-//     m_pens["white-pen"] = QPen(Qt::white);
-//     m_pens["transparent-pen"] = QPen(QColor(255, 255, 255, 0));
-//     m_pens["translucent1-pen"] = QPen(QColor(255, 255, 255, 100));
-//     m_pens["translucent2-pen"] = QPen(QColor(255, 255, 255, 200));
-
-
-
-}
-
-
-// void QPainter_Primitives::fillRect_data() {
-
-//     QTest::addColumn<QBrush>("brush");
-//     QTest::addColumn<QSize>("size");
-
-//     for (QMap<QString, QBrush>::const_iterator it = m_brushes.constBegin();
-//          it != m_brushes.constEnd(); ++it) {
-//         for (int w=2; w<1025; w*=2) {
-//             for (int h=2; h<1025; h*=2) {
-//                 QTest::newRow(QString("brush=%1; size=[%2,%3]").arg(it.key()).arg(w).arg(h).toAscii().data())
-//                     << *it << QSize(w, h);
-//             }
-//         }
-//     }
-// }
-
-
-
-
-
-// void QPainter_Primitives::fillRect()
-// {
-//     QFETCH(QBrush, brush);
-//     QFETCH(QSize, size);
-
-//     QImage img(1024, 1024, QImage::Format_ARGB32_Premultiplied);
-//     QPainter p(&img);
-//     p.setPen(Qt::NoPen);
-//     p.setBrush(brush);
-//     QRect rect(QPoint(0, 0), size);
-//     QBENCHMARK {
-//         p.drawRect(rect);
-//     }
-// }
-
-
-
-
-void tst_QPainter::beginAndEnd()
-{
-    QPixmap pixmap(100, 100);
-
-    QBENCHMARK {
-        QPainter p;
-        p.begin(&pixmap);
-        p.end();
-    }
-}
-
-void tst_QPainter::drawLine()
-{
-    QFETCH(QLine, line);
-    QFETCH(QPen, pen);
-
-    const int offset = 5;
-    QPixmap pixmapUnclipped(qMin(line.x1(), line.x2())
-                            + 2*offset + qAbs(line.dx()),
-                            qMin(line.y1(), line.y2())
-                            + 2*offset + qAbs(line.dy()));
-    pixmapUnclipped.fill(Qt::white);
-
-    QPainter p(&pixmapUnclipped);
-    p.translate(offset, offset);
-    p.setPen(pen);
-    p.paintEngine()->syncState();
-
-    QBENCHMARK {
-        p.drawLine(line);
-    }
-
-    p.end();
-
-}
-
-void tst_QPainter::drawLine_clipped_data()
-{
-    drawLine_data();
-}
-
-void tst_QPainter::drawLine_clipped()
-{
-    QFETCH(QLine, line);
-    QFETCH(QPen, pen);
-
-    const int offset = 5;
-    QPixmap pixmapClipped(qMin(line.x1(), line.x2())
-                          + 2*offset + qAbs(line.dx()),
-                          qMin(line.y1(), line.y2())
-                          + 2*offset + qAbs(line.dy()));
-
-    const QRect clip = QRect(line.p1(), line.p2()).normalized();
-
-    pixmapClipped.fill(Qt::white);
-    QPainter p(&pixmapClipped);
-    p.translate(offset, offset);
-    p.setClipRect(clip);
-    p.setPen(pen);
-    p.paintEngine()->syncState();
-
-    QBENCHMARK {
-        p.drawLine(line);
-    }
-
-    p.end();
-}
-
-
-void tst_QPainter::drawLine_antialiased_clipped_data()
-{
-    drawLine_data();
-}
-
-
-void tst_QPainter::drawLine_antialiased_clipped()
-{
-    QFETCH(QLine, line);
-    QFETCH(QPen, pen);
-
-    const int offset = 5;
-    QPixmap pixmapClipped(qMin(line.x1(), line.x2())
-                          + 2*offset + qAbs(line.dx()),
-                          qMin(line.y1(), line.y2())
-                          + 2*offset + qAbs(line.dy()));
-
-    const QRect clip = QRect(line.p1(), line.p2()).normalized();
-
-    pixmapClipped.fill(Qt::white);
-    QPainter p(&pixmapClipped);
-    p.setRenderHint(QPainter::Antialiasing);
-    p.translate(offset, offset);
-    p.setClipRect(clip);
-    p.setPen(pen);
-    p.paintEngine()->syncState();
-
-    QBENCHMARK {
-        p.drawLine(line);
-    }
-
-    p.end();
-}
-
-void tst_QPainter::drawPixmap_data()
-{
-    QTest::addColumn<QImage::Format>("sourceFormat");
-    QTest::addColumn<QImage::Format>("targetFormat");
-    QTest::addColumn<QSize>("size");
-    QTest::addColumn<int>("type"); // 0 = circle, 1 = diag line, 2 = solid rect, 3 = alpharect
-
-    QList<QSize> sizes;
-    sizes << QSize(1, 1)
-          << QSize(10, 10)
-          << QSize(100, 100)
-          << QSize(1000, 1000);
-
-    const char *typeNames[] = {
-        "circle",
-        "line",
-        "solidrect",
-        "alpharect"
-    };
-
-    const char *formatNames[] = {
-        "Invalid",
-        "Mono",
-        "MonoLSB",
-        "Indexed8",
-        "RGB32",
-        "ARGB32",
-        "ARGB32_pm",
-        "RGB16",
-        "ARGB8565_pm",
-        "RGB666",
-        "ARGB6666_pm",
-        "RGB555",
-        "ARGB8555_pm",
-        "RGB888",
-        "RGB444",
-        "ARGB4444_pm"
-    };
-
-    for (int tar=4; tar<QImage::NImageFormats; ++tar) {
-        for (int src=4; src<QImage::NImageFormats; ++src) {
-
-            // skip the low-priority formats to keep resultset manageable...
-            if (tar == QImage::Format_RGB444 || src == QImage::Format_RGB444
-                || tar == QImage::Format_RGB555 || src == QImage::Format_RGB555
-                || tar == QImage::Format_RGB666 || src == QImage::Format_RGB666
-                || tar == QImage::Format_RGB888 || src == QImage::Format_RGB888
-                || tar == QImage::Format_ARGB4444_Premultiplied
-                || src == QImage::Format_ARGB4444_Premultiplied
-                || tar == QImage::Format_ARGB6666_Premultiplied
-                || src == QImage::Format_ARGB6666_Premultiplied)
-                continue;
-
-            foreach (const QSize &s, sizes) {
-                for (int type=0; type<=3; ++type) {
-                    QString name = QString::fromLatin1("%1 on %2, (%3x%4), %5")
-                                   .arg(formatNames[src])
-                                   .arg(formatNames[tar])
-                                   .arg(s.width()).arg(s.height())
-                                   .arg(typeNames[type]);
-                    QTest::newRow(name.toLatin1()) << (QImage::Format) src
-                                                   << (QImage::Format) tar
-                                                   << s
-                                                   << type;
-                }
-            }
-        }
-    }
-}
-
-static QImage createImage(int type, const QSize &size) {
-    QImage base(size, QImage::Format_ARGB32_Premultiplied);
-    base.fill(0);
-    QPainter p(&base);
-    p.setRenderHint(QPainter::Antialiasing);
-    switch (type) {
-    case 0: // ellipse
-        p.setBrush(Qt::red);
-        p.drawEllipse(0, 0, size.width(), size.height());
-        break;
-    case 1: // line
-        p.drawLine(0, 0, size.width(), size.height());
-        break;
-    case 2:
-        p.fillRect(0, 0, size.width(), size.height(), Qt::red);
-        break;
-    case 3:
-        p.fillRect(0, 0, size.width(), size.height(), QColor(0, 255, 0, 127));
-        break;
-    }
-    p.end();
-    return base;
-}
-
-
-void tst_QPainter::drawPixmap()
-{
-    QFETCH(QImage::Format, sourceFormat);
-    QFETCH(QImage::Format, targetFormat);
-    QFETCH(QSize, size);
-    QFETCH(int, type);
-
-    QImage sourceImage = createImage(type, size).convertToFormat(sourceFormat);
-    QImage targetImage(size, targetFormat);
-
-    QPixmap sourcePixmap = QPixmap::fromImage(sourceImage);
-    QPixmap targetPixmap = QPixmap::fromImage(targetImage);
-
-    QPainter p(&targetPixmap);
-
-    QBENCHMARK {
-        p.drawPixmap(0, 0, sourcePixmap);
-    }
-}
-
-void tst_QPainter::drawImage_data()
-{
-    drawPixmap_data();
-}
-
-
-void tst_QPainter::drawImage()
-{
-    QFETCH(QImage::Format, sourceFormat);
-    QFETCH(QImage::Format, targetFormat);
-    QFETCH(QSize, size);
-    QFETCH(int, type);
-
-    QImage sourceImage = createImage(type, size).convertToFormat(sourceFormat);
-    QImage targetImage(size, targetFormat);
-
-    QPainter p(&targetImage);
-    QBENCHMARK {
-        p.drawImage(0, 0, sourceImage);
-    }
-}
-
-
-void tst_QPainter::compositionModes_data()
-{
-    QTest::addColumn<QPainter::CompositionMode>("mode");
-    QTest::addColumn<QSize>("size");
-    QTest::addColumn<QColor>("color");
-
-    const int n = QPainter::RasterOp_SourceAndNotDestination;
-    for (int i = 0; i <= n; ++i) {
-        QString title("%1:%2");
-        QTest::newRow(qPrintable(title.arg(i).arg("10x10:opaque")))
-            << (QPainter::CompositionMode)(i)
-            << QSize(10, 10) << QColor(255, 0, 0);
-        QTest::newRow(qPrintable(title.arg(i).arg("10x10:!opaque")))
-            << (QPainter::CompositionMode)(i)
-            << QSize(10, 10) << QColor(127, 127, 127, 127);
-        QTest::newRow(qPrintable(title.arg(i).arg("300x300:opaque")))
-            << (QPainter::CompositionMode)(i)
-            << QSize(300, 300) << QColor(255, 0, 0);
-        QTest::newRow(qPrintable(title.arg(i).arg("300x300:!opaque")))
-            << (QPainter::CompositionMode)(i)
-            << QSize(300, 300) << QColor(127, 127, 127, 127);
-    }
-}
-
-void tst_QPainter::compositionModes()
-{
-    QFETCH(QPainter::CompositionMode, mode);
-    QFETCH(QSize, size);
-    QFETCH(QColor, color);
-
-    QPixmap src(size);
-    src.fill(color);
-
-    QPixmap dest(size);
-    if (mode < QPainter::RasterOp_SourceOrDestination)
-        color.setAlpha(127); // porter-duff needs an alpha channel
-    dest.fill(color);
-
-    QPainter p(&dest);
-    p.setCompositionMode(mode);
-
-    QBENCHMARK {
-        p.drawPixmap(0, 0, src);
-    }
-}
-
-void tst_QPainter::drawTiledPixmap_data()
-{
-    QTest::addColumn<QSize>("srcSize");
-    QTest::addColumn<QSize>("dstSize");
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<QColor>("color");
-    QTest::addColumn<QPainter::RenderHint>("renderHint");
-
-    QTest::newRow("10x10=>20x20")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform())
-        << QColor(Qt::black) << QPainter::RenderHint(0);
-    QTest::newRow("10x10=>20x20, smooth")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform())
-        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
-    QTest::newRow("10x10=>20x20, !opaque")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform())
-        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
-    QTest::newRow("10x10=>20x20, !opaque, smooth")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform())
-        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
-
-    QTest::newRow("10x10=>20x20, rotate(30)")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
-        << QColor(Qt::black) << QPainter::RenderHint(0);
-    QTest::newRow("10x10=>20x20, rotate(30), smooth")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
-        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
-    QTest::newRow("10x10=>20x20, rotate(30), !opaque")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
-        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
-    QTest::newRow("10x10=>20x20, rotate(30), !opaque, smooth")
-        << QSize(10, 10) << QSize(20, 20) << (QTransform().rotate(30))
-        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
-
-    QTest::newRow("100x100=>200x200")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform())
-        << QColor(Qt::black) << QPainter::RenderHint(0);
-    QTest::newRow("100x100=>200x200, smooth")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform())
-        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
-    QTest::newRow("100x100=>200x200, !opaque")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform())
-        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
-    QTest::newRow("100x100=>200x200, !opaque, smooth")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform())
-        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
-
-    QTest::newRow("100x100=>200x200, rotate(30)")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
-        << QColor(Qt::black) << QPainter::RenderHint(0);
-    QTest::newRow("100x100=>200x200, rotate(30), smooth")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
-        << QColor(Qt::black) << QPainter::SmoothPixmapTransform;
-    QTest::newRow("100x100=>200x200, rotate(30), !opaque")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
-        << QColor(127, 127, 127, 127) << QPainter::RenderHint(0);
-    QTest::newRow("100x100=>200x200, rotate(30), !opaque, smooth")
-        << QSize(100, 100) << QSize(200, 200) << (QTransform().rotate(30))
-        << QColor(127, 127, 127, 127) << QPainter::SmoothPixmapTransform;
-}
-
-void tst_QPainter::drawTiledPixmap()
-{
-    QFETCH(QSize, srcSize);
-    QFETCH(QSize, dstSize);
-    QFETCH(QTransform, transform);
-    QFETCH(QColor, color);
-    QFETCH(QPainter::RenderHint, renderHint);
-
-    QPixmap src(srcSize);
-    src.fill(color);
-
-    const QRect dstRect = transform.mapRect(QRect(QPoint(), dstSize));
-    QPixmap dst(dstRect.right() + 5, dstRect.bottom() + 5);
-    QPainter p(&dst);
-    p.setTransform(transform);
-    p.setRenderHint(renderHint);
-
-    QBENCHMARK {
-        p.drawTiledPixmap(QRect(QPoint(), dstSize), src);
-    }
-}
-
-void tst_QPainter::fillPrimitives_helper(QPainter *p, PrimitiveType type, PrimitiveSet *s)
-{
-    p->paintEngine()->syncState();
-
-    switch (type) {
-    case Primitive_Int_DiagLine:        QBENCHMARK { p->drawLine(s->i_line_diag); } break;
-    case Primitive_Int_VerLine:         QBENCHMARK { p->drawLine(s->i_line_ver); } break;
-    case Primitive_Int_HorLine:         QBENCHMARK { p->drawLine(s->i_line_hor); } break;
-    case Primitive_Int_Rect:            QBENCHMARK { p->drawRect(s->i_rect); } break;
-    case Primitive_Int_Ellipse:         QBENCHMARK { p->drawEllipse(s->i_rect); } break;
-    case Primitive_Int_Pie:             QBENCHMARK { p->drawPie(s->i_rect, 45*16, 270*16); } break;
-    case Primitive_Int_Arc:             QBENCHMARK { p->drawArc(s->i_rect, 45*16, 270*16); } break;
-    case Primitive_Int_Chord:           QBENCHMARK { p->drawChord(s->i_rect, 45*16, 270*16); } break;
-    case Primitive_Int_TriPoly:         QBENCHMARK { p->drawPolygon(s->i_poly_tri); } break;
-    case Primitive_Int_RectPoly:        QBENCHMARK { p->drawPolygon(s->i_poly_rect); } break;
-    case Primitive_Int_2RectPoly:       QBENCHMARK { p->drawPolygon(s->i_poly_2rects); } break;
-
-    case Primitive_Float_DiagLine:      QBENCHMARK { p->drawLine(s->f_line_diag); } break;
-    case Primitive_Float_VerLine:       QBENCHMARK { p->drawLine(s->f_line_ver); } break;
-    case Primitive_Float_HorLine:       QBENCHMARK { p->drawLine(s->f_line_hor); } break;
-    case Primitive_Float_Rect:          QBENCHMARK { p->drawRect(s->f_rect); } break;
-    case Primitive_Float_Ellipse:       QBENCHMARK { p->drawEllipse(s->f_rect); } break;
-    case Primitive_Float_Pie:           QBENCHMARK { p->drawPie(s->f_rect, 45*16, 270*16); } break;
-    case Primitive_Float_Arc:           QBENCHMARK { p->drawArc(s->f_rect, 45*16, 270*16); } break;
-    case Primitive_Float_Chord:         QBENCHMARK { p->drawChord(s->f_rect, 45*16, 270*16); } break;
-    case Primitive_Float_TriPoly:       QBENCHMARK { p->drawPolygon(s->f_poly_tri); } break;
-    case Primitive_Float_RectPoly:      QBENCHMARK { p->drawPolygon(s->f_poly_rect); } break;
-    case Primitive_Float_2RectPoly:     QBENCHMARK { p->drawPolygon(s->f_poly_2rects); } break;
-
-    case Primitive_Float_TriPath:       QBENCHMARK { p->drawPath(s->f_path_tri); } break;
-    case Primitive_Float_RectPath:      QBENCHMARK { p->drawPath(s->f_path_rect); } break;
-    case Primitive_Float_2RectPath:     QBENCHMARK { p->drawPath(s->f_path_2rects); } break;
-    case Primitive_Float_EllipsePath:   QBENCHMARK { p->drawPath(s->f_path_ellipse); } break;
-    }
-}
-
-void tst_QPainter::drawPrimitives_data_helper(bool fancypens)
-{
-    QTest::addColumn<int>("type");
-    QTest::addColumn<bool>("aa");
-    QTest::addColumn<bool>("dash");
-    QTest::addColumn<int>("width");
-
-    const char * const names[] = {
-        "IDLine",
-        "IVLine",
-        "IHLine",
-        "IRect",
-        "IElli",
-        "IPie",
-        "IArc",
-        "IChord",
-        "ITriPol",
-        "IRectPol",
-        "I2RectPol",
-        "FDLine",
-        "FVLine",
-        "FHLine",
-        "FRect",
-        "FElli",
-        "FPie",
-        "FArc",
-        "FChord",
-        "FTriPol",
-        "FRectPol",
-        "F2RectPol",
-        "FTriPa",
-        "FRectPa",
-        "F2RectPa",
-        "FElliPa"
-    };
-
-    if (fancypens) {
-        for (int dash=0; dash<2; ++dash) {
-            for (int width=0; width<=4; width+=4) {
-                for (int aa=0; aa<2; ++aa) {
-                    for (int type=0; type<Primitive_Last_Primitive; ++type) {
-                        QString name = QString::fromLatin1(names[type]);
-
-                        if (aa) name += " aa";
-                        if (dash) name += " dotted";
-                        if (width) name += QString::fromLatin1(" width=%1").arg(width);
-
-                        QTest::newRow(name.toLatin1()) << type << (bool) aa << (bool) dash << width;
-                    }
-                }
-            }
-        }
-    } else {
-        for (int aa=0; aa<2; ++aa) {
-            for (int type=0; type<Primitive_Last_Primitive; ++type) {
-                QString name = QString::fromLatin1(names[type]);
-                if (aa) name += " aa";
-                QTest::newRow(name.toLatin1()) << type << (bool) aa;
-            }
-        }
-    }
-}
-
-
-void tst_QPainter::fillPrimitives_10()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QPainter p(m_surface);
-    p.setPen(Qt::NoPen);
-    p.setBrush(Qt::red);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_10);
-}
-
-
-void tst_QPainter::fillPrimitives_100()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QPainter p(m_surface);
-    p.setPen(Qt::NoPen);
-    p.setBrush(Qt::red);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_100);
-}
-
-
-void tst_QPainter::fillPrimitives_1000()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QPainter p(m_surface);
-    p.setPen(Qt::NoPen);
-    p.setBrush(Qt::red);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_1000);
-}
-
-void tst_QPainter::strokePrimitives_10()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QFETCH(bool, dash);
-    QFETCH(int, width);
-    QPainter p(m_surface);
-    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
-    p.setBrush(Qt::NoBrush);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_10);
-}
-
-void tst_QPainter::strokePrimitives_100()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QFETCH(bool, dash);
-    QFETCH(int, width);
-    QPainter p(m_surface);
-    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
-    p.setBrush(Qt::NoBrush);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_100);
-}
-
-void tst_QPainter::strokePrimitives_1000()
-{
-    QFETCH(int, type);
-    QFETCH(bool, aa);
-    QFETCH(bool, dash);
-    QFETCH(int, width);
-    QPainter p(m_surface);
-    p.setPen(QPen(Qt::red, width, dash ? Qt::DashLine : Qt::SolidLine));
-    p.setBrush(Qt::NoBrush);
-    p.setRenderHint(QPainter::Antialiasing, aa);
-    fillPrimitives_helper(&p, (PrimitiveType) type, &m_primitives_1000);
-}
-
-void tst_QPainter::drawText_data()
-{
-    QTest::addColumn<QString>("text");
-
-    QTest::newRow("a") << QString::fromLatin1("a");
-    QTest::newRow("ab") << QString::fromLatin1("ab");
-    QTest::newRow("abc") << QString::fromLatin1("abc");
-    QTest::newRow("abcd") << QString::fromLatin1("abcd");
-    QTest::newRow("abcde") << QString::fromLatin1("abcde");
-    QTest::newRow("abcdef") << QString::fromLatin1("abcdef");
-    QTest::newRow("abcdefg") << QString::fromLatin1("abcdefg");
-}
-
-void tst_QPainter::drawText()
-{
-    QFETCH(QString, text);
-
-    QPainter p(m_surface);
-
-    QBENCHMARK {
-        p.drawText(QPointF(5, 5), text);
-    }
-}
-
-void tst_QPainter::saveRestore_data()
-{
-    QTest::addColumn<int>("change");
-
-    for (int i=0; i<16; ++i) {
-        QString change = "change=";
-        if (i == 0) change += " none";
-        if (i & ChangePen) change += " pen";
-        if (i & ChangeBrush) change += " brush";
-        if (i & ChangeClip) change += " clip";
-        if (i & ChangeTransform) change += " xform";
-
-        QTest::newRow(change.toLatin1()) << i;
-    }
-}
-
-void tst_QPainter::saveRestore()
-{
-    QFETCH(int, change);
-
-    QPen pen(Qt::blue);
-    QBrush brush(Qt::green);
-    QRect r(100, 100, 100, 20);
-
-    QPainter p(m_surface);
-
-    p.setPen(Qt::NoPen);
-    p.setBrush(Qt::NoBrush);
-
-    QBENCHMARK {
-        p.save();
-        if (change & ChangePen) { p.setPen(pen); p.setPen(Qt::NoPen); }
-        if (change & ChangeBrush) { p.setBrush(brush); p.setBrush(Qt::NoBrush); }
-        if (change & ChangeClip) p.setClipRect(r);
-        if (change & ChangeTransform) { p.scale(3, 5); p.scale(1/3.0, 1/5.0); }
-        p.drawRect(0, 0, 1, 1);
-        p.restore();
-    };
-}
-
-enum ClipType {
-    RectClipType,
-    RectPathClipType,
-    RectRegionClipType,
-    RegionClipType,
-    PathClipType
-};
-
-void tst_QPainter::clipAndFill_data()
-{
-    QTest::addColumn<int>("type");
-
-    QTest::newRow("rect") << (int) RectClipType;
-    QTest::newRow("rectpath") << (int) RectPathClipType;
-    QTest::newRow("rectregion") << (int) RectRegionClipType;
-    QTest::newRow("ellipseRegion") << (int) RegionClipType;
-    QTest::newRow("ellipsePath") << (int) PathClipType;
-}
-
-
-void tst_QPainter::clipAndFill()
-{
-    QFETCH(int, type);
-
-    QRegion region;
-    QPainterPath path;
-    QRectF rect;
-
-    switch (type) {
-    case RectClipType:
-        rect = QRectF(100, 100, 100, 100);
-        break;
-    case RectPathClipType:
-        path.addRect(100, 100, 100, 100);
-        break;
-    case RectRegionClipType:
-        region = QRegion(100, 100, 100, 100);
-        break;
-    case RegionClipType:
-        region = QRegion(100, 100, 100, 100, QRegion::Ellipse);
-        break;
-    case PathClipType:
-        path.addEllipse(100, 100, 100, 100);
-        break;
-    }
-
-    QPainter p(m_surface);
-
-    p.setPen(Qt::NoPen);
-    p.setBrush(Qt::red);
-
-    QBENCHMARK {
-        if (type == RectClipType)
-            p.setClipRect(rect);
-        else if (type == RectPathClipType || type == PathClipType)
-            p.setClipPath(path);
-        else
-            p.setClipRegion(region);
-        p.drawRect(110, 110, 10, 10);
-    }
-}
-
-QTransform tst_QPainter::transformForAngle(qreal angle)
-{
-    const qreal inv_dist_to_plane = 1. / 1024.;
-
-    QTransform transform;
-
-    QTransform rotTrans;
-    rotTrans.translate(-40, 0);
-    QTransform rotTrans2;
-    rotTrans2.translate(40, 0);
-
-    qreal rad = angle * 2. * M_PI / 360.;
-    qreal c = ::cos(rad);
-    qreal s = ::sin(rad);
-
-    qreal x = 0;
-    qreal y = 80;
-    qreal z = 0;
-
-    qreal len = x * x + y * y + z * z;
-    if (len != 1.) {
-        len = ::sqrt(len);
-        x /= len;
-        y /= len;
-        z /= len;
-    }
-
-    QTransform rot(x*x*(1-c)+c, x*y*(1-c)-z*s, x*z*(1-c)+y*s*inv_dist_to_plane,
-                   y*x*(1-c)+z*s, y*y*(1-c)+c, y*z*(1-c)-x*s*inv_dist_to_plane,
-                   0, 0, 1);
-
-    transform *= rotTrans;
-    transform *= rot;
-    transform *= rotTrans2;
-
-    return transform;
-}
-
-void tst_QPainter::drawRoundedRect()
-{
-    QImage surface(100, 100, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-
-    QBENCHMARK {
-        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
-    }
-}
-
-void tst_QPainter::drawScaledRoundedRect()
-{
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-    p.scale(3, 3);
-
-    QBENCHMARK {
-        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
-    }
-}
-
-void tst_QPainter::drawTransformedRoundedRect()
-{
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-
-    QBENCHMARK {
-        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
-        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
-    }
-}
-
-void tst_QPainter::drawAntialiasedRoundedRect()
-{
-    QImage surface(100, 100, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setRenderHint(QPainter::Antialiasing, true);
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-
-    QBENCHMARK {
-        p.drawRoundedRect(QRectF(.5, .5, 80, 80), 10, 10);
-    }
-}
-
-void tst_QPainter::drawScaledAntialiasedRoundedRect_data()
-{
-    QTest::addColumn<float>("scale");
-
-    for (float i = 0; i < 3; i += .1)
-        QTest::newRow(QString(QLatin1String("scale=%1")).arg(i).toLatin1()) << i;
-}
-
-void tst_QPainter::drawScaledAntialiasedRoundedRect()
-{
-    QFETCH(float, scale);
-
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setRenderHint(QPainter::Antialiasing, true);
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-    p.scale(scale, scale);
-
-    QBENCHMARK {
-        p.drawRoundedRect(10, 10, 80, 80, 10, 10);
-    }
-}
-
-void tst_QPainter::drawTransformedAntialiasedRoundedRect_data()
-{
-    QTest::addColumn<QTransform>("transform");
-
-    for (float angle = 0; angle < 360; angle += 10)
-        QTest::newRow(QString(QLatin1String("angle=%1")).arg(angle).toLatin1()) << transformForAngle(angle);
-}
-
-void tst_QPainter::drawTransformedAntialiasedRoundedRect()
-{
-    QFETCH(QTransform, transform);
-
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    p.setRenderHint(QPainter::Antialiasing, true);
-    p.setPen(QPen(Qt::black, 1));
-    p.setBrush(Qt::red);
-
-    QBENCHMARK {
-        p.setWorldTransform(transform);
-        p.drawRoundedRect(100, 100, 80, 80, 10, 10);
-    }
-}
-
-void tst_QPainter::drawImageRoundedRect()
-{
-    //setup image
-    const int radius = 10;
-    QImage rectImage(81, 81, QImage::Format_ARGB32_Premultiplied);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
-
-    //setup surface
-    QImage surface(100, 100, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.drawImage(0,0, rectImage);
-    }
-}
-
-void tst_QPainter::drawScaledImageRoundedRect_data()
-{
-    QTest::addColumn<int>("imageType");
-
-    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
-    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-void tst_QPainter::drawScaledImageRoundedRect()
-{
-    QFETCH(int, imageType);
-
-    //setup image
-    const int radius = 10;
-    QImage rectImage(81, 81, (QImage::Format)imageType);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
-
-    //setup surface
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-    p.scale(3, 3);
-
-    QBENCHMARK {
-        p.drawImage(0,0, rectImage);
-    }
-}
-
-void tst_QPainter::drawTransformedImageRoundedRect_data()
-{
-    QTest::addColumn<int>("imageType");
-
-    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
-    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-void tst_QPainter::drawTransformedImageRoundedRect()
-{
-    QFETCH(int, imageType);
-
-    //setup image
-    const int radius = 10;
-    QImage rectImage(81, 81, (QImage::Format)imageType);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    rp.drawRoundedRect(QRectF(.5, .5, 80, 80), radius, radius);
-
-    //setup surface
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
-        p.drawImage(100,100, rectImage);
-    }
-}
-
-//code from QmlGraphicsRectangle for drawing rounded rects
-void tst_QPainter::drawBorderPixmapRoundedRect()
-{
-    //setup image
-    const int pw = 1;
-    const int radius = 10;
-    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, QImage::Format_ARGB32_Premultiplied);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    if (pw%2)
-        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
-    else
-        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
-    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
-
-    //setup surface
-    QImage surface(100, 100, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        const int pw = 2;
-        int width = 80;
-        int height = 80;
-
-        int xOffset = (rectPixmap.width()-1)/2;
-        int yOffset = (rectPixmap.height()-1)/2;
-        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
-        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
-
-        QMargins margins(xOffset, yOffset, xOffset, yOffset);
-        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
-        //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects
-        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
-    }
-}
-
-void tst_QPainter::drawScaledBorderPixmapRoundedRect_data()
-{
-    QTest::addColumn<float>("scale");
-    QTest::addColumn<int>("imageType");
-
-    for (float i = 0; i < 3; i += .1)
-        QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB32_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB32_Premultiplied;
-    //for (float i = 0; i < 3; i += .1)
-    //    QTest::newRow(QString(QLatin1String("scale=%1; imagetype=ARGB8565_Pre")).arg(i).toLatin1()) << i << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-//code from QmlGraphicsRectangle for drawing rounded rects
-void tst_QPainter::drawScaledBorderPixmapRoundedRect()
-{
-    QFETCH(float, scale);
-    QFETCH(int, imageType);
-
-    //setup image
-    const int pw = 1;
-    const int radius = 10;
-    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    if (pw%2)
-        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
-    else
-        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
-
-    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
-
-    //setup surface
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-    p.scale(scale, scale);
-
-    QBENCHMARK {
-        const int pw = 2;
-        int width = 80;
-        int height = 80;
-
-        int xOffset = (rectPixmap.width()-1)/2;
-        int yOffset = (rectPixmap.height()-1)/2;
-        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
-        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
-
-        QMargins margins(xOffset, yOffset, xOffset, yOffset);
-        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
-        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
-    }
-}
-
-void tst_QPainter::drawTransformedBorderPixmapRoundedRect_data()
-{
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<int>("imageType");
-
-    for (float angle = 0; angle < 360; angle += 10)
-        QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB32_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB32_Premultiplied;
-    //for (float angle = 0; angle < 360; angle += 10)
-    //    QTest::newRow(QString(QLatin1String("angle=%1; imagetype=ARGB8565_Pre")).arg(angle).toLatin1()) << transformForAngle(angle) << (int)QImage::Format_ARGB8565_Premultiplied;
-
-}
-
-//code from QmlGraphicsRectangle for drawing rounded rects
-void tst_QPainter::drawTransformedBorderPixmapRoundedRect()
-{
-    QFETCH(QTransform, transform);
-    QFETCH(int, imageType);
-
-    //setup image
-    const int pw = 1;
-    const int radius = 10;
-    QImage rectImage(radius*2 + 3 + pw*2, radius*2 + 3 + pw*2, (QImage::Format)imageType);
-    rectImage.fill(0);
-    QPainter rp(&rectImage);
-    rp.setRenderHint(QPainter::Antialiasing);
-    rp.setPen(Qt::black);
-    rp.setBrush(Qt::red);
-    if (pw%2)
-        rp.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, rectImage.width()-(pw+1), rectImage.height()-(pw+1)), radius, radius);
-    else
-        rp.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, rectImage.width()-pw, rectImage.height()-pw), radius, radius);
-
-    QPixmap rectPixmap = QPixmap::fromImage(rectImage);
-
-    //setup surface
-    QImage surface(400, 400, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.setWorldTransform(transform);
-        const int pw = 2;
-        int width = 80;
-        int height = 80;
-
-        int xOffset = (rectPixmap.width()-1)/2;
-        int yOffset = (rectPixmap.height()-1)/2;
-        Q_ASSERT(rectPixmap.width() == 2*xOffset + 1);
-        Q_ASSERT(rectPixmap.height() == 2*yOffset + 1);
-
-        QMargins margins(xOffset, yOffset, xOffset, yOffset);
-        QTileRules rules(Qt::StretchTile, Qt::StretchTile);
-        qDrawBorderPixmap(&p, QRect(-pw/2, -pw/2, width+pw, height+pw), margins, rectPixmap, rectPixmap.rect(), margins, rules);
-    }
-}
-
-void tst_QPainter::drawTransformedTransparentImage_data()
-{
-    QTest::addColumn<int>("imageType");
-
-    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
-    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-void tst_QPainter::drawTransformedTransparentImage()
-{
-    QFETCH(int, imageType);
-
-    //setup image
-    QImage transImage(200, 200, (QImage::Format)imageType);
-    transImage.fill(0);
-
-    //setup surface
-    QImage surface(200, 200, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
-        p.drawImage(0,0, transImage);
-    }
-}
-
-void tst_QPainter::drawTransformedSemiTransparentImage_data()
-{
-    QTest::addColumn<int>("imageType");
-
-    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
-    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-void tst_QPainter::drawTransformedSemiTransparentImage()
-{
-    QFETCH(int, imageType);
-
-    //setup image
-    QImage transImage(200, 200, (QImage::Format)imageType);
-    transImage.fill(QColor(0,0,0, 128).rgba());
-
-    //setup surface
-    QImage surface(200, 200, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
-        p.drawImage(0,0, transImage);
-    }
-}
-
-void tst_QPainter::drawTransformedFilledImage_data()
-{
-    QTest::addColumn<int>("imageType");
-
-    QTest::newRow("imagetype=ARGB32_Pre") << (int)QImage::Format_ARGB32_Premultiplied;
-    QTest::newRow("imagetype=ARGB8565_Pre") << (int)QImage::Format_ARGB8565_Premultiplied;
-}
-
-void tst_QPainter::drawTransformedFilledImage()
-{
-    QFETCH(int, imageType);
-
-    //setup image
-    QImage filledImage(200, 200, (QImage::Format)imageType);
-    filledImage.fill(QColor(0,0,0).rgb());
-
-    //setup surface
-    QImage surface(200, 200, QImage::Format_RGB16);
-    surface.fill(QColor(255,255,255).rgb());
-    QPainter p(&surface);
-
-    QBENCHMARK {
-        p.setWorldTransform(QTransform(0.956957, 0, 0.000704124, 0, 1, 0, 16.141, 0, 0.735953));
-        p.drawImage(0,0, filledImage);
-    }
-}
-
-
-QTEST_MAIN(tst_QPainter)
-
-#include "tst_qpainter.moc"
diff --git a/tests/benchmarks/qpixmap/qpixmap.pro b/tests/benchmarks/qpixmap/qpixmap.pro
deleted file mode 100644
index e8330bd..0000000
--- a/tests/benchmarks/qpixmap/qpixmap.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qpixmap
-
-SOURCES += tst_qpixmap.cpp
diff --git a/tests/benchmarks/qpixmap/tst_qpixmap.cpp b/tests/benchmarks/qpixmap/tst_qpixmap.cpp
deleted file mode 100644
index 9ffbefb..0000000
--- a/tests/benchmarks/qpixmap/tst_qpixmap.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QPixmap>
-#include <QBitmap>
-#include <QPainter>
-
-class tst_QPixmap : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QPixmap();
-
-private slots:
-    void fill_data();
-    void fill();
-
-    void scaled_data();
-    void scaled();
-    void transformed_data();
-    void transformed();
-    void mask_data();
-    void mask();
-};
-
-Q_DECLARE_METATYPE(QImage::Format)
-Q_DECLARE_METATYPE(Qt::AspectRatioMode)
-Q_DECLARE_METATYPE(Qt::TransformationMode)
-
-tst_QPixmap::tst_QPixmap()
-{
-}
-
-void tst_QPixmap::fill_data()
-{
-    QTest::addColumn<bool>("opaque");
-    QTest::addColumn<int>("width");
-    QTest::addColumn<int>("height");
-
-    QTest::newRow("opaque 16x16") << true << 16 << 16;
-    QTest::newRow("!opaque 16x16") << false << 16 << 16;
-    QTest::newRow("opaque 587x128") << true << 587 << 128;
-    QTest::newRow("!opaque 587x128") << false << 587 << 128;
-}
-
-void tst_QPixmap::fill()
-{
-    QFETCH(bool, opaque);
-    QFETCH(int, width);
-    QFETCH(int, height);
-
-    const QColor color = opaque ? QColor(255, 0, 0) : QColor(255, 0, 0, 200);
-    QPixmap pixmap(width, height);
-
-    QBENCHMARK {
-        pixmap.fill(color);
-    }
-}
-
-void tst_QPixmap::scaled_data()
-{
-    QTest::addColumn<QSize>("size");
-    QTest::addColumn<QSize>("scale");
-    QTest::addColumn<Qt::AspectRatioMode>("ratioMode");
-    QTest::addColumn<Qt::TransformationMode>("transformMode");
-
-    QTest::newRow("16x16 => 32x32") << QSize(16, 16) << QSize(32, 32)
-                                    << Qt::IgnoreAspectRatio
-                                    << Qt::FastTransformation;
-    QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
-                                        << Qt::IgnoreAspectRatio
-                                        << Qt::FastTransformation;
-    QTest::newRow("100x100 => 200x200") << QSize(100, 100) << QSize(200, 200)
-                                        << Qt::IgnoreAspectRatio
-                                        << Qt::FastTransformation;
-    QTest::newRow("80x80 => 200x200") << QSize(137, 137) << QSize(200, 200)
-                                      << Qt::IgnoreAspectRatio
-                                      << Qt::FastTransformation;
-
-}
-
-void tst_QPixmap::scaled()
-{
-    QFETCH(QSize, size);
-    QFETCH(QSize, scale);
-    QFETCH(Qt::AspectRatioMode, ratioMode);
-    QFETCH(Qt::TransformationMode, transformMode);
-
-    QPixmap opaque(size);
-    QPixmap transparent(size);
-    opaque.fill(QColor(255, 0, 0));
-    transparent.fill(QColor(255, 0, 0, 200));
-
-    QPixmap scaled1;
-    QPixmap scaled2;
-    QBENCHMARK {
-        scaled1 = opaque.scaled(scale, ratioMode, transformMode);
-        scaled2 = transparent.scaled(scale, ratioMode, transformMode);
-    }
-}
-
-void tst_QPixmap::transformed_data()
-{
-    QTest::addColumn<QSize>("size");
-    QTest::addColumn<QTransform>("transform");
-    QTest::addColumn<Qt::TransformationMode>("transformMode");
-
-    QTest::newRow("16x16 rotate(90)") << QSize(16, 16)
-                                      << QTransform().rotate(90)
-                                      << Qt::FastTransformation;
-    QTest::newRow("16x16 rotate(199)") << QSize(16, 16)
-                                       << QTransform().rotate(199)
-                                       << Qt::FastTransformation;
-    QTest::newRow("16x16 shear(2,1)") << QSize(16, 16)
-                                      << QTransform().shear(2, 1)
-                                      << Qt::FastTransformation;
-    QTest::newRow("16x16 rotate(199).shear(2,1)") << QSize(16, 16)
-                                                  << QTransform().rotate(199).shear(2, 1)
-                                                  << Qt::FastTransformation;
-    QTest::newRow("100x100 rotate(90)") << QSize(100, 100)
-                                        << QTransform().rotate(90)
-                                        << Qt::FastTransformation;
-    QTest::newRow("100x100 rotate(199)") << QSize(100, 100)
-                                         << QTransform().rotate(199)
-                                         << Qt::FastTransformation;
-    QTest::newRow("100x100 shear(2,1)") << QSize(100, 100)
-                                        << QTransform().shear(2, 1)
-                                        << Qt::FastTransformation;
-    QTest::newRow("100x100 shear(2,1) smooth") << QSize(100, 100)
-                                               << QTransform().shear(2, 1)
-                                               << Qt::SmoothTransformation;
-    QTest::newRow("100x100 rotate(199).shear(2,1)") << QSize(100, 100)
-                                                    << QTransform().rotate(199).shear(2, 1)
-                                                    << Qt::FastTransformation;
-}
-
-void tst_QPixmap::transformed()
-{
-    QFETCH(QSize, size);
-    QFETCH(QTransform, transform);
-    QFETCH(Qt::TransformationMode, transformMode);
-
-    QPixmap opaque(size);
-    QPixmap transparent(size);
-    opaque.fill(QColor(255, 0, 0));
-    transparent.fill(QColor(255, 0, 0, 200));
-
-    QPixmap transformed1;
-    QPixmap transformed2;
-    QBENCHMARK {
-        transformed1 = opaque.transformed(transform, transformMode);
-        transformed2 = transparent.transformed(transform, transformMode);
-    }
-}
-
-void tst_QPixmap::mask_data()
-{
-    QTest::addColumn<QSize>("size");
-
-    QTest::newRow("1x1") << QSize(1, 1);
-    QTest::newRow("9x9") << QSize(9, 9);
-    QTest::newRow("16x16") << QSize(16, 16);
-    QTest::newRow("128x128") << QSize(128, 128);
-    QTest::newRow("333x333") << QSize(333, 333);
-    QTest::newRow("2048x128") << QSize(2048, 128);
-}
-
-void tst_QPixmap::mask()
-{
-    QFETCH(QSize, size);
-
-    QPixmap src(size);
-    src.fill(Qt::transparent);
-    {
-        QPainter p(&src);
-        p.drawLine(QPoint(0, 0), QPoint(src.width(), src.height()));
-    }
-
-    QBENCHMARK {
-        QBitmap bitmap = src.mask();
-        QVERIFY(bitmap.size() == src.size());
-    }
-}
-
-QTEST_MAIN(tst_QPixmap)
-
-#include "tst_qpixmap.moc"
diff --git a/tests/benchmarks/qpixmapcache/qpixmapcache.pro b/tests/benchmarks/qpixmapcache/qpixmapcache.pro
deleted file mode 100644
index e0d7543..0000000
--- a/tests/benchmarks/qpixmapcache/qpixmapcache.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qpixmapcache
-TEMPLATE = app
-# Input
-SOURCES += tst_qpixmapcache.cpp
diff --git a/tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp b/tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp
deleted file mode 100644
index 1031ba7..0000000
--- a/tests/benchmarks/qpixmapcache/tst_qpixmapcache.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QPixmapCache>
-//TESTED_FILES=
-
-class tst_QPixmapCache : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QPixmapCache();
-    virtual ~tst_QPixmapCache();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void insert_data();
-    void insert();
-    void find_data();
-    void find();
-    void styleUseCaseComplexKey();
-    void styleUseCaseComplexKey_data();
-};
-
-tst_QPixmapCache::tst_QPixmapCache()
-{
-}
-
-tst_QPixmapCache::~tst_QPixmapCache()
-{
-}
-
-void tst_QPixmapCache::init()
-{
-}
-
-void tst_QPixmapCache::cleanup()
-{
-}
-
-void tst_QPixmapCache::insert_data()
-{
-    QTest::addColumn<bool>("cacheType");
-    QTest::newRow("QPixmapCache") << true;
-    QTest::newRow("QPixmapCache (int API)") << false;
-}
-
-QList<QPixmapCache::Key> keys;
-
-void tst_QPixmapCache::insert()
-{
-    QFETCH(bool, cacheType);
-    QPixmap p;
-    if (cacheType) {
-        QBENCHMARK {
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                QString tmp;
-                tmp.sprintf("my-key-%d", i);
-                QPixmapCache::insert(tmp, p);
-            }
-        }
-    } else {
-        QBENCHMARK {
-            for (int i = 0 ; i <= 10000 ; i++)
-                keys.append(QPixmapCache::insert(p));
-        }
-    }
-}
-
-void tst_QPixmapCache::find_data()
-{
-    QTest::addColumn<bool>("cacheType");
-    QTest::newRow("QPixmapCache") << true;
-    QTest::newRow("QPixmapCache (int API)") << false;
-}
-
-void tst_QPixmapCache::find()
-{
-    QFETCH(bool, cacheType);
-    QPixmap p;
-    if (cacheType) {
-        QBENCHMARK {
-            QString tmp;
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                tmp.sprintf("my-key-%d", i);
-                QPixmapCache::find(tmp, p);
-            }
-        }
-    } else {
-        QBENCHMARK {
-            for (int i = 0 ; i <= 10000 ; i++)
-                QPixmapCache::find(keys.at(i), &p);
-        }
-    }
-
-}
-
-void tst_QPixmapCache::styleUseCaseComplexKey_data()
-{
-    QTest::addColumn<bool>("cacheType");
-    QTest::newRow("QPixmapCache") << true;
-    QTest::newRow("QPixmapCache (int API)") << false;
-}
-
-struct styleStruct {
-    QString key;
-    uint state;
-    uint direction;
-    uint complex;
-    uint palette;
-    int width;
-    int height;
-    bool operator==(const styleStruct &str) const
-    {
-        return  str.state == state && str.direction == direction
-                && str.complex == complex && str.palette == palette && str.width == width
-                && str.height == height && str.key == key;
-    }
-};
-
-uint qHash(const styleStruct &myStruct)
-{
-    return qHash(myStruct.state);
-}
-
-void tst_QPixmapCache::styleUseCaseComplexKey()
-{
-    QFETCH(bool, cacheType);
-    QPixmap p;
-    if (cacheType) {
-        QBENCHMARK {
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                QString tmp;
-                tmp.sprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200);
-                QPixmapCache::insert(tmp, p);
-            }
-
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                QString tmp;
-                tmp.sprintf("%s-%d-%d-%d-%d-%d-%d", QString("my-progressbar-%1").arg(i).toLatin1().constData(), 5, 3, 0, 358, 100, 200);
-                QPixmapCache::find(tmp, p);
-            }
-        }
-    } else {
-        QHash<styleStruct, QPixmapCache::Key> hash;
-        QBENCHMARK {
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                styleStruct myStruct;
-                myStruct.key = QString("my-progressbar-%1").arg(i);
-                myStruct.key = 5;
-                myStruct.key = 4;
-                myStruct.key = 3;
-                myStruct.palette = 358;
-                myStruct.width = 100;
-                myStruct.key = 200;
-                QPixmapCache::Key key = QPixmapCache::insert(p);
-                hash.insert(myStruct, key);
-            }
-            for (int i = 0 ; i <= 10000 ; i++)
-            {
-                styleStruct myStruct;
-                myStruct.key = QString("my-progressbar-%1").arg(i);
-                myStruct.key = 5;
-                myStruct.key = 4;
-                myStruct.key = 3;
-                myStruct.palette = 358;
-                myStruct.width = 100;
-                myStruct.key = 200;
-                QPixmapCache::Key key = hash.value(myStruct);
-                QPixmapCache::find(key, &p);
-            }
-        }
-    }
-
-}
-
-
-QTEST_MAIN(tst_QPixmapCache)
-#include "tst_qpixmapcache.moc"
diff --git a/tests/benchmarks/qquaternion/qquaternion.pro b/tests/benchmarks/qquaternion/qquaternion.pro
deleted file mode 100644
index cd68423..0000000
--- a/tests/benchmarks/qquaternion/qquaternion.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qquaternion
-
-SOURCES += tst_qquaternion.cpp
-
diff --git a/tests/benchmarks/qquaternion/tst_qquaternion.cpp b/tests/benchmarks/qquaternion/tst_qquaternion.cpp
deleted file mode 100644
index 7930092..0000000
--- a/tests/benchmarks/qquaternion/tst_qquaternion.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QQuaternion>
-
-//TESTED_FILES=
-
-class tst_QQuaternion : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QQuaternion();
-    virtual ~tst_QQuaternion();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void multiply_data();
-    void multiply();
-};
-
-tst_QQuaternion::tst_QQuaternion()
-{
-}
-
-tst_QQuaternion::~tst_QQuaternion()
-{
-}
-
-void tst_QQuaternion::init()
-{
-}
-
-void tst_QQuaternion::cleanup()
-{
-}
-
-void tst_QQuaternion::multiply_data()
-{
-    QTest::addColumn<qreal>("x1");
-    QTest::addColumn<qreal>("y1");
-    QTest::addColumn<qreal>("z1");
-    QTest::addColumn<qreal>("w1");
-    QTest::addColumn<qreal>("x2");
-    QTest::addColumn<qreal>("y2");
-    QTest::addColumn<qreal>("z2");
-    QTest::addColumn<qreal>("w2");
-
-    QTest::newRow("null")
-        << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f
-        << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f << (qreal)0.0f;
-
-    QTest::newRow("unitvec")
-        << (qreal)1.0f << (qreal)0.0f << (qreal)0.0f << (qreal)1.0f
-        << (qreal)0.0f << (qreal)1.0f << (qreal)0.0f << (qreal)1.0f;
-
-    QTest::newRow("complex")
-        << (qreal)1.0f << (qreal)2.0f << (qreal)3.0f << (qreal)7.0f
-        << (qreal)4.0f << (qreal)5.0f << (qreal)6.0f << (qreal)8.0f;
-}
-
-void tst_QQuaternion::multiply()
-{
-    QFETCH(qreal, x1);
-    QFETCH(qreal, y1);
-    QFETCH(qreal, z1);
-    QFETCH(qreal, w1);
-    QFETCH(qreal, x2);
-    QFETCH(qreal, y2);
-    QFETCH(qreal, z2);
-    QFETCH(qreal, w2);
-
-    QQuaternion q1(w1, x1, y1, z1);
-    QQuaternion q2(w2, x2, y2, z2);
-
-    QBENCHMARK {
-        QQuaternion q3 = q1 * q2;
-    }
-}
-
-QTEST_MAIN(tst_QQuaternion)
-#include "tst_qquaternion.moc"
diff --git a/tests/benchmarks/qrect/main.cpp b/tests/benchmarks/qrect/main.cpp
deleted file mode 100644
index e293bfa..0000000
--- a/tests/benchmarks/qrect/main.cpp
+++ /dev/null
@@ -1,329 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-// This file contains benchmarks for QRect/QRectF functions.
-
-#include <QDebug>
-#include <qtest.h>
-
-class tst_qrect : public QObject
-{
-    Q_OBJECT
-private slots:
-    // QRect functions:
-    void contains_point_data();
-    void contains_point();
-    void contains_rect_data();
-    void contains_rect();
-    void intersects_data();
-    void intersects();
-    void intersected_data();
-    void intersected();
-    void united_data();
-    void united();
-
-    // QRectF functions:
-    void contains_point_f_data();
-    void contains_point_f();
-    void contains_rect_f_data();
-    void contains_rect_f();
-    void intersects_f_data();
-    void intersects_f();
-    void intersected_f_data();
-    void intersected_f();
-    void united_f_data();
-    void united_f();
-};
-
-struct RectRectCombination
-{
-    QString tag;
-    qreal x1, y1, w1, h1, x2, y2, w2, h2;
-    RectRectCombination(
-        const QString &tag,
-        const qreal x1, const qreal y1, const qreal w1, const qreal h1,
-        const qreal x2, const qreal y2, const qreal w2, const qreal h2)
-        : tag(tag), x1(x1), y1(y1), w1(w1), h1(h1), x2(x2), y2(y2), w2(w2), h2(h2) {}
-};
-
-static QList<RectRectCombination> createRectRectCombinations()
-{
-    QList<RectRectCombination> result;
-    result << RectRectCombination("null", 0, 0, 0, 0, 0, 0, 0, 0);
-    result << RectRectCombination("null1", 0, 0, 0, 0, 0, 0, 10, 10);
-    result << RectRectCombination("null2", 0, 0, 10, 10, 0, 0, 0, 0);
-
-    result << RectRectCombination("miss", 0, 0, 10, 10, 11, 11, 10, 10);
-    result << RectRectCombination("intersect", 0, 0, 10, 10, 5, 5, 10, 10);
-    result << RectRectCombination("contain1", 0, 0, 10, 10, 1, 1, 8, 8);
-    result << RectRectCombination("contain2", 1, 1, 8, 8, 0, 0, 10, 10);
-
-    result << RectRectCombination("miss_flip1", 9, 9, -10, -10, 11, 11, 10, 10);
-    result << RectRectCombination("intersect_flip1", 9, 9, -10, -10, 5, 5, 10, 10);
-    result << RectRectCombination("contain1_flip1", 9, 9, -10, -10, 1, 1, 8, 8);
-    result << RectRectCombination("contain2_flip1", 8, 8, -8, -8, 0, 0, 10, 10);
-
-    result << RectRectCombination("miss_flip2", 0, 0, 10, 10, 20, 20, -10, -10);
-    result << RectRectCombination("intersect_flip2", 0, 0, 10, 10, 14, 14, -10, -10);
-    result << RectRectCombination("contain1_flip2", 0, 0, 10, 10, 8, 8, -8, -8);
-    result << RectRectCombination("contain2_flip2", 1, 1, 8, 8, 9, 9, -10, -10);
-
-    return result;
-}
-
-static void addRectRectData(bool includeProperArg = false)
-{
-    QTest::addColumn<QRectF>("rf1");
-    QTest::addColumn<QRectF>("rf2");
-    if (includeProperArg)
-        QTest::addColumn<bool>("proper");
-    for (int i = 0; i < (includeProperArg ? 2 : 1); ++i) {
-        QList<RectRectCombination> combinations = createRectRectCombinations();
-        foreach (RectRectCombination c, combinations) {
-            QTestData &testData = QTest::newRow(c.tag.toLatin1().data());
-            QRectF r1(c.x1, c.y1, c.w1, c.h1);
-            QRectF r2(c.x2, c.y2, c.w2, c.h2);
-            testData << r1 << r2;
-            if (includeProperArg)
-                testData << (i == 0);
-        }
-    }
-}
-
-struct RectPointCombination
-{
-    QString tag;
-    qreal x, y, w, h, px, py;
-    RectPointCombination(
-        const QString &tag,
-        const qreal x, const qreal y, const qreal w, const qreal h, const qreal px, const qreal py)
-        : tag(tag), x(x), y(y), w(w), h(h), px(px), py(py) {}
-};
-
-static QList<RectPointCombination> createRectPointCombinations()
-{
-    QList<RectPointCombination> result;
-    result << RectPointCombination("null", 0, 0, 0, 0, 0, 0);
-
-    result << RectPointCombination("miss", 0, 0, 10, 10, -1, -1);
-    result << RectPointCombination("contain", 0, 0, 10, 10, 0, 0);
-    result << RectPointCombination("contain_proper", 0, 0, 10, 10, 1, 1);
-
-    result << RectPointCombination("miss_flip", 9, 9, -10, -10, -1, -1);
-    result << RectPointCombination("contain_flip", 9, 9, -10, -10, 0, 0);
-    result << RectPointCombination("contain_flip_proper", 9, 9, -10, -10, 1, 1);
-
-    return result;
-}
-
-static void addRectPointData(bool includeProperArg = false)
-{
-    QTest::addColumn<QRectF>("rf");
-    QTest::addColumn<QPointF>("pf");
-    if (includeProperArg)
-        QTest::addColumn<bool>("proper");
-    for (int i = 0; i < (includeProperArg ? 2 : 1); ++i) {
-        QList<RectPointCombination> combinations = createRectPointCombinations();
-        foreach (RectPointCombination c, combinations) {
-            QTestData &testData = QTest::newRow(c.tag.toLatin1().data());
-            QRectF r(c.x, c.y, c.w, c.h);
-            QPointF p(c.px, c.py);
-            testData << r << p;
-            if (includeProperArg)
-                testData << (i == 0);
-        }
-    }
-}
-
-void tst_qrect::contains_point_data()
-{
-    addRectPointData(true);
-}
-
-void tst_qrect::contains_point()
-{
-    QFETCH(QRectF, rf);
-    QFETCH(QPointF, pf);
-    QFETCH(bool, proper);
-    QRect r(rf.toRect());
-    QPoint p(pf.toPoint());
-    QBENCHMARK {
-        r.contains(p, proper);
-    }
-}
-
-void tst_qrect::contains_rect_data()
-{
-    addRectRectData(true);
-}
-
-void tst_qrect::contains_rect()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QFETCH(bool, proper);
-    QRect r1(rf1.toRect());
-    QRect r2(rf2.toRect());
-    QBENCHMARK {
-        r1.contains(r2, proper);
-    }
-}
-
-void tst_qrect::intersects_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::intersects()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QRect r1(rf1.toRect());
-    QRect r2(rf2.toRect());
-    QBENCHMARK {
-        r1.intersects(r2);
-    }
-}
-
-void tst_qrect::intersected_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::intersected()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QRect r1(rf1.toRect());
-    QRect r2(rf2.toRect());
-    QBENCHMARK {
-        r1.intersected(r2);
-    }
-}
-
-void tst_qrect::united_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::united()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QRect r1(rf1.toRect());
-    QRect r2(rf2.toRect());
-    QBENCHMARK {
-        r1.united(r2);
-    }
-}
-
-void tst_qrect::contains_point_f_data()
-{
-    addRectPointData();
-}
-
-void tst_qrect::contains_point_f()
-{
-    QFETCH(QRectF, rf);
-    QFETCH(QPointF, pf);
-    QBENCHMARK {
-        rf.contains(pf);
-    }
-}
-
-void tst_qrect::contains_rect_f_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::contains_rect_f()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QBENCHMARK {
-        rf1.contains(rf2);
-    }
-}
-
-void tst_qrect::intersects_f_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::intersects_f()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QBENCHMARK {
-        rf1.intersects(rf2);
-    }
-}
-
-void tst_qrect::intersected_f_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::intersected_f()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QBENCHMARK {
-        rf1.intersected(rf2);
-    }
-}
-
-void tst_qrect::united_f_data()
-{
-    addRectRectData();
-}
-
-void tst_qrect::united_f()
-{
-    QFETCH(QRectF, rf1);
-    QFETCH(QRectF, rf2);
-    QBENCHMARK {
-        rf1.united(rf2);
-    }
-}
-
-QTEST_MAIN(tst_qrect)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qrect/qrect.pro b/tests/benchmarks/qrect/qrect.pro
deleted file mode 100644
index 6e35119..0000000
--- a/tests/benchmarks/qrect/qrect.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qrect
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qregexp/main.cpp b/tests/benchmarks/qregexp/main.cpp
deleted file mode 100644
index ab9ed71..0000000
--- a/tests/benchmarks/qregexp/main.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <QRegExp>
-#include <QString>
-
-#include <qtest.h>
-
-
-class tst_qregexp : public QObject
-{
-    Q_OBJECT
-private slots:
-    void escape_old();
-    void escape_old_data() { escape_data(); }
-    void escape_new1();
-    void escape_new1_data() { escape_data(); }
-    void escape_new2();
-    void escape_new2_data() { escape_data(); }
-    void escape_new3();
-    void escape_new3_data() { escape_data(); }
-    void escape_new4();
-    void escape_new4_data() { escape_data(); }
-private:
-    void escape_data();
-};
-
-
-static void verify(const QString &quoted, const QString &expected)
-{
-    if (quoted != expected)
-        qDebug() << "ERROR:" << quoted << expected;
-}
-
-void tst_qregexp::escape_data()
-{
-    QTest::addColumn<QString>("pattern");
-    QTest::addColumn<QString>("expected");
-
-    QTest::newRow("escape 0") << "Hello world" << "Hello world";
-    QTest::newRow("escape 1") << "(Hello world)" << "\\(Hello world\\)";
-    { 
-        QString s;
-        for (int i = 0; i < 10; ++i)
-            s += "(escape)";
-        QTest::newRow("escape 10") << s << QRegExp::escape(s);
-    }
-    { 
-        QString s;
-        for (int i = 0; i < 100; ++i)
-            s += "(escape)";
-        QTest::newRow("escape 100") << s << QRegExp::escape(s);
-    }
-}
-
-void tst_qregexp::escape_old()
-{
-    QFETCH(QString, pattern);
-    QFETCH(QString, expected);
-
-    QBENCHMARK {
-        static const char meta[] = "$()*+.?[\\]^{|}";
-        QString quoted = pattern;
-        int i = 0;
-
-        while (i < quoted.length()) {
-            if (strchr(meta, quoted.at(i).toLatin1()) != 0)
-                quoted.insert(i++, QLatin1Char('\\'));
-            ++i;
-        }
-
-        verify(quoted, expected);
-    }
-}
-
-void tst_qregexp::escape_new1()
-{
-    QFETCH(QString, pattern);
-    QFETCH(QString, expected);
-
-    QBENCHMARK {
-        QString quoted;
-        const int count = pattern.count();
-        quoted.reserve(count * 2);
-        const QLatin1Char backslash('\\');
-        for (int i = 0; i < count; i++) {
-            switch (pattern.at(i).toLatin1()) {
-            case '$':
-            case '(':
-            case ')':
-            case '*':
-            case '+':
-            case '.':
-            case '?':
-            case '[':
-            case '\\':
-            case ']':
-            case '^':
-            case '{':
-            case '|':
-            case '}':
-                quoted.append(backslash);
-            }
-            quoted.append(pattern.at(i));
-        }
-        verify(quoted, expected);
-    }
-}
-
-void tst_qregexp::escape_new2()
-{
-    QFETCH(QString, pattern);
-    QFETCH(QString, expected);
-
-    QBENCHMARK {
-        int count = pattern.count();
-        const QLatin1Char backslash('\\');
-        QString quoted(count * 2, backslash);
-        const QChar *patternData = pattern.data();
-        QChar *quotedData = quoted.data();
-        int escaped = 0;
-        for ( ; --count >= 0; ++patternData) {
-            const QChar c = *patternData;
-            switch (c.unicode()) {
-            case '$':
-            case '(':
-            case ')':
-            case '*':
-            case '+':
-            case '.':
-            case '?':
-            case '[':
-            case '\\':
-            case ']':
-            case '^':
-            case '{':
-            case '|':
-            case '}':
-                ++escaped;
-                ++quotedData;
-            }
-            *quotedData = c;
-            ++quotedData;
-        }
-        quoted.resize(pattern.size() + escaped); 
-
-        verify(quoted, expected);
-    }
-}
-
-void tst_qregexp::escape_new3()
-{
-    QFETCH(QString, pattern);
-    QFETCH(QString, expected);
-
-    QBENCHMARK {
-        QString quoted;
-        const int count = pattern.count();
-        quoted.reserve(count * 2);
-        const QLatin1Char backslash('\\');
-        for (int i = 0; i < count; i++) {
-            switch (pattern.at(i).toLatin1()) {
-            case '$':
-            case '(':
-            case ')':
-            case '*':
-            case '+':
-            case '.':
-            case '?':
-            case '[':
-            case '\\':
-            case ']':
-            case '^':
-            case '{':
-            case '|':
-            case '}':
-                quoted += backslash;
-            }
-            quoted += pattern.at(i);
-        }
-
-        verify(quoted, expected);
-    }
-}
-
-
-static inline bool needsEscaping(int c)
-{
-    switch (c) {
-    case '$':
-    case '(':
-    case ')':
-    case '*':
-    case '+':
-    case '.':
-    case '?':
-    case '[':
-    case '\\':
-    case ']':
-    case '^':
-    case '{':
-    case '|':
-    case '}':
-        return true;
-    }
-    return false;
-}
-
-void tst_qregexp::escape_new4()
-{
-    QFETCH(QString, pattern);
-    QFETCH(QString, expected);
-
-    QBENCHMARK {
-        const int n = pattern.size();
-        const QChar *patternData = pattern.data();
-        // try to prevent copy if no escape is needed
-        int i = 0;
-        for (int i = 0; i != n; ++i) {
-            const QChar c = patternData[i];
-            if (needsEscaping(c.unicode()))
-                break;
-        }
-        if (i == n) {
-            verify(pattern, expected);
-            // no escaping needed, "return pattern" should be done here.
-            return;
-        }
-        const QLatin1Char backslash('\\');
-        QString quoted(n * 2, backslash);
-        QChar *quotedData = quoted.data();
-        for (int j = 0; j != i; ++j) 
-            *quotedData++ = *patternData++;
-        int escaped = 0;
-        for (; i != n; ++i) {
-            const QChar c = *patternData;
-            if (needsEscaping(c.unicode())) {
-                ++escaped;
-                ++quotedData;
-            }
-            *quotedData = c;
-            ++quotedData;
-            ++patternData;
-        }
-        quoted.resize(n + escaped); 
-        verify(quoted, expected);
-        // "return quoted"
-    }
-}
-QTEST_MAIN(tst_qregexp)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qregexp/qregexp.pro b/tests/benchmarks/qregexp/qregexp.pro
deleted file mode 100644
index 83d723c..0000000
--- a/tests/benchmarks/qregexp/qregexp.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qregexp
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qregion/main.cpp b/tests/benchmarks/qregion/main.cpp
deleted file mode 100644
index 3d16e41..0000000
--- a/tests/benchmarks/qregion/main.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-// This file contains benchmarks for QRegion functions.
-
-#include <QDebug>
-#include <qtest.h>
-
-class tst_qregion : public QObject
-{
-    Q_OBJECT
-private slots:
-    void map_data();
-    void map();
-};
-
-
-void tst_qregion::map_data()
-{
-    QTest::addColumn<QRegion>("region");
-
-    {
-        QRegion region(0, 0, 100, 100);
-        QTest::newRow("single rect") << region;
-    }
-    {
-        QRegion region;
-        region = region.united(QRect(0, 0, 100, 100));
-        region = region.united(QRect(120, 20, 100, 100));
-
-        QTest::newRow("two rects") << region;
-    }
-    {
-        QRegion region(0, 0, 100, 100, QRegion::Ellipse);
-        QTest::newRow("ellipse") << region;
-    }
-}
-
-void tst_qregion::map()
-{
-    QFETCH(QRegion, region);
-
-    QTransform transform;
-    transform.rotate(30);
-    QBENCHMARK {
-        transform.map(region);
-    }
-}
-
-QTEST_MAIN(tst_qregion)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qregion/qregion.pro b/tests/benchmarks/qregion/qregion.pro
deleted file mode 100644
index fc67177..0000000
--- a/tests/benchmarks/qregion/qregion.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qregion
-DEPENDPATH += .
-INCLUDEPATH += .
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qscriptclass/qscriptclass.pro b/tests/benchmarks/qscriptclass/qscriptclass.pro
deleted file mode 100644
index f0ffeb7..0000000
--- a/tests/benchmarks/qscriptclass/qscriptclass.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qscriptclass
-
-SOURCES += tst_qscriptclass.cpp
-
-QT += script
diff --git a/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp b/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
deleted file mode 100644
index 7985028..0000000
--- a/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtScript>
-
-Q_DECLARE_METATYPE(QScriptContext*)
-Q_DECLARE_METATYPE(QScriptValue)
-Q_DECLARE_METATYPE(QScriptValueList)
-
-//TESTED_FILES=
-
-class TestClass : public QScriptClass
-{
-public:
-    struct CustomProperty {
-        QueryFlags qflags;
-        uint id;
-        QScriptValue::PropertyFlags pflags;
-        QScriptValue value;
-
-        CustomProperty(QueryFlags qf, uint i, QScriptValue::PropertyFlags pf,
-                       const QScriptValue &val)
-            : qflags(qf), id(i), pflags(pf), value(val) { }
-    };
-
-    enum CallableMode {
-        NotCallable,
-        CallableReturnsSum,
-        CallableReturnsArgument,
-        CallableReturnsInvalidVariant
-    };
-
-    TestClass(QScriptEngine *engine);
-    ~TestClass();
-
-    void addCustomProperty(const QScriptString &name, QueryFlags qflags,
-                           uint id, QScriptValue::PropertyFlags pflags,
-                           const QScriptValue &value);
-    void removeCustomProperty(const QScriptString &name);
-
-    QueryFlags queryProperty(const QScriptValue &object,
-                             const QScriptString &name,
-                             QueryFlags flags, uint *id);
-
-    QScriptValue property(const QScriptValue &object,
-                          const QScriptString &name, uint id);
-
-    void setProperty(QScriptValue &object, const QScriptString &name,
-                     uint id, const QScriptValue &value);
-
-    QScriptValue::PropertyFlags propertyFlags(
-        const QScriptValue &object, const QScriptString &name, uint id);
-
-    QScriptClassPropertyIterator *newIterator(const QScriptValue &object);
-
-    QScriptValue prototype() const;
-
-    QString name() const;
-
-    bool supportsExtension(Extension extension) const;
-    QVariant extension(Extension extension,
-                       const QVariant &argument = QVariant());
-
-    void setIterationEnabled(bool enable);
-    bool isIterationEnabled() const;
-
-    void setCallableMode(CallableMode mode);
-    CallableMode callableMode() const;
-
-    void setHasInstance(bool hasInstance);
-    bool hasInstance() const;
-
-private:
-    inline CustomProperty *findCustomProperty(const QScriptString &name);
-
-    QHash<QScriptString, CustomProperty*> customProperties;
-
-    QScriptValue m_prototype;
-    bool m_iterationEnabled;
-    CallableMode m_callableMode;
-    bool m_hasInstance;
-};
-
-class TestClassPropertyIterator : public QScriptClassPropertyIterator
-{
-public:
-    TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
-                      const QScriptValue &object);
-    ~TestClassPropertyIterator();
-
-    bool hasNext() const;
-    void next();
-
-    bool hasPrevious() const;
-    void previous();
-
-    void toFront();
-    void toBack();
-
-    QScriptString name() const;
-    uint id() const;
-    QScriptValue::PropertyFlags flags() const;
-
-private:
-    int m_index;
-    int m_last;
-    QHash<QScriptString, TestClass::CustomProperty*> m_props;
-};
-
-TestClass::TestClass(QScriptEngine *engine)
-    : QScriptClass(engine), m_iterationEnabled(true),
-      m_callableMode(NotCallable), m_hasInstance(false)
-{
-    m_prototype = engine->newObject();
-}
-
-TestClass::~TestClass()
-{
-    qDeleteAll(customProperties);
-}
-
-TestClass::CustomProperty* TestClass::findCustomProperty(const QScriptString &name)
-{
-    QHash<QScriptString, CustomProperty*>::const_iterator it;
-    it = customProperties.constFind(name);
-    if (it == customProperties.constEnd())
-        return 0;
-    return it.value();
-
-}
-
-void TestClass::addCustomProperty(const QScriptString &name, QueryFlags qflags,
-                                  uint id, QScriptValue::PropertyFlags pflags,
-                                  const QScriptValue &value)
-{
-    customProperties.insert(name, new CustomProperty(qflags, id, pflags, value));
-}
-
-void TestClass::removeCustomProperty(const QScriptString &name)
-{
-    CustomProperty *prop = customProperties.take(name);
-    if (prop)
-        delete prop;
-}
-
-QScriptClass::QueryFlags TestClass::queryProperty(const QScriptValue &/*object*/,
-                                    const QScriptString &name,
-                                    QueryFlags flags, uint *id)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return 0;
-    *id = prop->id;
-    return prop->qflags & flags;
-}
-
-QScriptValue TestClass::property(const QScriptValue &/*object*/,
-                                 const QScriptString &name, uint /*id*/)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return QScriptValue();
-    return prop->value;
-}
-
-void TestClass::setProperty(QScriptValue &/*object*/, const QScriptString &name,
-                            uint /*id*/, const QScriptValue &value)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return;
-    prop->value = value;
-}
-
-QScriptValue::PropertyFlags TestClass::propertyFlags(
-    const QScriptValue &/*object*/, const QScriptString &name, uint /*id*/)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return 0;
-    return prop->pflags;
-}
-
-QScriptClassPropertyIterator *TestClass::newIterator(const QScriptValue &object)
-{
-    if (!m_iterationEnabled)
-        return 0;
-    return new TestClassPropertyIterator(customProperties, object);
-}
-
-QScriptValue TestClass::prototype() const
-{
-    return m_prototype;
-}
-
-QString TestClass::name() const
-{
-    return QLatin1String("TestClass");
-}
-
-bool TestClass::supportsExtension(Extension extension) const
-{
-    if (extension == Callable)
-        return (m_callableMode != NotCallable);
-    if (extension == HasInstance)
-        return m_hasInstance;
-    return false;
-}
-
-QVariant TestClass::extension(Extension extension,
-                              const QVariant &argument)
-{
-    if (extension == Callable) {
-        Q_ASSERT(m_callableMode != NotCallable);
-        QScriptContext *ctx = qvariant_cast<QScriptContext*>(argument);
-        if (m_callableMode == CallableReturnsSum) {
-            qsreal sum = 0;
-            for (int i = 0; i < ctx->argumentCount(); ++i)
-                sum += ctx->argument(i).toNumber();
-            QScriptValueIterator it(ctx->thisObject());
-            while (it.hasNext()) {
-                it.next();
-                sum += it.value().toNumber();
-            }
-            return sum;
-        } else if (m_callableMode == CallableReturnsArgument) {
-            return qVariantFromValue(ctx->argument(0));
-        } else if (m_callableMode == CallableReturnsInvalidVariant) {
-            return QVariant();
-        }
-    } else if (extension == HasInstance) {
-        Q_ASSERT(m_hasInstance);
-        QScriptValueList args = qvariant_cast<QScriptValueList>(argument);
-        QScriptValue obj = args.at(0);
-        QScriptValue value = args.at(1);
-        return value.property("foo").equals(obj.property("foo"));
-    }
-    return QVariant();
-}
-
-void TestClass::setIterationEnabled(bool enable)
-{
-    m_iterationEnabled = enable;
-}
-
-bool TestClass::isIterationEnabled() const
-{
-    return m_iterationEnabled;
-}
-
-void TestClass::setCallableMode(CallableMode mode)
-{
-    m_callableMode = mode;
-}
-
-TestClass::CallableMode TestClass::callableMode() const
-{
-    return m_callableMode;
-}
-
-void TestClass::setHasInstance(bool hasInstance)
-{
-    m_hasInstance = hasInstance;
-}
-
-bool TestClass::hasInstance() const
-{
-    return m_hasInstance;
-}
-
-TestClassPropertyIterator::TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
-                                     const QScriptValue &object)
-    : QScriptClassPropertyIterator(object)
-{
-    m_props = props;
-    toFront();
-}
-
-TestClassPropertyIterator::~TestClassPropertyIterator()
-{
-}
-
-bool TestClassPropertyIterator::hasNext() const
-{
-    return m_index < m_props.size();
-}
-
-void TestClassPropertyIterator::next()
-{
-    m_last = m_index;
-    ++m_index;
-}
-
-bool TestClassPropertyIterator::hasPrevious() const
-{
-    return m_index > 0;
-}
-
-void TestClassPropertyIterator::previous()
-{
-    --m_index;
-    m_last = m_index;
-}
-
-void TestClassPropertyIterator::toFront()
-{
-    m_index = 0;
-    m_last = -1;
-}
-
-void TestClassPropertyIterator::toBack()
-{
-    m_index = m_props.size();
-    m_last = -1;
-}
-
-QScriptString TestClassPropertyIterator::name() const
-{
-    return m_props.keys().value(m_last);
-}
-
-uint TestClassPropertyIterator::id() const
-{
-    QScriptString key = m_props.keys().value(m_last);
-    if (!key.isValid())
-        return 0;
-    TestClass::CustomProperty *prop = m_props.value(key);
-    return prop->id;
-}
-
-QScriptValue::PropertyFlags TestClassPropertyIterator::flags() const
-{
-    QScriptString key = m_props.keys().value(m_last);
-    if (!key.isValid())
-        return 0;
-    TestClass::CustomProperty *prop = m_props.value(key);
-    return prop->pflags;
-}
-
-class tst_QScriptClass : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QScriptClass();
-    virtual ~tst_QScriptClass();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void noSuchProperty();
-    void property();
-    void setProperty();
-    void propertyFlags();
-    void call();
-    void hasInstance();
-    void iterate();
-};
-
-tst_QScriptClass::tst_QScriptClass()
-{
-}
-
-tst_QScriptClass::~tst_QScriptClass()
-{
-}
-
-void tst_QScriptClass::init()
-{
-}
-
-void tst_QScriptClass::cleanup()
-{
-}
-
-void tst_QScriptClass::noSuchProperty()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptValue obj = eng.newObject(&cls);
-    QString propertyName = QString::fromLatin1("foo");
-    QBENCHMARK {
-        (void)obj.property(propertyName);
-    }
-}
-
-void tst_QScriptClass::property()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
-    QScriptValue obj = eng.newObject(&cls);
-    QBENCHMARK {
-        (void)obj.property(foo);
-    }
-}
-
-void tst_QScriptClass::setProperty()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesWriteAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
-    QScriptValue obj = eng.newObject(&cls);
-    QScriptValue value(456);
-    QBENCHMARK {
-        obj.setProperty(foo, value);
-    }
-}
-
-void tst_QScriptClass::propertyFlags()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, QScriptValue::ReadOnly, /*value=*/123);
-    QScriptValue obj = eng.newObject(&cls);
-    QBENCHMARK {
-        (void)obj.propertyFlags(foo);
-    }
-}
-
-void tst_QScriptClass::call()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setCallableMode(TestClass::CallableReturnsArgument);
-    QScriptValue obj = eng.newObject(&cls);
-    QScriptValue thisObject;
-    QScriptValueList args;
-    args.append(123);
-    QBENCHMARK {
-        (void)obj.call(thisObject, args);
-    }
-}
-
-void tst_QScriptClass::hasInstance()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setHasInstance(true);
-    QScriptValue obj = eng.newObject(&cls);
-    obj.setProperty("foo", 123);
-    QScriptValue plain = eng.newObject();
-    plain.setProperty("foo", obj.property("foo"));
-    QBENCHMARK {
-        (void)plain.instanceOf(obj);
-    }
-}
-
-void tst_QScriptClass::iterate()
-{
-    QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setIterationEnabled(true);
-    cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
-    cls.addCustomProperty(eng.toStringHandle("bar"), QScriptClass::HandlesReadAccess, /*id=*/2, /*attributes=*/0, /*value=*/456);
-    QScriptValue obj = eng.newObject(&cls);
-    QBENCHMARK {
-        QScriptValueIterator it(obj);
-        while (it.hasNext()) {
-            it.next();
-            (void)it.scriptName();
-        }
-    }
-}
-
-QTEST_MAIN(tst_QScriptClass)
-#include "tst_qscriptclass.moc"
diff --git a/tests/benchmarks/qscriptengine/qscriptengine.pro b/tests/benchmarks/qscriptengine/qscriptengine.pro
deleted file mode 100644
index df6dbb3..0000000
--- a/tests/benchmarks/qscriptengine/qscriptengine.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qscriptengine
-
-SOURCES += tst_qscriptengine.cpp
-
-QT += script
-
-symbian* {
-    TARGET.EPOCHEAPSIZE  = 0x20000 0x2000000 // Min 128kB, Max 32MB
-    TARGET.EPOCSTACKSIZE = 0x14000
-}
diff --git a/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp b/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp
deleted file mode 100644
index 6c6f0b1..0000000
--- a/tests/benchmarks/qscriptengine/tst_qscriptengine.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtScript>
-
-//TESTED_FILES=
-
-class tst_QScriptEngine : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QScriptEngine();
-    virtual ~tst_QScriptEngine();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void constructor();
-    void evaluate_data();
-    void evaluate();
-    void evaluateProgram_data();
-    void evaluateProgram();
-    void connectAndDisconnect();
-    void newObject();
-    void newQObject();
-    void newFunction();
-    void newVariant();
-    void collectGarbage();
-    void pushAndPopContext();
-    void toStringHandle();
-    void castValueToQreal();
-    void nativeCall();
-    void translation_data();
-    void translation();
-};
-
-tst_QScriptEngine::tst_QScriptEngine()
-{
-}
-
-tst_QScriptEngine::~tst_QScriptEngine()
-{
-}
-
-void tst_QScriptEngine::init()
-{
-}
-
-void tst_QScriptEngine::cleanup()
-{
-}
-
-void tst_QScriptEngine::constructor()
-{
-    QBENCHMARK {
-        QScriptEngine engine;
-        (void)engine.parent();
-    }
-}
-
-void tst_QScriptEngine::evaluate_data()
-{
-    QTest::addColumn<QString>("code");
-    QTest::newRow("empty script") << QString::fromLatin1("");
-    QTest::newRow("number literal") << QString::fromLatin1("123");
-    QTest::newRow("string literal") << QString::fromLatin1("'ciao'");
-    QTest::newRow("regexp literal") << QString::fromLatin1("/foo/gim");
-    QTest::newRow("null literal") << QString::fromLatin1("null");
-    QTest::newRow("undefined literal") << QString::fromLatin1("undefined");
-    QTest::newRow("null literal") << QString::fromLatin1("null");
-    QTest::newRow("empty object literal") << QString::fromLatin1("{}");
-    QTest::newRow("this") << QString::fromLatin1("this");
-    QTest::newRow("object literal with one property") << QString::fromLatin1("{ foo: 123 }");
-    QTest::newRow("object literal with two properties") << QString::fromLatin1("{ foo: 123, bar: 456 }");
-    QTest::newRow("object literal with many properties") << QString::fromLatin1("{ a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10 }");
-    QTest::newRow("empty array literal") << QString::fromLatin1("[]");
-    QTest::newRow("array literal with one element") << QString::fromLatin1("[1]");
-    QTest::newRow("array literal with two elements") << QString::fromLatin1("[1,2]");
-    QTest::newRow("array literal with many elements") << QString::fromLatin1("[1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1]");
-    QTest::newRow("empty function definition") << QString::fromLatin1("function foo() { }");
-    QTest::newRow("function definition") << QString::fromLatin1("function foo() { return 123; }");
-    QTest::newRow("for loop with empty body (1000 iterations)") << QString::fromLatin1("for (i = 0; i < 1000; ++i) {}");
-    QTest::newRow("for loop with empty body (10000 iterations)") << QString::fromLatin1("for (i = 0; i < 10000; ++i) {}");
-    QTest::newRow("for loop with empty body (100000 iterations)") << QString::fromLatin1("for (i = 0; i < 100000; ++i) {}");
-    QTest::newRow("for loop with empty body (1000000 iterations)") << QString::fromLatin1("for (i = 0; i < 1000000; ++i) {}");
-    QTest::newRow("for loop (1000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 1000; ++i) { j += i; }; j");
-    QTest::newRow("for loop (10000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 10000; ++i) { j += i; }; j");
-    QTest::newRow("for loop (100000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 100000; ++i) { j += i; }; j");
-    QTest::newRow("for loop (1000000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 1000000; ++i) { j += i; }; j");
-    QTest::newRow("assignments") << QString::fromLatin1("a = 1; b = 2; c = 3; d = 4");
-    QTest::newRow("while loop (1000 iterations)") << QString::fromLatin1("i = 0; while (i < 1000) { ++i; }; i");
-    QTest::newRow("while loop (10000 iterations)") << QString::fromLatin1("i = 0; while (i < 10000) { ++i; }; i");
-    QTest::newRow("while loop (100000 iterations)") << QString::fromLatin1("i = 0; while (i < 100000) { ++i; }; i");
-    QTest::newRow("while loop (1000000 iterations)") << QString::fromLatin1("i = 0; while (i < 1000000) { ++i; }; i");
-    QTest::newRow("function expression") << QString::fromLatin1("(function(a, b, c){ return a + b + c; })(1, 2, 3)");
-}
-
-void tst_QScriptEngine::evaluate()
-{
-    QFETCH(QString, code);
-    QScriptEngine engine;
-
-    QBENCHMARK {
-        (void)engine.evaluate(code);
-    }
-}
-
-void tst_QScriptEngine::connectAndDisconnect()
-{
-    QScriptEngine engine;
-    QScriptValue fun = engine.evaluate("(function() { })");
-    QBENCHMARK {
-        qScriptConnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
-        qScriptDisconnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
-    }
-}
-
-void tst_QScriptEngine::evaluateProgram_data()
-{
-    evaluate_data();
-}
-
-void tst_QScriptEngine::evaluateProgram()
-{
-    QFETCH(QString, code);
-    QScriptEngine engine;
-    QScriptProgram program(code);
-
-    QBENCHMARK {
-        (void)engine.evaluate(program);
-    }
-}
-
-void tst_QScriptEngine::newObject()
-{
-    QScriptEngine engine;
-    QBENCHMARK {
-        (void)engine.newObject();
-    }
-}
-
-void tst_QScriptEngine::newQObject()
-{
-    QScriptEngine engine;
-    QBENCHMARK {
-        (void)engine.newQObject(QCoreApplication::instance());
-    }
-}
-
-static QScriptValue testFunction(QScriptContext *, QScriptEngine *)
-{
-    return 0;
-}
-
-void tst_QScriptEngine::newFunction()
-{
-    QScriptEngine engine;
-    QBENCHMARK {
-        (void)engine.newFunction(testFunction);
-    }
-}
-
-void tst_QScriptEngine::newVariant()
-{
-    QScriptEngine engine;
-    QVariant var(123);
-    QBENCHMARK {
-        (void)engine.newVariant(var);
-    }
-}
-
-void tst_QScriptEngine::collectGarbage()
-{
-    QScriptEngine engine;
-    QBENCHMARK {
-        engine.collectGarbage();
-    }
-}
-
-void tst_QScriptEngine::pushAndPopContext()
-{
-    QScriptEngine engine;
-    QBENCHMARK {
-        (void)engine.pushContext();
-        engine.popContext();
-    }
-}
-
-void tst_QScriptEngine::toStringHandle()
-{
-    QScriptEngine engine;
-    QString str = QString::fromLatin1("foobarbaz");
-    QBENCHMARK {
-        (void)engine.toStringHandle(str);
-    }
-}
-
-void tst_QScriptEngine::castValueToQreal()
-{
-    QScriptEngine engine;
-    QScriptValue val(123);
-    QBENCHMARK {
-        (void)qscriptvalue_cast<qreal>(val);
-    }
-}
-
-static QScriptValue native_function(QScriptContext *, QScriptEngine *)
-{
-    return 42;
-}
-
-void tst_QScriptEngine::nativeCall()
-{
-    QScriptEngine eng;
-    eng.globalObject().setProperty("fun", eng.newFunction(native_function));
-    QBENCHMARK{
-#if !defined(Q_OS_SYMBIAN)
-        eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
-                     "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
-#else
-        eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
-                     "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
-#endif
-    }
-}
-
-void tst_QScriptEngine::translation_data()
-{
-    QTest::addColumn<QString>("text");
-    QTest::newRow("no translation") << "\"hello world\"";
-    QTest::newRow("qsTr") << "qsTr(\"hello world\")";
-    QTest::newRow("qsTranslate") << "qsTranslate(\"\", \"hello world\")";
-}
-
-void tst_QScriptEngine::translation()
-{
-    QFETCH(QString, text);
-    QScriptEngine engine;
-    engine.installTranslatorFunctions();
-
-    QBENCHMARK {
-        (void)engine.evaluate(text);
-    }
-}
-
-QTEST_MAIN(tst_QScriptEngine)
-#include "tst_qscriptengine.moc"
diff --git a/tests/benchmarks/qscriptvalue/qscriptvalue.pro b/tests/benchmarks/qscriptvalue/qscriptvalue.pro
deleted file mode 100644
index 04ea324..0000000
--- a/tests/benchmarks/qscriptvalue/qscriptvalue.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qscriptvalue
-
-SOURCES += tst_qscriptvalue.cpp
-
-QT += script
diff --git a/tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp b/tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp
deleted file mode 100644
index 3bfc21c..0000000
--- a/tests/benchmarks/qscriptvalue/tst_qscriptvalue.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtScript>
-
-//TESTED_FILES=
-
-class tst_QScriptValue : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QScriptValue();
-    virtual ~tst_QScriptValue();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void numberConstructor();
-    void stringConstructor();
-    void call_data();
-    void call();
-    void construct_data();
-    void construct();
-    void toString_data();
-    void toString();
-    void toQObject();
-    void property();
-    void setProperty();
-    void propertyFlags();
-};
-
-tst_QScriptValue::tst_QScriptValue()
-{
-}
-
-tst_QScriptValue::~tst_QScriptValue()
-{
-}
-
-void tst_QScriptValue::init()
-{
-}
-
-void tst_QScriptValue::cleanup()
-{
-}
-
-void tst_QScriptValue::numberConstructor()
-{
-    QBENCHMARK {
-        (void)QScriptValue(123);
-    }
-}
-
-void tst_QScriptValue::stringConstructor()
-{
-    QString str = QString::fromLatin1("ciao");
-    QBENCHMARK {
-        (void)QScriptValue(str);
-    }
-}
-
-void tst_QScriptValue::call_data()
-{
-    QTest::addColumn<QString>("code");
-    QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
-    QTest::newRow("function returning number") << QString::fromLatin1("(function(){ return 123; })");
-    QTest::newRow("closure") << QString::fromLatin1("(function(a, b){ return function() { return a + b; }; })(1, 2)");
-}
-
-void tst_QScriptValue::call()
-{
-    QFETCH(QString, code);
-    QScriptEngine engine;
-    QScriptValue fun = engine.evaluate(code);
-    QVERIFY(fun.isFunction());
-    QBENCHMARK {
-        (void)fun.call();
-    }
-}
-
-void tst_QScriptValue::construct_data()
-{
-    QTest::addColumn<QString>("code");
-    QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
-    QTest::newRow("simple constructor") << QString::fromLatin1("(function(){ this.x = 10; this.y = 20; })");
-}
-
-void tst_QScriptValue::construct()
-{
-    QFETCH(QString, code);
-    QScriptEngine engine;
-    QScriptValue fun = engine.evaluate(code);
-    QVERIFY(fun.isFunction());
-    QBENCHMARK {
-        (void)fun.construct();
-    }
-}
-
-void tst_QScriptValue::toString_data()
-{
-    QTest::addColumn<QString>("code");
-    QTest::newRow("number") << QString::fromLatin1("123");
-    QTest::newRow("string") << QString::fromLatin1("'ciao'");
-    QTest::newRow("null") << QString::fromLatin1("null");
-    QTest::newRow("undefined") << QString::fromLatin1("undefined");
-    QTest::newRow("function") << QString::fromLatin1("(function foo(a, b, c) { return a + b + c; })");
-}
-
-void tst_QScriptValue::toString()
-{
-    QFETCH(QString, code);
-    QScriptEngine engine;
-    QScriptValue val = engine.evaluate(code);
-    QBENCHMARK {
-        (void)val.toString();
-    }
-}
-
-void tst_QScriptValue::toQObject()
-{
-    QScriptEngine engine;
-    QScriptValue obj = engine.newQObject(QCoreApplication::instance());
-    QBENCHMARK {
-        (void)obj.toQObject();
-    }
-}
-
-void tst_QScriptValue::property()
-{
-    QScriptEngine engine;
-    QScriptValue obj = engine.newObject();
-    QString propertyName = QString::fromLatin1("foo");
-    obj.setProperty(propertyName, 123);
-    QBENCHMARK {
-        (void)obj.property(propertyName);
-    }
-}
-
-void tst_QScriptValue::setProperty()
-{
-    QScriptEngine engine;
-    QScriptValue obj = engine.newObject();
-    QString propertyName = QString::fromLatin1("foo");
-    QScriptValue val(123);
-    QBENCHMARK {
-        obj.setProperty(propertyName, val);
-    }
-}
-
-void tst_QScriptValue::propertyFlags()
-{
-    QScriptEngine engine;
-    QScriptValue obj = engine.newObject();
-    QString propertyName = QString::fromLatin1("foo");
-    obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
-    QBENCHMARK {
-        (void)obj.propertyFlags(propertyName);
-    }
-}
-
-QTEST_MAIN(tst_QScriptValue)
-#include "tst_qscriptvalue.moc"
diff --git a/tests/benchmarks/qstring/main.cpp b/tests/benchmarks/qstring/main.cpp
deleted file mode 100644
index 12826eb..0000000
--- a/tests/benchmarks/qstring/main.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QStringList>
-#include <QFile>
-#include <qtest.h>
-
-#ifdef Q_OS_SYMBIAN
-// In Symbian OS test data is located in applications private dir
-// Application private dir is default serach path for files, so SRCDIR can be set to empty
-#define SRCDIR ""
-#endif
-
-class tst_QString: public QObject
-{
-    Q_OBJECT
-private slots:
-    void equals() const;
-    void equals_data() const;
-    void fromUtf8() const;
-};
-
-void tst_QString::equals() const
-{
-    QFETCH(QString, a);
-    QFETCH(QString, b);
-
-    QBENCHMARK {
-        a == b;
-    }
-}
-
-void tst_QString::equals_data() const
-{
-    static const struct {
-        ushort data[80];
-        int dummy;              // just to ensure 4-byte alignment
-    } data = {
-        {
-            64, 64, 64, 64,  64, 64, 64, 64,
-            64, 64, 64, 64,  64, 64, 64, 64, // 16
-            64, 64, 64, 64,  64, 64, 64, 64,
-            64, 64, 64, 64,  64, 64, 64, 64, // 32
-            64, 64, 64, 64,  64, 64, 64, 64,
-            64, 64, 64, 64,  64, 64, 64, 64, // 48
-            64, 64, 64, 64,  64, 64, 64, 64,
-            64, 64, 64, 64,  64, 64, 64, 64, // 64
-            64, 64, 64, 64,  96, 96, 96, 96,
-            64, 64, 96, 96,  96, 96, 96, 96  // 80
-        }, 0
-    };
-    const QChar *ptr = reinterpret_cast<const QChar *>(data.data);
-
-    QTest::addColumn<QString>("a");
-    QTest::addColumn<QString>("b");
-    QString base = QString::fromRawData(ptr, 64);
-
-    QTest::newRow("different-length") << base << QString::fromRawData(ptr, 4);
-    QTest::newRow("same-string") << base << base;
-    QTest::newRow("same-data") << base << QString::fromRawData(ptr, 64);
-
-    // try to avoid crossing a cache line (that is, at ptr[64])
-    QTest::newRow("aligned-aligned-4n")
-            << QString::fromRawData(ptr, 60) << QString::fromRawData(ptr + 2, 60);
-    QTest::newRow("aligned-unaligned-4n")
-            << QString::fromRawData(ptr, 60) << QString::fromRawData(ptr + 1, 60);
-    QTest::newRow("unaligned-unaligned-4n")
-            << QString::fromRawData(ptr + 1, 60) << QString::fromRawData(ptr + 3, 60);
-
-    QTest::newRow("aligned-aligned-4n+1")
-            << QString::fromRawData(ptr, 61) << QString::fromRawData(ptr + 2, 61);
-    QTest::newRow("aligned-unaligned-4n+1")
-            << QString::fromRawData(ptr, 61) << QString::fromRawData(ptr + 1, 61);
-    QTest::newRow("unaligned-unaligned-4n+1")
-            << QString::fromRawData(ptr + 1, 61) << QString::fromRawData(ptr + 3, 61);
-
-    QTest::newRow("aligned-aligned-4n-1")
-            << QString::fromRawData(ptr, 59) << QString::fromRawData(ptr + 2, 59);
-    QTest::newRow("aligned-unaligned-4n-1")
-            << QString::fromRawData(ptr, 59) << QString::fromRawData(ptr + 1, 59);
-    QTest::newRow("unaligned-unaligned-4n-1")
-            << QString::fromRawData(ptr + 1, 59) << QString::fromRawData(ptr + 3, 59);
-
-    QTest::newRow("aligned-aligned-2n")
-            << QString::fromRawData(ptr, 58) << QString::fromRawData(ptr + 2, 58);
-    QTest::newRow("aligned-unaligned-2n")
-            << QString::fromRawData(ptr, 58) << QString::fromRawData(ptr + 1, 58);
-    QTest::newRow("unaligned-unaligned-2n")
-            << QString::fromRawData(ptr + 1, 58) << QString::fromRawData(ptr + 3, 58);
-}
-
-void tst_QString::fromUtf8() const
-{
-    QFile file(SRCDIR "utf-8.txt");
-    if (!file.open(QFile::ReadOnly)) {
-        qFatal("Cannot open input file");
-        return;
-    }
-    QByteArray data = file.readAll();
-    const char *d = data.constData();
-    int size = data.size();
-
-    QBENCHMARK {
-        QString::fromUtf8(d, size);
-    }
-}
-
-QTEST_MAIN(tst_QString)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qstring/qstring.pro b/tests/benchmarks/qstring/qstring.pro
deleted file mode 100644
index 2e7c86a..0000000
--- a/tests/benchmarks/qstring/qstring.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-load(qttest_p4)
-TARGET = tst_qstring
-QT -= gui
-SOURCES += main.cpp
-
-wince*:{
-   DEFINES += SRCDIR=\\\"\\\"
-} else:symbian* {
-   addFiles.sources = utf-8.txt
-   addFiles.path = .
-   DEPLOYMENT += addFiles
-   TARGET.EPOCHEAPSIZE="0x100 0x1000000"
-} else {
-   DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
-
diff --git a/tests/benchmarks/qstring/utf-8.txt b/tests/benchmarks/qstring/utf-8.txt
deleted file mode 100644
index a8a58de..0000000
--- a/tests/benchmarks/qstring/utf-8.txt
+++ /dev/null
@@ -1,72 +0,0 @@
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
-Språk: Norsk
-Γλώσσα: Ελληνικά
-Язык: Русский
-언어 : 한국어
-言語: 日本語
-Langage : Français
diff --git a/tests/benchmarks/qstringbuilder/main.cpp b/tests/benchmarks/qstringbuilder/main.cpp
deleted file mode 100644
index 9bd146f..0000000
--- a/tests/benchmarks/qstringbuilder/main.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Select one of the scenarios below
-#define SCENARIO 1
-
-#if SCENARIO == 1
-// this is the "no harm done" version. Only operator% is active,
-// with NO_CAST * defined
-#define P %
-#undef QT_USE_FAST_OPERATOR_PLUS
-#undef QT_USE_FAST_CONCATENATION
-#define QT_NO_CAST_FROM_ASCII
-#define QT_NO_CAST_TO_ASCII
-#endif
-
-
-#if SCENARIO == 2
-// this is the "full" version. Operator+ is replaced by a QStringBuilder
-// based version
-// with NO_CAST * defined
-#define P +
-#define QT_USE_FAST_OPERATOR_PLUS
-#define QT_USE_FAST_CONCATENATION
-#define QT_NO_CAST_FROM_ASCII
-#define QT_NO_CAST_TO_ASCII
-#endif
-
-#if SCENARIO == 3
-// this is the "no harm done" version. Only operator% is active,
-// with NO_CAST * _not_ defined
-#define P %
-#undef QT_USE_FAST_OPERATOR_PLUS
-#undef QT_USE_FAST_CONCATENATION
-#undef QT_NO_CAST_FROM_ASCII
-#undef QT_NO_CAST_TO_ASCII
-#endif
-
-#if SCENARIO == 4
-// this is the "full" version. Operator+ is replaced by a QStringBuilder
-// based version
-// with NO_CAST * _not_ defined
-#define P +
-#define QT_USE_FAST_OPERATOR_PLUS
-#define QT_USE_FAST_CONCATENATION
-#undef QT_NO_CAST_FROM_ASCII
-#undef QT_NO_CAST_TO_ASCII
-#endif
-
-
-#include <qbytearray.h>
-#include <qdebug.h>
-#include <qstring.h>
-#include <qstringbuilder.h>
-
-#include <qtest.h>
-
-#include <string>
-
-#define COMPARE(a, b) QCOMPARE(a, b)
-//#define COMPARE(a, b)
-
-#define SEP(s) qDebug() << "\n\n-------- " s "  ---------";
-
-#define LITERAL "some string literal"
-
-class tst_qstringbuilder : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_qstringbuilder()
-      : l1literal(LITERAL),
-        l1string(LITERAL),
-        ba(LITERAL),
-        string(l1string),
-        stdstring(LITERAL),
-        stringref(&string, 2, 10),
-        achar('c'),
-        r2(QLatin1String(LITERAL LITERAL)),
-        r3(QLatin1String(LITERAL LITERAL LITERAL)),
-        r4(QLatin1String(LITERAL LITERAL LITERAL LITERAL)),
-        r5(QLatin1String(LITERAL LITERAL LITERAL LITERAL LITERAL))
-    {}
-
-
-public:
-    enum { N = 10000 };
-
-    int run_traditional()
-    {
-        int s = 0;
-        for (int i = 0; i < N; ++i) {
-#if 0
-            s += QString(l1string + l1string).size();
-            s += QString(l1string + l1string + l1string).size();
-            s += QString(l1string + l1string + l1string + l1string).size();
-            s += QString(l1string + l1string + l1string + l1string + l1string).size();
-#endif
-            s += QString(achar + l1string + achar).size();
-        }
-        return s;
-    }
-
-    int run_builder()
-    {
-        int s = 0;
-        for (int i = 0; i < N; ++i) {
-#if 0
-            s += QString(l1literal P l1literal).size();
-            s += QString(l1literal P l1literal P l1literal).size();
-            s += QString(l1literal P l1literal P l1literal P l1literal).size();
-            s += QString(l1literal P l1literal P l1literal P l1literal P l1literal).size();
-#endif
-            s += QString(achar % l1literal % achar).size();
-        }
-        return s;
-    }
-
-private slots:
-
-    void separator_0() {
-        qDebug() << "\nIn each block the QStringBuilder based result appear first "
-            "(with a 'b_' prefix), QStringBased second ('q_' prefix), std::string "
-            "last ('s_' prefix)\n";
-    }
-
-    void separator_1() { SEP("literal + literal  (builder first)"); }
-
-    void b_2_l1literal() {
-        QBENCHMARK { r = l1literal P l1literal; }
-        COMPARE(r, r2);
-    }
-    #ifndef QT_NO_CAST_FROM_ASCII
-    void b_l1literal_LITERAL() {
-        QBENCHMARK { r = l1literal P LITERAL; }
-        COMPARE(r, r2);
-    }
-    #endif
-    void q_2_l1string() {
-        QBENCHMARK { r = l1string + l1string; }
-        COMPARE(r, r2);
-    }
-
-
-    void separator_2() { SEP("2 strings"); }
-
-    void b_2_string() {
-        QBENCHMARK { r = string P string; }
-        COMPARE(r, r2);
-    }
-    void q_2_string() {
-        QBENCHMARK { r = string + string; }
-        COMPARE(r, r2);
-    }
-    void s_2_string() {
-        QBENCHMARK { stdr = stdstring + stdstring; }
-        COMPARE(stdr, stdstring + stdstring);
-    }
-
-
-    void separator_2c() { SEP("2 string refs"); }
-
-    void b_2_stringref() {
-        QBENCHMARK { r = stringref % stringref; }
-        COMPARE(r, QString(stringref.toString() + stringref.toString()));
-    }
-    void q_2_stringref() {
-        QBENCHMARK { r = stringref.toString() + stringref.toString(); }
-        COMPARE(r, QString(stringref % stringref));
-    }
-
-
-    void separator_2b() { SEP("3 strings"); }
-
-    void b_3_string() {
-        QBENCHMARK { r = string P string P string; }
-        COMPARE(r, r3);
-    }
-    void q_3_string() {
-        QBENCHMARK { r = string + string + string; }
-        COMPARE(r, r3);
-    }
-    void s_3_string() {
-        QBENCHMARK { stdr = stdstring + stdstring + stdstring; }
-        COMPARE(stdr, stdstring + stdstring + stdstring);
-    }
-
-    void separator_2e() { SEP("4 strings"); }
-
-    void b_4_string() {
-        QBENCHMARK { r = string P string P string P string; }
-        COMPARE(r, r4);
-    }
-    void q_4_string() {
-        QBENCHMARK { r = string + string + string + string; }
-        COMPARE(r, r4);
-    }
-    void s_4_string() {
-        QBENCHMARK { stdr = stdstring + stdstring + stdstring + stdstring; }
-        COMPARE(stdr, stdstring + stdstring + stdstring + stdstring);
-    }
-
-
-
-    void separator_2a() { SEP("string + literal  (builder first)"); }
-
-    void b_string_l1literal() {
-        QBENCHMARK { r = string % l1literal; }
-        COMPARE(r, r2);
-    }
-    #ifndef QT_NO_CAST_FROM_ASCII
-    void b_string_LITERAL() {
-        QBENCHMARK { r = string P LITERAL; }
-        COMPARE(r, r2);
-    }
-    void b_LITERAL_string() {
-        QBENCHMARK { r = LITERAL P string; }
-        COMPARE(r, r2);
-    }
-    #endif
-    void b_string_l1string() {
-        QBENCHMARK { r = string P l1string; }
-        COMPARE(r, r2);
-    }
-    void q_string_l1literal() {
-        QBENCHMARK { r = string + l1string; }
-        COMPARE(r, r2);
-    }
-    void q_string_l1string() {
-        QBENCHMARK { r = string + l1string; }
-        COMPARE(r, r2);
-    }
-    void s_LITERAL_string() {
-        QBENCHMARK { stdr = LITERAL + stdstring; }
-        COMPARE(stdr, stdstring + stdstring);
-    }
-
-
-    void separator_3() { SEP("3 literals"); }
-
-    void b_3_l1literal() {
-        QBENCHMARK { r = l1literal P l1literal P l1literal; }
-        COMPARE(r, r3);
-    }
-    void q_3_l1string() {
-        QBENCHMARK { r = l1string + l1string + l1string; }
-        COMPARE(r, r3);
-    }
-    void s_3_l1string() {
-        QBENCHMARK { stdr = stdstring + LITERAL + LITERAL; }
-        COMPARE(stdr, stdstring + stdstring + stdstring);
-    }
-
-
-    void separator_4() { SEP("4 literals"); }
-
-    void b_4_l1literal() {
-        QBENCHMARK { r = l1literal P l1literal P l1literal P l1literal; }
-        COMPARE(r, r4);
-    }
-    void q_4_l1string() {
-        QBENCHMARK { r = l1string + l1string + l1string + l1string; }
-        COMPARE(r, r4);
-    }
-
-
-    void separator_5() { SEP("5 literals"); }
-
-    void b_5_l1literal() {
-        QBENCHMARK { r = l1literal P l1literal P l1literal P l1literal P l1literal; }
-        COMPARE(r, r5);
-    }
-
-    void q_5_l1string() {
-        QBENCHMARK { r = l1string + l1string + l1string + l1string + l1string; }
-        COMPARE(r, r5);
-    }
-
-
-    void separator_6() { SEP("4 chars"); }
-
-    void b_string_4_char() {
-        QBENCHMARK { r = string + achar + achar + achar + achar; }
-        COMPARE(r, QString(string P achar P achar P achar P achar));
-    }
-
-    void q_string_4_char() {
-        QBENCHMARK { r = string + achar + achar + achar + achar; }
-        COMPARE(r, QString(string P achar P achar P achar P achar));
-    }
-
-    void s_string_4_char() {
-        QBENCHMARK { stdr = stdstring + 'c' + 'c' + 'c' + 'c'; }
-        COMPARE(stdr, stdstring + 'c' + 'c' + 'c' + 'c');
-    }
-
-
-    void separator_7() { SEP("char + string + char"); }
-
-    void b_char_string_char() {
-        QBENCHMARK { r = achar + string + achar; }
-        COMPARE(r, QString(achar P string P achar));
-    }
-
-    void q_char_string_char() {
-        QBENCHMARK { r = achar + string + achar; }
-        COMPARE(r, QString(achar P string P achar));
-    }
-
-    void s_char_string_char() {
-        QBENCHMARK { stdr = 'c' + stdstring + 'c'; }
-        COMPARE(stdr, 'c' + stdstring + 'c');
-    }
-
-
-    void separator_8() { SEP("string.arg"); }
-
-    void b_string_arg() {
-        const QString pattern = l1string + QString::fromLatin1("%1") + l1string;
-        QBENCHMARK { r = l1literal P string P l1literal; }
-        COMPARE(r, r3);
-    }
-
-    void q_string_arg() {
-        const QString pattern = l1string + QLatin1String("%1") + l1string;
-        QBENCHMARK { r = pattern.arg(string); }
-        COMPARE(r, r3);
-    }
-
-    void q_bytearray_arg() {
-        QByteArray result;
-        QBENCHMARK { result = ba + ba + ba; }
-    }
-
-
-    void separator_9() { SEP("QString::reserve()"); }
-
-    void b_reserve() {
-        QBENCHMARK {
-            r.clear();
-            r = string P string P string P string;
-        }
-        COMPARE(r, r4);
-    }
-    void b_reserve_lit() {
-        QBENCHMARK {
-            r.clear();
-            r = string P l1literal P string P string;
-        }
-        COMPARE(r, r4);
-    }
-    void s_reserve() {
-        QBENCHMARK {
-            r.clear();
-            r.reserve(string.size() + string.size() + string.size() + string.size());
-            r += string;
-            r += string;
-            r += string;
-            r += string;
-        }
-        COMPARE(r, r4);
-    }
-    void s_reserve_lit() {
-        QBENCHMARK {
-            r.clear();
-            //r.reserve(string.size() + qstrlen(l1string.latin1())
-            //    + string.size() + string.size());
-            r.reserve(1024);
-            r += string;
-            r += l1string;
-            r += string;
-            r += string;
-        }
-        COMPARE(r, r4);
-    }
-
-private:
-    const QLatin1Literal l1literal;
-    const QLatin1String l1string;
-    const QByteArray ba;
-    const QString string;
-    const std::string stdstring;
-    const QStringRef stringref;
-    const QLatin1Char achar;
-    const QString r2, r3, r4, r5;
-
-    // short cuts for results
-    QString r;
-    std::string stdr;
-};
-
-
-//void operator%(QString, int) {}
-
-int main(int argc, char *argv[])
-{
-    //qDebug() << (QString("xx") * QLatin1String("y")).toString();
-    //42 % 3; // Sanity test, should always work.
-    //QString("x") % 2; // Sanity test, should only compile when the 
-    // operator%(QString, int) is visible.
-
-    if (argc == 2 && (QLatin1String(argv[1]) == QLatin1String("--run-builder")
-                   || QLatin1String(argv[1]) == QLatin1String("-b"))) {
-        tst_qstringbuilder test;
-        return test.run_builder();
-    }
-
-    if (argc == 2 && (QLatin1String(argv[1]) == QLatin1String("--run-traditional")
-                   || QLatin1String(argv[1]) == QLatin1String("-t"))) {
-        tst_qstringbuilder test;
-        return test.run_traditional();
-    }
-
-    if (argc == 1) {
-        QCoreApplication app(argc, argv);
-        QStringList args = app.arguments();
-        tst_qstringbuilder test;
-        return QTest::qExec(&test, argc, argv);
-    }
-
-    qDebug() << "Usage: " << argv[0] << " [--run-builder|-r|--run-traditional|-t]";
-}
-
-
-#include "main.moc"
diff --git a/tests/benchmarks/qstringbuilder/qstringbuilder.pro b/tests/benchmarks/qstringbuilder/qstringbuilder.pro
deleted file mode 100644
index 79171b4..0000000
--- a/tests/benchmarks/qstringbuilder/qstringbuilder.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qstringbuilder
-
-QMAKE_CXXFLAGS += -g
-QMAKE_CFLAGS += -g
-
-QT -= gui
-
-CONFIG += release
-
-SOURCES += main.cpp 
diff --git a/tests/benchmarks/qstringlist/.gitignore b/tests/benchmarks/qstringlist/.gitignore
deleted file mode 100644
index 3e0cdc9..0000000
--- a/tests/benchmarks/qstringlist/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-tst_qstringlist
diff --git a/tests/benchmarks/qstringlist/main.cpp b/tests/benchmarks/qstringlist/main.cpp
deleted file mode 100644
index 3fac598..0000000
--- a/tests/benchmarks/qstringlist/main.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QStringList>
-#include <QtTest>
-
-#include <sstream>
-#include <string>
-#include <vector>
-
-class tst_QStringList: public QObject
-{
-    Q_OBJECT
-
-private slots:
-    void join() const;
-    void join_data() const;
-
-    void split() const;
-    void split_data() const;
-
-    void split_std() const;
-    void split_std_data() const { return split_data(); }
-
-    void split_stdw() const;
-    void split_stdw_data() const { return split_data(); }
-
-    void split_ba() const;
-    void split_ba_data() const { return split_data(); }
-
-private:
-    static QStringList populateList(const int count, const QString &unit);
-    static QString populateString(const int count, const QString &unit);
-};
-
-QStringList tst_QStringList::populateList(const int count, const QString &unit)
-{
-    QStringList retval;
-
-    for (int i = 0; i < count; ++i)
-        retval.append(unit);
-
-    return retval;
-}
-
-QString tst_QStringList::populateString(const int count, const QString &unit)
-{
-    QString retval;
-
-    for (int i = 0; i < count; ++i) {
-        retval.append(unit);
-        retval.append(QLatin1Char(':'));
-    }
-
-    return retval;
-}
-
-void tst_QStringList::join() const
-{
-    QFETCH(QStringList, input);
-    QFETCH(QString, separator);
-
-    QBENCHMARK {
-        input.join(separator);
-    }
-}
-
-void tst_QStringList::join_data() const
-{
-    QTest::addColumn<QStringList>("input");
-    QTest::addColumn<QString>("separator");
-
-    QTest::newRow("")
-        << populateList(100, QLatin1String("unit"))
-        << QString();
-
-    QTest::newRow("")
-        << populateList(1000, QLatin1String("unit"))
-        << QString();
-
-    QTest::newRow("")
-        << populateList(10000, QLatin1String("unit"))
-        << QString();
-
-    QTest::newRow("")
-        << populateList(100000, QLatin1String("unit"))
-        << QString();
-}
-
-void tst_QStringList::split() const
-{
-    QFETCH(QString, input);
-    const QChar splitChar = ':';
-
-    QBENCHMARK {
-        input.split(splitChar);
-    }
-}
-
-void tst_QStringList::split_data() const
-{
-    QTest::addColumn<QString>("input");
-    QString unit = QLatin1String("unit");
-    QTest::newRow("") << populateString(10, unit);
-    QTest::newRow("") << populateString(100, unit);
-    QTest::newRow("") << populateString(1000, unit);
-    QTest::newRow("") << populateString(10000, unit);
-}
-
-void tst_QStringList::split_std() const
-{
-    QFETCH(QString, input);
-    const char split_char = ':';
-    std::string stdinput = input.toStdString();
-
-    QBENCHMARK {
-        std::istringstream split(stdinput);
-        std::vector<std::string> token;
-        for (std::string each;
-             std::getline(split, each, split_char);
-             token.push_back(each))
-            ;
-    }
-}
-
-void tst_QStringList::split_stdw() const
-{
-    QFETCH(QString, input);
-    const wchar_t split_char = ':';
-    std::wstring stdinput = input.toStdWString();
-
-    QBENCHMARK {
-        std::wistringstream split(stdinput);
-        std::vector<std::wstring> token;
-        for (std::wstring each;
-             std::getline(split, each, split_char);
-             token.push_back(each))
-            ;
-    }
-}
-
-void tst_QStringList::split_ba() const
-{
-    QFETCH(QString, input);
-    const char splitChar = ':';
-    QByteArray ba = input.toLatin1();
-
-    QBENCHMARK {
-        ba.split(splitChar);
-    }
-}
-
-QTEST_MAIN(tst_QStringList)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qstringlist/qstringlist.pro b/tests/benchmarks/qstringlist/qstringlist.pro
deleted file mode 100644
index 11cceb0..0000000
--- a/tests/benchmarks/qstringlist/qstringlist.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TARGET = tst_qstringlist
-QT -= gui
-SOURCES += main.cpp
-
-symbian: LIBS += -llibpthread
diff --git a/tests/benchmarks/qstylesheetstyle/main.cpp b/tests/benchmarks/qstylesheetstyle/main.cpp
deleted file mode 100644
index 226b661..0000000
--- a/tests/benchmarks/qstylesheetstyle/main.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-// This file contains benchmarks for QRect/QRectF functions.
-
-#include <QtGui>
-#include <qtest.h>
-
-class tst_qstylesheetstyle : public QObject
-{
-    Q_OBJECT
-private slots:
-    void empty();
-    void empty_events();
-
-    void simple();
-    void simple_events();
-
-    void grid_data();
-    void grid();
-
-private:
-    QWidget *buildSimpleWidgets();
-
-};
-
-
-QWidget *tst_qstylesheetstyle::buildSimpleWidgets()
-{
-    QWidget *w = new QWidget();
-    QGridLayout *layout = new QGridLayout(w);
-    w->setLayout(layout);
-    layout->addWidget(new QPushButton("pushButton")     ,0,0);
-    layout->addWidget(new QComboBox()                   ,0,1);
-    layout->addWidget(new QCheckBox("checkBox")         ,0,2);
-    layout->addWidget(new QRadioButton("radioButton")   ,0,3);
-    layout->addWidget(new QLineEdit()                   ,1,0);
-    layout->addWidget(new QLabel("label")               ,1,1);
-    layout->addWidget(new QSpinBox()                    ,1,2);
-    layout->addWidget(new QProgressBar()                ,1,3);
-    return w;
-}
-
-void tst_qstylesheetstyle::empty()
-{
-    QWidget *w = buildSimpleWidgets();
-    w->setStyleSheet("/* */");
-    int i = 0;
-    QBENCHMARK {
-        w->setStyleSheet("/*" + QString::number(i) + "*/");
-        i++; // we want a different string in case we have severals iterations
-    }
-    delete w;
-}
-
-void tst_qstylesheetstyle::empty_events()
-{
-    QWidget *w = buildSimpleWidgets();
-    w->setStyleSheet("/* */");
-    int i = 0;
-    QBENCHMARK {
-        w->setStyleSheet("/*" + QString::number(i) + "*/");
-        i++; // we want a different string in case we have severals iterations
-        qApp->processEvents();
-    }
-    delete w;
-}
-
-static const char *simple_css =
-   " QLineEdit { background: red; }   QPushButton { border: 1px solid yellow; color: pink; }  \n"
-   " QCheckBox { margin: 3px 5px; background-color:red; } QAbstractButton { background-color: #456; } \n"
-   " QFrame { padding: 3px; } QLabel { color: black } QSpinBox:hover { background-color:blue; }  ";
-
-void tst_qstylesheetstyle::simple()
-{
-    QWidget *w = buildSimpleWidgets();
-    w->setStyleSheet("/* */");
-    int i = 0;
-    QBENCHMARK {
-        w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
-        i++; // we want a different string in case we have severals iterations
-    }
-    delete w;
-}
-
-void tst_qstylesheetstyle::simple_events()
-{
-    QWidget *w = buildSimpleWidgets();
-    w->setStyleSheet("/* */");
-    int i = 0;
-    QBENCHMARK {
-        w->setStyleSheet(QString(simple_css) + "/*" + QString::number(i) + "*/");
-        i++; // we want a different string in case we have severals iterations
-        qApp->processEvents();
-    }
-    delete w;
-}
-
-void tst_qstylesheetstyle::grid_data()
-{
-        QTest::addColumn<bool>("events");
-        QTest::addColumn<bool>("show");
-        QTest::addColumn<int>("N");
-        for (int n = 5; n <= 25; n += 5) {
-           const QByteArray nString = QByteArray::number(n*n);
-            QTest::newRow(("simple--" + nString).constData()) << false << false << n;
-            QTest::newRow(("events--" + nString).constData()) << true << false << n;
-            QTest::newRow(("show--" + nString).constData()) << true << true << n;
-        }
-}
-
-
-void tst_qstylesheetstyle::grid()
-{
-    QFETCH(bool, events);
-    QFETCH(bool, show);
-    QFETCH(int, N);
-
-#ifdef Q_OS_SYMBIAN
-    // Symbian has limited stack (max 80k), which will run out when N >= 20 due to
-    // QWidget::show() using recursion among grid labels somewhere down the line.
-    if (show && N >= 20)
-        QSKIP("Grid too big for device to show", SkipSingle);
-#endif
-
-    QWidget *w = new QWidget();
-    QGridLayout *layout = new QGridLayout(w);
-    w->setLayout(layout);
-    QString stylesheet;
-    for(int x=0; x<N ;x++)
-        for(int y=0; y<N ;y++) {
-        QLabel *label = new QLabel(QString::number(y * N + x));
-        layout->addWidget(label ,x,y);
-        label->setObjectName(QString("label%1").arg(y * N + x));
-        stylesheet += QString("#label%1 { background-color: rgb(0,%2,%3); color: rgb(%2,%3,255);  } ").arg(y*N+x).arg(y*255/N).arg(x*255/N);
-    }
-
-    w->setStyleSheet("/* */");
-    if(show) {
-        w->show();
-        QTest::qWait(30);
-    }
-    int i = 0;
-    QBENCHMARK {
-        w->setStyleSheet(stylesheet + "/*" + QString::number(i) + "*/");
-        i++; // we want a different string in case we have severals iterations
-        if(events)
-            qApp->processEvents();
-    }
-    delete w;
-}
-
-QTEST_MAIN(tst_qstylesheetstyle)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qstylesheetstyle/qstylesheetstyle.pro b/tests/benchmarks/qstylesheetstyle/qstylesheetstyle.pro
deleted file mode 100644
index c097307..0000000
--- a/tests/benchmarks/qstylesheetstyle/qstylesheetstyle.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qstylesheetstyle
-DEPENDPATH += .
-INCLUDEPATH += .
-
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qsvgrenderer/data/tiger.svg b/tests/benchmarks/qsvgrenderer/data/tiger.svg
deleted file mode 100644
index 983e570..0000000
--- a/tests/benchmarks/qsvgrenderer/data/tiger.svg
+++ /dev/null
@@ -1,730 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
-         "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg"
-     xmlns:xlink="http://www.w3.org/1999/xlink"
-     height="800">
- <g transform="translate(200,200)" style="fill-opacity:1; fill:none;">
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
-  <path d="M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000">
-  <path d="M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"/>
- </g>
- <g style="fill: #cc7226; stroke:#000000">
-  <path d="M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"/>
- </g>
- <g style="fill: #e87f3a">
-  <path d="M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"/>
- </g>
- <g style="fill: #ea8c4d">
-  <path d="M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"/>
- </g>
- <g style="fill: #ec9961">
-  <path d="M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"/>
- </g>
- <g style="fill: #eea575">
-  <path d="M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"/>
- </g>
- <g style="fill: #f1b288">
-  <path d="M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"/>
- </g>
- <g style="fill: #f3bf9c">
-  <path d="M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"/>
- </g>
- <g style="fill: #f5ccb0">
-  <path d="M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"/>
- </g>
- <g style="fill: #f8d8c4">
-  <path d="M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"/>
- </g>
- <g style="fill: #fae5d7">
-  <path d="M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"/>
- </g>
- <g style="fill: #fcf2eb">
-  <path d="M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"/>
- </g>
- <g style="fill: #e5668c">
-  <path d="M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"/>
- </g>
- <g style="fill: #b23259">
-  <path d="M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"/>
- </g>
- <g style="fill: #a5264c">
-  <path d="M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"/>
- </g>
- <g style="fill: #ff727f; stroke:#000000">
-  <path d="M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"/>
- </g>
- <g style="fill: #cc3f4c">
-  <path d="M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"/>
- </g>
- <g style="stroke:#a51926; stroke-width:2">
-  <path d="M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"/>
- </g>
- <g style="stroke:#a5264c; stroke-width:2">
-  <path d="M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"/>
- </g>
- <g style="stroke:#a5264c; stroke-width:2">
-  <path d="M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"/>
- </g>
- <g style="stroke:#a5264c; stroke-width:2">
-  <path d="M47 244.801C47 244.801 50.6 242.401 53 243.601"/>
- </g>
- <g style="stroke:#a5264c; stroke-width:2">
-  <path d="M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"/>
- </g>
- <g style="fill: #b2b2b2">
-  <path d="M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"/>
- </g>
- <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
-  <path d="M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"/>
- </g>
- <g style="fill: #e5e5b2">
-  <path d="M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"/>
- </g>
- <g style="fill: #e5e5b2">
-  <path d="M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"/>
- </g>
- <g style="fill: #ea8e51">
-  <path d="M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"/>
- </g>
- <g style="fill: #efaa7c">
-  <path d="M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"/>
- </g>
- <g style="fill: #f4c6a8">
-  <path d="M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"/>
- </g>
- <g style="fill: #f9e2d3">
-  <path d="M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"/>
- </g>
- <g style="fill: #99cc32">
-  <path d="M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"/>
- </g>
- <g style="fill: #659900">
-  <path d="M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"/>
- </g>
- <g style="fill: #eb955c">
-  <path d="M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"/>
- </g>
- <g style="fill: #f2b892">
-  <path d="M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"/>
- </g>
- <g style="fill: #f8dcc8">
-  <path d="M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"/>
- </g>
- <g style="fill: #99cc32">
-  <path d="M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"/>
- </g>
- <g style="fill: #323232">
-  <path d="M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"/>
- </g>
- <g style="fill: #666666">
-  <path d="M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"/>
- </g>
- <g style="fill: #999999">
-  <path d="M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"/>
- </g>
- <g style="fill: #992600">
-  <path d="M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"/>
- </g>
- <g style="fill: #cc7226">
-  <path d="M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"/>
- </g>
- <g style="stroke:#4c0000; stroke-width:2">
-  <path d="M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"/>
- </g>
- <g style="stroke:#4c0000; stroke-width:2">
-  <path d="M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"/>
- </g>
- <g style="stroke:#4c0000; stroke-width:2">
-  <path d="M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"/>
- </g>
- <g style="stroke:#4c0000; stroke-width:2">
-  <path d="M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"/>
- </g>
- <g style="fill: #000000">
-  <path d="M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"/>
- </g>
- <g style="fill: #4c0000">
-  <path d="M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"/>
- </g>
- <g style="fill: #99cc32">
-  <path d="M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"/>
- </g>
- <g style="fill: #659900">
-  <path d="M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-65.4 9z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"/>
- </g>
- <g style="fill: #e59999">
-  <path d="M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"/>
- </g>
- <g style="fill: #b26565">
-  <path d="M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"/>
- </g>
- <g style="fill: #992600">
-  <path d="M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"/>
- </g>
- <g style="fill: #992600">
-  <path d="M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"/>
- </g>
- <g style="fill: #ffffff">
-  <path d="M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"/>
- </g>
- <g style="fill: #992600">
-  <path d="M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"/>
- </g>
- <g style="fill: #992600">
-  <path d="M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"/>
- </g>
- <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
-  <path d="M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"/>
- </g>
- <g style="fill: #000000">
-  <path d="M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"/>
- </g>
- <g style="fill: #cccccc">
-  <path d="M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"/>
- </g>
- <g style="stroke:#000000">
-  <path d="M-89.25 169L-67.25 173.75"/>
- </g>
- <g style="stroke:#000000">
-  <path d="M-39 331C-39 331 -39.5 327.5 -48.5 338"/>
- </g>
- <g style="stroke:#000000">
-  <path d="M-33.5 336C-33.5 336 -31.5 329.5 -38 334"/>
- </g>
- <g style="stroke:#000000">
-  <path d="M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"/>
- </g>
-</g>
-</svg>
-
diff --git a/tests/benchmarks/qsvgrenderer/qsvgrenderer.pro b/tests/benchmarks/qsvgrenderer/qsvgrenderer.pro
deleted file mode 100644
index 8222a09..0000000
--- a/tests/benchmarks/qsvgrenderer/qsvgrenderer.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qsvgrenderer
-
-SOURCES += tst_qsvgrenderer.cpp
-RESOURCES += qsvgrenderer.qrc
-
-QT += svg
-
diff --git a/tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc b/tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc
deleted file mode 100644
index bdf4a31..0000000
--- a/tests/benchmarks/qsvgrenderer/qsvgrenderer.qrc
+++ /dev/null
@@ -1,6 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
-    <file>data/tiger.svg</file>
-</qresource>
-</RCC>
-
diff --git a/tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp
deleted file mode 100644
index 895ffe0..0000000
--- a/tests/benchmarks/qsvgrenderer/tst_qsvgrenderer.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-
-#include <QFile>
-#include <QSvgRenderer>
-
-//TESTED_FILES=
-
-class tst_QSvgRenderer : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QSvgRenderer();
-    virtual ~tst_QSvgRenderer();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void construct();
-    void load();
-};
-
-tst_QSvgRenderer::tst_QSvgRenderer()
-{
-}
-
-tst_QSvgRenderer::~tst_QSvgRenderer()
-{
-}
-
-void tst_QSvgRenderer::init()
-{
-}
-
-void tst_QSvgRenderer::cleanup()
-{
-}
-
-void tst_QSvgRenderer::construct()
-{
-    QBENCHMARK {
-        QSvgRenderer renderer;
-    }
-}
-
-void tst_QSvgRenderer::load()
-{
-    QFile file(":/data/tiger.svg");
-    if (!file.open(QFile::ReadOnly))
-        QFAIL("Can not open tiger.svg");
-    QByteArray data = file.readAll();
-    QSvgRenderer renderer;
-
-    QBENCHMARK {
-        renderer.load(data);
-    }
-}
-
-QTEST_MAIN(tst_QSvgRenderer)
-#include "tst_qsvgrenderer.moc"
diff --git a/tests/benchmarks/qtableview/qtableview.pro b/tests/benchmarks/qtableview/qtableview.pro
deleted file mode 100644
index 02bc530..0000000
--- a/tests/benchmarks/qtableview/qtableview.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qtableview
-
-SOURCES += tst_qtableview.cpp
-
diff --git a/tests/benchmarks/qtableview/tst_qtableview.cpp b/tests/benchmarks/qtableview/tst_qtableview.cpp
deleted file mode 100644
index a84d8b5..0000000
--- a/tests/benchmarks/qtableview/tst_qtableview.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QDebug>
-#include <QTableView>
-#include <QImage>
-#include <QPainter>
-
-//TESTED_FILES=
-
-class QtTestTableModel: public QAbstractTableModel
-{
-    Q_OBJECT
-
-
-public:
-    QtTestTableModel(int rows = 0, int columns = 0, QObject *parent = 0)
-        : QAbstractTableModel(parent),
-          row_count(rows),
-          column_count(columns) {}
-
-    int rowCount(const QModelIndex& = QModelIndex()) const { return row_count; }
-    int columnCount(const QModelIndex& = QModelIndex()) const { return column_count; }
-    bool isEditable(const QModelIndex &) const { return true; }
-
-    QVariant data(const QModelIndex &idx, int role) const
-    {
-        if (!idx.isValid() || idx.row() >= row_count || idx.column() >= column_count) {
-            qWarning() << "Invalid modelIndex [%d,%d,%p]" << idx;
-            return QVariant();
-        }
-
-        if (role == Qt::DisplayRole || role == Qt::EditRole)
-            return QString("[%1,%2,%3]").arg(idx.row()).arg(idx.column()).arg(0);
-
-        return QVariant();
-    }
-
-    bool insertRows(int start, int count, const QModelIndex &parent = QModelIndex())
-    {
-        if (start < 0 || start > row_count)
-            return false;
-
-        beginInsertRows(parent, start, start + count - 1);
-        row_count += count;
-        endInsertRows();
-        return true;
-    }
-
-    bool removeRows(int start, int count, const QModelIndex &parent = QModelIndex())
-    {
-        if (start < 0 || start >= row_count || row_count < count)
-            return false;
-
-        beginRemoveRows(parent, start, start + count - 1);
-        row_count -= count;
-        endRemoveRows();
-        return true;
-    }
-
-    bool insertColumns(int start, int count, const QModelIndex &parent = QModelIndex())
-    {
-        if (start < 0 || start > column_count)
-            return false;
-
-        beginInsertColumns(parent, start, start + count - 1);
-        column_count += count;
-        endInsertColumns();
-        return true;
-    }
-
-    bool removeColumns(int start, int count, const QModelIndex &parent = QModelIndex())
-    {
-        if (start < 0 || start >= column_count || column_count < count)
-            return false;
-
-        beginRemoveColumns(parent, start, start + count - 1);
-        column_count -= count;
-        endRemoveColumns();
-        return true;
-    }
-
-    int row_count;
-    int column_count;
-};
-
-
-
-
-class tst_QTableView : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QTableView();
-    virtual ~tst_QTableView();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void spanInit();
-    void spanDraw();
-    void spanSelectColumn();
-    void spanSelectAll();
-    void rowInsertion_data();
-    void rowInsertion();
-    void rowRemoval_data();
-    void rowRemoval();
-    void columnInsertion_data();
-    void columnInsertion();
-    void columnRemoval_data();
-    void columnRemoval();
-private:
-    static inline void spanInit_helper(QTableView *);
-};
-
-tst_QTableView::tst_QTableView()
-{
-}
-
-tst_QTableView::~tst_QTableView()
-{
-}
-
-void tst_QTableView::init()
-{
-}
-
-void tst_QTableView::cleanup()
-{
-}
-
-void tst_QTableView::spanInit_helper(QTableView *view)
-{
-    for (int i=0; i < 40; i++) {
-        view->setSpan(1+i%2, 1+4*i, 1+i%3, 2);
-    }
-    
-    for (int i=1; i < 40; i++) {
-        view->setSpan(6 + i*7, 4, 4, 50);
-    }
-}
-
-void tst_QTableView::spanInit()
-{
-    QtTestTableModel model(500, 500);
-    QTableView v;
-    v.setModel(&model);
-    
-    QBENCHMARK {
-        spanInit_helper(&v);
-    }
-}
-
-void tst_QTableView::spanDraw()
-{
-    QtTestTableModel model(500, 500);
-    QTableView v;
-    v.setModel(&model);
-    
-    spanInit_helper(&v);
-    v.show();
-    v.resize(500,500);
-    QTest::qWait(30);
-
-    QImage image(500, 500, QImage::Format_ARGB32_Premultiplied);
-    QPainter painter(&image);
-    QBENCHMARK {
-        v.render(&painter);
-    }
-}
-
-void tst_QTableView::spanSelectAll()
-{
-    QtTestTableModel model(500, 500);
-    QTableView v;
-    v.setModel(&model);
-    
-    spanInit_helper(&v);
-    v.show();
-    QTest::qWait(30);
-    
-    QBENCHMARK {
-        v.selectAll();
-    }
-}
-
-void tst_QTableView::spanSelectColumn()
-{
-    QtTestTableModel model(500, 500);
-    QTableView v;
-    v.setModel(&model);
-    
-    spanInit_helper(&v);
-    v.show();
-    QTest::qWait(30);
-    
-    QBENCHMARK {
-        v.selectColumn(22);
-    }
-}
-
-typedef QVector<QRect> SpanList;
-Q_DECLARE_METATYPE(SpanList)
-
-void spansData()
-{
-    QTest::addColumn<SpanList>("spans");
-
-    QTest::newRow("Without spans")
-        << SpanList();
-
-    QTest::newRow("With spans")
-            << (SpanList()
-                  << QRect(0, 1, 1, 2)
-                  << QRect(1, 2, 1, 2)
-                  << QRect(2, 2, 1, 5)
-                  << QRect(2, 8, 1, 2)
-                  << QRect(3, 4, 1, 2)
-                  << QRect(4, 4, 1, 4)
-                  << QRect(5, 6, 1, 3)
-                  << QRect(6, 7, 1, 3));
-}
-
-void tst_QTableView::rowInsertion_data()
-{
-    spansData();
-}
-
-void tst_QTableView::rowInsertion()
-{
-    QFETCH(SpanList, spans);
-
-    QtTestTableModel model(10, 10);
-    QTableView view;
-    view.setModel(&model);
-
-    foreach (QRect span, spans)
-        view.setSpan(span.top(), span.left(), span.height(), span.width());
-    view.show();
-    QTest::qWait(50);
-
-    QBENCHMARK_ONCE {
-        view.model()->insertRows(0, 2);
-        view.model()->insertRows(5, 2);
-        view.model()->insertRows(8, 2);
-        view.model()->insertRows(12, 2);
-    }
-}
-
-void tst_QTableView::rowRemoval_data()
-{
-    spansData();
-}
-
-void tst_QTableView::rowRemoval()
-{
-    QFETCH(SpanList, spans);
-
-    QtTestTableModel model(10, 10);
-    QTableView view;
-    view.setModel(&model);
-
-    foreach (QRect span, spans)
-        view.setSpan(span.top(), span.left(), span.height(), span.width());
-    view.show();
-    QTest::qWait(50);
-
-    QBENCHMARK_ONCE {
-        view.model()->removeRows(3, 3);
-    }
-}
-
-void tst_QTableView::columnInsertion_data()
-{
-    spansData();
-}
-
-void tst_QTableView::columnInsertion()
-{
-    QFETCH(SpanList, spans);
-
-    QtTestTableModel model(10, 10);
-    QTableView view;
-    view.setModel(&model);
-
-    // Same set as for rowInsertion, just swapping columns and rows.
-    foreach (QRect span, spans)
-        view.setSpan(span.left(), span.top(), span.width(), span.height());
-    view.show();
-    QTest::qWait(50);
-
-    QBENCHMARK_ONCE {
-        view.model()->insertColumns(0, 2);
-        view.model()->insertColumns(5, 2);
-        view.model()->insertColumns(8, 2);
-        view.model()->insertColumns(12, 2);
-    }
-}
-
-void tst_QTableView::columnRemoval_data()
-{
-    spansData();
-}
-
-void tst_QTableView::columnRemoval()
-{
-    QFETCH(SpanList, spans);
-
-    QtTestTableModel model(10, 10);
-    QTableView view;
-    view.setModel(&model);
-
-    // Same set as for rowRemoval, just swapping columns and rows.
-    foreach (QRect span, spans)
-        view.setSpan(span.left(), span.top(), span.width(), span.height());
-    view.show();
-    QTest::qWait(50);
-
-    QBENCHMARK_ONCE {
-        view.model()->removeColumns(3, 3);
-    }
-}
-
-QTEST_MAIN(tst_QTableView)
-#include "tst_qtableview.moc"
diff --git a/tests/benchmarks/qtcpserver/qtcpserver.pro b/tests/benchmarks/qtcpserver/qtcpserver.pro
deleted file mode 100644
index e7bf13a..0000000
--- a/tests/benchmarks/qtcpserver/qtcpserver.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qtcpserver
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-QT += network
-
-CONFIG += release
-
-# Input
-SOURCES += tst_qtcpserver.cpp
diff --git a/tests/benchmarks/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/qtcpserver/tst_qtcpserver.cpp
deleted file mode 100644
index b6b55c3..0000000
--- a/tests/benchmarks/qtcpserver/tst_qtcpserver.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Just to get Q_OS_SYMBIAN
-#include <qglobal.h>
-
-#include <QtTest/QtTest>
-
-
-#include <qcoreapplication.h>
-#include <qtcpsocket.h>
-#include <qtcpserver.h>
-#include <qhostaddress.h>
-#include <qprocess.h>
-#include <qstringlist.h>
-#include <qplatformdefs.h>
-#include <qhostinfo.h>
-
-#include <QNetworkProxy>
-Q_DECLARE_METATYPE(QNetworkProxy)
-Q_DECLARE_METATYPE(QList<QNetworkProxy>)
-
-#include "../../auto/network-settings.h"
-
-//TESTED_CLASS=
-//TESTED_FILES=
-
-class tst_QTcpServer : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QTcpServer();
-    virtual ~tst_QTcpServer();
-
-
-public slots:
-    void initTestCase_data();
-    void init();
-    void cleanup();
-private slots:
-    void ipv4LoopbackPerformanceTest();
-    void ipv6LoopbackPerformanceTest();
-    void ipv4PerformanceTest();
-};
-
-tst_QTcpServer::tst_QTcpServer()
-{
-    Q_SET_DEFAULT_IAP
-}
-
-tst_QTcpServer::~tst_QTcpServer()
-{
-}
-
-void tst_QTcpServer::initTestCase_data()
-{
-    QTest::addColumn<bool>("setProxy");
-    QTest::addColumn<int>("proxyType");
-
-    QTest::newRow("WithoutProxy") << false << 0;
-    QTest::newRow("WithSocks5Proxy") << true << int(QNetworkProxy::Socks5Proxy);
-}
-
-void tst_QTcpServer::init()
-{
-    QFETCH_GLOBAL(bool, setProxy);
-    if (setProxy) {
-        QFETCH_GLOBAL(int, proxyType);
-        if (proxyType == QNetworkProxy::Socks5Proxy) {
-            QNetworkProxy::setApplicationProxy(QNetworkProxy(QNetworkProxy::Socks5Proxy, QtNetworkSettings::serverName(), 1080));
-        }
-    }
-}
-
-void tst_QTcpServer::cleanup()
-{
-    QNetworkProxy::setApplicationProxy(QNetworkProxy::DefaultProxy);
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::ipv4LoopbackPerformanceTest()
-{
-    QFETCH_GLOBAL(bool, setProxy);
-    if (setProxy)
-        return;
-
-    QTcpServer server;
-    QVERIFY(server.listen(QHostAddress::LocalHost));
-
-    QVERIFY(server.isListening());
-
-    QTcpSocket clientA;
-    clientA.connectToHost(QHostAddress::LocalHost, server.serverPort());
-    QVERIFY(clientA.waitForConnected(5000));
-    QVERIFY(clientA.state() == QAbstractSocket::ConnectedState);
-
-    QVERIFY(server.waitForNewConnection());
-    QTcpSocket *clientB = server.nextPendingConnection();
-    QVERIFY(clientB);
-
-    QByteArray buffer(16384, '@');
-    QTime stopWatch;
-    stopWatch.start();
-    qlonglong totalWritten = 0;
-    while (stopWatch.elapsed() < 5000) {
-        QVERIFY(clientA.write(buffer.data(), buffer.size()) > 0);
-        clientA.flush();
-        totalWritten += buffer.size();
-        while (clientB->waitForReadyRead(100)) {
-            if (clientB->bytesAvailable() == 16384)
-                break;
-        }
-        clientB->read(buffer.data(), buffer.size());
-        clientB->write(buffer.data(), buffer.size());
-        clientB->flush();
-        totalWritten += buffer.size();
-        while (clientA.waitForReadyRead(100)) {
-            if (clientA.bytesAvailable() == 16384)
-                break;
-        }
-        clientA.read(buffer.data(), buffer.size());
-    }
-
-    qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
-           server.serverAddress().toString().toLatin1().constData(),
-           totalWritten / (1024.0 * 1024.0),
-           stopWatch.elapsed() / 1000.0,
-           (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
-
-    delete clientB;
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::ipv6LoopbackPerformanceTest()
-{
-    QFETCH_GLOBAL(bool, setProxy);
-    if (setProxy)
-        return;
-
-#if defined(Q_OS_SYMBIAN)
-    QSKIP("Symbian: IPv6 is not yet supported", SkipAll);
-#endif
-    QTcpServer server;
-    if (!server.listen(QHostAddress::LocalHostIPv6, 0)) {
-        QVERIFY(server.serverError() == QAbstractSocket::UnsupportedSocketOperationError);
-    } else {
-        QTcpSocket clientA;
-        clientA.connectToHost(server.serverAddress(), server.serverPort());
-        QVERIFY(clientA.waitForConnected(5000));
-
-        QVERIFY(server.waitForNewConnection(5000));
-        QTcpSocket *clientB = server.nextPendingConnection();
-        QVERIFY(clientB);
-
-        QByteArray buffer(16384, '@');
-        QTime stopWatch;
-        stopWatch.start();
-        qlonglong totalWritten = 0;
-        while (stopWatch.elapsed() < 5000) {
-            clientA.write(buffer.data(), buffer.size());
-            clientA.flush();
-            totalWritten += buffer.size();
-            while (clientB->waitForReadyRead(100)) {
-                if (clientB->bytesAvailable() == 16384)
-                    break;
-            }
-            clientB->read(buffer.data(), buffer.size());
-            clientB->write(buffer.data(), buffer.size());
-            clientB->flush();
-            totalWritten += buffer.size();
-            while (clientA.waitForReadyRead(100)) {
-                if (clientA.bytesAvailable() == 16384)
-                   break;
-            }
-            clientA.read(buffer.data(), buffer.size());
-        }
-
-        qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
-               server.serverAddress().toString().toLatin1().constData(),
-               totalWritten / (1024.0 * 1024.0),
-               stopWatch.elapsed() / 1000.0,
-               (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
-        delete clientB;
-    }
-}
-
-//----------------------------------------------------------------------------------
-void tst_QTcpServer::ipv4PerformanceTest()
-{
-    QTcpSocket probeSocket;
-    probeSocket.connectToHost(QtNetworkSettings::serverName(), 143);
-    QVERIFY(probeSocket.waitForConnected(5000));
-
-    QTcpServer server;
-    QVERIFY(server.listen(probeSocket.localAddress(), 0));
-
-    QTcpSocket clientA;
-    clientA.connectToHost(server.serverAddress(), server.serverPort());
-    QVERIFY(clientA.waitForConnected(5000));
-
-    QVERIFY(server.waitForNewConnection(5000));
-    QTcpSocket *clientB = server.nextPendingConnection();
-    QVERIFY(clientB);
-
-    QByteArray buffer(16384, '@');
-    QTime stopWatch;
-    stopWatch.start();
-    qlonglong totalWritten = 0;
-    while (stopWatch.elapsed() < 5000) {
-        qlonglong writtenA = clientA.write(buffer.data(), buffer.size());
-        clientA.flush();
-        totalWritten += buffer.size();
-        while (clientB->waitForReadyRead(100)) {
-            if (clientB->bytesAvailable() == writtenA)
-                break;
-        }
-        clientB->read(buffer.data(), buffer.size());
-        qlonglong writtenB = clientB->write(buffer.data(), buffer.size());
-        clientB->flush();
-        totalWritten += buffer.size();
-        while (clientA.waitForReadyRead(100)) {
-            if (clientA.bytesAvailable() == writtenB)
-               break;
-        }
-        clientA.read(buffer.data(), buffer.size());
-    }
-
-    qDebug("\t\t%s: %.1fMB/%.1fs: %.1fMB/s",
-           probeSocket.localAddress().toString().toLatin1().constData(),
-           totalWritten / (1024.0 * 1024.0),
-           stopWatch.elapsed() / 1000.0,
-           (totalWritten / (stopWatch.elapsed() / 1000.0)) / (1024 * 1024));
-
-    delete clientB;
-}
-
-QTEST_MAIN(tst_QTcpServer)
-#include "tst_qtcpserver.moc"
diff --git a/tests/benchmarks/qtemporaryfile/main.cpp b/tests/benchmarks/qtemporaryfile/main.cpp
deleted file mode 100644
index 8b71189..0000000
--- a/tests/benchmarks/qtemporaryfile/main.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QDebug>
-#include <QIODevice>
-#include <QFile>
-#include <QString>
-#include <QTemporaryFile>
-#include <qtest.h>
-
-
-class tst_qtemporaryfile : public QObject
-{
-    Q_OBJECT
-private slots:
-    void openclose_data();
-    void openclose();
-    void readwrite_data() { openclose_data(); }
-    void readwrite();
-
-private:
-};
-
-void tst_qtemporaryfile::openclose_data()
-{
-    QTest::addColumn<qint64>("amount");
-    QTest::newRow("100")   << qint64(100);
-    QTest::newRow("1000")  << qint64(1000);
-    QTest::newRow("10000") << qint64(10000);
-}
-
-void tst_qtemporaryfile::openclose()
-{
-    QFETCH(qint64, amount);
-
-    QBENCHMARK {
-        for (qint64 i = 0; i < amount; ++i) {
-            QTemporaryFile file;
-            file.open();
-            file.close();
-        }
-    }
-}
-
-void tst_qtemporaryfile::readwrite()
-{
-    QFETCH(qint64, amount);
-
-    const int dataSize = 4096;
-    QByteArray data;
-    data.fill('a', dataSize);
-    QBENCHMARK {
-        for (qint64 i = 0; i < amount; ++i) {
-            QTemporaryFile file;
-            file.open();
-            file.write(data);
-            file.seek(0);
-            file.read(dataSize);
-            file.close();
-        }
-    }
-}
-
-QTEST_MAIN(tst_qtemporaryfile)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qtemporaryfile/qtemporaryfile.pro b/tests/benchmarks/qtemporaryfile/qtemporaryfile.pro
deleted file mode 100644
index c1b04f4..0000000
--- a/tests/benchmarks/qtemporaryfile/qtemporaryfile.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qtemporaryfile
-DEPENDPATH += .
-INCLUDEPATH += .
-
-QT -= gui
-
-CONFIG += release
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qtext/bidi.txt b/tests/benchmarks/qtext/bidi.txt
deleted file mode 100644
index 7c74cb4..0000000
--- a/tests/benchmarks/qtext/bidi.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-chinese
-欧洲,软件+互联网 
 用统一码 (Unicode) 走遍世界
将于1997年 3 月10日-12日在德国 Mainz 市举行的第十届统一码国际研讨会现在开始注册。 本次会议将汇集各方面的专家。 涉及的领域包括: 国际互联网和统一码 ,国际化和本地化 ,统一码在操作系统和应用软件中的实现 ,字型 ,文本格式以及多文种计算等。  
当世界需要沟通时,请用Unicode!
-hebrew-bidi
-אײראָפּע: פּראָגראַמװאַרג און די װעלטנעץ: אוניקאָד איבער דער גאָרער װעלט  פֿאַרשרײַבט זיך שױן אױף דער צענטער אינטערנאַציאָנאַלער אוניקאָד-קאָנפֿערענץ, װאָס װעט פֿאָרקומען דעם 10טן ביזן 12טן מאַרץ, 1997, אין מײַנץ, דײַטשלאַנד. די קאָנפֿערענץ װעט צוזאַמענברענגן מבֿינים פֿון װעלטנעץ, אוניקאָד, אי אַלװעלטלעכן אי סבֿיבֿהדיקן פּראָגראַמװאַרג, אַרײַנשטעלן אוניקאָד אין אָפּעריר-סיסטעמען און אָנװענדונגען, שריפֿטן, טעקסט-אױסשטעל, און מערשפּראַכיקע קאָמפּיוטערײַ.
diff --git a/tests/benchmarks/qtext/main.cpp b/tests/benchmarks/qtext/main.cpp
deleted file mode 100644
index d4f3165..0000000
--- a/tests/benchmarks/qtext/main.cpp
+++ /dev/null
@@ -1,415 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QDebug>
-#include <QTextDocument>
-#include <QTextDocumentWriter>
-#include <QTextLayout>
-#include <QTextCursor>
-#include <private/qtextcontrol_p.h>
-#include <qmath.h>
-#include <QFile>
-#include <QPainter>
-#include <QBuffer>
-#include <qtest.h>
-
-#ifdef Q_OS_SYMBIAN
-// In Symbian OS test data is located in applications private dir
-// Application private dir is default serach path for files, so SRCDIR can be set to empty
-#define SRCDIR ""
-#endif
-
-Q_DECLARE_METATYPE(QTextDocument*)
-
-class tst_QText: public QObject
-{
-    Q_OBJECT
-public:
-    tst_QText() {
-        m_lorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
-        m_shortLorem = QString::fromLatin1("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.");
-    }
-
-private slots:
-    void loadHtml_data();
-    void loadHtml();
-
-    void shaping_data();
-    void shaping();
-
-    void odfWriting_empty();
-    void odfWriting_text();
-    void odfWriting_images();
-
-    void constructControl();
-    void constructDocument();
-
-    void layout();
-    void paintLayoutToPixmap();
-    void paintLayoutToPixmap_painterFill();
-
-    void document();
-    void paintDocToPixmap();
-    void paintDocToPixmap_painterFill();
-
-    void control();
-    void paintControlToPixmap();
-    void paintControlToPixmap_painterFill();
-
-private:
-    QSize setupTextLayout(QTextLayout *layout);
-
-    QString m_lorem;
-    QString m_shortLorem;
-};
-
-void tst_QText::loadHtml_data()
-{
-    QTest::addColumn<QString>("source");
-    QTest::newRow("empty") << QString();
-    QTest::newRow("simple") << QString::fromLatin1("<html><b>Foo</b></html>");
-    QTest::newRow("simple2") << QString::fromLatin1("<b>Foo</b>");
-
-    QString parag = QString::fromLatin1("<p>%1</p>").arg(m_lorem);
-    QString header = QString::fromLatin1("<html><head><title>test</title></head><body>");
-    QTest::newRow("long") << QString::fromLatin1("<html><head><title>test</title></head><body>") + parag + parag + parag
-        + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag + parag
-        + QString::fromLatin1("</html>");
-    QTest::newRow("table") <<  header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
-        + parag + QLatin1String("</td></tr></table></html");
-    QTest::newRow("crappy") <<  header + QLatin1String("<table border=\"1\"1><tr><td>xx</td></tr><tr><td colspan=\"2\">")
-        + parag;
-}
-
-void tst_QText::loadHtml()
-{
-    QFETCH(QString, source);
-    QTextDocument doc;
-    QBENCHMARK {
-        doc.setHtml(source);
-    }
-}
-
-void tst_QText::shaping_data()
-{
-    QTest::addColumn<QString>("parag");
-    QTest::newRow("empty") << QString();
-    QTest::newRow("lorem") << m_lorem;
-    QTest::newRow("short") << QString::fromLatin1("Lorem ipsum dolor sit amet");
-
-#if !defined(Q_OS_SYMBIAN)
-    QFile file(QString::fromLatin1(SRCDIR) + QLatin1String("/bidi.txt"));
-#else
-    QFile file( SRCDIR "bidi.txt" );
-#endif
-    QVERIFY(file.open(QFile::ReadOnly));
-    QByteArray data = file.readAll();
-    QVERIFY(data.count() > 1000);
-    QStringList list = QString::fromUtf8(data.data()).split(QLatin1Char('\n'), QString::SkipEmptyParts);
-    QVERIFY(list.count() %2 == 0); // even amount as we have title and then content.
-    for (int i=0; i < list.count(); i+=2) {
-        QTest::newRow(list.at(i).toLatin1()) << list.at(i+1);
-    }
-}
-
-void tst_QText::shaping()
-{
-    QFETCH(QString, parag);
-
-    QTextLayout lay(parag);
-    lay.setCacheEnabled(false);
-
-    // do one run to make sure any fonts are loaded.
-    lay.beginLayout();
-    lay.createLine();
-    lay.endLayout();
-
-    QBENCHMARK {
-        lay.beginLayout();
-        lay.createLine();
-        lay.endLayout();
-    }
-}
-
-void tst_QText::odfWriting_empty()
-{
-    QVERIFY(QTextDocumentWriter::supportedDocumentFormats().contains("ODF")); // odf compiled in
-    QTextDocument *doc = new QTextDocument();
-    // write it
-    QBENCHMARK {
-        QBuffer buffer;
-        buffer.open(QIODevice::WriteOnly);
-        QTextDocumentWriter writer(&buffer, "ODF");
-        writer.write(doc);
-    }
-    delete doc;
-}
-
-void tst_QText::odfWriting_text()
-{
-    QTextDocument *doc = new QTextDocument();
-    QTextCursor cursor(doc);
-    QTextBlockFormat bf;
-    bf.setIndent(2);
-    cursor.insertBlock(bf);
-    cursor.insertText(m_lorem);
-    bf.setTopMargin(10);
-    cursor.insertBlock(bf);
-    cursor.insertText(m_lorem);
-    bf.setRightMargin(30);
-    cursor.insertBlock(bf);
-    cursor.insertText(m_lorem);
-
-    // write it
-    QBENCHMARK {
-        QBuffer buffer;
-        buffer.open(QIODevice::WriteOnly);
-        QTextDocumentWriter writer(&buffer, "ODF");
-        writer.write(doc);
-    }
-    delete doc;
-}
-
-void tst_QText::odfWriting_images()
-{
-    QTextDocument *doc = new QTextDocument();
-    QTextCursor cursor(doc);
-    cursor.insertText(m_lorem);
-    QImage image(400, 200, QImage::Format_ARGB32_Premultiplied);
-    cursor.insertImage(image);
-    cursor.insertText(m_lorem);
-
-    // write it
-    QBENCHMARK {
-        QBuffer buffer;
-        buffer.open(QIODevice::WriteOnly);
-        QTextDocumentWriter writer(&buffer, "ODF");
-        writer.write(doc);
-    }
-    delete doc;
-}
-
-QSize tst_QText::setupTextLayout(QTextLayout *layout)
-{
-    bool wrap = true;
-    int wrapWidth = 300;
-    layout->setCacheEnabled(true);
-
-    int height = 0;
-    qreal widthUsed = 0;
-    qreal lineWidth = 0;
-
-    //set manual width
-    if (wrap)
-        lineWidth = wrapWidth;
-
-    layout->beginLayout();
-
-    while (1) {
-        QTextLine line = layout->createLine();
-        if (!line.isValid())
-            break;
-
-        if (wrap)
-            line.setLineWidth(lineWidth);
-    }
-    layout->endLayout();
-
-    for (int i = 0; i < layout->lineCount(); ++i) {
-        QTextLine line = layout->lineAt(i);
-        widthUsed = qMax(widthUsed, line.naturalTextWidth());
-        line.setPosition(QPointF(0, height));
-        height += int(line.height());
-    }
-    return QSize(qCeil(widthUsed), height);
-}
-
-void tst_QText::constructControl()
-{
-    QTextControl *control = new QTextControl;
-    delete control;
-
-    QBENCHMARK {
-        QTextControl *control = new QTextControl;
-        delete control;
-    }
-}
-
-void tst_QText::constructDocument()
-{
-    QTextDocument *doc = new QTextDocument;
-    delete doc;
-
-    QBENCHMARK {
-        QTextDocument *doc = new QTextDocument;
-        delete doc;
-    }
-}
-
-void tst_QText::layout()
-{
-    QTextLayout layout(m_shortLorem);
-    setupTextLayout(&layout);
-
-    QBENCHMARK {
-        QTextLayout layout(m_shortLorem);
-        setupTextLayout(&layout);
-    }
-}
-
-void tst_QText::paintLayoutToPixmap()
-{
-    QTextLayout layout(m_shortLorem);
-    QSize size = setupTextLayout(&layout);
-
-    QBENCHMARK {
-        QPixmap img(size);
-        img.fill(Qt::transparent);
-        QPainter p(&img);
-        layout.draw(&p, QPointF(0, 0));
-    }
-}
-
-void tst_QText::paintLayoutToPixmap_painterFill()
-{
-    QTextLayout layout(m_shortLorem);
-    QSize size = setupTextLayout(&layout);
-
-    QBENCHMARK {
-        QPixmap img(size);
-        QPainter p(&img);
-        p.setCompositionMode(QPainter::CompositionMode_Source);
-        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
-        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
-        layout.draw(&p, QPointF(0, 0));
-    }
-}
-
-void tst_QText::document()
-{
-    QTextDocument *doc = new QTextDocument;
-
-    QBENCHMARK {
-        QTextDocument *doc = new QTextDocument;
-        doc->setHtml(m_shortLorem);
-    }
-}
-
-void tst_QText::paintDocToPixmap()
-{
-    QTextDocument *doc = new QTextDocument;
-    doc->setHtml(m_shortLorem);
-    doc->setTextWidth(300);
-    QSize size = doc->size().toSize();
-
-    QBENCHMARK {
-        QPixmap img(size);
-        img.fill(Qt::transparent);
-        QPainter p(&img);
-        doc->drawContents(&p);
-    }
-}
-
-void tst_QText::paintDocToPixmap_painterFill()
-{
-    QTextDocument *doc = new QTextDocument;
-    doc->setHtml(m_shortLorem);
-    doc->setTextWidth(300);
-    QSize size = doc->size().toSize();
-
-    QBENCHMARK {
-        QPixmap img(size);
-        QPainter p(&img);
-        p.setCompositionMode(QPainter::CompositionMode_Source);
-        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
-        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
-        doc->drawContents(&p);
-    }
-}
-
-void tst_QText::control()
-{
-    QTextControl *control = new QTextControl(m_shortLorem);
-
-    QBENCHMARK {
-        QTextControl *control = new QTextControl;
-        QTextDocument *doc = control->document();
-        doc->setHtml(m_shortLorem);
-    }
-}
-
-void tst_QText::paintControlToPixmap()
-{
-    QTextControl *control = new QTextControl;
-    QTextDocument *doc = control->document();
-    doc->setHtml(m_shortLorem);
-    doc->setTextWidth(300);
-    QSize size = doc->size().toSize();
-
-    QBENCHMARK {
-        QPixmap img(size);
-        img.fill(Qt::transparent);
-        QPainter p(&img);
-        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
-    }
-}
-
-void tst_QText::paintControlToPixmap_painterFill()
-{
-    QTextControl *control = new QTextControl;
-    QTextDocument *doc = control->document();
-    doc->setHtml(m_shortLorem);
-    doc->setTextWidth(300);
-    QSize size = doc->size().toSize();
-
-    QBENCHMARK {
-        QPixmap img(size);
-        QPainter p(&img);
-        p.setCompositionMode(QPainter::CompositionMode_Source);
-        p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
-        p.setCompositionMode(QPainter::CompositionMode_SourceOver);
-        control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
-    }
-}
-
-QTEST_MAIN(tst_QText)
-
-#include "main.moc"
diff --git a/tests/benchmarks/qtext/qtext.pro b/tests/benchmarks/qtext/qtext.pro
deleted file mode 100644
index 9e8860f..0000000
--- a/tests/benchmarks/qtext/qtext.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_QText
-
-SOURCES += main.cpp
-
-symbian* {
-   TARGET.CAPABILITY = ALL -TCB
-   addFiles.sources = bidi.txt
-   addFiles.path = .
-   DEPLOYMENT += addFiles
-} else {
-   DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
\ No newline at end of file
diff --git a/tests/benchmarks/qthreadstorage/qthreadstorage.pro b/tests/benchmarks/qthreadstorage/qthreadstorage.pro
deleted file mode 100644
index f9c1978..0000000
--- a/tests/benchmarks/qthreadstorage/qthreadstorage.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qthreadstorage
-
-SOURCES += tst_qthreadstorage.cpp
-
diff --git a/tests/benchmarks/qthreadstorage/tst_qthreadstorage.cpp b/tests/benchmarks/qthreadstorage/tst_qthreadstorage.cpp
deleted file mode 100644
index faae4d7..0000000
--- a/tests/benchmarks/qthreadstorage/tst_qthreadstorage.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtCore>
-
-//TESTED_FILES=
-
-QThreadStorage<int *> dummy[8];
-
-QThreadStorage<QString *> tls1;
-
-class tst_QThreadStorage : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QThreadStorage();
-    virtual ~tst_QThreadStorage();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void construct();
-    void get();
-    void set();
-};
-
-tst_QThreadStorage::tst_QThreadStorage()
-{
-}
-
-tst_QThreadStorage::~tst_QThreadStorage()
-{
-}
-
-void tst_QThreadStorage::init()
-{
-    dummy[1].setLocalData(new int(5));
-    dummy[2].setLocalData(new int(4));
-    dummy[3].setLocalData(new int(3));
-    tls1.setLocalData(new QString());
-}
-
-void tst_QThreadStorage::cleanup()
-{
-}
-
-void tst_QThreadStorage::construct()
-{
-    QBENCHMARK {
-        QThreadStorage<int *> ts;
-    }
-}
-
-
-void tst_QThreadStorage::get()
-{
-    QThreadStorage<int *> ts;
-    ts.setLocalData(new int(45));
-
-    int count = 0;
-    QBENCHMARK {
-        int *i = ts.localData();
-        count += *i;
-    }
-    ts.setLocalData(0);
-}
-
-void tst_QThreadStorage::set()
-{
-    QThreadStorage<int *> ts;
-
-    int count = 0;
-    QBENCHMARK {
-        ts.setLocalData(new int(count));
-        count++;
-    }
-    ts.setLocalData(0);
-}
-
-
-QTEST_MAIN(tst_QThreadStorage)
-#include "tst_qthreadstorage.moc"
diff --git a/tests/benchmarks/qtransform/qtransform.pro b/tests/benchmarks/qtransform/qtransform.pro
deleted file mode 100644
index 8d87656..0000000
--- a/tests/benchmarks/qtransform/qtransform.pro
+++ /dev/null
@@ -1,6 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qtransform
-
-SOURCES += tst_qtransform.cpp
-
diff --git a/tests/benchmarks/qtransform/tst_qtransform.cpp b/tests/benchmarks/qtransform/tst_qtransform.cpp
deleted file mode 100644
index b33cf58..0000000
--- a/tests/benchmarks/qtransform/tst_qtransform.cpp
+++ /dev/null
@@ -1,592 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QTransform>
-
-//TESTED_FILES=
-
-class tst_QTransform : public QObject
-{
-    Q_OBJECT
-
-public:
-    tst_QTransform();
-    virtual ~tst_QTransform();
-
-public slots:
-    void init();
-    void cleanup();
-
-private slots:
-    void construct();
-    void translate_data();
-    void translate();
-    void scale_data();
-    void scale();
-    void shear_data();
-    void shear();
-    void rotate_data();
-    void rotate();
-    void rotateXYZ_data();
-    void rotateXYZ();
-    void operatorAssign_data();
-    void operatorAssign();
-    void operatorEqual_data();
-    void operatorEqual();
-    void operatorNotEqual_data();
-    void operatorNotEqual();
-    void operatorMultiply_data();
-    void operatorMultiply();
-    void operatorPlusEqualScalar_data();
-    void operatorPlusEqualScalar();
-    void operatorMinusEqualScalar_data();
-    void operatorMinusEqualScalar();
-    void operatorMultiplyEqual_data();
-    void operatorMultiplyEqual();
-    void operatorMultiplyEqualScalar_data();
-    void operatorMultiplyEqualScalar();
-    void operatorDivideEqualScalar_data();
-    void operatorDivideEqualScalar();
-    void mapQPoint_data();
-    void mapQPoint();
-    void mapQPointF_data();
-    void mapQPointF();
-    void mapRect_data();
-    void mapRect();
-    void mapRectF_data();
-    void mapRectF();
-    void mapQPolygon_data();
-    void mapQPolygon();
-    void mapQPolygonF_data();
-    void mapQPolygonF();
-    void mapQRegion_data();
-    void mapQRegion();
-    void mapToPolygon_data();
-    void mapToPolygon();
-    void mapQPainterPath_data();
-    void mapQPainterPath();
-    void isIdentity_data();
-    void isIdentity();
-    void isAffine_data();
-    void isAffine();
-    void isInvertible_data();
-    void isInvertible();
-    void isRotating_data();
-    void isRotating();
-    void isScaling_data();
-    void isScaling();
-    void isTranslating_data();
-    void isTranslating();
-    void type_data();
-    void type();
-    void determinant_data();
-    void determinant();
-    void adjoint_data();
-    void adjoint();
-    void transposed_data();
-    void transposed();
-    void inverted_data();
-    void inverted();
-
-private:
-    QMap<const char *, QTransform> generateTransforms() const;
-};
-
-tst_QTransform::tst_QTransform()
-{
-}
-
-tst_QTransform::~tst_QTransform()
-{
-}
-
-void tst_QTransform::init()
-{
-}
-
-void tst_QTransform::cleanup()
-{
-}
-
-QMap<const char *, QTransform> tst_QTransform::generateTransforms() const
-{
-    QMap<const char *, QTransform> x;
-    x["0: identity"] = QTransform();
-    x["1: translate"] = QTransform().translate(10, 10);
-    x["2: translate"] = QTransform().translate(-10, -10);
-    x["3: rotate45"] = QTransform().rotate(45);
-    x["4: rotate90"] = QTransform().rotate(90);
-    x["5: rotate180"] = QTransform().rotate(180);
-    x["6: shear2,2"] = QTransform().shear(2, 2);
-    x["7: shear-2,-2"] = QTransform().shear(-2, -2);
-    x["8: scaleUp2,2"] = QTransform().scale(2, 2);
-    x["9: scaleUp2,3"] = QTransform().scale(2, 3);
-    x["10: scaleDown0.5,0.5"] = QTransform().scale(0.5, 0.5);
-    x["11: scaleDown0.5,0.25"] = QTransform().scale(0.5, 0.25);
-    x["12: rotateX"] = QTransform().rotate(45, Qt::XAxis);
-    x["13: rotateY"] = QTransform().rotate(45, Qt::YAxis);
-    x["14: rotateXY"] = QTransform().rotate(45, Qt::XAxis).rotate(45, Qt::YAxis);
-    x["15: rotateYZ"] = QTransform().rotate(45, Qt::YAxis).rotate(45, Qt::ZAxis);
-    x["16: full"] = QTransform().translate(10, 10).rotate(45).shear(2, 2).scale(2, 2).rotate(45, Qt::YAxis).rotate(45, Qt::XAxis).rotate(45, Qt::ZAxis);
-    return x;
-}
-
-void tst_QTransform::construct()
-{
-    QBENCHMARK {
-        QTransform x;
-    }
-}
-
-#define SINGLE_DATA_IMPLEMENTATION(func)        \
-void tst_QTransform::func##_data() \
-{ \
-    QTest::addColumn<QTransform>("transform"); \
-    QMap<const char *, QTransform> x = generateTransforms(); \
-    QMapIterator<const char *, QTransform> it(x); \
-    while (it.hasNext()) { \
-        it.next(); \
-        QTest::newRow(it.key()) << it.value(); \
-    } \
-}
-
-#define DOUBLE_DATA_IMPLEMENTATION(func) \
-void tst_QTransform::func##_data() \
-{ \
-    QTest::addColumn<QTransform>("x1"); \
-    QTest::addColumn<QTransform>("x2"); \
-    QMap<const char *, QTransform> x = generateTransforms(); \
-    QMapIterator<const char *, QTransform> it(x); \
-    while (it.hasNext()) { \
-        it.next(); \
-        const char *key1 = it.key(); \
-        QTransform x1 = it.value(); \
-        QMapIterator<const char *, QTransform> it2(x); \
-        while (it2.hasNext()) { \
-            it2.next(); \
-            QTest::newRow(QString("%1 + %2").arg(key1).arg(it2.key()).toLatin1().constData()) \
-                << x1 << it2.value(); \
-        } \
-    } \
-}
-
-SINGLE_DATA_IMPLEMENTATION(translate)
-
-void tst_QTransform::translate()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.translate(10, 10);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(scale)
-
-void tst_QTransform::scale()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.scale(2, 2);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(shear)
-
-void tst_QTransform::shear()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.shear(2, 2);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(rotate)
-
-void tst_QTransform::rotate()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.rotate(45);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(rotateXYZ)
-
-void tst_QTransform::rotateXYZ()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.rotate(45, Qt::XAxis);
-        x.rotate(45, Qt::YAxis);
-        x.rotate(45, Qt::ZAxis);
-    }
-}
-
-DOUBLE_DATA_IMPLEMENTATION(operatorAssign)
-
-void tst_QTransform::operatorAssign()
-{
-    QFETCH(QTransform, x1);
-    QFETCH(QTransform, x2);
-    QTransform x = x1;
-    QBENCHMARK {
-        x = x2;
-    }
-}
-
-DOUBLE_DATA_IMPLEMENTATION(operatorEqual)
-
-void tst_QTransform::operatorEqual()
-{
-    QFETCH(QTransform, x1);
-    QFETCH(QTransform, x2);
-    QTransform x = x1;
-    QBENCHMARK {
-        x == x2;
-    }
-}
-
-DOUBLE_DATA_IMPLEMENTATION(operatorNotEqual)
-
-void tst_QTransform::operatorNotEqual()
-{
-    QFETCH(QTransform, x1);
-    QFETCH(QTransform, x2);
-    QTransform x = x1;
-    QBENCHMARK {
-        x != x2;
-    }
-}
-
-DOUBLE_DATA_IMPLEMENTATION(operatorMultiply)
-
-void tst_QTransform::operatorMultiply()
-{
-    QFETCH(QTransform, x1);
-    QFETCH(QTransform, x2);
-    QTransform x = x1;
-    QBENCHMARK {
-        x * x2;
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(operatorPlusEqualScalar)
-
-void tst_QTransform::operatorPlusEqualScalar()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x += 3.14;
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(operatorMinusEqualScalar)
-
-void tst_QTransform::operatorMinusEqualScalar()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x -= 3.14;
-    }
-}
-
-DOUBLE_DATA_IMPLEMENTATION(operatorMultiplyEqual)
-
-void tst_QTransform::operatorMultiplyEqual()
-{
-    QFETCH(QTransform, x1);
-    QFETCH(QTransform, x2);
-    QTransform x = x1;
-    QBENCHMARK {
-        x *= x2;
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(operatorMultiplyEqualScalar)
-
-void tst_QTransform::operatorMultiplyEqualScalar()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x * 3;
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(operatorDivideEqualScalar)
-
-void tst_QTransform::operatorDivideEqualScalar()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x /= 3;
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapQPoint)
-
-void tst_QTransform::mapQPoint()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.map(QPoint(3, 3));
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapQPointF)
-
-void tst_QTransform::mapQPointF()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.map(QPointF(3, 3));
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapRect)
-
-void tst_QTransform::mapRect()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.mapRect(QRect(0, 0, 100, 100));
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapRectF)
-
-void tst_QTransform::mapRectF()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.mapRect(QRectF(0, 0, 100, 100));
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapQPolygon)
-
-void tst_QTransform::mapQPolygon()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QPolygon poly = QPolygon(QRect(0, 0, 100, 100));
-    QBENCHMARK {
-        x.map(poly);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapQPolygonF)
-
-void tst_QTransform::mapQPolygonF()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QPolygonF poly = QPolygonF(QRectF(0, 0, 100, 100));
-    QBENCHMARK {
-        x.map(poly);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapQRegion)
-
-void tst_QTransform::mapQRegion()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QRegion region;
-    for (int i = 0; i < 10; ++i)
-        region += QRect(i * 10, i * 10, 100, 100);
-    QBENCHMARK {
-        x.map(region);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(mapToPolygon)
-
-void tst_QTransform::mapToPolygon()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QBENCHMARK {
-        x.mapToPolygon(QRect(0, 0, 100, 100));
-    }
-}
-
-
-SINGLE_DATA_IMPLEMENTATION(mapQPainterPath)
-
-void tst_QTransform::mapQPainterPath()
-{
-    QFETCH(QTransform, transform);
-    QTransform x = transform;
-    QPainterPath path;
-    for (int i = 0; i < 10; ++i)
-        path.addEllipse(i * 10, i * 10, 100, 100);
-    QBENCHMARK {
-        x.map(path);
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isIdentity)
-
-void tst_QTransform::isIdentity()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isIdentity();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isAffine)
-
-void tst_QTransform::isAffine()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isAffine();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isInvertible)
-
-void tst_QTransform::isInvertible()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isInvertible();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isRotating)
-
-void tst_QTransform::isRotating()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isRotating();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isScaling)
-
-void tst_QTransform::isScaling()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isScaling();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(isTranslating)
-
-void tst_QTransform::isTranslating()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.isTranslating();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(type)
-
-void tst_QTransform::type()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.type();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(determinant)
-
-void tst_QTransform::determinant()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.determinant();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(adjoint)
-
-void tst_QTransform::adjoint()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.adjoint();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(transposed)
-
-void tst_QTransform::transposed()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.transposed();
-    }
-}
-
-SINGLE_DATA_IMPLEMENTATION(inverted)
-
-void tst_QTransform::inverted()
-{
-    QFETCH(QTransform, transform);
-    QBENCHMARK {
-        transform.inverted();
-    }
-}
-
-QTEST_MAIN(tst_QTransform)
-#include "tst_qtransform.moc"
diff --git a/tests/benchmarks/qvariant/qvariant.pro b/tests/benchmarks/qvariant/qvariant.pro
deleted file mode 100644
index 63b5442..0000000
--- a/tests/benchmarks/qvariant/qvariant.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qvariant
-DEPENDPATH += .
-INCLUDEPATH += .
-
-CONFIG += release
-#CONFIG += debug
-
-
-SOURCES += tst_qvariant.cpp
diff --git a/tests/benchmarks/qvariant/tst_qvariant.cpp b/tests/benchmarks/qvariant/tst_qvariant.cpp
deleted file mode 100644
index 82dc7dd..0000000
--- a/tests/benchmarks/qvariant/tst_qvariant.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtCore>
-#include <QtGui/QPixmap>
-#include <qtest.h>
-
-#define ITERATION_COUNT 1e5
-
-class tst_qvariant : public QObject
-{
-    Q_OBJECT
-private slots:
-    void testBound();
-
-    void doubleVariantCreation();
-    void floatVariantCreation();
-    void rectVariantCreation();
-    void stringVariantCreation();
-    void pixmapVariantCreation();
-
-    void doubleVariantSetValue();
-    void floatVariantSetValue();
-    void rectVariantSetValue();
-    void stringVariantSetValue();
-
-    void doubleVariantAssignment();
-    void floatVariantAssignment();
-    void rectVariantAssignment();
-    void stringVariantAssignment();
-};
-
-void tst_qvariant::testBound()
-{
-    qreal d = qreal(.5);
-    QBENCHMARK {
-        for(int i = 0; i < ITERATION_COUNT; ++i) {
-            d = qBound<qreal>(0, d, 1);
-        }
-    }
-}
-
-template <typename T>
-static void variantCreation(T val)
-{
-    QBENCHMARK {
-        for(int i = 0; i < ITERATION_COUNT; ++i) {
-            QVariant v(val);
-        }
-    }
-}
-
-void tst_qvariant::doubleVariantCreation()
-{
-    variantCreation<double>(0.0);
-}
-
-void tst_qvariant::floatVariantCreation()
-{
-    variantCreation<float>(0.0f);
-}
-
-void tst_qvariant::rectVariantCreation()
-{
-    variantCreation<QRect>(QRect(1, 2, 3, 4));
-}
-
-void tst_qvariant::stringVariantCreation()
-{
-    variantCreation<QString>(QString());
-}
-
-void tst_qvariant::pixmapVariantCreation()
-{
-    variantCreation<QPixmap>(QPixmap());
-}
-
-template <typename T>
-static void variantSetValue(T d)
-{
-    QVariant v;
-    QBENCHMARK {
-        for(int i = 0; i < ITERATION_COUNT; ++i) {
-            qVariantSetValue(v, d);
-        }
-    }
-}
-
-void tst_qvariant::doubleVariantSetValue()
-{
-    variantSetValue<double>(0.0);
-}
-
-void tst_qvariant::floatVariantSetValue()
-{
-    variantSetValue<float>(0.0f);
-}
-
-void tst_qvariant::rectVariantSetValue()
-{
-    variantSetValue<QRect>(QRect());
-}
-
-void tst_qvariant::stringVariantSetValue()
-{
-    variantSetValue<QString>(QString());
-}
-
-template <typename T>
-static void variantAssignment(T d)
-{
-    QVariant v;
-    QBENCHMARK {
-        for(int i = 0; i < ITERATION_COUNT; ++i) {
-            v = d;
-        }
-    }
-}
-
-void tst_qvariant::doubleVariantAssignment()
-{
-    variantAssignment<double>(0.0);
-}
-
-void tst_qvariant::floatVariantAssignment()
-{
-    variantAssignment<float>(0.0f);
-}
-
-void tst_qvariant::rectVariantAssignment()
-{
-    variantAssignment<QRect>(QRect());
-}
-
-void tst_qvariant::stringVariantAssignment()
-{
-    variantAssignment<QString>(QString());
-}
-
-QTEST_MAIN(tst_qvariant)
-
-#include "tst_qvariant.moc"
diff --git a/tests/benchmarks/qwidget/qwidget.pro b/tests/benchmarks/qwidget/qwidget.pro
deleted file mode 100644
index ff47445..0000000
--- a/tests/benchmarks/qwidget/qwidget.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-load(qttest_p4)
-
-TARGET = tst_qwidget
-SOURCES += tst_qwidget.cpp
diff --git a/tests/benchmarks/qwidget/tst_qwidget.cpp b/tests/benchmarks/qwidget/tst_qwidget.cpp
deleted file mode 100644
index f21bd44..0000000
--- a/tests/benchmarks/qwidget/tst_qwidget.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtGui>
-
-class tst_QWidget : public QObject
-{
-    Q_OBJECT
-
-
-private slots:
-    void update_data();
-    void updateOpaque_data();
-    void updateOpaque();
-    void updateTransparent_data();
-    void updateTransparent();
-    void updatePartial_data();
-    void updatePartial();
-    void updateComplex_data();
-    void updateComplex();
-
-    void complexToplevelResize();
-};
-
-class UpdateWidget : public QWidget
-{
-public:
-    UpdateWidget(int rows, int columns) : QWidget(0)
-    {
-        QGridLayout *layout = new QGridLayout;
-        for (int row = 0; row < rows; ++row) {
-            for (int column = 0; column < columns; ++column) {
-                UpdateWidget *widget = new UpdateWidget;
-                widget->setFixedSize(20, 20);
-                layout->addWidget(widget, row, column);
-                children.append(widget);
-            }
-        }
-        setLayout(layout);
-    }
-
-    UpdateWidget(QWidget *parent = 0) : QWidget(parent) {}
-
-    void paintEvent(QPaintEvent *)
-    {
-        static int color = Qt::black;
-
-        QPainter painter(this);
-        painter.fillRect(rect(), Qt::GlobalColor(color));
-
-        if (++color > Qt::darkYellow)
-            color = Qt::black;
-    }
-
-    QRegion updateRegion;
-    QList<UpdateWidget*> children;
-};
-
-void tst_QWidget::update_data()
-{
-    QTest::addColumn<int>("rows");
-    QTest::addColumn<int>("columns");
-    QTest::addColumn<int>("numUpdates");
-
-    QTest::newRow("10x10x1") << 10 << 10 << 1;
-    QTest::newRow("10x10x10") << 10 << 10 << 10;
-    QTest::newRow("25x25x1") << 25 << 25 << 1;
-    QTest::newRow("25x25x10") << 25 << 25 << 10;
-    QTest::newRow("25x25x100") << 25 << 25 << 100;
-}
-
-void tst_QWidget::updateOpaque_data()
-{
-    update_data();
-}
-
-void tst_QWidget::updateOpaque()
-{
-    QFETCH(int, rows);
-    QFETCH(int, columns);
-    QFETCH(int, numUpdates);
-
-    UpdateWidget widget(rows, columns);
-    foreach (QWidget *w, widget.children) {
-        w->setAttribute(Qt::WA_OpaquePaintEvent);
-    }
-
-    widget.show();
-    QApplication::processEvents();
-
-    int i = 0;
-    const int n = widget.children.size();
-    QBENCHMARK {
-        for (int j = 0; j < numUpdates; ++j) {
-            widget.children[i]->update();
-            QApplication::processEvents();
-            i = (i + 1) % n;
-        }
-    }
-}
-
-void tst_QWidget::updateTransparent_data()
-{
-    update_data();
-}
-
-void tst_QWidget::updateTransparent()
-{
-    QFETCH(int, rows);
-    QFETCH(int, columns);
-    QFETCH(int, numUpdates);
-
-    UpdateWidget widget(rows, columns);
-    widget.show();
-    QApplication::processEvents();
-
-    int i = 0;
-    const int n = widget.children.size();
-    QBENCHMARK {
-        for (int j = 0; j < numUpdates; ++j) {
-            widget.children[i]->update();
-            QApplication::processEvents();
-            i = (i + 1) % n;
-        }
-    }
-}
-
-void tst_QWidget::updatePartial_data()
-{
-    update_data();
-}
-
-void tst_QWidget::updatePartial()
-{
-    QFETCH(int, rows);
-    QFETCH(int, columns);
-    QFETCH(int, numUpdates);
-
-    UpdateWidget widget(rows, columns);
-    widget.show();
-    QApplication::processEvents();
-
-    int i = 0;
-    const int n = widget.children.size();
-    QBENCHMARK {
-        for (int j = 0; j < numUpdates; ++j) {
-            QWidget *w = widget.children[i];
-            const int x = w->width() / 2;
-            const int y = w->height() / 2;
-            w->update(0, 0, x, y);
-            w->update(x, 0, x, y);
-            w->update(0, y, x, y);
-            w->update(x, y, x, y);
-            QApplication::processEvents();
-            i = (i + 1) % n;
-        }
-    }
-}
-
-void tst_QWidget::updateComplex_data()
-{
-    update_data();
-}
-
-void tst_QWidget::updateComplex()
-{
-    QFETCH(int, rows);
-    QFETCH(int, columns);
-    QFETCH(int, numUpdates);
-
-    UpdateWidget widget(rows, columns);
-    widget.show();
-    QApplication::processEvents();
-
-    int i = 0;
-    const int n = widget.children.size();
-    QBENCHMARK {
-        for (int j = 0; j < numUpdates; ++j) {
-            QWidget *w = widget.children[i];
-            const int x = w->width() / 2;
-            const int y = w->height() / 2;
-            w->update(QRegion(0, 0, x, y, QRegion::Ellipse));
-            w->update(QRegion(x, y, x, y, QRegion::Ellipse));
-            QApplication::processEvents();
-            i = (i + 1) % n;
-        }
-    }
-}
-
-class ResizeWidget : public QWidget
-{
-public:
-    ResizeWidget();
-};
-
-ResizeWidget::ResizeWidget() : QWidget(0)
-{
-    QBoxLayout *topLayout = new QVBoxLayout;
-
-    QMenuBar *menubar = new QMenuBar;
-    QMenu* popup = menubar->addMenu("&File");
-    popup->addAction("&Quit", qApp, SLOT(quit()));
-    topLayout->setMenuBar(menubar);
-
-    QBoxLayout *buttons = new QHBoxLayout;
-    buttons->setMargin(5);
-    buttons->addStretch(10);
-    for (int i = 1; i <= 4; i++ ) {
-        QPushButton* button = new QPushButton;
-        button->setText(QString("Button %1").arg(i));
-        buttons->addWidget(button);
-    }
-    topLayout->addLayout(buttons);
-
-    buttons = new QHBoxLayout;
-    buttons->addStretch(10);
-    for (int i = 11; i <= 16; i++) {
-        QPushButton* button = new QPushButton;
-        button->setText(QString("Button %1").arg(i));
-        buttons->addWidget(button);
-    }
-    topLayout->addLayout(buttons);
-
-    QBoxLayout *buttons2 = new QHBoxLayout;
-    buttons2->addStretch(10);
-    topLayout->addLayout(buttons2);
-
-    QPushButton *button = new QPushButton;
-    button->setText("Button five");
-    buttons2->addWidget(button);
-
-    button = new QPushButton;
-    button->setText("Button 6");
-    buttons2->addWidget(button);
-
-    QTextEdit *bigWidget = new QTextEdit;
-    bigWidget->setText("This widget will get all the remaining space");
-    bigWidget->setFrameStyle(QFrame::Panel | QFrame::Plain);
-    topLayout->addWidget(bigWidget);
-
-    const int numRows = 6;
-    const int labelCol = 0;
-    const int linedCol = 1;
-    const int multiCol = 2;
-
-    QGridLayout *grid = new QGridLayout;
-    for (int row = 0; row < numRows; row++) {
-        QLineEdit *lineEdit = new QLineEdit;
-        grid->addWidget(lineEdit, row, linedCol);
-        QLabel *label = new QLabel(QString("Line &%1").arg(row + 1));
-        grid->addWidget(label, row, labelCol);
-    }
-    topLayout->addLayout(grid);
-
-    QTextEdit *multiLineEdit = new QTextEdit;
-    grid->addWidget(multiLineEdit, 0, labelCol + 1, multiCol, multiCol);
-
-    grid->setColumnStretch(linedCol, 10);
-    grid->setColumnStretch(multiCol, 20);
-
-    QLabel* statusBar = new QLabel;
-    statusBar->setText("Let's pretend this is a status bar");
-    statusBar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
-    statusBar->setFixedHeight(statusBar->sizeHint().height());
-    statusBar->setAlignment(Qt::AlignVCenter | Qt::AlignLeft);
-    topLayout->addWidget(statusBar);
-
-    topLayout->activate();
-    setLayout(topLayout);
-}
-
-void tst_QWidget::complexToplevelResize()
-{
-    ResizeWidget w;
-    w.show();
-
-    QApplication::processEvents();
-
-    const int minSize = 100;
-    const int maxSize = 800;
-    int size = minSize;
-
-    QBENCHMARK {
-        w.resize(size, size);
-        size = qMax(minSize, (size + 10) % maxSize);
-        QApplication::processEvents();
-        QApplication::processEvents();
-    }
-}
-
-QTEST_MAIN(tst_QWidget)
-
-#include "tst_qwidget.moc"
diff --git a/tests/benchmarks/script/qscriptclass/qscriptclass.pro b/tests/benchmarks/script/qscriptclass/qscriptclass.pro
new file mode 100644
index 0000000..f0ffeb7
--- /dev/null
+++ b/tests/benchmarks/script/qscriptclass/qscriptclass.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qscriptclass
+
+SOURCES += tst_qscriptclass.cpp
+
+QT += script
diff --git a/tests/benchmarks/script/qscriptclass/tst_qscriptclass.cpp b/tests/benchmarks/script/qscriptclass/tst_qscriptclass.cpp
new file mode 100644
index 0000000..7985028
--- /dev/null
+++ b/tests/benchmarks/script/qscriptclass/tst_qscriptclass.cpp
@@ -0,0 +1,511 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtScript>
+
+Q_DECLARE_METATYPE(QScriptContext*)
+Q_DECLARE_METATYPE(QScriptValue)
+Q_DECLARE_METATYPE(QScriptValueList)
+
+//TESTED_FILES=
+
+class TestClass : public QScriptClass
+{
+public:
+    struct CustomProperty {
+        QueryFlags qflags;
+        uint id;
+        QScriptValue::PropertyFlags pflags;
+        QScriptValue value;
+
+        CustomProperty(QueryFlags qf, uint i, QScriptValue::PropertyFlags pf,
+                       const QScriptValue &val)
+            : qflags(qf), id(i), pflags(pf), value(val) { }
+    };
+
+    enum CallableMode {
+        NotCallable,
+        CallableReturnsSum,
+        CallableReturnsArgument,
+        CallableReturnsInvalidVariant
+    };
+
+    TestClass(QScriptEngine *engine);
+    ~TestClass();
+
+    void addCustomProperty(const QScriptString &name, QueryFlags qflags,
+                           uint id, QScriptValue::PropertyFlags pflags,
+                           const QScriptValue &value);
+    void removeCustomProperty(const QScriptString &name);
+
+    QueryFlags queryProperty(const QScriptValue &object,
+                             const QScriptString &name,
+                             QueryFlags flags, uint *id);
+
+    QScriptValue property(const QScriptValue &object,
+                          const QScriptString &name, uint id);
+
+    void setProperty(QScriptValue &object, const QScriptString &name,
+                     uint id, const QScriptValue &value);
+
+    QScriptValue::PropertyFlags propertyFlags(
+        const QScriptValue &object, const QScriptString &name, uint id);
+
+    QScriptClassPropertyIterator *newIterator(const QScriptValue &object);
+
+    QScriptValue prototype() const;
+
+    QString name() const;
+
+    bool supportsExtension(Extension extension) const;
+    QVariant extension(Extension extension,
+                       const QVariant &argument = QVariant());
+
+    void setIterationEnabled(bool enable);
+    bool isIterationEnabled() const;
+
+    void setCallableMode(CallableMode mode);
+    CallableMode callableMode() const;
+
+    void setHasInstance(bool hasInstance);
+    bool hasInstance() const;
+
+private:
+    inline CustomProperty *findCustomProperty(const QScriptString &name);
+
+    QHash<QScriptString, CustomProperty*> customProperties;
+
+    QScriptValue m_prototype;
+    bool m_iterationEnabled;
+    CallableMode m_callableMode;
+    bool m_hasInstance;
+};
+
+class TestClassPropertyIterator : public QScriptClassPropertyIterator
+{
+public:
+    TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
+                      const QScriptValue &object);
+    ~TestClassPropertyIterator();
+
+    bool hasNext() const;
+    void next();
+
+    bool hasPrevious() const;
+    void previous();
+
+    void toFront();
+    void toBack();
+
+    QScriptString name() const;
+    uint id() const;
+    QScriptValue::PropertyFlags flags() const;
+
+private:
+    int m_index;
+    int m_last;
+    QHash<QScriptString, TestClass::CustomProperty*> m_props;
+};
+
+TestClass::TestClass(QScriptEngine *engine)
+    : QScriptClass(engine), m_iterationEnabled(true),
+      m_callableMode(NotCallable), m_hasInstance(false)
+{
+    m_prototype = engine->newObject();
+}
+
+TestClass::~TestClass()
+{
+    qDeleteAll(customProperties);
+}
+
+TestClass::CustomProperty* TestClass::findCustomProperty(const QScriptString &name)
+{
+    QHash<QScriptString, CustomProperty*>::const_iterator it;
+    it = customProperties.constFind(name);
+    if (it == customProperties.constEnd())
+        return 0;
+    return it.value();
+
+}
+
+void TestClass::addCustomProperty(const QScriptString &name, QueryFlags qflags,
+                                  uint id, QScriptValue::PropertyFlags pflags,
+                                  const QScriptValue &value)
+{
+    customProperties.insert(name, new CustomProperty(qflags, id, pflags, value));
+}
+
+void TestClass::removeCustomProperty(const QScriptString &name)
+{
+    CustomProperty *prop = customProperties.take(name);
+    if (prop)
+        delete prop;
+}
+
+QScriptClass::QueryFlags TestClass::queryProperty(const QScriptValue &/*object*/,
+                                    const QScriptString &name,
+                                    QueryFlags flags, uint *id)
+{
+    CustomProperty *prop = findCustomProperty(name);
+    if (!prop)
+        return 0;
+    *id = prop->id;
+    return prop->qflags & flags;
+}
+
+QScriptValue TestClass::property(const QScriptValue &/*object*/,
+                                 const QScriptString &name, uint /*id*/)
+{
+    CustomProperty *prop = findCustomProperty(name);
+    if (!prop)
+        return QScriptValue();
+    return prop->value;
+}
+
+void TestClass::setProperty(QScriptValue &/*object*/, const QScriptString &name,
+                            uint /*id*/, const QScriptValue &value)
+{
+    CustomProperty *prop = findCustomProperty(name);
+    if (!prop)
+        return;
+    prop->value = value;
+}
+
+QScriptValue::PropertyFlags TestClass::propertyFlags(
+    const QScriptValue &/*object*/, const QScriptString &name, uint /*id*/)
+{
+    CustomProperty *prop = findCustomProperty(name);
+    if (!prop)
+        return 0;
+    return prop->pflags;
+}
+
+QScriptClassPropertyIterator *TestClass::newIterator(const QScriptValue &object)
+{
+    if (!m_iterationEnabled)
+        return 0;
+    return new TestClassPropertyIterator(customProperties, object);
+}
+
+QScriptValue TestClass::prototype() const
+{
+    return m_prototype;
+}
+
+QString TestClass::name() const
+{
+    return QLatin1String("TestClass");
+}
+
+bool TestClass::supportsExtension(Extension extension) const
+{
+    if (extension == Callable)
+        return (m_callableMode != NotCallable);
+    if (extension == HasInstance)
+        return m_hasInstance;
+    return false;
+}
+
+QVariant TestClass::extension(Extension extension,
+                              const QVariant &argument)
+{
+    if (extension == Callable) {
+        Q_ASSERT(m_callableMode != NotCallable);
+        QScriptContext *ctx = qvariant_cast<QScriptContext*>(argument);
+        if (m_callableMode == CallableReturnsSum) {
+            qsreal sum = 0;
+            for (int i = 0; i < ctx->argumentCount(); ++i)
+                sum += ctx->argument(i).toNumber();
+            QScriptValueIterator it(ctx->thisObject());
+            while (it.hasNext()) {
+                it.next();
+                sum += it.value().toNumber();
+            }
+            return sum;
+        } else if (m_callableMode == CallableReturnsArgument) {
+            return qVariantFromValue(ctx->argument(0));
+        } else if (m_callableMode == CallableReturnsInvalidVariant) {
+            return QVariant();
+        }
+    } else if (extension == HasInstance) {
+        Q_ASSERT(m_hasInstance);
+        QScriptValueList args = qvariant_cast<QScriptValueList>(argument);
+        QScriptValue obj = args.at(0);
+        QScriptValue value = args.at(1);
+        return value.property("foo").equals(obj.property("foo"));
+    }
+    return QVariant();
+}
+
+void TestClass::setIterationEnabled(bool enable)
+{
+    m_iterationEnabled = enable;
+}
+
+bool TestClass::isIterationEnabled() const
+{
+    return m_iterationEnabled;
+}
+
+void TestClass::setCallableMode(CallableMode mode)
+{
+    m_callableMode = mode;
+}
+
+TestClass::CallableMode TestClass::callableMode() const
+{
+    return m_callableMode;
+}
+
+void TestClass::setHasInstance(bool hasInstance)
+{
+    m_hasInstance = hasInstance;
+}
+
+bool TestClass::hasInstance() const
+{
+    return m_hasInstance;
+}
+
+TestClassPropertyIterator::TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
+                                     const QScriptValue &object)
+    : QScriptClassPropertyIterator(object)
+{
+    m_props = props;
+    toFront();
+}
+
+TestClassPropertyIterator::~TestClassPropertyIterator()
+{
+}
+
+bool TestClassPropertyIterator::hasNext() const
+{
+    return m_index < m_props.size();
+}
+
+void TestClassPropertyIterator::next()
+{
+    m_last = m_index;
+    ++m_index;
+}
+
+bool TestClassPropertyIterator::hasPrevious() const
+{
+    return m_index > 0;
+}
+
+void TestClassPropertyIterator::previous()
+{
+    --m_index;
+    m_last = m_index;
+}
+
+void TestClassPropertyIterator::toFront()
+{
+    m_index = 0;
+    m_last = -1;
+}
+
+void TestClassPropertyIterator::toBack()
+{
+    m_index = m_props.size();
+    m_last = -1;
+}
+
+QScriptString TestClassPropertyIterator::name() const
+{
+    return m_props.keys().value(m_last);
+}
+
+uint TestClassPropertyIterator::id() const
+{
+    QScriptString key = m_props.keys().value(m_last);
+    if (!key.isValid())
+        return 0;
+    TestClass::CustomProperty *prop = m_props.value(key);
+    return prop->id;
+}
+
+QScriptValue::PropertyFlags TestClassPropertyIterator::flags() const
+{
+    QScriptString key = m_props.keys().value(m_last);
+    if (!key.isValid())
+        return 0;
+    TestClass::CustomProperty *prop = m_props.value(key);
+    return prop->pflags;
+}
+
+class tst_QScriptClass : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QScriptClass();
+    virtual ~tst_QScriptClass();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void noSuchProperty();
+    void property();
+    void setProperty();
+    void propertyFlags();
+    void call();
+    void hasInstance();
+    void iterate();
+};
+
+tst_QScriptClass::tst_QScriptClass()
+{
+}
+
+tst_QScriptClass::~tst_QScriptClass()
+{
+}
+
+void tst_QScriptClass::init()
+{
+}
+
+void tst_QScriptClass::cleanup()
+{
+}
+
+void tst_QScriptClass::noSuchProperty()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    QScriptValue obj = eng.newObject(&cls);
+    QString propertyName = QString::fromLatin1("foo");
+    QBENCHMARK {
+        (void)obj.property(propertyName);
+    }
+}
+
+void tst_QScriptClass::property()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    QScriptString foo = eng.toStringHandle("foo");
+    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
+    QScriptValue obj = eng.newObject(&cls);
+    QBENCHMARK {
+        (void)obj.property(foo);
+    }
+}
+
+void tst_QScriptClass::setProperty()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    QScriptString foo = eng.toStringHandle("foo");
+    cls.addCustomProperty(foo, QScriptClass::HandlesWriteAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
+    QScriptValue obj = eng.newObject(&cls);
+    QScriptValue value(456);
+    QBENCHMARK {
+        obj.setProperty(foo, value);
+    }
+}
+
+void tst_QScriptClass::propertyFlags()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    QScriptString foo = eng.toStringHandle("foo");
+    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, QScriptValue::ReadOnly, /*value=*/123);
+    QScriptValue obj = eng.newObject(&cls);
+    QBENCHMARK {
+        (void)obj.propertyFlags(foo);
+    }
+}
+
+void tst_QScriptClass::call()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    cls.setCallableMode(TestClass::CallableReturnsArgument);
+    QScriptValue obj = eng.newObject(&cls);
+    QScriptValue thisObject;
+    QScriptValueList args;
+    args.append(123);
+    QBENCHMARK {
+        (void)obj.call(thisObject, args);
+    }
+}
+
+void tst_QScriptClass::hasInstance()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    cls.setHasInstance(true);
+    QScriptValue obj = eng.newObject(&cls);
+    obj.setProperty("foo", 123);
+    QScriptValue plain = eng.newObject();
+    plain.setProperty("foo", obj.property("foo"));
+    QBENCHMARK {
+        (void)plain.instanceOf(obj);
+    }
+}
+
+void tst_QScriptClass::iterate()
+{
+    QScriptEngine eng;
+    TestClass cls(&eng);
+    cls.setIterationEnabled(true);
+    cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
+    cls.addCustomProperty(eng.toStringHandle("bar"), QScriptClass::HandlesReadAccess, /*id=*/2, /*attributes=*/0, /*value=*/456);
+    QScriptValue obj = eng.newObject(&cls);
+    QBENCHMARK {
+        QScriptValueIterator it(obj);
+        while (it.hasNext()) {
+            it.next();
+            (void)it.scriptName();
+        }
+    }
+}
+
+QTEST_MAIN(tst_QScriptClass)
+#include "tst_qscriptclass.moc"
diff --git a/tests/benchmarks/script/qscriptengine/qscriptengine.pro b/tests/benchmarks/script/qscriptengine/qscriptengine.pro
new file mode 100644
index 0000000..df6dbb3
--- /dev/null
+++ b/tests/benchmarks/script/qscriptengine/qscriptengine.pro
@@ -0,0 +1,12 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qscriptengine
+
+SOURCES += tst_qscriptengine.cpp
+
+QT += script
+
+symbian* {
+    TARGET.EPOCHEAPSIZE  = 0x20000 0x2000000 // Min 128kB, Max 32MB
+    TARGET.EPOCSTACKSIZE = 0x14000
+}
diff --git a/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
new file mode 100644
index 0000000..6c6f0b1
--- /dev/null
+++ b/tests/benchmarks/script/qscriptengine/tst_qscriptengine.cpp
@@ -0,0 +1,289 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtScript>
+
+//TESTED_FILES=
+
+class tst_QScriptEngine : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QScriptEngine();
+    virtual ~tst_QScriptEngine();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void constructor();
+    void evaluate_data();
+    void evaluate();
+    void evaluateProgram_data();
+    void evaluateProgram();
+    void connectAndDisconnect();
+    void newObject();
+    void newQObject();
+    void newFunction();
+    void newVariant();
+    void collectGarbage();
+    void pushAndPopContext();
+    void toStringHandle();
+    void castValueToQreal();
+    void nativeCall();
+    void translation_data();
+    void translation();
+};
+
+tst_QScriptEngine::tst_QScriptEngine()
+{
+}
+
+tst_QScriptEngine::~tst_QScriptEngine()
+{
+}
+
+void tst_QScriptEngine::init()
+{
+}
+
+void tst_QScriptEngine::cleanup()
+{
+}
+
+void tst_QScriptEngine::constructor()
+{
+    QBENCHMARK {
+        QScriptEngine engine;
+        (void)engine.parent();
+    }
+}
+
+void tst_QScriptEngine::evaluate_data()
+{
+    QTest::addColumn<QString>("code");
+    QTest::newRow("empty script") << QString::fromLatin1("");
+    QTest::newRow("number literal") << QString::fromLatin1("123");
+    QTest::newRow("string literal") << QString::fromLatin1("'ciao'");
+    QTest::newRow("regexp literal") << QString::fromLatin1("/foo/gim");
+    QTest::newRow("null literal") << QString::fromLatin1("null");
+    QTest::newRow("undefined literal") << QString::fromLatin1("undefined");
+    QTest::newRow("null literal") << QString::fromLatin1("null");
+    QTest::newRow("empty object literal") << QString::fromLatin1("{}");
+    QTest::newRow("this") << QString::fromLatin1("this");
+    QTest::newRow("object literal with one property") << QString::fromLatin1("{ foo: 123 }");
+    QTest::newRow("object literal with two properties") << QString::fromLatin1("{ foo: 123, bar: 456 }");
+    QTest::newRow("object literal with many properties") << QString::fromLatin1("{ a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10 }");
+    QTest::newRow("empty array literal") << QString::fromLatin1("[]");
+    QTest::newRow("array literal with one element") << QString::fromLatin1("[1]");
+    QTest::newRow("array literal with two elements") << QString::fromLatin1("[1,2]");
+    QTest::newRow("array literal with many elements") << QString::fromLatin1("[1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1]");
+    QTest::newRow("empty function definition") << QString::fromLatin1("function foo() { }");
+    QTest::newRow("function definition") << QString::fromLatin1("function foo() { return 123; }");
+    QTest::newRow("for loop with empty body (1000 iterations)") << QString::fromLatin1("for (i = 0; i < 1000; ++i) {}");
+    QTest::newRow("for loop with empty body (10000 iterations)") << QString::fromLatin1("for (i = 0; i < 10000; ++i) {}");
+    QTest::newRow("for loop with empty body (100000 iterations)") << QString::fromLatin1("for (i = 0; i < 100000; ++i) {}");
+    QTest::newRow("for loop with empty body (1000000 iterations)") << QString::fromLatin1("for (i = 0; i < 1000000; ++i) {}");
+    QTest::newRow("for loop (1000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 1000; ++i) { j += i; }; j");
+    QTest::newRow("for loop (10000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 10000; ++i) { j += i; }; j");
+    QTest::newRow("for loop (100000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 100000; ++i) { j += i; }; j");
+    QTest::newRow("for loop (1000000 iterations)") << QString::fromLatin1("j = 0; for (i = 0; i < 1000000; ++i) { j += i; }; j");
+    QTest::newRow("assignments") << QString::fromLatin1("a = 1; b = 2; c = 3; d = 4");
+    QTest::newRow("while loop (1000 iterations)") << QString::fromLatin1("i = 0; while (i < 1000) { ++i; }; i");
+    QTest::newRow("while loop (10000 iterations)") << QString::fromLatin1("i = 0; while (i < 10000) { ++i; }; i");
+    QTest::newRow("while loop (100000 iterations)") << QString::fromLatin1("i = 0; while (i < 100000) { ++i; }; i");
+    QTest::newRow("while loop (1000000 iterations)") << QString::fromLatin1("i = 0; while (i < 1000000) { ++i; }; i");
+    QTest::newRow("function expression") << QString::fromLatin1("(function(a, b, c){ return a + b + c; })(1, 2, 3)");
+}
+
+void tst_QScriptEngine::evaluate()
+{
+    QFETCH(QString, code);
+    QScriptEngine engine;
+
+    QBENCHMARK {
+        (void)engine.evaluate(code);
+    }
+}
+
+void tst_QScriptEngine::connectAndDisconnect()
+{
+    QScriptEngine engine;
+    QScriptValue fun = engine.evaluate("(function() { })");
+    QBENCHMARK {
+        qScriptConnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
+        qScriptDisconnect(&engine, SIGNAL(destroyed()), QScriptValue(), fun);
+    }
+}
+
+void tst_QScriptEngine::evaluateProgram_data()
+{
+    evaluate_data();
+}
+
+void tst_QScriptEngine::evaluateProgram()
+{
+    QFETCH(QString, code);
+    QScriptEngine engine;
+    QScriptProgram program(code);
+
+    QBENCHMARK {
+        (void)engine.evaluate(program);
+    }
+}
+
+void tst_QScriptEngine::newObject()
+{
+    QScriptEngine engine;
+    QBENCHMARK {
+        (void)engine.newObject();
+    }
+}
+
+void tst_QScriptEngine::newQObject()
+{
+    QScriptEngine engine;
+    QBENCHMARK {
+        (void)engine.newQObject(QCoreApplication::instance());
+    }
+}
+
+static QScriptValue testFunction(QScriptContext *, QScriptEngine *)
+{
+    return 0;
+}
+
+void tst_QScriptEngine::newFunction()
+{
+    QScriptEngine engine;
+    QBENCHMARK {
+        (void)engine.newFunction(testFunction);
+    }
+}
+
+void tst_QScriptEngine::newVariant()
+{
+    QScriptEngine engine;
+    QVariant var(123);
+    QBENCHMARK {
+        (void)engine.newVariant(var);
+    }
+}
+
+void tst_QScriptEngine::collectGarbage()
+{
+    QScriptEngine engine;
+    QBENCHMARK {
+        engine.collectGarbage();
+    }
+}
+
+void tst_QScriptEngine::pushAndPopContext()
+{
+    QScriptEngine engine;
+    QBENCHMARK {
+        (void)engine.pushContext();
+        engine.popContext();
+    }
+}
+
+void tst_QScriptEngine::toStringHandle()
+{
+    QScriptEngine engine;
+    QString str = QString::fromLatin1("foobarbaz");
+    QBENCHMARK {
+        (void)engine.toStringHandle(str);
+    }
+}
+
+void tst_QScriptEngine::castValueToQreal()
+{
+    QScriptEngine engine;
+    QScriptValue val(123);
+    QBENCHMARK {
+        (void)qscriptvalue_cast<qreal>(val);
+    }
+}
+
+static QScriptValue native_function(QScriptContext *, QScriptEngine *)
+{
+    return 42;
+}
+
+void tst_QScriptEngine::nativeCall()
+{
+    QScriptEngine eng;
+    eng.globalObject().setProperty("fun", eng.newFunction(native_function));
+    QBENCHMARK{
+#if !defined(Q_OS_SYMBIAN)
+        eng.evaluate("var w = 0; for (i = 0; i < 100000; ++i) {\n"
+                     "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#else
+        eng.evaluate("var w = 0; for (i = 0; i < 25000; ++i) {\n"
+                     "  w += fun() + fun(); w -= fun(); fun(); w -= fun(); }");
+#endif
+    }
+}
+
+void tst_QScriptEngine::translation_data()
+{
+    QTest::addColumn<QString>("text");
+    QTest::newRow("no translation") << "\"hello world\"";
+    QTest::newRow("qsTr") << "qsTr(\"hello world\")";
+    QTest::newRow("qsTranslate") << "qsTranslate(\"\", \"hello world\")";
+}
+
+void tst_QScriptEngine::translation()
+{
+    QFETCH(QString, text);
+    QScriptEngine engine;
+    engine.installTranslatorFunctions();
+
+    QBENCHMARK {
+        (void)engine.evaluate(text);
+    }
+}
+
+QTEST_MAIN(tst_QScriptEngine)
+#include "tst_qscriptengine.moc"
diff --git a/tests/benchmarks/script/qscriptvalue/qscriptvalue.pro b/tests/benchmarks/script/qscriptvalue/qscriptvalue.pro
new file mode 100644
index 0000000..04ea324
--- /dev/null
+++ b/tests/benchmarks/script/qscriptvalue/qscriptvalue.pro
@@ -0,0 +1,7 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qscriptvalue
+
+SOURCES += tst_qscriptvalue.cpp
+
+QT += script
diff --git a/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
new file mode 100644
index 0000000..3bfc21c
--- /dev/null
+++ b/tests/benchmarks/script/qscriptvalue/tst_qscriptvalue.cpp
@@ -0,0 +1,205 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+#include <QtScript>
+
+//TESTED_FILES=
+
+class tst_QScriptValue : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QScriptValue();
+    virtual ~tst_QScriptValue();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void numberConstructor();
+    void stringConstructor();
+    void call_data();
+    void call();
+    void construct_data();
+    void construct();
+    void toString_data();
+    void toString();
+    void toQObject();
+    void property();
+    void setProperty();
+    void propertyFlags();
+};
+
+tst_QScriptValue::tst_QScriptValue()
+{
+}
+
+tst_QScriptValue::~tst_QScriptValue()
+{
+}
+
+void tst_QScriptValue::init()
+{
+}
+
+void tst_QScriptValue::cleanup()
+{
+}
+
+void tst_QScriptValue::numberConstructor()
+{
+    QBENCHMARK {
+        (void)QScriptValue(123);
+    }
+}
+
+void tst_QScriptValue::stringConstructor()
+{
+    QString str = QString::fromLatin1("ciao");
+    QBENCHMARK {
+        (void)QScriptValue(str);
+    }
+}
+
+void tst_QScriptValue::call_data()
+{
+    QTest::addColumn<QString>("code");
+    QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
+    QTest::newRow("function returning number") << QString::fromLatin1("(function(){ return 123; })");
+    QTest::newRow("closure") << QString::fromLatin1("(function(a, b){ return function() { return a + b; }; })(1, 2)");
+}
+
+void tst_QScriptValue::call()
+{
+    QFETCH(QString, code);
+    QScriptEngine engine;
+    QScriptValue fun = engine.evaluate(code);
+    QVERIFY(fun.isFunction());
+    QBENCHMARK {
+        (void)fun.call();
+    }
+}
+
+void tst_QScriptValue::construct_data()
+{
+    QTest::addColumn<QString>("code");
+    QTest::newRow("empty function") << QString::fromLatin1("(function(){})");
+    QTest::newRow("simple constructor") << QString::fromLatin1("(function(){ this.x = 10; this.y = 20; })");
+}
+
+void tst_QScriptValue::construct()
+{
+    QFETCH(QString, code);
+    QScriptEngine engine;
+    QScriptValue fun = engine.evaluate(code);
+    QVERIFY(fun.isFunction());
+    QBENCHMARK {
+        (void)fun.construct();
+    }
+}
+
+void tst_QScriptValue::toString_data()
+{
+    QTest::addColumn<QString>("code");
+    QTest::newRow("number") << QString::fromLatin1("123");
+    QTest::newRow("string") << QString::fromLatin1("'ciao'");
+    QTest::newRow("null") << QString::fromLatin1("null");
+    QTest::newRow("undefined") << QString::fromLatin1("undefined");
+    QTest::newRow("function") << QString::fromLatin1("(function foo(a, b, c) { return a + b + c; })");
+}
+
+void tst_QScriptValue::toString()
+{
+    QFETCH(QString, code);
+    QScriptEngine engine;
+    QScriptValue val = engine.evaluate(code);
+    QBENCHMARK {
+        (void)val.toString();
+    }
+}
+
+void tst_QScriptValue::toQObject()
+{
+    QScriptEngine engine;
+    QScriptValue obj = engine.newQObject(QCoreApplication::instance());
+    QBENCHMARK {
+        (void)obj.toQObject();
+    }
+}
+
+void tst_QScriptValue::property()
+{
+    QScriptEngine engine;
+    QScriptValue obj = engine.newObject();
+    QString propertyName = QString::fromLatin1("foo");
+    obj.setProperty(propertyName, 123);
+    QBENCHMARK {
+        (void)obj.property(propertyName);
+    }
+}
+
+void tst_QScriptValue::setProperty()
+{
+    QScriptEngine engine;
+    QScriptValue obj = engine.newObject();
+    QString propertyName = QString::fromLatin1("foo");
+    QScriptValue val(123);
+    QBENCHMARK {
+        obj.setProperty(propertyName, val);
+    }
+}
+
+void tst_QScriptValue::propertyFlags()
+{
+    QScriptEngine engine;
+    QScriptValue obj = engine.newObject();
+    QString propertyName = QString::fromLatin1("foo");
+    obj.setProperty(propertyName, 123, QScriptValue::SkipInEnumeration | QScriptValue::ReadOnly);
+    QBENCHMARK {
+        (void)obj.propertyFlags(propertyName);
+    }
+}
+
+QTEST_MAIN(tst_QScriptValue)
+#include "tst_qscriptvalue.moc"
diff --git a/tests/benchmarks/script/script.pro b/tests/benchmarks/script/script.pro
new file mode 100644
index 0000000..8d689b6
--- /dev/null
+++ b/tests/benchmarks/script/script.pro
@@ -0,0 +1,5 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qscriptclass \
+        qscriptengine \
+        qscriptvalue
diff --git a/tests/benchmarks/svg/qsvgrenderer/data/tiger.svg b/tests/benchmarks/svg/qsvgrenderer/data/tiger.svg
new file mode 100644
index 0000000..983e570
--- /dev/null
+++ b/tests/benchmarks/svg/qsvgrenderer/data/tiger.svg
@@ -0,0 +1,730 @@
+<?xml version="1.0"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
+         "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink"
+     height="800">
+ <g transform="translate(200,200)" style="fill-opacity:1; fill:none;">
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.172">
+  <path d="M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000">
+  <path d="M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"/>
+ </g>
+ <g style="fill: #cc7226; stroke:#000000">
+  <path d="M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"/>
+ </g>
+ <g style="fill: #e87f3a">
+  <path d="M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"/>
+ </g>
+ <g style="fill: #ea8c4d">
+  <path d="M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"/>
+ </g>
+ <g style="fill: #ec9961">
+  <path d="M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"/>
+ </g>
+ <g style="fill: #eea575">
+  <path d="M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"/>
+ </g>
+ <g style="fill: #f1b288">
+  <path d="M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"/>
+ </g>
+ <g style="fill: #f3bf9c">
+  <path d="M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"/>
+ </g>
+ <g style="fill: #f5ccb0">
+  <path d="M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"/>
+ </g>
+ <g style="fill: #f8d8c4">
+  <path d="M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"/>
+ </g>
+ <g style="fill: #fae5d7">
+  <path d="M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"/>
+ </g>
+ <g style="fill: #fcf2eb">
+  <path d="M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"/>
+ </g>
+ <g style="fill: #e5668c">
+  <path d="M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"/>
+ </g>
+ <g style="fill: #b23259">
+  <path d="M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"/>
+ </g>
+ <g style="fill: #a5264c">
+  <path d="M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"/>
+ </g>
+ <g style="fill: #ff727f; stroke:#000000">
+  <path d="M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"/>
+ </g>
+ <g style="fill: #cc3f4c">
+  <path d="M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"/>
+ </g>
+ <g style="stroke:#a51926; stroke-width:2">
+  <path d="M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+  <path d="M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+  <path d="M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+  <path d="M47 244.801C47 244.801 50.6 242.401 53 243.601"/>
+ </g>
+ <g style="stroke:#a5264c; stroke-width:2">
+  <path d="M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"/>
+ </g>
+ <g style="fill: #b2b2b2">
+  <path d="M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"/>
+ </g>
+ <g style="fill: #ffffcc; stroke:#000000; stroke-width:0.5">
+  <path d="M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+  <path d="M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"/>
+ </g>
+ <g style="fill: #e5e5b2">
+  <path d="M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"/>
+ </g>
+ <g style="fill: #ea8e51">
+  <path d="M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"/>
+ </g>
+ <g style="fill: #efaa7c">
+  <path d="M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"/>
+ </g>
+ <g style="fill: #f4c6a8">
+  <path d="M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"/>
+ </g>
+ <g style="fill: #f9e2d3">
+  <path d="M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"/>
+ </g>
+ <g style="fill: #99cc32">
+  <path d="M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"/>
+ </g>
+ <g style="fill: #659900">
+  <path d="M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"/>
+ </g>
+ <g style="fill: #eb955c">
+  <path d="M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"/>
+ </g>
+ <g style="fill: #f2b892">
+  <path d="M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"/>
+ </g>
+ <g style="fill: #f8dcc8">
+  <path d="M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"/>
+ </g>
+ <g style="fill: #99cc32">
+  <path d="M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"/>
+ </g>
+ <g style="fill: #323232">
+  <path d="M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"/>
+ </g>
+ <g style="fill: #666666">
+  <path d="M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"/>
+ </g>
+ <g style="fill: #999999">
+  <path d="M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"/>
+ </g>
+ <g style="fill: #992600">
+  <path d="M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"/>
+ </g>
+ <g style="fill: #cc7226">
+  <path d="M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+  <path d="M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+  <path d="M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+  <path d="M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"/>
+ </g>
+ <g style="stroke:#4c0000; stroke-width:2">
+  <path d="M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"/>
+ </g>
+ <g style="fill: #4c0000">
+  <path d="M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"/>
+ </g>
+ <g style="fill: #99cc32">
+  <path d="M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"/>
+ </g>
+ <g style="fill: #659900">
+  <path d="M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-65.4 9z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"/>
+ </g>
+ <g style="fill: #e59999">
+  <path d="M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"/>
+ </g>
+ <g style="fill: #b26565">
+  <path d="M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"/>
+ </g>
+ <g style="fill: #992600">
+  <path d="M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"/>
+ </g>
+ <g style="fill: #992600">
+  <path d="M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"/>
+ </g>
+ <g style="fill: #ffffff">
+  <path d="M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"/>
+ </g>
+ <g style="fill: #992600">
+  <path d="M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"/>
+ </g>
+ <g style="fill: #992600">
+  <path d="M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"/>
+ </g>
+ <g style="fill: #ffffff; stroke:#000000; stroke-width:0.1">
+  <path d="M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"/>
+ </g>
+ <g style="fill: #000000">
+  <path d="M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"/>
+ </g>
+ <g style="fill: #cccccc">
+  <path d="M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"/>
+ </g>
+ <g style="stroke:#000000">
+  <path d="M-89.25 169L-67.25 173.75"/>
+ </g>
+ <g style="stroke:#000000">
+  <path d="M-39 331C-39 331 -39.5 327.5 -48.5 338"/>
+ </g>
+ <g style="stroke:#000000">
+  <path d="M-33.5 336C-33.5 336 -31.5 329.5 -38 334"/>
+ </g>
+ <g style="stroke:#000000">
+  <path d="M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"/>
+ </g>
+</g>
+</svg>
+
diff --git a/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.pro b/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.pro
new file mode 100644
index 0000000..8222a09
--- /dev/null
+++ b/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.pro
@@ -0,0 +1,9 @@
+load(qttest_p4)
+TEMPLATE = app
+TARGET = tst_qsvgrenderer
+
+SOURCES += tst_qsvgrenderer.cpp
+RESOURCES += qsvgrenderer.qrc
+
+QT += svg
+
diff --git a/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.qrc b/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.qrc
new file mode 100644
index 0000000..bdf4a31
--- /dev/null
+++ b/tests/benchmarks/svg/qsvgrenderer/qsvgrenderer.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+    <file>data/tiger.svg</file>
+</qresource>
+</RCC>
+
diff --git a/tests/benchmarks/svg/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/benchmarks/svg/qsvgrenderer/tst_qsvgrenderer.cpp
new file mode 100644
index 0000000..895ffe0
--- /dev/null
+++ b/tests/benchmarks/svg/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <qtest.h>
+
+#include <QFile>
+#include <QSvgRenderer>
+
+//TESTED_FILES=
+
+class tst_QSvgRenderer : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_QSvgRenderer();
+    virtual ~tst_QSvgRenderer();
+
+public slots:
+    void init();
+    void cleanup();
+
+private slots:
+    void construct();
+    void load();
+};
+
+tst_QSvgRenderer::tst_QSvgRenderer()
+{
+}
+
+tst_QSvgRenderer::~tst_QSvgRenderer()
+{
+}
+
+void tst_QSvgRenderer::init()
+{
+}
+
+void tst_QSvgRenderer::cleanup()
+{
+}
+
+void tst_QSvgRenderer::construct()
+{
+    QBENCHMARK {
+        QSvgRenderer renderer;
+    }
+}
+
+void tst_QSvgRenderer::load()
+{
+    QFile file(":/data/tiger.svg");
+    if (!file.open(QFile::ReadOnly))
+        QFAIL("Can not open tiger.svg");
+    QByteArray data = file.readAll();
+    QSvgRenderer renderer;
+
+    QBENCHMARK {
+        renderer.load(data);
+    }
+}
+
+QTEST_MAIN(tst_QSvgRenderer)
+#include "tst_qsvgrenderer.moc"
diff --git a/tests/benchmarks/svg/svg.pro b/tests/benchmarks/svg/svg.pro
new file mode 100644
index 0000000..cdc2ca5
--- /dev/null
+++ b/tests/benchmarks/svg/svg.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+SUBDIRS = \
+        qsvgrenderer
diff --git a/tests/tests.pro b/tests/tests.pro
index 7fbc8a9..75ca120 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -1,2 +1,3 @@
 TEMPLATE = subdirs
-SUBDIRS = auto
+SUBDIRS = auto \
+        benchmarks
-- 
cgit v0.12


From 379fedb59934fae63618f50ea327369c17a214db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?= <bjorn.nilsen@nokia.com>
Date: Mon, 8 Feb 2010 14:40:49 +0100
Subject: Delete benchmark examples (qtestlib-simple and qtwidgets).

These have no real value anymore now that we have plenty of other
benchmarks. They served as examples on how to use the QBENCHMARK macro.
---
 tests/benchmarks/qtestlib-simple/main.cpp          |  117 --
 .../benchmarks/qtestlib-simple/qtestlib-simple.pro |    8 -
 tests/benchmarks/qtwidgets/advanced.ui             |  319 ------
 tests/benchmarks/qtwidgets/icons/big.png           |  Bin 1323 -> 0 bytes
 tests/benchmarks/qtwidgets/icons/folder.png        |  Bin 4069 -> 0 bytes
 tests/benchmarks/qtwidgets/icons/icon.bmp          |  Bin 246 -> 0 bytes
 tests/benchmarks/qtwidgets/icons/icon.png          |  Bin 344 -> 0 bytes
 tests/benchmarks/qtwidgets/mainwindow.cpp          |  313 -----
 tests/benchmarks/qtwidgets/mainwindow.h            |   80 --
 tests/benchmarks/qtwidgets/qtstyles.qrc            |    8 -
 tests/benchmarks/qtwidgets/qtwidgets.pro           |    9 -
 tests/benchmarks/qtwidgets/standard.ui             | 1207 --------------------
 tests/benchmarks/qtwidgets/system.ui               |  658 -----------
 tests/benchmarks/qtwidgets/tst_qtwidgets.cpp       |   67 --
 14 files changed, 2786 deletions(-)
 delete mode 100644 tests/benchmarks/qtestlib-simple/main.cpp
 delete mode 100644 tests/benchmarks/qtestlib-simple/qtestlib-simple.pro
 delete mode 100644 tests/benchmarks/qtwidgets/advanced.ui
 delete mode 100644 tests/benchmarks/qtwidgets/icons/big.png
 delete mode 100644 tests/benchmarks/qtwidgets/icons/folder.png
 delete mode 100644 tests/benchmarks/qtwidgets/icons/icon.bmp
 delete mode 100644 tests/benchmarks/qtwidgets/icons/icon.png
 delete mode 100644 tests/benchmarks/qtwidgets/mainwindow.cpp
 delete mode 100644 tests/benchmarks/qtwidgets/mainwindow.h
 delete mode 100644 tests/benchmarks/qtwidgets/qtstyles.qrc
 delete mode 100644 tests/benchmarks/qtwidgets/qtwidgets.pro
 delete mode 100644 tests/benchmarks/qtwidgets/standard.ui
 delete mode 100644 tests/benchmarks/qtwidgets/system.ui
 delete mode 100644 tests/benchmarks/qtwidgets/tst_qtwidgets.cpp

diff --git a/tests/benchmarks/qtestlib-simple/main.cpp b/tests/benchmarks/qtestlib-simple/main.cpp
deleted file mode 100644
index a8dabe9..0000000
--- a/tests/benchmarks/qtestlib-simple/main.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#include <QtGui>
-#include <QString>
-
-#include <qtest.h>
-
-
-class tst_QHash : public QObject
-{
-    Q_OBJECT
-private slots:
-    void foo1_data();
-    void foo1();
-    void foo2_data();
-    void foo2();
-    void foo3();
-};
-
-void tst_QHash::foo1_data()
-{
-    QTest::addColumn<int>("x");
-    QTest::addColumn<int>("y");
-    QTest::newRow("tag1.1") << 16 << 17;
-    QTest::newRow("tag2.1") << 18 << 19;
-}
-
-void tst_QHash::foo1()
-{
-    QFETCH(int, x);
-    QFETCH(int, y);
-    Q_UNUSED(x);
-    Q_UNUSED(y);
-
-    QHash<int, int> testHash;
-
-    QBENCHMARK {
-        testHash.insertMulti(1, 1);
-    }
-}
-
-void tst_QHash::foo2_data()
-{
-    QTest::addColumn<int>("x");
-    QTest::addColumn<int>("y");
-    QTest::newRow("tag1.1") << 16 << 17;
-    QTest::newRow("tag2.1") << 18 << 19;
-}
-
-void tst_QHash::foo2()
-{
-    QFETCH(int, x);
-    QFETCH(int, y);
-    Q_UNUSED(x);
-    Q_UNUSED(y);
-
-    QHash<int, int> testHash;
-
-    QBENCHMARK {
-        testHash.insertMulti(1, 1);
-    }
-
-    QBENCHMARK {
-        testHash.insertMulti(1, 1);
-    }
-}
-
-void tst_QHash::foo3()
-{
-    QHash<int, int> testHash;
-
-    QBENCHMARK {
-        testHash.insertMulti(1, 1);
-    }
-}
-
-
-QTEST_MAIN(tst_QHash)
-#include "main.moc"
diff --git a/tests/benchmarks/qtestlib-simple/qtestlib-simple.pro b/tests/benchmarks/qtestlib-simple/qtestlib-simple.pro
deleted file mode 100644
index 7c49883..0000000
--- a/tests/benchmarks/qtestlib-simple/qtestlib-simple.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-load(qttest_p4)
-TEMPLATE = app
-TARGET = tst_qtestlib-simple
-DEPENDPATH += .
-INCLUDEPATH += .
-
-# Input
-SOURCES += main.cpp
diff --git a/tests/benchmarks/qtwidgets/advanced.ui b/tests/benchmarks/qtwidgets/advanced.ui
deleted file mode 100644
index ce27374..0000000
--- a/tests/benchmarks/qtwidgets/advanced.ui
+++ /dev/null
@@ -1,319 +0,0 @@
-<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
- <class>Advanced</class>
- <widget class="QWidget" name="Advanced" >
-  <property name="objectName" >
-   <string notr="true" >Advanced</string>
-  </property>
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <layout class="QVBoxLayout" >
-   <property name="objectName" >
-    <string notr="true" />
-   </property>
-   <property name="margin" >
-    <number>9</number>
-   </property>
-   <property name="spacing" >
-    <number>6</number>
-   </property>
-   <item>
-    <layout class="QHBoxLayout" >
-     <property name="objectName" >
-      <string notr="true" />
-     </property>
-     <property name="margin" >
-      <number>1</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item>
-      <widget class="QPushButton" name="pushButton" >
-       <property name="objectName" >
-        <string notr="true" >pushButton</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>1</x>
-         <y>1</y>
-         <width>80</width>
-         <height>23</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string/>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pushButton_2" >
-       <property name="objectName" >
-        <string notr="true" >pushButton_2</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>87</x>
-         <y>1</y>
-         <width>80</width>
-         <height>23</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string>Text</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox" >
-       <property name="objectName" >
-        <string notr="true" >checkBox</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>173</x>
-         <y>6</y>
-         <width>23</width>
-         <height>13</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string/>
-       </property>
-       <property name="icon" >
-        <iconset/>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="radioButton" >
-       <property name="objectName" >
-        <string notr="true" >radioButton</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>202</x>
-         <y>6</y>
-         <width>22</width>
-         <height>12</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string/>
-       </property>
-       <property name="icon" >
-        <iconset/>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox_2" >
-       <property name="objectName" >
-        <string notr="true" >checkBox_2</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>230</x>
-         <y>3</y>
-         <width>44</width>
-         <height>18</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string>Text</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="radioButton_2" >
-       <property name="objectName" >
-        <string notr="true" >radioButton_2</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>280</x>
-         <y>3</y>
-         <width>43</width>
-         <height>18</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string>Text</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QGridLayout" >
-     <property name="objectName" >
-      <string notr="true" />
-     </property>
-     <property name="margin" >
-      <number>1</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item row="0" column="0" >
-      <widget class="QListWidget" name="listWidget" >
-       <property name="objectName" >
-        <string notr="true" >listWidget</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>1</x>
-         <y>1</y>
-         <width>186</width>
-         <height>91</height>
-        </rect>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1" >
-      <widget class="QListWidget" name="listWidget_3" >
-       <property name="objectName" >
-        <string notr="true" >listWidget_3</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>193</x>
-         <y>96</y>
-         <width>188</width>
-         <height>60</height>
-        </rect>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0" >
-      <widget class="QTreeWidget" name="treeWidget_2" >
-       <property name="objectName" >
-        <string notr="true" >treeWidget_2</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>1</x>
-         <y>96</y>
-         <width>186</width>
-         <height>60</height>
-        </rect>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1" >
-      <layout class="QVBoxLayout" >
-       <property name="objectName" >
-        <string notr="true" />
-       </property>
-       <property name="margin" >
-        <number>1</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <widget class="QListWidget" name="listWidget_2" >
-         <property name="objectName" >
-          <string notr="true" >listWidget_2</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>1</x>
-           <y>1</y>
-           <width>186</width>
-           <height>43</height>
-          </rect>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QTreeWidget" name="treeWidget" >
-         <property name="objectName" >
-          <string notr="true" >treeWidget</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>1</x>
-           <y>48</y>
-           <width>186</width>
-           <height>43</height>
-          </rect>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QTabWidget" name="tabWidget" >
-     <property name="objectName" >
-      <string notr="true" >tabWidget</string>
-     </property>
-     <property name="geometry" >
-      <rect>
-       <x>9</x>
-       <y>201</y>
-       <width>382</width>
-       <height>90</height>
-      </rect>
-     </property>
-     <property name="minimumSize" >
-      <size>
-       <width>0</width>
-       <height>90</height>
-      </size>
-     </property>
-     <property name="tabPosition" >
-      <enum>QTabWidget::North</enum>
-     </property>
-     <property name="tabShape" >
-      <enum>QTabWidget::Rounded</enum>
-     </property>
-     <widget class="QWidget" name="widget" >
-      <property name="objectName" >
-       <string notr="true" >widget</string>
-      </property>
-      <property name="geometry" >
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>380</width>
-        <height>63</height>
-       </rect>
-      </property>
-      <attribute name="title" >
-       <string>Tab Page 1</string>
-      </attribute>
-     </widget>
-     <widget class="QWidget" name="widget" >
-      <property name="objectName" >
-       <string notr="true" >widget</string>
-      </property>
-      <property name="geometry" >
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>459</width>
-        <height>66</height>
-       </rect>
-      </property>
-      <attribute name="title" >
-       <string>Tab Page 2</string>
-      </attribute>
-     </widget>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <pixmapfunction></pixmapfunction>
- <connections/>
-</ui>
diff --git a/tests/benchmarks/qtwidgets/icons/big.png b/tests/benchmarks/qtwidgets/icons/big.png
deleted file mode 100644
index 6032804..0000000
Binary files a/tests/benchmarks/qtwidgets/icons/big.png and /dev/null differ
diff --git a/tests/benchmarks/qtwidgets/icons/folder.png b/tests/benchmarks/qtwidgets/icons/folder.png
deleted file mode 100644
index 981a25d..0000000
Binary files a/tests/benchmarks/qtwidgets/icons/folder.png and /dev/null differ
diff --git a/tests/benchmarks/qtwidgets/icons/icon.bmp b/tests/benchmarks/qtwidgets/icons/icon.bmp
deleted file mode 100644
index 196de6a..0000000
Binary files a/tests/benchmarks/qtwidgets/icons/icon.bmp and /dev/null differ
diff --git a/tests/benchmarks/qtwidgets/icons/icon.png b/tests/benchmarks/qtwidgets/icons/icon.png
deleted file mode 100644
index 8f9c562..0000000
Binary files a/tests/benchmarks/qtwidgets/icons/icon.png and /dev/null differ
diff --git a/tests/benchmarks/qtwidgets/mainwindow.cpp b/tests/benchmarks/qtwidgets/mainwindow.cpp
deleted file mode 100644
index bb19567..0000000
--- a/tests/benchmarks/qtwidgets/mainwindow.cpp
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "mainwindow.h"
-#include <QSplitter>
-#include <QHeaderView>
-
-StyleWidget::StyleWidget(QWidget *parent, Qt::WFlags f)
-    : QWidget(parent, f)
-{
-    QHBoxLayout *hbox = new QHBoxLayout(this);
-    QSplitter *spl = new QSplitter(this);
-
-    // standard widgets
-    QWidget *leftWidget = new QWidget(this);
-    m_staWidget.setupUi(leftWidget);
-
-    // advanced/system widgets
-    QGroupBox *rightWidget = new QGroupBox("Advanced", this);
-    QVBoxLayout *vbox = new QVBoxLayout(rightWidget);
-    QWidget *adv = new QWidget(rightWidget);
-    m_advWidget.setupUi(adv);
-    QWidget *sys = new QWidget(rightWidget);
-    m_sysWidget.setupUi(sys);
-    vbox->addWidget(adv);
-    vbox->addWidget(sys);
-
-    spl->addWidget(leftWidget);
-    spl->addWidget(rightWidget);
-
-    hbox->setMargin(4);
-    hbox->addWidget(spl);
-
-    m_small1 = QIcon(":/icons/icon.bmp");
-    m_small2 = QIcon(":/icons/icon.png");
-    m_big = QIcon(":/icons/big.png");
-
-    addComboBoxItems();
-    addTreeItems();
-    addTreeListItems();
-    addListItems();
-    addTextEdit();
-    setupOtherWidgets();
-    setupButtons();
-
-    foreach(QWidget *w, qFindChildren<QWidget *>(parentWidget()))
-        w->setWhatsThis(w->metaObject()->className());
-}
-
-StyleWidget::~StyleWidget()
-{
-
-}
-
-void StyleWidget::addTextEdit()
-{
-    m_staWidget.textEdit->setPlainText(
-        "Some Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text");
-    m_staWidget.textEdit_2->setPlainText(
-        "Some Text, Some Text, Some Text, Some Text, Some Text, Some Text, Some Text, Some Text");
-    m_staWidget.textEdit_3->setPlainText(
-        "Some Text, Some Text, Some Text, Some Text, Some Text, Some Text, Some Text, Some Text" \
-        "Some Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text\nSome Text\n");
-}
-
-void StyleWidget::addComboBoxItems()
-{
-    m_staWidget.comboBox->addItem("Item 1");
-    m_staWidget.comboBox->addItem("Item 2");
-    m_staWidget.comboBox->addItem("Item 3");
-    m_staWidget.comboBox->addItem("Item 4");
-    m_staWidget.comboBox->addItem("Item 5");
-}
-
-void StyleWidget::addListItems()
-{
-    m_staWidget.listWidget->addItem("Item 1");
-    m_staWidget.listWidget->addItem("Item 2");
-    m_staWidget.listWidget->addItem("Item 3");
-    m_staWidget.listWidget->addItem("Item 4");
-    m_staWidget.listWidget->addItem("Item 5");
-
-    QListWidgetItem *tmp = new QListWidgetItem("Item 1", m_staWidget.listWidget_2);
-    tmp->setCheckState(Qt::Checked);
-    tmp = new QListWidgetItem("Item 2", m_staWidget.listWidget_2);
-    tmp->setCheckState(Qt::Checked);
-    tmp = new QListWidgetItem("Item 3", m_staWidget.listWidget_2);
-    tmp->setCheckState(Qt::Checked);
-    tmp = new QListWidgetItem("Item 4", m_staWidget.listWidget_2);
-    tmp->setCheckState(Qt::Checked);
-    tmp = new QListWidgetItem("Item 5", m_staWidget.listWidget_2);
-    tmp->setCheckState(Qt::Checked);
-
-    tmp = new QListWidgetItem("Item 1", m_advWidget.listWidget_3);
-    tmp->setCheckState(Qt::Checked);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 2", m_advWidget.listWidget_3);
-    tmp->setCheckState(Qt::Checked);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 3", m_advWidget.listWidget_3);
-    tmp->setCheckState(Qt::Checked);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 4", m_advWidget.listWidget_3);
-    tmp->setCheckState(Qt::Checked);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 5", m_advWidget.listWidget_3);
-    tmp->setCheckState(Qt::Checked);
-    tmp->setIcon(m_small1);
-
-    m_advWidget.listWidget->setViewMode(QListView::IconMode);
-    QIcon folder(":/icons/folder.png");
-    tmp = new QListWidgetItem("Item 1", m_advWidget.listWidget);
-    tmp->setIcon(folder);
-    tmp = new QListWidgetItem("Item 2", m_advWidget.listWidget);
-    tmp->setIcon(folder);
-    tmp = new QListWidgetItem("Item 3", m_advWidget.listWidget);
-    tmp->setIcon(folder);
-    tmp = new QListWidgetItem("Item 4", m_advWidget.listWidget);
-    tmp->setIcon(folder);
-    tmp = new QListWidgetItem("Item 5", m_advWidget.listWidget);
-    tmp->setIcon(folder);
-
-    tmp = new QListWidgetItem("Item 1", m_advWidget.listWidget_2);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 2", m_advWidget.listWidget_2);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 3", m_advWidget.listWidget_2);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 4", m_advWidget.listWidget_2);
-    tmp->setIcon(m_small1);
-    tmp = new QListWidgetItem("Item 5", m_advWidget.listWidget_2);
-    tmp->setIcon(m_small1);
-}
-
-void StyleWidget::setupOtherWidgets()
-{
-    m_sysWidget.tableWidget->setRowCount(100);
-    m_sysWidget.tableWidget->setColumnCount(100);
-}
-
-void StyleWidget::addTreeItems()
-{
-    //standard tree
-    m_staWidget.treeWidget_2->setColumnCount(1);
-    m_staWidget.treeWidget_2->header()->hide();
-
-    QTreeWidgetItem *tmp;
-    QTreeWidgetItem *subtmp;
-    QTreeWidgetItem *root1 = new QTreeWidgetItem(m_staWidget.treeWidget_2);
-    root1->setText(0, "Root 1");
-    QTreeWidgetItem *root2 = new QTreeWidgetItem(m_staWidget.treeWidget_2);
-    root2->setText(0, "Root 2");
-
-    for (int i=1; i<=10; ++i)
-    {
-        tmp = new QTreeWidgetItem(root1);
-        tmp->setText(0, QString("Item %1").arg(i));
-        for (int j=1; j<=5; ++j)
-        {
-            subtmp = new QTreeWidgetItem(tmp);
-            subtmp->setText(0, QString("Sub Item %1").arg(j));
-        }
-    }
-
-    // standard checked tree
-    m_staWidget.treeWidget_4->setColumnCount(1);
-    m_staWidget.treeWidget_4->header()->hide();
-
-    root1 = new QTreeWidgetItem(m_staWidget.treeWidget_4);
-    root1->setText(0, "Root 1");
-    root1->setCheckState(0, Qt::Checked);
-    root2 = new QTreeWidgetItem(m_staWidget.treeWidget_4);
-    root2->setText(0, "Root 2");
-    root2->setCheckState(0, Qt::Checked);
-
-    for (int i=1; i<=10; ++i)
-    {
-        tmp = new QTreeWidgetItem(root1);
-        tmp->setText(0, QString("Item %1").arg(i));
-        tmp->setCheckState(0, Qt::Checked);
-        for (int j=1; j<=5; ++j)
-        {
-            subtmp = new QTreeWidgetItem(tmp);
-            subtmp->setText(0, QString("Sub Item %1").arg(j));
-            subtmp->setCheckState(0, Qt::Checked);
-        }
-    }
-
-    // advanced (images) tree
-    m_advWidget.treeWidget_2->setColumnCount(1);
-    m_advWidget.treeWidget_2->header()->hide();
-
-    root1 = new QTreeWidgetItem(m_advWidget.treeWidget_2);
-    root1->setText(0, "Root 1");
-    root1->setIcon(0, m_small1);
-    root2 = new QTreeWidgetItem(m_advWidget.treeWidget_2);
-    root2->setText(0, "Root 2");
-    root2->setIcon(0, m_small1);
-
-    for (int i=1; i<=10; ++i)
-    {
-        tmp = new QTreeWidgetItem(root1);
-        tmp->setText(0, QString("Item %1").arg(i));
-        tmp->setIcon(0, m_small2);
-        for (int j=1; j<=5; ++j)
-        {
-            subtmp = new QTreeWidgetItem(tmp);
-            subtmp->setText(0, QString("Sub Item %1").arg(j));
-            tmp->setIcon(0, m_small1);
-        }
-    }
-
-}
-
-void StyleWidget::addTreeListItems()
-{
-    //standard list
-    QTreeWidgetItem *tmp;
-    m_staWidget.treeWidget->setColumnCount(3);
-    m_staWidget.treeWidget->headerItem()->setText(0, "Col1");
-    m_staWidget.treeWidget->headerItem()->setText(1, "Col2");
-    m_staWidget.treeWidget->headerItem()->setText(2, "Col3");
-
-    for (int i=1; i<10; ++i)
-    {
-        tmp = new QTreeWidgetItem(m_staWidget.treeWidget);
-        tmp->setText(0, QString("Item%1").arg(i));
-        tmp->setText(1, QString("Item%11").arg(i));
-        tmp->setText(2, QString("Item%12").arg(i));
-    }
-
-    //standard checked list
-    m_staWidget.treeWidget_3->setColumnCount(3);
-    m_staWidget.treeWidget_3->headerItem()->setText(0, "Col1");
-    m_staWidget.treeWidget_3->headerItem()->setText(1, "Col2");
-    m_staWidget.treeWidget_3->headerItem()->setText(2, "Col3");
-
-    for (int i=1; i<10; ++i)
-    {
-        tmp = new QTreeWidgetItem(m_staWidget.treeWidget_3);
-        tmp->setText(0, QString("Item%1").arg(i));
-        tmp->setCheckState(0, Qt::Checked);
-        tmp->setText(1, QString("Item%11").arg(i));
-        tmp->setText(2, QString("Item%12").arg(i));
-    }
-
-    //with images
-    m_advWidget.treeWidget->setColumnCount(2);
-    m_advWidget.treeWidget->headerItem()->setText(0, "Col1");
-    m_advWidget.treeWidget->headerItem()->setIcon(0, m_small2);
-    m_advWidget.treeWidget->headerItem()->setText(1, "Col2");
-    m_advWidget.treeWidget->headerItem()->setIcon(1, m_small2);
-
-    for (int i=1; i<10; ++i)
-    {
-        tmp = new QTreeWidgetItem(m_advWidget.treeWidget);
-        tmp->setText(0, QString("Item%1").arg(i));
-        tmp->setIcon(0, m_small1);
-        tmp->setText(1, QString("Item%11").arg(i));
-    }
-}
-
-void StyleWidget::setupButtons()
-{
-    m_advWidget.pushButton->setIcon(m_small1);
-    m_advWidget.pushButton_2->setIcon(m_small1);
-    m_advWidget.checkBox->setIcon(m_small2);
-    m_advWidget.checkBox_2->setIcon(m_small2);
-    m_advWidget.radioButton->setIcon(m_small2);
-    m_advWidget.radioButton_2->setIcon(m_small2);
-
-    // tab page images
-    m_advWidget.tabWidget->setTabIcon(0, m_small2);
-    m_advWidget.tabWidget->setTabIcon(1, m_small2);
-}
diff --git a/tests/benchmarks/qtwidgets/mainwindow.h b/tests/benchmarks/qtwidgets/mainwindow.h
deleted file mode 100644
index 8a4521a..0000000
--- a/tests/benchmarks/qtwidgets/mainwindow.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-#ifndef MAINWINDOW_H
-#define MAINWINDOW_H
-
-#include <QWidget>
-#include <QWhatsThis>
-#include "ui_standard.h"
-#include "ui_advanced.h"
-#include "ui_system.h"
-
-class StyleWidget : public QWidget
-{
-    Q_OBJECT
-
-public:
-    StyleWidget(QWidget *parent = 0, Qt::WFlags f = 0);
-    ~StyleWidget();
-
-public slots:
-    void onWhatsThis() { QWhatsThis::enterWhatsThisMode(); }
-
-private:
-    void addComboBoxItems();
-    void addListItems();
-    void addTextEdit();
-    void setupOtherWidgets();
-    void setupButtons();
-    void addTreeItems();
-    void addTreeListItems();
-
-    Ui::Standard m_staWidget;
-    Ui::Advanced m_advWidget;
-    Ui::System m_sysWidget;
-
-    QIcon m_small1;
-    QIcon m_small2;
-    QIcon m_big;
-};
-
-#endif //MAINWINDOW_H
-
diff --git a/tests/benchmarks/qtwidgets/qtstyles.qrc b/tests/benchmarks/qtwidgets/qtstyles.qrc
deleted file mode 100644
index 772891d..0000000
--- a/tests/benchmarks/qtwidgets/qtstyles.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource prefix="/">
-    <file name="icon.png">./icons/icon.png</file>
-    <file name="icon.bmp">./icons/icon.bmp</file>
-    <file name="big.png">./icons/big.png</file>
-    <file name="folder.png">./icons/folder.png</file>
-</qresource>
-</RCC>
diff --git a/tests/benchmarks/qtwidgets/qtwidgets.pro b/tests/benchmarks/qtwidgets/qtwidgets.pro
deleted file mode 100644
index ad5e7ac..0000000
--- a/tests/benchmarks/qtwidgets/qtwidgets.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-load(qttest_p4)
-
-SOURCES += tst_qtwidgets.cpp mainwindow.cpp
-HEADERS += mainwindow.h
-QT += network
-RESOURCES = qtstyles.qrc
-FORMS += advanced.ui system.ui standard.ui
-
-
diff --git a/tests/benchmarks/qtwidgets/standard.ui b/tests/benchmarks/qtwidgets/standard.ui
deleted file mode 100644
index 9764a66..0000000
--- a/tests/benchmarks/qtwidgets/standard.ui
+++ /dev/null
@@ -1,1207 +0,0 @@
-<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
- <class>Standard</class>
- <widget class="QWidget" name="Standard" >
-  <property name="objectName" >
-   <string notr="true" >Standard</string>
-  </property>
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>300</height>
-   </rect>
-  </property>
-  <layout class="QHBoxLayout" >
-   <property name="objectName" >
-    <string notr="true" />
-   </property>
-   <property name="margin" >
-    <number>0</number>
-   </property>
-   <property name="spacing" >
-    <number>0</number>
-   </property>
-   <item>
-    <widget class="QGroupBox" name="groupBox" >
-     <property name="objectName" >
-      <string notr="true" >groupBox</string>
-     </property>
-     <property name="geometry" >
-      <rect>
-       <x>0</x>
-       <y>0</y>
-       <width>400</width>
-       <height>300</height>
-      </rect>
-     </property>
-     <property name="title" >
-      <string>Standard</string>
-     </property>
-     <layout class="QVBoxLayout" >
-      <property name="objectName" >
-       <string notr="true" />
-      </property>
-      <property name="margin" >
-       <number>9</number>
-      </property>
-      <property name="spacing" >
-       <number>6</number>
-      </property>
-      <item>
-       <layout class="QHBoxLayout" >
-        <property name="objectName" >
-         <string notr="true" />
-        </property>
-        <property name="margin" >
-         <number>1</number>
-        </property>
-        <property name="spacing" >
-         <number>6</number>
-        </property>
-        <item>
-         <layout class="QVBoxLayout" >
-          <property name="objectName" >
-           <string notr="true" />
-          </property>
-          <property name="margin" >
-           <number>1</number>
-          </property>
-          <property name="spacing" >
-           <number>6</number>
-          </property>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QCheckBox" name="checkBox" >
-              <property name="objectName" >
-               <string notr="true" >checkBox</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>114</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Enabled &amp;CheckBox</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QCheckBox" name="checkBox_2" >
-              <property name="objectName" >
-               <string notr="true" >checkBox_2</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>121</x>
-                <y>1</y>
-                <width>116</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Disabled Check&amp;Box</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <spacer>
-              <property name="objectName" >
-               <string notr="true" />
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>243</x>
-                <y>1</y>
-                <width>80</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" >
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QComboBox" name="comboBox" >
-              <property name="objectName" >
-               <string notr="true" >comboBox</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>41</width>
-                <height>3</height>
-               </rect>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QComboBox" name="comboBox_2" >
-              <property name="objectName" >
-               <string notr="true" >comboBox_2</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>48</x>
-                <y>1</y>
-                <width>41</width>
-                <height>3</height>
-               </rect>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QComboBox" name="comboBox_3" >
-              <property name="objectName" >
-               <string notr="true" >comboBox_3</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>95</x>
-                <y>1</y>
-                <width>41</width>
-                <height>3</height>
-               </rect>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QPushButton" name="pushButton" >
-              <property name="objectName" >
-               <string notr="true" >pushButton</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>80</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>&amp;Enabled</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QPushButton" name="pushButton_2" >
-              <property name="objectName" >
-               <string notr="true" >pushButton_2</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>87</x>
-                <y>1</y>
-                <width>80</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Di&amp;sabled</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <spacer>
-              <property name="objectName" >
-               <string notr="true" />
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>173</x>
-                <y>1</y>
-                <width>150</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" >
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QLabel" name="label" >
-              <property name="objectName" >
-               <string notr="true" >label</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>99</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="frameShape" >
-               <enum>QFrame::NoFrame</enum>
-              </property>
-              <property name="frameShadow" >
-               <enum>QFrame::Plain</enum>
-              </property>
-              <property name="text" >
-               <string>Label with some text.</string>
-              </property>
-              <property name="textFormat" >
-               <enum>Qt::AutoText</enum>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QLabel" name="label_2" >
-              <property name="objectName" >
-               <string notr="true" >label_2</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>106</x>
-                <y>1</y>
-                <width>139</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="frameShape" >
-               <enum>QFrame::NoFrame</enum>
-              </property>
-              <property name="frameShadow" >
-               <enum>QFrame::Plain</enum>
-              </property>
-              <property name="text" >
-               <string>Disabled label with some text.</string>
-              </property>
-              <property name="textFormat" >
-               <enum>Qt::AutoText</enum>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <spacer>
-              <property name="objectName" >
-               <string notr="true" />
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>251</x>
-                <y>1</y>
-                <width>72</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" >
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QLineEdit" name="lineEdit" >
-              <property name="objectName" >
-               <string notr="true" >lineEdit</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>135</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Enabled</string>
-              </property>
-              <property name="echoMode" >
-               <enum>QLineEdit::Normal</enum>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QLineEdit" name="lineEdit_2" >
-              <property name="objectName" >
-               <string notr="true" >lineEdit_2</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>142</x>
-                <y>1</y>
-                <width>134</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Disabled</string>
-              </property>
-              <property name="echoMode" >
-               <enum>QLineEdit::Normal</enum>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QSpinBox" name="spinBox" >
-              <property name="objectName" >
-               <string notr="true" >spinBox</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>282</x>
-                <y>1</y>
-                <width>41</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="buttonSymbols" >
-               <enum>QAbstractSpinBox::UpDownArrows</enum>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QRadioButton" name="radioButton" >
-              <property name="objectName" >
-               <string notr="true" >radioButton</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>123</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Enabled RadioButton</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QRadioButton" name="radioButton_2" >
-              <property name="objectName" >
-               <string notr="true" >radioButton_2</string>
-              </property>
-              <property name="enabled" >
-               <bool>false</bool>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>130</x>
-                <y>1</y>
-                <width>125</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="text" >
-               <string>Disabled RadioButton</string>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <spacer>
-              <property name="objectName" >
-               <string notr="true" />
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>261</x>
-                <y>1</y>
-                <width>62</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" >
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" >
-            <property name="objectName" >
-             <string notr="true" />
-            </property>
-            <property name="margin" >
-             <number>1</number>
-            </property>
-            <property name="spacing" >
-             <number>6</number>
-            </property>
-            <item>
-             <widget class="QScrollBar" name="horizontalScrollBar" >
-              <property name="objectName" >
-               <string notr="true" >horizontalScrollBar</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>1</x>
-                <y>1</y>
-                <width>90</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="sizePolicy" >
-               <sizepolicy>
-                <hsizetype>0</hsizetype>
-                <vsizetype>0</vsizetype>
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-              <property name="minimumSize" >
-               <size>
-                <width>90</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QScrollBar" name="horizontalScrollBar_2" >
-              <property name="objectName" >
-               <string notr="true" >horizontalScrollBar_2</string>
-              </property>
-              <property name="geometry" >
-               <rect>
-                <x>97</x>
-                <y>1</y>
-                <width>30</width>
-                <height>3</height>
-               </rect>
-              </property>
-              <property name="orientation" >
-               <enum>Qt::Horizontal</enum>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-         </layout>
-        </item>
-        <item>
-         <widget class="QScrollBar" name="verticalScrollBar" >
-          <property name="objectName" >
-           <string notr="true" >verticalScrollBar</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>333</x>
-            <y>1</y>
-            <width>17</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="sizePolicy" >
-           <sizepolicy>
-            <hsizetype>0</hsizetype>
-            <vsizetype>1</vsizetype>
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Vertical</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="slider" >
-          <property name="objectName" >
-           <string notr="true" >slider</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>356</x>
-            <y>1</y>
-            <width>21</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="sizePolicy" >
-           <sizepolicy>
-            <hsizetype>0</hsizetype>
-            <vsizetype>1</vsizetype>
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Vertical</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::TicksBelow</enum>
-          </property>
-          <property name="tickInterval" >
-           <number>0</number>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" >
-        <property name="objectName" >
-         <string notr="true" />
-        </property>
-        <property name="margin" >
-         <number>1</number>
-        </property>
-        <property name="spacing" >
-         <number>6</number>
-        </property>
-        <item>
-         <widget class="QSlider" name="slider_2" >
-          <property name="objectName" >
-           <string notr="true" >slider_2</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>1</x>
-            <y>6</y>
-            <width>90</width>
-            <height>16</height>
-           </rect>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::NoTicks</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="slider_3" >
-          <property name="objectName" >
-           <string notr="true" >slider_3</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>97</x>
-            <y>3</y>
-            <width>89</width>
-            <height>21</height>
-           </rect>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::TicksBelow</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="slider_4" >
-          <property name="objectName" >
-           <string notr="true" >slider_4</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>192</x>
-            <y>3</y>
-            <width>90</width>
-            <height>21</height>
-           </rect>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::TicksAbove</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QSlider" name="slider_5" >
-          <property name="objectName" >
-           <string notr="true" >slider_5</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>288</x>
-            <y>1</y>
-            <width>89</width>
-            <height>26</height>
-           </rect>
-          </property>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="tickPosition" >
-           <enum>QSlider::TicksBothSides</enum>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" >
-        <property name="objectName" >
-         <string notr="true" />
-        </property>
-        <property name="margin" >
-         <number>1</number>
-        </property>
-        <property name="spacing" >
-         <number>6</number>
-        </property>
-        <item>
-         <widget class="QTextEdit" name="textEdit" >
-          <property name="objectName" >
-           <string notr="true" >textEdit</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>1</x>
-            <y>1</y>
-            <width>89</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="frameShape" >
-           <enum>QFrame::StyledPanel</enum>
-          </property>
-          <property name="frameShadow" >
-           <enum>QFrame::Sunken</enum>
-          </property>
-          <property name="verticalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOn</enum>
-          </property>
-          <property name="horizontalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOff</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QTextEdit" name="textEdit_2" >
-          <property name="objectName" >
-           <string notr="true" >textEdit_2</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>96</x>
-            <y>1</y>
-            <width>90</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="frameShape" >
-           <enum>QFrame::StyledPanel</enum>
-          </property>
-          <property name="frameShadow" >
-           <enum>QFrame::Sunken</enum>
-          </property>
-          <property name="verticalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOff</enum>
-          </property>
-          <property name="horizontalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOn</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QTextEdit" name="textEdit_3" >
-          <property name="objectName" >
-           <string notr="true" >textEdit_3</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>192</x>
-            <y>1</y>
-            <width>89</width>
-            <height>100</height>
-           </rect>
-          </property>
-          <property name="minimumSize" >
-           <size>
-            <width>0</width>
-            <height>100</height>
-           </size>
-          </property>
-          <property name="frameShape" >
-           <enum>QFrame::StyledPanel</enum>
-          </property>
-          <property name="frameShadow" >
-           <enum>QFrame::Sunken</enum>
-          </property>
-          <property name="verticalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOn</enum>
-          </property>
-          <property name="horizontalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAlwaysOn</enum>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QTextEdit" name="textEdit_4" >
-          <property name="objectName" >
-           <string notr="true" >textEdit_4</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>287</x>
-            <y>1</y>
-            <width>90</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="frameShape" >
-           <enum>QFrame::StyledPanel</enum>
-          </property>
-          <property name="frameShadow" >
-           <enum>QFrame::Sunken</enum>
-          </property>
-          <property name="verticalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAsNeeded</enum>
-          </property>
-          <property name="horizontalScrollBarPolicy" >
-           <enum>Qt::ScrollBarAsNeeded</enum>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <widget class="QGroupBox" name="groupBox_2" >
-        <property name="objectName" >
-         <string notr="true" >groupBox_2</string>
-        </property>
-        <property name="geometry" >
-         <rect>
-          <x>11</x>
-          <y>132</y>
-          <width>378</width>
-          <height>39</height>
-         </rect>
-        </property>
-        <property name="title" >
-         <string>GroupBox</string>
-        </property>
-        <layout class="QVBoxLayout" >
-         <property name="objectName" >
-          <string notr="true" />
-         </property>
-         <property name="margin" >
-          <number>9</number>
-         </property>
-         <property name="spacing" >
-          <number>6</number>
-         </property>
-         <item>
-          <widget class="QProgressBar" name="progressBar" >
-           <property name="objectName" >
-            <string notr="true" >progressBar</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>11</x>
-             <y>20</y>
-             <width>356</width>
-             <height>8</height>
-            </rect>
-           </property>
-           <property name="value" >
-            <number>50</number>
-           </property>
-           <property name="textVisible" >
-            <bool>false</bool>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </widget>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" >
-        <property name="objectName" >
-         <string notr="true" />
-        </property>
-        <property name="margin" >
-         <number>1</number>
-        </property>
-        <property name="spacing" >
-         <number>6</number>
-        </property>
-        <item>
-         <widget class="QListWidget" name="listWidget" >
-          <property name="objectName" >
-           <string notr="true" >listWidget</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>1</x>
-            <y>1</y>
-            <width>107</width>
-            <height>37</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QListWidget" name="listWidget_2" >
-          <property name="objectName" >
-           <string notr="true" >listWidget_2</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>114</x>
-            <y>1</y>
-            <width>107</width>
-            <height>37</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QTabWidget" name="tabWidget" >
-          <property name="objectName" >
-           <string notr="true" >tabWidget</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>227</x>
-            <y>1</y>
-            <width>150</width>
-            <height>37</height>
-           </rect>
-          </property>
-          <property name="minimumSize" >
-           <size>
-            <width>150</width>
-            <height>0</height>
-           </size>
-          </property>
-          <property name="tabPosition" >
-           <enum>QTabWidget::North</enum>
-          </property>
-          <property name="tabShape" >
-           <enum>QTabWidget::Rounded</enum>
-          </property>
-          <widget class="QWidget" name="" >
-           <property name="objectName" >
-            <string notr="true" />
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>0</x>
-             <y>0</y>
-             <width>148</width>
-             <height>10</height>
-            </rect>
-           </property>
-           <attribute name="title" >
-            <string>Tab Page 1</string>
-           </attribute>
-          </widget>
-          <widget class="QWidget" name="" >
-           <property name="objectName" >
-            <string notr="true" />
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>0</x>
-             <y>0</y>
-             <width>116</width>
-             <height>56</height>
-            </rect>
-           </property>
-           <attribute name="title" >
-            <string>Tab Page 2</string>
-           </attribute>
-          </widget>
-          <widget class="QWidget" name="widget" >
-           <property name="objectName" >
-            <string notr="true" >widget</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>0</x>
-             <y>0</y>
-             <width>116</width>
-             <height>56</height>
-            </rect>
-           </property>
-           <attribute name="title" >
-            <string>Tab Page 3</string>
-           </attribute>
-          </widget>
-          <widget class="QWidget" name="widget" >
-           <property name="objectName" >
-            <string notr="true" >widget</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>0</x>
-             <y>0</y>
-             <width>146</width>
-             <height>36</height>
-            </rect>
-           </property>
-           <attribute name="title" >
-            <string>Tab Page 4</string>
-           </attribute>
-          </widget>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <widget class="QTabWidget" name="tabWidget_2" >
-        <property name="objectName" >
-         <string notr="true" >tabWidget_2</string>
-        </property>
-        <property name="geometry" >
-         <rect>
-          <x>11</x>
-          <y>214</y>
-          <width>378</width>
-          <height>90</height>
-         </rect>
-        </property>
-        <property name="minimumSize" >
-         <size>
-          <width>0</width>
-          <height>90</height>
-         </size>
-        </property>
-        <property name="tabPosition" >
-         <enum>QTabWidget::North</enum>
-        </property>
-        <property name="tabShape" >
-         <enum>QTabWidget::Rounded</enum>
-        </property>
-        <widget class="QWidget" name="widget" >
-         <property name="objectName" >
-          <string notr="true" >widget</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>0</x>
-           <y>0</y>
-           <width>376</width>
-           <height>63</height>
-          </rect>
-         </property>
-         <attribute name="title" >
-          <string>Tab Page 1</string>
-         </attribute>
-        </widget>
-        <widget class="QWidget" name="widget" >
-         <property name="objectName" >
-          <string notr="true" >widget</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>0</x>
-           <y>0</y>
-           <width>424</width>
-           <height>66</height>
-          </rect>
-         </property>
-         <attribute name="title" >
-          <string>Tab Page 2</string>
-         </attribute>
-        </widget>
-       </widget>
-      </item>
-      <item>
-       <layout class="QGridLayout" >
-        <property name="objectName" >
-         <string notr="true" />
-        </property>
-        <property name="margin" >
-         <number>1</number>
-        </property>
-        <property name="spacing" >
-         <number>6</number>
-        </property>
-        <item row="0" column="1" >
-         <widget class="QTreeWidget" name="treeWidget_2" >
-          <property name="objectName" >
-           <string notr="true" >treeWidget_2</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>192</x>
-            <y>1</y>
-            <width>185</width>
-            <height>18</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0" >
-         <widget class="QTreeWidget" name="treeWidget_3" >
-          <property name="objectName" >
-           <string notr="true" >treeWidget_3</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>1</x>
-            <y>20</y>
-            <width>185</width>
-            <height>18</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="0" >
-         <widget class="QTreeWidget" name="treeWidget" >
-          <property name="objectName" >
-           <string notr="true" >treeWidget</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>1</x>
-            <y>1</y>
-            <width>185</width>
-            <height>18</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1" >
-         <widget class="QTreeWidget" name="treeWidget_4" >
-          <property name="objectName" >
-           <string notr="true" >treeWidget_4</string>
-          </property>
-          <property name="geometry" >
-           <rect>
-            <x>192</x>
-            <y>20</y>
-            <width>185</width>
-            <height>18</height>
-           </rect>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <pixmapfunction></pixmapfunction>
- <connections/>
-</ui>
diff --git a/tests/benchmarks/qtwidgets/system.ui b/tests/benchmarks/qtwidgets/system.ui
deleted file mode 100644
index a641e0e..0000000
--- a/tests/benchmarks/qtwidgets/system.ui
+++ /dev/null
@@ -1,658 +0,0 @@
-<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
- <class>System</class>
- <widget class="QWidget" name="System" >
-  <property name="objectName" >
-   <string notr="true" >System</string>
-  </property>
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>400</width>
-    <height>604</height>
-   </rect>
-  </property>
-  <layout class="QVBoxLayout" >
-   <property name="objectName" >
-    <string notr="true" />
-   </property>
-   <property name="margin" >
-    <number>9</number>
-   </property>
-   <property name="spacing" >
-    <number>6</number>
-   </property>
-   <item>
-    <layout class="QGridLayout" >
-     <property name="objectName" >
-      <string notr="true" />
-     </property>
-     <property name="margin" >
-      <number>1</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item row="1" column="1" >
-      <widget class="QToolButton" name="toolButton" >
-       <property name="objectName" >
-        <string notr="true" >toolButton</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>340</x>
-         <y>138</y>
-         <width>15</width>
-         <height>19</height>
-        </rect>
-       </property>
-       <property name="text" >
-        <string>...</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0" >
-      <widget class="QFrame" name="horizontalLine" >
-       <property name="objectName" >
-        <string notr="true" >horizontalLine</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>1</x>
-         <y>146</y>
-         <width>333</width>
-         <height>3</height>
-        </rect>
-       </property>
-       <property name="frameShape" >
-        <enum>QFrame::HLine</enum>
-       </property>
-       <property name="frameShadow" >
-        <enum>QFrame::Sunken</enum>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="2" >
-      <widget class="QFrame" name="verticalLine" >
-       <property name="objectName" >
-        <string notr="true" >verticalLine</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>361</x>
-         <y>1</y>
-         <width>3</width>
-         <height>131</height>
-        </rect>
-       </property>
-       <property name="frameShape" >
-        <enum>QFrame::VLine</enum>
-       </property>
-       <property name="frameShadow" >
-        <enum>QFrame::Sunken</enum>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="0" colspan="2" >
-      <layout class="QGridLayout" >
-       <property name="objectName" >
-        <string notr="true" />
-       </property>
-       <property name="margin" >
-        <number>1</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item row="1" column="0" >
-        <widget class="QDateTimeEdit" name="dateTimeEdit_2" >
-         <property name="objectName" >
-          <string notr="true" >dateTimeEdit_2</string>
-         </property>
-         <property name="enabled" >
-          <bool>false</bool>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>1</x>
-           <y>108</y>
-           <width>113</width>
-           <height>20</height>
-          </rect>
-         </property>
-         <property name="buttonSymbols" >
-          <enum>QAbstractSpinBox::UpDownArrows</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="0" >
-        <widget class="QDateTimeEdit" name="dateTimeEdit" >
-         <property name="objectName" >
-          <string notr="true" >dateTimeEdit</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>1</x>
-           <y>41</y>
-           <width>113</width>
-           <height>20</height>
-          </rect>
-         </property>
-         <property name="buttonSymbols" >
-          <enum>QAbstractSpinBox::UpDownArrows</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="1" >
-        <widget class="QDial" name="dial" >
-         <property name="objectName" >
-          <string notr="true" >dial</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>120</x>
-           <y>1</y>
-           <width>114</width>
-           <height>100</height>
-          </rect>
-         </property>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="1" >
-        <widget class="QLCDNumber" name="lcdNumber" >
-         <property name="objectName" >
-          <string notr="true" >lcdNumber</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>120</x>
-           <y>107</y>
-           <width>114</width>
-           <height>23</height>
-          </rect>
-         </property>
-         <property name="frameShape" >
-          <enum>QFrame::Box</enum>
-         </property>
-         <property name="frameShadow" >
-          <enum>QFrame::Raised</enum>
-         </property>
-         <property name="mode" >
-          <enum>QLCDNumber::Dec</enum>
-         </property>
-         <property name="segmentStyle" >
-          <enum>QLCDNumber::Outline</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="2" >
-        <widget class="QLCDNumber" name="lcdNumber_2" >
-         <property name="objectName" >
-          <string notr="true" >lcdNumber_2</string>
-         </property>
-         <property name="enabled" >
-          <bool>false</bool>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>240</x>
-           <y>107</y>
-           <width>113</width>
-           <height>23</height>
-          </rect>
-         </property>
-         <property name="frameShape" >
-          <enum>QFrame::Box</enum>
-         </property>
-         <property name="frameShadow" >
-          <enum>QFrame::Raised</enum>
-         </property>
-         <property name="mode" >
-          <enum>QLCDNumber::Dec</enum>
-         </property>
-         <property name="segmentStyle" >
-          <enum>QLCDNumber::Outline</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="0" column="2" >
-        <widget class="QDial" name="dial_2" >
-         <property name="objectName" >
-          <string notr="true" >dial_2</string>
-         </property>
-         <property name="enabled" >
-          <bool>false</bool>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>240</x>
-           <y>1</y>
-           <width>113</width>
-           <height>100</height>
-          </rect>
-         </property>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" >
-     <property name="objectName" >
-      <string notr="true" />
-     </property>
-     <property name="margin" >
-      <number>1</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item>
-      <widget class="QTableWidget" name="tableWidget" >
-       <property name="objectName" >
-        <string notr="true" >tableWidget</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>1</x>
-         <y>1</y>
-         <width>256</width>
-         <height>193</height>
-        </rect>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolBox" name="toolBox" >
-       <property name="objectName" >
-        <string notr="true" >toolBox</string>
-       </property>
-       <property name="geometry" >
-        <rect>
-         <x>263</x>
-         <y>1</y>
-         <width>118</width>
-         <height>193</height>
-        </rect>
-       </property>
-       <property name="frameShape" >
-        <enum>QFrame::Box</enum>
-       </property>
-       <property name="frameShadow" >
-        <enum>QFrame::Plain</enum>
-       </property>
-       <property name="currentIndex" >
-        <number>0</number>
-       </property>
-       <widget class="QWidget" name="widget" >
-        <property name="objectName" >
-         <string notr="true" >widget</string>
-        </property>
-        <property name="geometry" >
-         <rect>
-          <x>0</x>
-          <y>0</y>
-          <width>98</width>
-          <height>119</height>
-         </rect>
-        </property>
-        <attribute name="label" >
-         <string>Tool Page 1</string>
-        </attribute>
-       </widget>
-       <widget class="QWidget" name="widget" >
-        <property name="objectName" >
-         <string notr="true" >widget</string>
-        </property>
-        <property name="geometry" >
-         <rect>
-          <x>0</x>
-          <y>0</y>
-          <width>115</width>
-          <height>56</height>
-         </rect>
-        </property>
-        <attribute name="label" >
-         <string>Tool Page 2</string>
-        </attribute>
-       </widget>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QTabWidget" name="tabWidget" >
-     <property name="objectName" >
-      <string notr="true" >tabWidget</string>
-     </property>
-     <property name="geometry" >
-      <rect>
-       <x>9</x>
-       <y>375</y>
-       <width>382</width>
-       <height>220</height>
-      </rect>
-     </property>
-     <property name="tabShape" >
-      <enum>QTabWidget::Rounded</enum>
-     </property>
-     <widget class="QWidget" name="widget" >
-      <property name="objectName" >
-       <string notr="true" >widget</string>
-      </property>
-      <property name="geometry" >
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>378</width>
-        <height>196</height>
-       </rect>
-      </property>
-      <attribute name="title" >
-       <string>Tab Page 1</string>
-      </attribute>
-      <layout class="QGridLayout" >
-       <property name="objectName" >
-        <string notr="true" />
-       </property>
-       <property name="margin" >
-        <number>9</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item row="0" column="0" >
-        <layout class="QVBoxLayout" >
-         <property name="objectName" >
-          <string notr="true" />
-         </property>
-         <property name="margin" >
-          <number>1</number>
-         </property>
-         <property name="spacing" >
-          <number>6</number>
-         </property>
-         <item>
-          <widget class="QComboBox" name="comboBox_3" >
-           <property name="objectName" >
-            <string notr="true" >comboBox_3</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>1</x>
-             <y>1</y>
-             <width>332</width>
-             <height>20</height>
-            </rect>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" >
-           <property name="objectName" >
-            <string notr="true" />
-           </property>
-           <property name="margin" >
-            <number>1</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QPushButton" name="pushButton_5" >
-             <property name="objectName" >
-              <string notr="true" >pushButton_5</string>
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>1</x>
-               <y>1</y>
-               <width>80</width>
-               <height>23</height>
-              </rect>
-             </property>
-             <property name="text" >
-              <string>&amp;Enabled</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QPushButton" name="pushButton_6" >
-             <property name="objectName" >
-              <string notr="true" >pushButton_6</string>
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>87</x>
-               <y>1</y>
-               <width>80</width>
-               <height>23</height>
-              </rect>
-             </property>
-             <property name="text" >
-              <string>Di&amp;sabled</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer>
-             <property name="objectName" >
-              <string notr="true" />
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>173</x>
-               <y>1</y>
-               <width>158</width>
-               <height>23</height>
-              </rect>
-             </property>
-             <property name="orientation" >
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" >
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <layout class="QHBoxLayout" >
-           <property name="objectName" >
-            <string notr="true" />
-           </property>
-           <property name="margin" >
-            <number>1</number>
-           </property>
-           <property name="spacing" >
-            <number>6</number>
-           </property>
-           <item>
-            <widget class="QRadioButton" name="radioButton_3" >
-             <property name="objectName" >
-              <string notr="true" >radioButton_3</string>
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>1</x>
-               <y>2</y>
-               <width>123</width>
-               <height>18</height>
-              </rect>
-             </property>
-             <property name="text" >
-              <string>Enabled RadioButton</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <widget class="QRadioButton" name="radioButton_4" >
-             <property name="objectName" >
-              <string notr="true" >radioButton_4</string>
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>130</x>
-               <y>2</y>
-               <width>125</width>
-               <height>18</height>
-              </rect>
-             </property>
-             <property name="text" >
-              <string>Disabled RadioButton</string>
-             </property>
-            </widget>
-           </item>
-           <item>
-            <spacer>
-             <property name="objectName" >
-              <string notr="true" />
-             </property>
-             <property name="geometry" >
-              <rect>
-               <x>261</x>
-               <y>1</y>
-               <width>70</width>
-               <height>20</height>
-              </rect>
-             </property>
-             <property name="orientation" >
-              <enum>Qt::Horizontal</enum>
-             </property>
-             <property name="sizeHint" >
-              <size>
-               <width>40</width>
-               <height>20</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
-         </item>
-         <item>
-          <widget class="QProgressBar" name="progressBar" >
-           <property name="objectName" >
-            <string notr="true" >progressBar</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>1</x>
-             <y>86</y>
-             <width>332</width>
-             <height>22</height>
-            </rect>
-           </property>
-           <property name="value" >
-            <number>24</number>
-           </property>
-          </widget>
-         </item>
-         <item>
-          <widget class="QScrollBar" name="horizontalScrollBar" >
-           <property name="objectName" >
-            <string notr="true" >horizontalScrollBar</string>
-           </property>
-           <property name="geometry" >
-            <rect>
-             <x>1</x>
-             <y>114</y>
-             <width>332</width>
-             <height>17</height>
-            </rect>
-           </property>
-           <property name="orientation" >
-            <enum>Qt::Horizontal</enum>
-           </property>
-          </widget>
-         </item>
-        </layout>
-       </item>
-       <item row="0" column="1" >
-        <widget class="QScrollBar" name="verticalScrollBar" >
-         <property name="objectName" >
-          <string notr="true" >verticalScrollBar</string>
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>349</x>
-           <y>9</y>
-           <width>17</width>
-           <height>132</height>
-          </rect>
-         </property>
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>0</hsizetype>
-           <vsizetype>1</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="0" >
-        <spacer>
-         <property name="objectName" >
-          <string notr="true" />
-         </property>
-         <property name="geometry" >
-          <rect>
-           <x>9</x>
-           <y>147</y>
-           <width>334</width>
-           <height>40</height>
-          </rect>
-         </property>
-         <property name="orientation" >
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>20</width>
-           <height>40</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </widget>
-     <widget class="QWidget" name="widget" >
-      <property name="objectName" >
-       <string notr="true" >widget</string>
-      </property>
-      <property name="geometry" >
-       <rect>
-        <x>0</x>
-        <y>0</y>
-        <width>377</width>
-        <height>187</height>
-       </rect>
-      </property>
-      <attribute name="title" >
-       <string>Tab Page 2</string>
-      </attribute>
-     </widget>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <pixmapfunction></pixmapfunction>
- <connections/>
-</ui>
diff --git a/tests/benchmarks/qtwidgets/tst_qtwidgets.cpp b/tests/benchmarks/qtwidgets/tst_qtwidgets.cpp
deleted file mode 100644
index 8d2a31b..0000000
--- a/tests/benchmarks/qtwidgets/tst_qtwidgets.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <qtest.h>
-#include <QtGui>
-#include <QtNetwork>
-
-#include "mainwindow.h"
-
-class tst_QtWidgets: public QObject
-{
-    Q_OBJECT
-
-private slots:
-    void snapshot();
-};
-
-void tst_QtWidgets::snapshot()
-{
-    QBENCHMARK {
-        StyleWidget widget(0, Qt::X11BypassWindowManagerHint);
-        widget.show();
-        QApplication::processEvents();
-    }
-}
-
-QTEST_MAIN(tst_QtWidgets)
-
-#include "tst_qtwidgets.moc"
-- 
cgit v0.12


From c624935a958783d3314fe6c2f6845e6b51a97f95 Mon Sep 17 00:00:00 2001
From: Tom Cooksey <thomas.cooksey@nokia.com>
Date: Mon, 8 Feb 2010 16:08:04 +0100
Subject: Add a pixmap modification hook to blur pixmap filter cache

We probably want to kick out filtered pixmaps from the cache when the
source pixmap is modified as well as just destroyed.

Reviewed-By: Samuel
---
 src/opengl/qglpixmapfilter.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/opengl/qglpixmapfilter.cpp b/src/opengl/qglpixmapfilter.cpp
index 37bb7c0..d5a11d9 100644
--- a/src/opengl/qglpixmapfilter.cpp
+++ b/src/opengl/qglpixmapfilter.cpp
@@ -394,6 +394,7 @@ void QGLBlurTextureCache::insertBlurTextureInfo(const QPixmap &pixmap, QGLBlurTe
     static bool hookAdded = false;
     if (!hookAdded) {
         QImagePixmapCleanupHooks::instance()->addPixmapDataDestructionHook(pixmapDestroyed);
+        QImagePixmapCleanupHooks::instance()->addPixmapDataModificationHook(pixmapDestroyed);
         hookAdded = true;
     }
 
-- 
cgit v0.12


From 49b01a107262a8edca92b12a65b54f63017d9d16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Nilsen?= <bjorn.nilsen@nokia.com>
Date: Mon, 8 Feb 2010 16:33:49 +0100
Subject: Compile fix for network benchmarks.

---
 tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp | 2 +-
 tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp     | 2 +-
 tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp           | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
index 23e07db..26308e9 100644
--- a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
+++ b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
@@ -46,7 +46,7 @@
 #include <QtNetwork/qnetworkaccessmanager.h>
 #include <QtCore/QTemporaryFile>
 #include <QtCore/QFile>
-#include "../../auto/network-settings.h"
+#include "../../../../auto/network-settings.h"
 
 class qfile_vs_qnetworkaccessmanager : public QObject
 {
diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
index a92359f..f173ed1 100644
--- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -48,7 +48,7 @@
 #include <QtNetwork/qnetworkaccessmanager.h>
 #include <QtNetwork/qtcpsocket.h>
 #include <QtNetwork/qtcpserver.h>
-#include "../../auto/network-settings.h"
+#include "../../../../auto/network-settings.h"
 
 
 class TimedSender: public QThread
diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
index b6b55c3..022bf3d 100644
--- a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -58,7 +58,7 @@
 Q_DECLARE_METATYPE(QNetworkProxy)
 Q_DECLARE_METATYPE(QList<QNetworkProxy>)
 
-#include "../../auto/network-settings.h"
+#include "../../../../auto/network-settings.h"
 
 //TESTED_CLASS=
 //TESTED_FILES=
-- 
cgit v0.12


From 8ce0a7dfac6955ab3b5bf6cd0ee4abe63f753618 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Mon, 8 Feb 2010 16:34:30 +0100
Subject: Updated the docs for QPainter::begin/endNativePainting()

Task-number: QTBUG-7661
Reviewed-by: Kim
---
 src/gui/painting/qpainter.cpp | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index bf12c6b..3bcaf8c 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -1986,12 +1986,25 @@ QPaintEngine *QPainter::paintEngine() const
     endNativePainting().
 
     Note that only the states the underlying paint engine changes will be reset
-    to their respective default states. If, for example, the OpenGL polygon
-    mode is changed by the user inside a beginNativePaint()/endNativePainting()
-    block, it will not be reset to the default state by endNativePainting().
+    to their respective default states. The states we reset may change from
+    release to release. The following states are currently reset in the OpenGL
+    2 engine:
 
-    Here is an example that shows intermixing of painter commands
-    and raw OpenGL commands:
+    \list
+    \i blending is disabled
+    \i the depth, stencil and scissor tests are disabled
+    \i the active texture unit is reset to 0
+    \i the depth mask, depth function and the clear depth are reset to their
+    default values
+    \i the stencil mask, stencil operation and stencil function are reset to
+    their default values
+     \i the current color is reset to solid white
+    \endlist
+
+    If, for example, the OpenGL polygon mode is changed by the user inside a
+    beginNativePaint()/endNativePainting() block, it will not be reset to the
+    default state by endNativePainting(). Here is an example that shows
+    intermixing of painter commands and raw OpenGL commands:
 
     \snippet doc/src/snippets/code/src_gui_painting_qpainter.cpp 21
 
-- 
cgit v0.12


From de5ce297da04d1246711d28095d6cd1f52cfc97b Mon Sep 17 00:00:00 2001
From: Thomas Zander <t.zander@nokia.com>
Date: Mon, 8 Feb 2010 15:35:08 +0100
Subject: Make generate uid3 (symbian) work on 64 bit host platform.

On a 64 bit system the old code used to make; UID "0xEffffffff9d8cb14". Which
doesn't get accepted by the symbian tool chain ;) The patch makes this normal
size hex uid3 again.

Reviewed-by: Miikka Heikkinen
---
 qmake/generators/symbian/initprojectdeploy_symbian.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
index f3e3c3a..5fbff58 100644
--- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp
+++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp
@@ -207,7 +207,7 @@ QString generate_uid(const QString& target)
         return tmp;
     }
 
-    unsigned long hash = 5381;
+    quint32 hash = 5381;
     int c;
 
     for (int i = 0; i < target.size(); ++i) {
-- 
cgit v0.12


From 1042478921b5b3e7a4e9713d9f7778bd10654463 Mon Sep 17 00:00:00 2001
From: Thomas Sondergaard <ts@medical-insight.com>
Date: Mon, 8 Feb 2010 17:19:54 +0100
Subject: Handle Shift+Tab correctly on X11.

This fixes incorrect handling of Shift+Tab keysyms. Most typically
Shift+Tab generates Shift+ISO_Left_Tab, but VNC clients generate
Shift+Tab in accordance with the RFB specification.

Merge-request: 458
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
---
 src/gui/kernel/qkeymapper_x11.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/gui/kernel/qkeymapper_x11.cpp b/src/gui/kernel/qkeymapper_x11.cpp
index 70574e7..4e6c847 100644
--- a/src/gui/kernel/qkeymapper_x11.cpp
+++ b/src/gui/kernel/qkeymapper_x11.cpp
@@ -360,6 +360,13 @@ QList<int> QKeyMapperPrivate::possibleKeysXKB(QKeyEvent *event)
 
         if (code && code < 0xfffe)
             code = QChar(code).toUpper().unicode();
+
+        if (code == Qt::Key_Tab && (baseModifiers & Qt::ShiftModifier)) {
+            // map shift+tab to shift+backtab
+            code = Qt::Key_Backtab;
+            text = QString();
+        }
+
         if (code == baseCode)
             continue;
 
@@ -448,6 +455,13 @@ QList<int> QKeyMapperPrivate::possibleKeysCore(QKeyEvent *event)
 
         if (code && code < 0xfffe)
             code = QChar(code).toUpper().unicode();
+
+        if (code == Qt::Key_Tab && (baseModifiers & Qt::ShiftModifier)) {
+            // map shift+tab to shift+backtab
+            code = Qt::Key_Backtab;
+            text = QString();
+        }
+
         if (code == baseCode)
             continue;
 
-- 
cgit v0.12


From 96ce91dedc2aea60377d9008b806ebbe8cc53169 Mon Sep 17 00:00:00 2001
From: Constantin Makshin <dinosaur-rus@users.sourceforge.net>
Date: Mon, 8 Feb 2010 19:11:47 +0100
Subject: Added QMake directory to INCPATH so the compiler can find required
 headers

Reviewed-by: Benjamin Poulain <benjamin.poulain@nokia.com>
---
 qmake/qmake.pro | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/qmake/qmake.pro b/qmake/qmake.pro
index 560aee9..00dcbce 100644
--- a/qmake/qmake.pro
+++ b/qmake/qmake.pro
@@ -17,9 +17,15 @@ VPATH += $$QT_SOURCE_TREE/src/corelib/global \
          $$QT_SOURCE_TREE/src/corelib/kernel \
          $$QT_SOURCE_TREE/src/corelib/codecs \
          $$QT_SOURCE_TREE/src/corelib/plugin \
-	 $$QT_SOURCE_TREE/src/corelib/xml \
-	 $$QT_SOURCE_TREE/src/corelib/io
-INCPATH += generators generators/unix generators/win32 generators/mac generators/symbian \
-           $$QT_SOURCE_TREE/include $$QT_SOURCE_TREE/include/QtCore
+         $$QT_SOURCE_TREE/src/corelib/xml \
+         $$QT_SOURCE_TREE/src/corelib/io
+INCPATH += generators \
+           generators/unix \
+           generators/win32 \
+           generators/mac \
+           generators/symbian \
+           $$QT_SOURCE_TREE/include \
+           $$QT_SOURCE_TREE/include/QtCore \
+           $$QT_SOURCE_TREE/qmake
 include(qmake.pri)
 
-- 
cgit v0.12


From 72f3caa5d7821b93a4e807fb61c5cda9f2c6f393 Mon Sep 17 00:00:00 2001
From: Bill King <bill.king@nokia.com>
Date: Tue, 9 Feb 2010 13:14:50 +1000
Subject: (sqlite) Allow shared cache mode

This modification is needed to allow performance optimisations
necessary for QML.

Reviewed-by: Warwick Allison
---
 src/sql/drivers/sqlite/qsql_sqlite.cpp       | 47 +++++++++++-----------------
 src/sql/kernel/qsqldatabase.cpp              |  1 +
 tests/auto/qsqldatabase/tst_qsqldatabase.cpp | 20 ++++++++++++
 3 files changed, 40 insertions(+), 28 deletions(-)

diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index 9fff552..d3be304 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -500,32 +500,6 @@ bool QSQLiteDriver::hasFeature(DriverFeature f) const
     return false;
 }
 
-static int qGetSqliteTimeout(QString opts)
-{
-    enum { DefaultTimeout = 5000 };
-
-    opts.remove(QLatin1Char(' '));
-    foreach(QString option, opts.split(QLatin1Char(';'))) {
-        if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT="))) {
-            bool ok;
-            int nt = option.mid(21).toInt(&ok);
-            if (ok)
-                return nt;
-        }
-    }
-    return DefaultTimeout;
-}
-
-static int qGetSqliteOpenMode(QString opts)
-{
-    opts.remove(QLatin1Char(' '));
-    foreach(QString option, opts.split(QLatin1Char(';'))) {
-        if (option == QLatin1String("QSQLITE_OPEN_READONLY"))
-                return SQLITE_OPEN_READONLY;
-    }
-    return SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
-}
-
 /*
    SQLite dbs have no user name, passwords, hosts or ports.
    just file names.
@@ -537,9 +511,26 @@ bool QSQLiteDriver::open(const QString & db, const QString &, const QString &, c
 
     if (db.isEmpty())
         return false;
+    bool sharedCache = false;
+    int openMode = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, timeOut=5000;
+    QStringList opts=QString(conOpts).remove(QLatin1Char(' ')).split(QLatin1Char(';'));
+    foreach(const QString &option, opts) {
+        if (option.startsWith(QLatin1String("QSQLITE_BUSY_TIMEOUT="))) {
+            bool ok;
+            int nt = option.mid(21).toInt(&ok);
+            if (ok)
+                timeOut = nt;
+        }
+        if (option == QLatin1String("QSQLITE_OPEN_READONLY"))
+            openMode = SQLITE_OPEN_READONLY;
+        if (option == QLatin1String("QSQLITE_ENABLE_SHARED_CACHE"))
+            sharedCache = true;
+    }
+
+    sqlite3_enable_shared_cache(sharedCache);
 
-    if (sqlite3_open_v2(db.toUtf8().constData(), &d->access, qGetSqliteOpenMode(conOpts), NULL) == SQLITE_OK) {
-        sqlite3_busy_timeout(d->access, qGetSqliteTimeout(conOpts));
+    if (sqlite3_open_v2(db.toUtf8().constData(), &d->access, openMode, NULL) == SQLITE_OK) {
+        sqlite3_busy_timeout(d->access, timeOut);
         setOpen(true);
         setOpenError(false);
         return true;
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index 031261d..1416ee3 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -1267,6 +1267,7 @@ QSqlRecord QSqlDatabase::record(const QString& tablename) const
     \list
     \i QSQLITE_BUSY_TIMEOUT
     \i QSQLITE_OPEN_READONLY
+    \i QSQLITE_ENABLE_SHARED_CACHE
     \endlist
 
     \i
diff --git a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
index 5b61da2..fe084fa 100644
--- a/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/qsqldatabase/tst_qsqldatabase.cpp
@@ -202,6 +202,8 @@ private slots:
     void sqlStatementUseIsNull_189093_data() { generic_data(); }
     void sqlStatementUseIsNull_189093();
 
+    void sqlite_enable_cache_mode_data() { generic_data("QSQLITE"); }
+    void sqlite_enable_cache_mode();
 
 private:
     void createTestTables(QSqlDatabase db);
@@ -2485,5 +2487,23 @@ void tst_QSqlDatabase::oci_tables()
     QVERIFY(db.tables(QSql::SystemTables).contains(systemTableName.toUpper()));
 }
 
+void tst_QSqlDatabase::sqlite_enable_cache_mode()
+{
+    QFETCH(QString, dbName);
+    if(dbName.endsWith(":memory:"))
+        QSKIP( "cache mode is meaningless for :memory: databases", SkipSingle );
+    QSqlDatabase db = QSqlDatabase::database(dbName);
+    CHECK_DATABASE(db);
+    db.close();
+    db.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE");
+    QVERIFY_SQL(db, open());
+    QSqlDatabase db2 = QSqlDatabase::cloneDatabase(db, dbName+":cachemodeconn2");
+    db2.setConnectOptions("QSQLITE_ENABLE_SHARED_CACHE");
+    QVERIFY_SQL(db2, open());
+    QSqlQuery q(db), q2(db2);
+    QVERIFY_SQL(q, exec("select * from "+qTableName("qtest")));
+    QVERIFY_SQL(q2, exec("select * from "+qTableName("qtest")));
+}
+
 QTEST_MAIN(tst_QSqlDatabase)
 #include "tst_qsqldatabase.moc"
-- 
cgit v0.12


From b37ac454832a23c17418f5ebca8928b63fe02289 Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Mon, 8 Feb 2010 18:19:19 +0200
Subject: Streamlined smart installer package creation in Symbian

- Added make target for creating smart installer packages
- Application sis is automatically generated if missing when
  "make installer_sis" is invoked
- No need to specify installer pkg UID if self signing is enough
- Related docs fixed
- Fixed smartinstaller.sis name to be correct

Task-number: QTBUG-8026
Reviewed-by: axis
---
 bin/createpackage.pl                          | 16 ++++++++----
 doc/src/deployment/deployment.qdoc            | 17 +++----------
 doc/src/getting-started/installation.qdoc     |  2 +-
 doc/src/platforms/symbian-introduction.qdoc   |  4 +++
 doc/src/snippets/code/doc_src_deployment.qdoc | 17 +++----------
 qmake/generators/symbian/symmake.cpp          | 35 +++++++++++++++++++++++++--
 6 files changed, 56 insertions(+), 35 deletions(-)

diff --git a/bin/createpackage.pl b/bin/createpackage.pl
index 460df31..6d4614e 100755
--- a/bin/createpackage.pl
+++ b/bin/createpackage.pl
@@ -95,10 +95,10 @@ Example with certfile:
         # This is comment line, also the empty lines are ignored
         rd.cer;rd-key.pem
         .\\cert\\mycert.cer;.\\cert\\mykey.key;yourpassword
-        X:\\QtS60\\selfsigned.cer;X:\\QtS60\\selfsigned.key
+        X:\\QtS60\\s60installs\\selfsigned.cer;X:\\QtS60\\s60installs\\selfsigned.key
 
 If no certificate and key files are provided, either a RnD certificate or
-a self-signed certificate from Qt installation root directory is used.
+a self-signed certificate from QtDir\\src\\s60installs directory is used.
 ==============================================================================================
 
 ENDUSAGESTRING
@@ -149,8 +149,10 @@ $pkgoutputbasename = lc($pkgoutputbasename);
 
 # Store output file names to variables
 my $pkgoutput = lc($pkgoutputbasename.".pkg");
-my $unsigned_sis_name = $pkgoutputbasename."_unsigned.sis";
-my $signed_sis_name = $pkgoutputbasename.".sis";
+my $sisoutputbasename = lc($pkgoutputbasename);
+$sisoutputbasename =~ s/_$targetplatform//g;
+my $unsigned_sis_name = $sisoutputbasename."_unsigned.sis";
+my $signed_sis_name = $sisoutputbasename.".sis";
 
 # Store some utility variables
 my $scriptpath = dirname(__FILE__);
@@ -263,7 +265,11 @@ system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphra
 # Check if creating signed SIS Succeeded
 stat($signed_sis_name);
 if( -e _ ) {
-    print ("\nSuccessfully created $signed_sis_name using certificate: $certtext!\n");
+    my $targetInsert = "";
+    if ($targetplatform ne "-") {
+        $targetInsert = "for $targetplatform ";
+    }
+    print ("\nSuccessfully created $signed_sis_name ${targetInsert}using certificate: $certtext!\n");
 
     # Sign with additional certificates & keys
     for my $row ( @certificates ) {
diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index 575a6dc..41babd9 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -1573,28 +1573,17 @@
     By default \c .pkg file generated by \c qmake adds support for all
     S60 3rd edition FP1, S60 3rd edition FP2 and S60 5th edition devices.
 
-    As a last step we will instruct qmake to generate smart installer \c .pkg file by defining
-    the UID of the installation package. The UID needs to be different than the application UID,
-    and should be reserved via normal Symbian mechanisms. You can use a random UID starting with
-    \c 0xE for testing purposes:
-
-    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 58
-
     Now we are ready to compile the application and create the application
     deployment file. Run \c qmake to create Symbian specific makefiles, resources (\.rss)
     and deployment packaging files (\c .pkg). And do build to create the
     application binaries and resources.
 
-    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 59
+    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 58
 
     If everything compiled and linked without any errors, we are now ready to create
-    an application package (\c wiggly.sis):
-
-    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 60
+    an application installation package (\c wiggly_installer.sis):
 
-    Now you can create the smart installer package for the application:
-
-    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 61
+    \snippet doc/src/snippets/code/doc_src_deployment.qdoc 59
 
     If all binaries and dependencies were found, you should now have a self signed
     \c wiggly_installer.sis ready to be installed on a device. The smart installer
diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index b679250..abdfcd2 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -677,7 +677,7 @@ If you are using pre-built binaries, follow the instructions given in the
 
         \snippet doc/src/snippets/code/doc_src_installation.qdoc 30
 
-        This will create a self-signed \c fluidlauncher_armv5_urel.sis and
+        This will create a self-signed \c fluidlauncher.sis and
         install it to your device.
 
         To run the demos on the emulator simply navigate to the directory of the demo
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 427f45a..94075f5 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -127,6 +127,10 @@
     \row \o \c run           \o Run the application on the emulator.
     \row \o \c runonphone    \o Run the application on a device.
     \row \o \c sis           \o Create signed \c .sis file for project.
+    \row \o \c installer_sis \o Create signed smart installer \c .sis file for project.
+                                Smart installer will attempt to download
+                                missing dependencies in addition to
+                                just installing the application.
     \endtable
 
     The following lines perform a debug build for the emulator
diff --git a/doc/src/snippets/code/doc_src_deployment.qdoc b/doc/src/snippets/code/doc_src_deployment.qdoc
index 9c00681..3b0cda1 100644
--- a/doc/src/snippets/code/doc_src_deployment.qdoc
+++ b/doc/src/snippets/code/doc_src_deployment.qdoc
@@ -475,19 +475,10 @@ default_deployment.pkg_prerules += supported_platforms
 //! [57]
 
 //! [58]
-DEPLOYMENT.installer_header = 0xE2345678
-//! [58]
-
-//! [59]
 qmake
 make release-gcce
-//! [59]
-
-//! [60]
-make sis
-ren wiggly_release-gcce.sis wiggly.sis
-//! [60]
+//! [58]
 
-//! [61]
-createpackage wiggly_installer.pkg
-//! [61]
\ No newline at end of file
+//! [59]
+make installer_sis
+//! [59]
\ No newline at end of file
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 6c44f0b..3ee3b3a 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -87,7 +87,9 @@
 #define MMP_END_RESOURCE "END"
 
 #define SIS_TARGET "sis"
+#define INSTALLER_SIS_TARGET "installer_sis"
 #define OK_SIS_TARGET "ok_sis"
+#define OK_INSTALLER_SIS_TARGET "ok_installer_sis"
 #define FAIL_SIS_NOPKG_TARGET "fail_sis_nopkg"
 #define FAIL_SIS_NOCACHE_TARGET "fail_sis_nocache"
 
@@ -295,6 +297,9 @@ void SymbianMakefileGenerator::generatePkgFile(const QString &iconFile, Deployme
     QTextStream t(&pkgFile);
 
     QString installerSisHeader = project->values("DEPLOYMENT.installer_header").join("\n");
+    if (installerSisHeader.isEmpty())
+        installerSisHeader = "0xA000D7CE"; // Use default self-signable UID if not defined
+
     QString wrapperStreamBuffer;
     QTextStream tw(&wrapperStreamBuffer);
 
@@ -517,7 +522,7 @@ void SymbianMakefileGenerator::generatePkgFile(const QString &iconFile, Deployme
         twf << "\"" << currentPath << "/" << sisName << "\" - \"c:\\adm\\" << sisName << "\"" << endl;
 
         QString bootStrapPath = QLibraryInfo::location(QLibraryInfo::PrefixPath);
-        bootStrapPath.append("/bootstrap.sis");
+        bootStrapPath.append("/smartinstaller.sis");
         QFileInfo fi(fileInfo(bootStrapPath));
         twf << "@\"" << fi.absoluteFilePath() << "\",(0x2002CCCD)" << endl;
     }
@@ -1901,8 +1906,34 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
     t << pkgcommand << endl;
     t << endl;
 
+    QString sisName = fixedTarget;
+    sisName += ".sis";
+
+    t << sisName << ":" << endl;
+    t << "\t$(MAKE) -s -f $(MAKEFILE) " SIS_TARGET << endl << endl;
+
+    t << INSTALLER_SIS_TARGET ": " << sisName << endl;
+    siscommand = QString("\t$(if $(wildcard %1_installer.%2)," \
+                                  "$(MAKE) -s -f $(MAKEFILE) %3," \
+                                  "$(MAKE) -s -f $(MAKEFILE) %4)")
+                          .arg(fixedTarget)
+                          .arg("pkg")
+                          .arg(OK_INSTALLER_SIS_TARGET)
+                          .arg(FAIL_SIS_NOPKG_TARGET);
+    t << siscommand << endl;
+    t << endl;
+
+    t << OK_INSTALLER_SIS_TARGET ": " << endl;
+
+    pkgcommand = QString("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_installer.%2 - " \
+                         "$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
+                  .arg(fixedTarget)
+                  .arg("pkg");
+    t << pkgcommand << endl;
+    t << endl;
+
     t << FAIL_SIS_NOPKG_TARGET ":" << endl;
-    t << "\t$(error PKG file does not exist, 'SIS' target is only supported for executables or projects with DEPLOYMENT statement)" << endl;
+    t << "\t$(error PKG file does not exist, '" SIS_TARGET "' and '" INSTALLER_SIS_TARGET "' target are only supported for executables or projects with DEPLOYMENT statement)" << endl;
     t << endl;
 
     t << FAIL_SIS_NOCACHE_TARGET ":" << endl;
-- 
cgit v0.12


From 94630819258edef96c434add7bbd4b1b425ea71a Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 09:58:22 +0100
Subject: QNAM HTTP: Fix issue with some servers

The call to eatWhitespace() must only be done before reading
the status, not while reading it.
(We can be in ReadingStatusState for multiple loop iterations)

Task-number: QTBUG-7673
Reviewed-by: Peter Hartmann
---
 src/network/access/qhttpnetworkconnectionchannel.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 70a301d..5bd972c 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -305,9 +305,12 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
     while (socket->bytesAvailable()) {
         QHttpNetworkReplyPrivate::ReplyState state = reply ? reply->d_func()->state : QHttpNetworkReplyPrivate::AllDoneState;
         switch (state) {
-        case QHttpNetworkReplyPrivate::NothingDoneState:
-        case QHttpNetworkReplyPrivate::ReadingStatusState: {
+        case QHttpNetworkReplyPrivate::NothingDoneState: {
+            // only eat whitespace on the first call
             eatWhitespace();
+            state = reply->d_func()->state = QHttpNetworkReplyPrivate::ReadingStatusState;
+        }
+        case QHttpNetworkReplyPrivate::ReadingStatusState: {
             qint64 statusBytes = reply->d_func()->readStatus(socket);
             if (statusBytes == -1 && reconnectAttempts <= 0) {
                 // too many errors reading/receiving/parsing the status, close the socket and emit error
-- 
cgit v0.12


From 1bb05bf5230ac41c47ce09fcc1e85e26db150322 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Tue, 9 Feb 2010 10:30:06 +0100
Subject: Stabilize QLineEdit test on X11

---
 tests/auto/qlineedit/tst_qlineedit.cpp | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/tests/auto/qlineedit/tst_qlineedit.cpp b/tests/auto/qlineedit/tst_qlineedit.cpp
index 69e7699..ca84b38 100644
--- a/tests/auto/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/qlineedit/tst_qlineedit.cpp
@@ -3455,10 +3455,8 @@ void tst_QLineEdit::task210502_caseInsensitiveInlineCompletion()
     completer.setCompletionMode(QCompleter::InlineCompletion);
     lineEdit.setCompleter(&completer);
     lineEdit.show();
-#ifdef Q_WS_X11
-    // to be safe and avoid failing setFocus with window managers
-    qt_x11_wait_for_window_manager(&lineEdit);
-#endif
+    QTest::qWaitForWindowShown(&lineEdit);
+    QApplication::setActiveWindow(&lineEdit);
     lineEdit.setFocus();
     QTRY_VERIFY(lineEdit.hasFocus());
     QTest::keyPress(&lineEdit, 'a');
@@ -3651,10 +3649,11 @@ void tst_QLineEdit::taskQTBUG_7395_readOnlyShortcut()
     le.addAction(&action);
 
     le.show();
-    QApplication::setActiveWindow(&le);
     QTest::qWaitForWindowShown(&le);
+    QApplication::setActiveWindow(&le);
     le.setFocus();
     QTRY_VERIFY(le.hasFocus());
+
     QTest::keyClick(0, Qt::Key_P);
     QCOMPARE(spy.count(), 1);
 }
-- 
cgit v0.12


From 1f28c7c3391cef8760836b61146e556adf217596 Mon Sep 17 00:00:00 2001
From: Benjamin Poulain <benjamin.poulain@nokia.com>
Date: Tue, 9 Feb 2010 10:28:08 +0100
Subject: Improve the benchmark of QScriptClass

The benchmarks has been stabilised and modified so the number
are more representative of QSCriptClass and not other part of Qt:
-the "iteration numbmer" has been introduced to ensure a minimal
number of call, indpendant of QTestLib.
-the subclasses of QScriptClass have been rewritten to have less
impact on the results
---
 tests/benchmarks/qscriptclass/tst_qscriptclass.cpp | 536 ++++++---------------
 1 file changed, 155 insertions(+), 381 deletions(-)

diff --git a/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp b/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
index 7985028..6ab78b1 100644
--- a/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
+++ b/tests/benchmarks/qscriptclass/tst_qscriptclass.cpp
@@ -46,348 +46,15 @@ Q_DECLARE_METATYPE(QScriptContext*)
 Q_DECLARE_METATYPE(QScriptValue)
 Q_DECLARE_METATYPE(QScriptValueList)
 
-//TESTED_FILES=
-
-class TestClass : public QScriptClass
-{
-public:
-    struct CustomProperty {
-        QueryFlags qflags;
-        uint id;
-        QScriptValue::PropertyFlags pflags;
-        QScriptValue value;
-
-        CustomProperty(QueryFlags qf, uint i, QScriptValue::PropertyFlags pf,
-                       const QScriptValue &val)
-            : qflags(qf), id(i), pflags(pf), value(val) { }
-    };
-
-    enum CallableMode {
-        NotCallable,
-        CallableReturnsSum,
-        CallableReturnsArgument,
-        CallableReturnsInvalidVariant
-    };
-
-    TestClass(QScriptEngine *engine);
-    ~TestClass();
-
-    void addCustomProperty(const QScriptString &name, QueryFlags qflags,
-                           uint id, QScriptValue::PropertyFlags pflags,
-                           const QScriptValue &value);
-    void removeCustomProperty(const QScriptString &name);
-
-    QueryFlags queryProperty(const QScriptValue &object,
-                             const QScriptString &name,
-                             QueryFlags flags, uint *id);
-
-    QScriptValue property(const QScriptValue &object,
-                          const QScriptString &name, uint id);
-
-    void setProperty(QScriptValue &object, const QScriptString &name,
-                     uint id, const QScriptValue &value);
-
-    QScriptValue::PropertyFlags propertyFlags(
-        const QScriptValue &object, const QScriptString &name, uint id);
-
-    QScriptClassPropertyIterator *newIterator(const QScriptValue &object);
-
-    QScriptValue prototype() const;
-
-    QString name() const;
-
-    bool supportsExtension(Extension extension) const;
-    QVariant extension(Extension extension,
-                       const QVariant &argument = QVariant());
-
-    void setIterationEnabled(bool enable);
-    bool isIterationEnabled() const;
-
-    void setCallableMode(CallableMode mode);
-    CallableMode callableMode() const;
-
-    void setHasInstance(bool hasInstance);
-    bool hasInstance() const;
-
-private:
-    inline CustomProperty *findCustomProperty(const QScriptString &name);
-
-    QHash<QScriptString, CustomProperty*> customProperties;
-
-    QScriptValue m_prototype;
-    bool m_iterationEnabled;
-    CallableMode m_callableMode;
-    bool m_hasInstance;
-};
-
-class TestClassPropertyIterator : public QScriptClassPropertyIterator
-{
-public:
-    TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
-                      const QScriptValue &object);
-    ~TestClassPropertyIterator();
-
-    bool hasNext() const;
-    void next();
-
-    bool hasPrevious() const;
-    void previous();
-
-    void toFront();
-    void toBack();
-
-    QScriptString name() const;
-    uint id() const;
-    QScriptValue::PropertyFlags flags() const;
-
-private:
-    int m_index;
-    int m_last;
-    QHash<QScriptString, TestClass::CustomProperty*> m_props;
-};
-
-TestClass::TestClass(QScriptEngine *engine)
-    : QScriptClass(engine), m_iterationEnabled(true),
-      m_callableMode(NotCallable), m_hasInstance(false)
-{
-    m_prototype = engine->newObject();
-}
-
-TestClass::~TestClass()
-{
-    qDeleteAll(customProperties);
-}
-
-TestClass::CustomProperty* TestClass::findCustomProperty(const QScriptString &name)
-{
-    QHash<QScriptString, CustomProperty*>::const_iterator it;
-    it = customProperties.constFind(name);
-    if (it == customProperties.constEnd())
-        return 0;
-    return it.value();
-
-}
-
-void TestClass::addCustomProperty(const QScriptString &name, QueryFlags qflags,
-                                  uint id, QScriptValue::PropertyFlags pflags,
-                                  const QScriptValue &value)
-{
-    customProperties.insert(name, new CustomProperty(qflags, id, pflags, value));
-}
-
-void TestClass::removeCustomProperty(const QScriptString &name)
-{
-    CustomProperty *prop = customProperties.take(name);
-    if (prop)
-        delete prop;
-}
-
-QScriptClass::QueryFlags TestClass::queryProperty(const QScriptValue &/*object*/,
-                                    const QScriptString &name,
-                                    QueryFlags flags, uint *id)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return 0;
-    *id = prop->id;
-    return prop->qflags & flags;
-}
-
-QScriptValue TestClass::property(const QScriptValue &/*object*/,
-                                 const QScriptString &name, uint /*id*/)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return QScriptValue();
-    return prop->value;
-}
-
-void TestClass::setProperty(QScriptValue &/*object*/, const QScriptString &name,
-                            uint /*id*/, const QScriptValue &value)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return;
-    prop->value = value;
-}
-
-QScriptValue::PropertyFlags TestClass::propertyFlags(
-    const QScriptValue &/*object*/, const QScriptString &name, uint /*id*/)
-{
-    CustomProperty *prop = findCustomProperty(name);
-    if (!prop)
-        return 0;
-    return prop->pflags;
-}
-
-QScriptClassPropertyIterator *TestClass::newIterator(const QScriptValue &object)
-{
-    if (!m_iterationEnabled)
-        return 0;
-    return new TestClassPropertyIterator(customProperties, object);
-}
-
-QScriptValue TestClass::prototype() const
-{
-    return m_prototype;
-}
-
-QString TestClass::name() const
-{
-    return QLatin1String("TestClass");
-}
-
-bool TestClass::supportsExtension(Extension extension) const
-{
-    if (extension == Callable)
-        return (m_callableMode != NotCallable);
-    if (extension == HasInstance)
-        return m_hasInstance;
-    return false;
-}
-
-QVariant TestClass::extension(Extension extension,
-                              const QVariant &argument)
-{
-    if (extension == Callable) {
-        Q_ASSERT(m_callableMode != NotCallable);
-        QScriptContext *ctx = qvariant_cast<QScriptContext*>(argument);
-        if (m_callableMode == CallableReturnsSum) {
-            qsreal sum = 0;
-            for (int i = 0; i < ctx->argumentCount(); ++i)
-                sum += ctx->argument(i).toNumber();
-            QScriptValueIterator it(ctx->thisObject());
-            while (it.hasNext()) {
-                it.next();
-                sum += it.value().toNumber();
-            }
-            return sum;
-        } else if (m_callableMode == CallableReturnsArgument) {
-            return qVariantFromValue(ctx->argument(0));
-        } else if (m_callableMode == CallableReturnsInvalidVariant) {
-            return QVariant();
-        }
-    } else if (extension == HasInstance) {
-        Q_ASSERT(m_hasInstance);
-        QScriptValueList args = qvariant_cast<QScriptValueList>(argument);
-        QScriptValue obj = args.at(0);
-        QScriptValue value = args.at(1);
-        return value.property("foo").equals(obj.property("foo"));
-    }
-    return QVariant();
-}
-
-void TestClass::setIterationEnabled(bool enable)
-{
-    m_iterationEnabled = enable;
-}
-
-bool TestClass::isIterationEnabled() const
-{
-    return m_iterationEnabled;
-}
-
-void TestClass::setCallableMode(CallableMode mode)
-{
-    m_callableMode = mode;
-}
-
-TestClass::CallableMode TestClass::callableMode() const
-{
-    return m_callableMode;
-}
-
-void TestClass::setHasInstance(bool hasInstance)
-{
-    m_hasInstance = hasInstance;
-}
-
-bool TestClass::hasInstance() const
-{
-    return m_hasInstance;
-}
-
-TestClassPropertyIterator::TestClassPropertyIterator(const QHash<QScriptString, TestClass::CustomProperty*> &props,
-                                     const QScriptValue &object)
-    : QScriptClassPropertyIterator(object)
-{
-    m_props = props;
-    toFront();
-}
-
-TestClassPropertyIterator::~TestClassPropertyIterator()
-{
-}
-
-bool TestClassPropertyIterator::hasNext() const
-{
-    return m_index < m_props.size();
-}
-
-void TestClassPropertyIterator::next()
-{
-    m_last = m_index;
-    ++m_index;
-}
-
-bool TestClassPropertyIterator::hasPrevious() const
-{
-    return m_index > 0;
-}
-
-void TestClassPropertyIterator::previous()
-{
-    --m_index;
-    m_last = m_index;
-}
-
-void TestClassPropertyIterator::toFront()
-{
-    m_index = 0;
-    m_last = -1;
-}
-
-void TestClassPropertyIterator::toBack()
-{
-    m_index = m_props.size();
-    m_last = -1;
-}
-
-QScriptString TestClassPropertyIterator::name() const
-{
-    return m_props.keys().value(m_last);
-}
-
-uint TestClassPropertyIterator::id() const
-{
-    QScriptString key = m_props.keys().value(m_last);
-    if (!key.isValid())
-        return 0;
-    TestClass::CustomProperty *prop = m_props.value(key);
-    return prop->id;
-}
-
-QScriptValue::PropertyFlags TestClassPropertyIterator::flags() const
-{
-    QScriptString key = m_props.keys().value(m_last);
-    if (!key.isValid())
-        return 0;
-    TestClass::CustomProperty *prop = m_props.value(key);
-    return prop->pflags;
-}
+// We want reliable numbers so we don't want to rely too much
+// on the number of iterations done by testlib.
+// this also make the results of valgrind more interesting
+const int iterationNumber = 5000;
 
 class tst_QScriptClass : public QObject
 {
     Q_OBJECT
 
-public:
-    tst_QScriptClass();
-    virtual ~tst_QScriptClass();
-
-public slots:
-    void init();
-    void cleanup();
-
 private slots:
     void noSuchProperty();
     void property();
@@ -398,111 +65,218 @@ private slots:
     void iterate();
 };
 
-tst_QScriptClass::tst_QScriptClass()
-{
-}
-
-tst_QScriptClass::~tst_QScriptClass()
-{
-}
-
-void tst_QScriptClass::init()
-{
-}
-
-void tst_QScriptClass::cleanup()
-{
-}
-
+// Test the overhead of checking for an inexisting property of a QScriptClass
 void tst_QScriptClass::noSuchProperty()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
+    QScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
     QString propertyName = QString::fromLatin1("foo");
     QBENCHMARK {
-        (void)obj.property(propertyName);
+        for (int i = 0; i < iterationNumber; ++i)
+            (void)obj.property(propertyName);
     }
+    Q_ASSERT(!obj.property(propertyName).isValid());
 }
 
+
+class FooScriptClass : public QScriptClass
+{
+public:
+    FooScriptClass(QScriptEngine *engine)
+        : QScriptClass(engine)
+    {
+        foo = engine->toStringHandle("foo");
+    }
+
+    QueryFlags queryProperty(const QScriptValue &,
+                             const QScriptString &,
+                             QueryFlags flags,
+                             uint *id)
+    {
+        *id = 1;
+        return flags;
+    }
+
+    QScriptValue property(const QScriptValue &,
+                          const QScriptString &,
+                          uint)
+    {
+        return QScriptValue(engine(), 35);
+    }
+
+    void setProperty(QScriptValue &, const QScriptString &,
+                     uint, const QScriptValue &)
+    {}
+
+    QScriptValue::PropertyFlags propertyFlags(const QScriptValue &, const QScriptString &, uint)
+    {
+        return QScriptValue::Undeletable;
+    }
+private:
+    QScriptString foo;
+};
+
+// Test the overhead of getting a value of QScriptClass accross the Javascript engine
 void tst_QScriptClass::property()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
+    FooScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
+    QScriptString foo = eng.toStringHandle("foo");
     QBENCHMARK {
-        (void)obj.property(foo);
+        for (int i = 0; i < iterationNumber; ++i)
+            (void)obj.property(foo);
     }
 }
 
+// Test the overhead of setting a value on QScriptClass accross the Javascript engine
 void tst_QScriptClass::setProperty()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesWriteAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
+    FooScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
     QScriptValue value(456);
+    QScriptString foo = eng.toStringHandle("foo");
     QBENCHMARK {
-        obj.setProperty(foo, value);
+        for (int i = 0; i < iterationNumber; ++i)
+            obj.setProperty(foo, value);
     }
 }
 
+// Test the time taken to get the propeties flags accross the engine
 void tst_QScriptClass::propertyFlags()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    QScriptString foo = eng.toStringHandle("foo");
-    cls.addCustomProperty(foo, QScriptClass::HandlesReadAccess, /*id=*/1, QScriptValue::ReadOnly, /*value=*/123);
+    FooScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
+    QScriptString foo = eng.toStringHandle("foo");
     QBENCHMARK {
-        (void)obj.propertyFlags(foo);
+        for (int i = 0; i < iterationNumber; ++i)
+            (void)obj.propertyFlags(foo);
     }
 }
 
+
+
+class ExtensionScriptClass : public QScriptClass
+{
+public:
+    ExtensionScriptClass(QScriptEngine *engine)
+        : QScriptClass(engine)
+    {
+    }
+
+    bool supportsExtension(Extension) const
+    {
+        return true;
+    }
+
+    QVariant extension(Extension, const QVariant &argument = QVariant())
+    {
+        Q_UNUSED(argument);
+        return QVariant();
+    }
+};
+
+// Check the overhead of the extension "call"
 void tst_QScriptClass::call()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setCallableMode(TestClass::CallableReturnsArgument);
+    ExtensionScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
     QScriptValue thisObject;
     QScriptValueList args;
     args.append(123);
     QBENCHMARK {
-        (void)obj.call(thisObject, args);
+        for (int i = 0; i < iterationNumber; ++i)
+            (void)obj.call(thisObject, args);
     }
 }
 
+// Check the overhead of the extension "instanceOf"
 void tst_QScriptClass::hasInstance()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setHasInstance(true);
+    ExtensionScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
     obj.setProperty("foo", 123);
     QScriptValue plain = eng.newObject();
     plain.setProperty("foo", obj.property("foo"));
     QBENCHMARK {
-        (void)plain.instanceOf(obj);
+        for (int i = 0; i < iterationNumber; ++i)
+            (void)plain.instanceOf(obj);
     }
 }
 
+
+
+static const int iteratorValuesNumber = 100;
+class TestClassPropertyIterator : public QScriptClassPropertyIterator
+{
+public:
+    TestClassPropertyIterator(const QScriptValue &object, QVector<QScriptString> names)
+        : QScriptClassPropertyIterator(object)
+        , m_index(0)
+        , names(names)
+    {
+    }
+
+    bool hasNext() const
+    {
+        return m_index < iteratorValuesNumber - 1;
+    }
+    void next() { ++m_index; }
+
+    bool hasPrevious() const { return m_index > 0; }
+    void previous() { --m_index; }
+
+    void toFront() { m_index = 0; }
+    void toBack() { m_index = iteratorValuesNumber - 1; }
+
+    QScriptString name() const { return names[m_index]; }
+    uint id() const { return m_index; }
+    QScriptValue::PropertyFlags flags() const { return 0; }
+
+private:
+    int m_index;
+    QVector<QScriptString> names;
+};
+
+
+class IteratorScriptClass : public QScriptClass
+{
+public:
+    IteratorScriptClass(QScriptEngine *engine)
+        : QScriptClass(engine)
+    {
+        for (int i = 0; i < iteratorValuesNumber; ++i)
+            names.append(engine->toStringHandle(QString("property%1").arg(i)));
+    }
+
+    QScriptClassPropertyIterator *newIterator(const QScriptValue &object)
+    {
+        return new TestClassPropertyIterator(object, names);
+    }
+private:
+    QVector<QScriptString> names;
+    friend class TestClassPropertyIterator;
+};
+
+// Measure the performance of the interface to iterate over QScriptClassPropertyIterator
 void tst_QScriptClass::iterate()
 {
     QScriptEngine eng;
-    TestClass cls(&eng);
-    cls.setIterationEnabled(true);
-    cls.addCustomProperty(eng.toStringHandle("foo"), QScriptClass::HandlesReadAccess, /*id=*/1, /*attributes=*/0, /*value=*/123);
-    cls.addCustomProperty(eng.toStringHandle("bar"), QScriptClass::HandlesReadAccess, /*id=*/2, /*attributes=*/0, /*value=*/456);
+    IteratorScriptClass cls(&eng);
     QScriptValue obj = eng.newObject(&cls);
+    int iterationNumberIterate = iterationNumber / iteratorValuesNumber;
     QBENCHMARK {
-        QScriptValueIterator it(obj);
-        while (it.hasNext()) {
-            it.next();
-            (void)it.scriptName();
+        for (int i = 0; i < iterationNumberIterate; ++i) {
+            QScriptValueIterator it(obj);
+            while (it.hasNext()) {
+                it.next();
+                (void)it.scriptName();
+            }
         }
     }
 }
-- 
cgit v0.12


From a3d3d2b746f515e197a40a9f87e767d68e25cb1a Mon Sep 17 00:00:00 2001
From: Dominik Holland <dominik.holland@nokia.com>
Date: Tue, 9 Feb 2010 10:58:48 +0100
Subject: Fix Float Conversion in xmlpatterns

On Maemo5 devices there is an automatic conversion to Float.
So qtToXDMType() needs a special case.

Reviewed By: Peter Hartmann
---
 src/xmlpatterns/data/qatomicvalue.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp
index 6858e27..c4f3578 100644
--- a/src/xmlpatterns/data/qatomicvalue.cpp
+++ b/src/xmlpatterns/data/qatomicvalue.cpp
@@ -226,6 +226,8 @@ ItemType::Ptr AtomicValue::qtToXDMType(const QXmlItem &item)
         /* Fallthrough. */
         case QVariant::Time:
             return BuiltinTypes::xsDateTime;
+        case QMetaType::Float:
+	    return BuiltinTypes::xsFloat;
         case QVariant::Double:
             return BuiltinTypes::xsDouble;
         default:
-- 
cgit v0.12


From 709238ecfefdea82ec192267a4a33180078dbad8 Mon Sep 17 00:00:00 2001
From: Aleksandar Sasha Babic <aleksandar.babic@nokia.com>
Date: Tue, 9 Feb 2010 11:58:08 +0100
Subject: Setting some parameters to reliably run on Tb9.2,

Tb 9.2 ATM is more memory sensitive.

Reviewed-by: TrustMe
---
 .../benchmarks/qgraphicsview/tst_qgraphicsview.cpp | 28 ++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
index 4cb07db..10e00a6 100644
--- a/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/benchmarks/qgraphicsview/tst_qgraphicsview.cpp
@@ -555,7 +555,11 @@ void tst_QGraphicsView::imageRiver()
     QFile file(":/random.data");
     QVERIFY(file.open(QIODevice::ReadOnly));
     QDataStream str(&file);
+#if defined(Q_OS_SYMBIAN)
+    for (int i = 0; i < 50; ++i) {
+#else
     for (int i = 0; i < 100; ++i) {
+#endif
         AnimatedPixmapItem *item;
         if (direction == 0) item = new AnimatedPixmapItem((i % 4) + 1, 0, rotation, scale);
         if (direction == 1) item = new AnimatedPixmapItem(0, (i % 4) + 1, rotation, scale);
@@ -574,7 +578,11 @@ void tst_QGraphicsView::imageRiver()
 #ifdef CALLGRIND_DEBUG
         CALLGRIND_START_INSTRUMENTATION
 #endif
+#if defined(Q_OS_SYMBIAN)
+        for (int i = 0; i < 50; ++i) {
+#else
         for (int i = 0; i < 100; ++i) {
+#endif
             scene.advance();
             while (view.count < (i+1))
                 qApp->processEvents();
@@ -669,7 +677,11 @@ void tst_QGraphicsView::textRiver()
     QFile file(":/random.data");
     QVERIFY(file.open(QIODevice::ReadOnly));
     QDataStream str(&file);
+#if defined(Q_OS_SYMBIAN)
+    for (int i = 0; i < 50; ++i) {
+#else
     for (int i = 0; i < 100; ++i) {
+#endif
         AnimatedTextItem *item;
         if (direction == 0) item = new AnimatedTextItem((i % 4) + 1, 0, rotation, scale);
         if (direction == 1) item = new AnimatedTextItem(0, (i % 4) + 1, rotation, scale);
@@ -687,7 +699,11 @@ void tst_QGraphicsView::textRiver()
 #ifdef CALLGRIND_DEBUG
         CALLGRIND_START_INSTRUMENTATION
 #endif
+#if defined(Q_OS_SYMBIAN)
+        for (int i = 0; i < 50; ++i) {
+#else
         for (int i = 0; i < 100; ++i) {
+#endif
             scene.advance();
             while (view.count < (i+1))
                 qApp->processEvents();
@@ -771,7 +787,11 @@ void tst_QGraphicsView::moveItemCache()
     QFile file(":/random.data");
     QVERIFY(file.open(QIODevice::ReadOnly));
     QDataStream str(&file);
+#if defined(Q_OS_SYMBIAN)
+    for (int i = 0; i < 5; ++i) {
+#else
     for (int i = 0; i < 50; ++i) {
+#endif
         AnimatedPixmapCacheItem *item;
         if (direction == 0) item = new AnimatedPixmapCacheItem((i % 4) + 1, 0);
         if (direction == 1) item = new AnimatedPixmapCacheItem(0, (i % 4) + 1);
@@ -793,7 +813,11 @@ void tst_QGraphicsView::moveItemCache()
 #ifdef CALLGRIND_DEBUG
         CALLGRIND_START_INSTRUMENTATION
 #endif
+#if defined(Q_OS_SYMBIAN)
+        for (int i = 0; i < 50; ++i) {
+#else
         for (int i = 0; i < 100; ++i) {
+#endif
             scene.advance();
             while (view.count < (i+1))
                 qApp->processEvents();
@@ -893,7 +917,11 @@ void tst_QGraphicsView::paintItemCache()
 #ifdef CALLGRIND_DEBUG
         CALLGRIND_START_INSTRUMENTATION
 #endif
+#if defined(Q_OS_SYMBIAN)
+        for (int i = 0; i < 5; ++i) {
+#else
         for (int i = 0; i < 50; ++i) {
+#endif
             scene.advance();
             while (view.count < (i+1))
                 qApp->processEvents();
-- 
cgit v0.12


From 16f89107f9c8019b05d5ccee1b6deccfdff6f98e Mon Sep 17 00:00:00 2001
From: Frederik Schwarzer <schwarzerf@gmail.com>
Date: Tue, 9 Feb 2010 11:57:58 +0100
Subject: fix a few mistakes in German translation

Merge-request: 2302
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
---
 translations/qt_de.ts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index 8cbf402..6447451 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -7572,7 +7572,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
         <location line="+2"/>
         <source>Play movie in full-screen mode</source>
         <comment>Media controller element</comment>
-        <translation>FIlm im Vollbildmodus abspielen</translation>
+        <translation>Film im Vollbildmodus abspielen</translation>
     </message>
     <message>
         <location line="+2"/>
@@ -8245,7 +8245,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
     <message>
         <location filename="../src/xmlpatterns/api/qcoloringmessagehandler.cpp" line="+87"/>
         <source>Warning in %1, at line %2, column %3: %4</source>
-        <translation>Fehler in %1, bei Zeile %2, Spalte %3: %4</translation>
+        <translation>Warnung in %1, bei Zeile %2, Spalte %3: %4</translation>
     </message>
     <message>
         <location line="+7"/>
@@ -9466,7 +9466,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
         <location line="-470"/>
         <location line="+451"/>
         <source>%1 is not allowed to derive from %2 by list as the latter defines it as final.</source>
-        <translation>%1 darf nicht durch Listen von %2 abgeleitet werden, da sie letzterer sie als final deklariert.</translation>
+        <translation>%1 darf nicht durch Listen von %2 abgeleitet werden, da letzterer sie als final deklariert.</translation>
     </message>
     <message>
         <location line="-431"/>
@@ -9917,7 +9917,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
     <message>
         <location line="+6"/>
         <source>Complex type %1 cannot be derived by extension from %2 as the latter contains %3 element in its content model.</source>
-        <translation>Der komplexe Typ % kann nicht durch Erweiterung von %2 abgeleitet werden, da letzterer ein &apos;%3&apos;-Element in seinem Inhaltsmodell hat.</translation>
+        <translation>Der komplexe Typ %1 kann nicht durch Erweiterung von %2 abgeleitet werden, da letzterer ein &apos;%3&apos;-Element in seinem Inhaltsmodell hat.</translation>
     </message>
     <message>
         <location line="+101"/>
-- 
cgit v0.12


From 9be25c3847bb90eb2a6cf9cd6d357e83b7ad89a2 Mon Sep 17 00:00:00 2001
From: Martin Smith <msmith@trolltech.com>
Date: Tue, 9 Feb 2010 13:13:31 +0100
Subject: doc:	Updated deployment OS X requirements for 4.6

Beginning with Qt 4.6, OS X 103 (Panther) is no longer supported.
---
 doc/src/deployment/deployment.qdoc    | 84 +++++++++++++----------------------
 doc/src/platforms/platform-notes.qdoc |  3 ++
 2 files changed, 33 insertions(+), 54 deletions(-)

diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index 575a6dc..9557365 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -963,14 +963,14 @@
 
     \title Deploying an Application on Mac OS X
 
-    Starting with version 4.5, Qt now includes a \l {macdeploy}{deployment tool}
-    that automates the prodecures described in this document.
-
-    This documentation will describe how to create a bundle, and how
-    to make sure that the application will find the resources it needs
-    at run-time. We will demonstrate the procedures in terms of
-    deploying the \l {tools/plugandpaint}{Plug & Paint} application
-    that is provided in Qt's examples directory.
+    Beginning with Qt 4.5, a \l {macdeploy}{deployment tool} is
+    included that automates the prodecures described here.
+
+    This document describes how to create a bundle and how to make
+    sure that the application will find the resources it needs at
+    run-time. We demonstrate the procedures in terms of deploying the
+    \l {tools/plugandpaint}{Plug & Paint} application that is provided
+    in Qt's examples directory.
     
     \tableofcontents
 
@@ -1380,63 +1380,38 @@
 
     \section2 Mac OS X Version Dependencies
 
-    Qt 4.2 has been designed to be built and deployed on Mac OS X 10.3
-    up until the current version as of this writing, Mac OS X 10.4 and
-    all their minor releases. Qt achieves this by using "weak
-    linking." This means that Qt tests if a function added in newer
-    versions of Mac OS X is available on the computer it is running on
-    before it uses it. This results in getting access to newer
-    features when running on newer versions of OS X while still
-    remaining compatible on older versions.
+    From Qt 4.6, Mac OS X 10.3 (Panther) is no longer supported.  Qt
+    4.6 applications can be built and deployed on Mac OS X 10.4
+    (Tiger) and higher. This is achieved using \e{weak linking}. In
+    \e{weak linking}, Qt tests whether a function added in a newer
+    version of Mac OS X is available on the computer it is running
+    on. This allows Qt to use newer features, when it runs on a newer
+    version of OS X, while remaining compatible on the older versions.
 
     For more information about cross development issues on Mac OS X,
     see \l
     {http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/index.html}{Apple's Developer Website}.
 
-    Since the linker is set to be compatible with all OS X version, you have to
-    change the \c MACOSX_DEPLOYMENT_TARGET environment variable to get weak
-    linking to work for your application. You can add:
+    Since the linker is set to be compatible with all OS X versions,
+    you must change the \c MACOSX_DEPLOYMENT_TARGET environment
+    variable to get \e{weak linking} to work for your application. You
+    can add:
 
     \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51
 
-    to your .pro file and qmake will take care of this for you.
-
-    However, there is a bit of a wrinkle to keep in mind when your are
-    deploying. Mac OS X 10.4 ("Tiger") ships GCC 4.0 as its default
-    compiler. This is also the GCC compiler we use for building the
-    binary Qt package. If you use GCC 4.0 to build your application,
-    it will link against a dynamic libstdc++ that is only available on
-    Mac OS X 10.4 and Mac OS X 10.3.9.  The application will refuse to
-    run on older versions of the operating system.
+    to your .pro file, and qmake will take care of this for you.
 
     For more information about C++ runtime environment, see \l
     {http://developer.apple.com/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/index.html}{Apple's Developer Website}
 
-    If you want to deploy to versions of Mac OS X earlier than 10.3.9,
-    you must build with GCC 3.3 which is the default on Mac OS X
-    10.3. GCC 3.3 is also available on the Mac OS X 10.4 "Xcode Tools"
-    CD and as a download for earlier versions of Mac OS X from Apple
-    (\l {https://connect.apple.com/}{connect.apple.com}). You can use
-    Apple's \c gcc_select(1) command line tool to switch the default
-    complier on your system.
-
     \section3 Deploying Phonon Applications on Mac OS X
 
     \list
-        \o If you build your Phonon application on Tiger, it will work on
-           Tiger, Leopard and Panther.
-        \o If you build your application on Leopard, it will \bold not work
-        on Panther unless you rename the libraries with the following command
-        after you have built your application:
-
-        \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51a
 
-        This command must be invoked in the directory where
-        \c{libphonon_qt7.dylib} is located, usually in 
-        \c{yourapp.app/Contents/plugins/phonon_backend/}.
-        \o The \l {macdeploy}{deployment tool} will perform this step for you.
+        \o If you build your Qt 4.6 Phonon application on OS X 10.4
+           (Tiger), it will run on OS X 10.4 and higher.
 
-        \o If you are using Leopard, but would like to build your application
+        \o If you are using Leopard but would like to build your application
         against Tiger, you can use:
 
         \snippet doc/src/snippets/code/doc_src_deployment.qdoc 51b
@@ -1444,12 +1419,13 @@
 
     \section2 Architecture Dependencies
 
-    The Qt for Mac OS X libraries, tools, and examples can be built "universal"
-    (i.e. they run natively on both Intel and PowerPC machines).  This
-    is accomplished by passing \c -universal on the \c configure line
-    of the source package, and requires that you use GCC 4.0.x. On
-    PowerPC hardware you will need to pass the universal SDK as a
-    command line argument to the Qt configure command. For example:
+    The Qt for Mac OS X libraries, tools, and examples can be built
+    "universal" (i.e. they run natively on both Intel and PowerPC
+    machines).  This is accomplished by passing \c -universal on the
+    \c configure line of the source package, and requires that you use
+    GCC 4.0.x. On PowerPC hardware you will need to pass the universal
+    SDK as a command line argument to the Qt configure command. For
+    example:
 
     \snippet doc/src/snippets/code/doc_src_deployment.qdoc 52
 
diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc
index e08bf1a..f513181 100644
--- a/doc/src/platforms/platform-notes.qdoc
+++ b/doc/src/platforms/platform-notes.qdoc
@@ -293,6 +293,9 @@
 
     \section1 General Information
 
+    Qt 4.6 applications can only be deployed on Mac OS X 10.4 (Tiger)
+    and higher. 
+
     Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up.
     Applications built against these version of Qt can be deployed on Mac OS X
     10.3, but cannot be developed on that version of the operating system due
-- 
cgit v0.12


From 4519080aacc480acea59758e4ca4efeed599aaec Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 11:06:44 +0100
Subject: demo browser: Fix the way warnings were (not) displayed

Reviewed-by: TrustMe
---
 demos/browser/browser.pro              | 2 --
 demos/browser/networkaccessmanager.cpp | 3 ++-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/demos/browser/browser.pro b/demos/browser/browser.pro
index a42aa60..f038c61 100644
--- a/demos/browser/browser.pro
+++ b/demos/browser/browser.pro
@@ -6,8 +6,6 @@ CONFIG += qt warn_on
 contains(QT_BUILD_PARTS, tools):!embedded: CONFIG += uitools
 else: DEFINES += QT_NO_UITOOLS
 
-release:DEFINES+=QT_NO_DEBUG_OUTPUT QT_NO_WARNING_OUTPUT
-
 FORMS += \
     addbookmarkdialog.ui \
     bookmarks.ui \
diff --git a/demos/browser/networkaccessmanager.cpp b/demos/browser/networkaccessmanager.cpp
index b0b00a2..70a9305 100644
--- a/demos/browser/networkaccessmanager.cpp
+++ b/demos/browser/networkaccessmanager.cpp
@@ -112,8 +112,9 @@ void NetworkAccessManager::requestFinished(QNetworkReply *reply)
     double pctCached = (double(requestFinishedFromCacheCount) * 100.0/ double(requestFinishedCount));
     double pctPipelined = (double(requestFinishedPipelinedCount) * 100.0/ double(requestFinishedCount));
     double pctSecure = (double(requestFinishedSecureCount) * 100.0/ double(requestFinishedCount));
+#ifdef QT_DEBUG
     qDebug("STATS [%lli requests total] [%3.2f%% from cache] [%3.2f%% pipelined] [%3.2f%% SSL/TLS]", requestFinishedCount, pctCached, pctPipelined, pctSecure);
-
+#endif
 }
 
 void NetworkAccessManager::loadSettings()
-- 
cgit v0.12


From 74d3ef60ac8dfa12c90442062307e0c4b2600d03 Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 11:29:24 +0100
Subject: Demo browser: Better handleUnsupportedContent implementation

Do warnings instead of downloads for sub resources.
Show error message for main resources.

Reviewed-by: Tor Arne
---
 demos/browser/webview.cpp | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/demos/browser/webview.cpp b/demos/browser/webview.cpp
index 1a7e38a..2f9b3e6 100644
--- a/demos/browser/webview.cpp
+++ b/demos/browser/webview.cpp
@@ -143,11 +143,19 @@ QObject *WebPage::createPlugin(const QString &classId, const QUrl &url, const QS
 
 void WebPage::handleUnsupportedContent(QNetworkReply *reply)
 {
-    if (reply->error() == QNetworkReply::NoError) {
-        BrowserApplication::downloadManager()->handleUnsupportedContent(reply);
+    QString errorString = reply->errorString();
+
+    if (m_loadingUrl != reply->url()) {
+        // sub resource of this page
+        qWarning() << "Resource" << reply->url().toEncoded() << "has unknown Content-Type, will be ignored.";
+        reply->deleteLater();
         return;
     }
 
+    if (reply->error() == QNetworkReply::NoError && !reply->header(QNetworkRequest::ContentTypeHeader).isValid()) {
+        errorString = "Unknown Content-Type";
+    }
+
     QFile file(QLatin1String(":/notfound.html"));
     bool isOpened = file.open(QIODevice::ReadOnly);
     Q_ASSERT(isOpened);
@@ -156,7 +164,7 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply)
     QString title = tr("Error loading page: %1").arg(reply->url().toString());
     QString html = QString(QLatin1String(file.readAll()))
                         .arg(title)
-                        .arg(reply->errorString())
+                        .arg(errorString)
                         .arg(reply->url().toString());
 
     QBuffer imageBuffer;
-- 
cgit v0.12


From c034670d71247954eb918dfc84536ace02c33304 Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 12:56:55 +0100
Subject: QNAM HTTP: Improve parseStatus() of HTTP reply

Just read() instead us using peek() and bytesAvailable()

Reviewed-by: Peter Hartmann
---
 src/network/access/qhttpnetworkreply.cpp | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index a5223d1..b411467 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -425,11 +425,19 @@ qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
 {
     qint64 bytes = 0;
     char c;
+    qint64 haveRead = 0;
+
+    do {
+        haveRead = socket->read(&c, 1);
+        if (haveRead == -1)
+            return -1; // unexpected EOF
+        else if (haveRead == 0)
+            break; // read more later
+
+        bytes++;
 
-    while (socket->bytesAvailable()) {
         // allow both CRLF & LF (only) line endings
-        if (socket->peek(&c, 1) == 1 && c == '\n') {
-            bytes += socket->read(&c, 1); // read the "n"
+        if (c == '\n') {
             // remove the CR at the end
             if (fragment.endsWith('\r')) {
                 fragment.truncate(fragment.length()-1);
@@ -442,11 +450,6 @@ qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
             }
             break;
         } else {
-            c = 0;
-            int haveRead = socket->read(&c, 1);
-            if (haveRead == -1)
-                return -1;
-            bytes += haveRead;
             fragment.append(c);
         }
 
@@ -456,8 +459,7 @@ qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
             fragment.clear();
             return -1;
         }
-
-    }
+    } while (haveRead == 1);
 
     return bytes;
 }
-- 
cgit v0.12


From 1263253f298b4cb3f0679cc67b010766b58a4fd9 Mon Sep 17 00:00:00 2001
From: Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
Date: Tue, 9 Feb 2010 13:21:44 +0200
Subject: Add QSKIP to functionEntryAndExit_builtin.

The function fails on Mac and Windows, but it will be fixed in next JSC
update. Lets skip it for now.

Reviewed-by: Kent Hansen
---
 tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp b/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp
index 8e26696..ac9ca46 100644
--- a/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp
+++ b/tests/auto/qscriptengineagent/tst_qscriptengineagent.cpp
@@ -832,6 +832,7 @@ void tst_QScriptEngineAgent::functionEntryAndExit_builtin_data()
 /** check behaiviour of built-in function */
 void tst_QScriptEngineAgent::functionEntryAndExit_builtin()
 {
+    QSKIP("The test fails on platforms others than Linux. The issue will be fixed with next JSC update", SkipAll);
     QFETCH(QString, script);
     QFETCH(QString, result);
     QScriptEngine eng;
-- 
cgit v0.12


From f38f61df31b708e1f4e50c5fdcc30099f9a1fe8f Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 9 Feb 2010 12:46:41 +0100
Subject: =?UTF-8?q?Fix=20warnings=20~QX11PixmapData():=20QPixmap=20objects?=
 =?UTF-8?q?=20must=20be=20destroyed..=20Reviewed-by:=20Trond=20Kjern=C3=A5?=
 =?UTF-8?q?sen=20<trond@trolltech.com>=20Task-number:=20QTBUG-8046?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tools/designer/src/lib/shared/actionrepository.cpp | 21 ++++++++++-----------
 tools/designer/src/lib/shared/actionrepository_p.h |  9 +++++++--
 tools/designer/src/lib/shared/iconloader.cpp       |  3 +--
 tools/designer/src/lib/shared/qdesigner_menu.cpp   | 11 +++++------
 tools/designer/src/lib/shared/qdesigner_menu_p.h   |  2 ++
 5 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/tools/designer/src/lib/shared/actionrepository.cpp b/tools/designer/src/lib/shared/actionrepository.cpp
index e3ff2c1..1076ff4 100644
--- a/tools/designer/src/lib/shared/actionrepository.cpp
+++ b/tools/designer/src/lib/shared/actionrepository.cpp
@@ -77,18 +77,12 @@ static inline QAction *actionOfItem(const QStandardItem* item)
     return qvariant_cast<QAction*>(item->data(qdesigner_internal::ActionModel::ActionRole));
 }
 
-static QIcon fixActionIcon(const QIcon &icon)
-{
-    if (icon.isNull())
-        return qdesigner_internal::emptyIcon();
-    return icon;
-}
-
 namespace qdesigner_internal {
 
 // ----------- ActionModel
 ActionModel::ActionModel(QWidget *parent ) :
     QStandardItemModel(parent),
+    m_emptyIcon(emptyIcon()),
     m_core(0)
 {
     QStringList headers;
@@ -127,7 +121,7 @@ void ActionModel::update(int row)
     for (int i = 0; i < NumColumns; i++)
        list += item(row, i);
 
-    setItems(m_core, actionOfItem(list.front()), list);
+    setItems(m_core, actionOfItem(list.front()), m_emptyIcon, list);
 }
 
 void ActionModel::remove(int row)
@@ -150,7 +144,7 @@ QModelIndex ActionModel::addAction(QAction *action)
         item->setFlags(flags);
         items.push_back(item);
     }
-    setItems(m_core, action, items);
+    setItems(m_core, action, m_emptyIcon, items);
     appendRow(items);
     return indexFromItem(items.front());
 }
@@ -185,7 +179,9 @@ PropertySheetKeySequenceValue ActionModel::actionShortCut(const QDesignerPropert
     return qvariant_cast<PropertySheetKeySequenceValue>(sheet->property(index));
 }
 
-void  ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action, QStandardItemList &sl)
+void  ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
+                            const QIcon &defaultIcon,
+                            QStandardItemList &sl)
 {
 
     // Tooltip, mostly for icon view mode
@@ -200,7 +196,10 @@ void  ActionModel::setItems(QDesignerFormEditorInterface *core, QAction *action,
 
     QStandardItem *item =  sl[NameColumn];
     item->setText(action->objectName());
-    item->setIcon(fixActionIcon(action->icon()));
+    QIcon icon = action->icon();
+    if (icon.isNull())
+        icon = defaultIcon;
+    item->setIcon(icon);
     item->setToolTip(firstTooltip);
     item->setWhatsThis(firstTooltip);
     // Used
diff --git a/tools/designer/src/lib/shared/actionrepository_p.h b/tools/designer/src/lib/shared/actionrepository_p.h
index 65adc5d..6e17e7b 100644
--- a/tools/designer/src/lib/shared/actionrepository_p.h
+++ b/tools/designer/src/lib/shared/actionrepository_p.h
@@ -59,6 +59,7 @@
 #include <QtGui/QTreeView>
 #include <QtGui/QListView>
 #include <QtGui/QStackedWidget>
+#include <QtGui/QIcon>
 
 QT_BEGIN_NAMESPACE
 
@@ -110,10 +111,14 @@ signals:
     void resourceImageDropped(const QString &path, QAction *action);
 
 private:
+    typedef QList<QStandardItem *> QStandardItemList;
+
     void initializeHeaders();
+    static void setItems(QDesignerFormEditorInterface *core, QAction *a,
+                         const QIcon &defaultIcon,
+                         QStandardItemList &sl);
 
-    typedef QList<QStandardItem *> QStandardItemList;
-    static void setItems(QDesignerFormEditorInterface *core, QAction *a, QStandardItemList &sl);
+    const QIcon m_emptyIcon;
 
     QDesignerFormEditorInterface *m_core;
 };
diff --git a/tools/designer/src/lib/shared/iconloader.cpp b/tools/designer/src/lib/shared/iconloader.cpp
index df0bb7e..ed312b8 100644
--- a/tools/designer/src/lib/shared/iconloader.cpp
+++ b/tools/designer/src/lib/shared/iconloader.cpp
@@ -70,8 +70,7 @@ QDESIGNER_SHARED_EXPORT QIcon createIconSet(const QString &name)
 
 QDESIGNER_SHARED_EXPORT QIcon emptyIcon()
 {
-    static const QIcon empty_icon(QLatin1String(":/trolltech/formeditor/images/emptyicon.png"));
-    return  empty_icon;
+    return QIcon(QLatin1String(":/trolltech/formeditor/images/emptyicon.png"));
 }
 
 } // namespace qdesigner_internal
diff --git a/tools/designer/src/lib/shared/qdesigner_menu.cpp b/tools/designer/src/lib/shared/qdesigner_menu.cpp
index c83abad..ba512e4 100644
--- a/tools/designer/src/lib/shared/qdesigner_menu.cpp
+++ b/tools/designer/src/lib/shared/qdesigner_menu.cpp
@@ -88,6 +88,7 @@ static inline void extendClickableArea(QRect *subMenuRect, Qt::LayoutDirection d
 
 QDesignerMenu::QDesignerMenu(QWidget *parent) :
     QMenu(parent),
+    m_subMenuPixmap(QPixmap(QLatin1String(":/trolltech/formeditor/images/submenu.png"))),
     m_currentIndex(0),
     m_addItem(new SpecialMenuAction(this)),
     m_addSeparator(new SpecialMenuAction(this)),
@@ -550,11 +551,10 @@ void QDesignerMenu::deleteAction(QAction *a)
 
 QRect QDesignerMenu::subMenuPixmapRect(QAction *action) const
 {
-    static const QPixmap pm(QLatin1String(":/trolltech/formeditor/images/submenu.png"));
     const QRect g = actionGeometry(action);
-    const int x = layoutDirection() == Qt::LeftToRight ? (g.right() - pm.width() - 2) : 2;
-    const int y = g.top() + (g.height() - pm.height())/2 + 1;
-    return QRect(x, y, pm.width(), pm.height());
+    const int x = layoutDirection() == Qt::LeftToRight ? (g.right() - m_subMenuPixmap.width() - 2) : 2;
+    const int y = g.top() + (g.height() - m_subMenuPixmap.height())/2 + 1;
+    return QRect(x, y, m_subMenuPixmap.width(), m_subMenuPixmap.height());
 }
 
 bool QDesignerMenu::hasSubMenuPixmap(QAction *action) const
@@ -591,8 +591,7 @@ void QDesignerMenu::paintEvent(QPaintEvent *event)
 
             p.fillRect(g, lg);
         } else if (hasSubMenuPixmap(a)) {
-            static const QPixmap pm(QLatin1String(":/trolltech/formeditor/images/submenu.png"));
-            p.drawPixmap(subMenuPixmapRect(a).topLeft(), pm);
+            p.drawPixmap(subMenuPixmapRect(a).topLeft(), m_subMenuPixmap);
         }
     }
 
diff --git a/tools/designer/src/lib/shared/qdesigner_menu_p.h b/tools/designer/src/lib/shared/qdesigner_menu_p.h
index 9c9a311..ae1e0e7 100644
--- a/tools/designer/src/lib/shared/qdesigner_menu_p.h
+++ b/tools/designer/src/lib/shared/qdesigner_menu_p.h
@@ -57,6 +57,7 @@
 
 #include <QtGui/QAction>
 #include <QtGui/QMenu>
+#include <QtGui/QPixmap>
 #include <QtCore/QHash>
 
 QT_BEGIN_NAMESPACE
@@ -183,6 +184,7 @@ protected:
 private:
     bool hideSubMenuOnCursorKey();
     bool showSubMenuOnCursorKey();
+    const QPixmap m_subMenuPixmap;
 
     QPoint m_startPosition;
     int m_currentIndex;
-- 
cgit v0.12


From 884a36d300bbe9068d912550a4aeb581f8ce8b37 Mon Sep 17 00:00:00 2001
From: Yoann Lopes <yoann.lopes@nokia.com>
Date: Tue, 9 Feb 2010 11:58:12 +0100
Subject: Fixed warnings and crash when painting graphics effects outside
 scene.

The problem was that when an item had a QGraphicsEffect on itself and
that item was outside of the sceneRect, the cached pixmap of the item
was just an empty pixmap (when using DeviceCoordinates mode). Therefore
the effect filter was trying to paint into an unformatted and empty
image. Now, paint() for all pixmap filters just return immediatly when
the pixmap is empty.

Task-number: QTBUG-5358
Reviewed-by: sroedal
---
 src/gui/image/qpixmapfilter.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp
index 37a6a18..7cf942c 100644
--- a/src/gui/image/qpixmapfilter.cpp
+++ b/src/gui/image/qpixmapfilter.cpp
@@ -422,6 +422,9 @@ void QPixmapConvolutionFilter::draw(QPainter *painter, const QPointF &p, const Q
     if(d->kernelWidth<=0 || d->kernelHeight <= 0)
         return;
 
+    if (src.isNull())
+        return;
+
     QPixmapFilter *filter = painter->paintEngine() && painter->paintEngine()->isExtended() ?
         static_cast<QPaintEngineEx *>(painter->paintEngine())->pixmapFilter(type(), this) : 0;
     QPixmapConvolutionFilter *convolutionFilter = static_cast<QPixmapConvolutionFilter*>(filter);
@@ -902,6 +905,9 @@ void QPixmapBlurFilter::draw(QPainter *painter, const QPointF &p, const QPixmap
     if (!painter->isActive())
         return;
 
+    if (src.isNull())
+        return;
+
     QRectF srcRect = rect;
     if (srcRect.isNull())
         srcRect = src.rect();
@@ -1082,6 +1088,10 @@ void QPixmapColorizeFilter::setStrength(qreal strength)
 void QPixmapColorizeFilter::draw(QPainter *painter, const QPointF &dest, const QPixmap &src, const QRectF &srcRect) const
 {
     Q_D(const QPixmapColorizeFilter);
+
+    if (src.isNull())
+        return;
+
     QPixmapFilter *filter = painter->paintEngine() && painter->paintEngine()->isExtended() ?
         static_cast<QPaintEngineEx *>(painter->paintEngine())->pixmapFilter(type(), this) : 0;
     QPixmapColorizeFilter *colorizeFilter = static_cast<QPixmapColorizeFilter*>(filter);
@@ -1312,6 +1322,10 @@ void QPixmapDropShadowFilter::draw(QPainter *p,
                                    const QRectF &src) const
 {
     Q_D(const QPixmapDropShadowFilter);
+
+    if (px.isNull())
+        return;
+
     QPixmapFilter *filter = p->paintEngine() && p->paintEngine()->isExtended() ?
         static_cast<QPaintEngineEx *>(p->paintEngine())->pixmapFilter(type(), this) : 0;
     QPixmapDropShadowFilter *dropShadowFilter = static_cast<QPixmapDropShadowFilter*>(filter);
-- 
cgit v0.12


From 997490b36b28bca877409de97a506c969840bc43 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Tue, 9 Feb 2010 13:05:09 +0100
Subject: QListView: fix crash when hiding many of the lasts item in a
 QListView

Since 6c1388ee5a3c4796d hidden items are not taken in account when
counting the scrollbar position, and so the vector may be smaller.

Reviewed-by: Gabriel
Task-number: QTBUG-7929
---
 src/gui/itemviews/qlistview.cpp        |  2 +-
 tests/auto/qlistview/tst_qlistview.cpp | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/gui/itemviews/qlistview.cpp b/src/gui/itemviews/qlistview.cpp
index 19b1e8c..b2def39 100644
--- a/src/gui/itemviews/qlistview.cpp
+++ b/src/gui/itemviews/qlistview.cpp
@@ -2160,7 +2160,7 @@ void QListModeViewBase::scrollContentsBy(int dx, int dy, bool scrollElasticBand)
     } else {
         if (flowPositions.isEmpty())
             return;
-        const int max = flowPositions.count() - 1;
+        const int max = scrollValueMap.count() - 1;
         if (vertical && flow() == QListView::TopToBottom && dy != 0) {
             int currentValue = qBound(0, verticalValue, max);
             int previousValue = qBound(0, currentValue + dy, max);
diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 7109213..1e6d36a 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -1834,6 +1834,23 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
         QVERIFY(index.isValid());
         QCOMPARE(index.row(), 2 * i + 1);
     }
+
+    //QTBUG-7929  should not crash
+    view.show();
+    QTest::qWaitForWindowShown(&view);
+    QScrollBar *bar = view.flow() == QListView::TopToBottom
+            ? view.verticalScrollBar() : view.horizontalScrollBar();
+
+    int nbVisibleItem = rowCount / 2 - bar->maximum();
+
+    bar->setValue(bar->maximum());
+    QApplication::processEvents();
+    for (int i = rowCount; i > rowCount / 2; i--) {
+        view.setRowHidden(i, true);
+    }
+    QApplication::processEvents();
+    QCOMPARE(bar->value(), bar->maximum());
+    QCOMPARE(bar->maximum(), rowCount/4 - nbVisibleItem);
 }
 
 void tst_QListView::taskQTBUG_633_changeModelData()
-- 
cgit v0.12


From 3b56735e8d90cb760bf56fc07fbd87e48ca08619 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Tue, 9 Feb 2010 13:38:18 +0100
Subject: Speed up QListView test

(from 31s to 7s)
---
 tests/auto/qlistview/tst_qlistview.cpp | 67 ++++++++++++++++------------------
 1 file changed, 32 insertions(+), 35 deletions(-)

diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 1e6d36a..2c31d8b 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -606,9 +606,8 @@ void tst_QListView::indexAt()
     view2.setWrapping(true);
     // We really want to make sure it is shown, because the layout won't be known until it is shown
     view2.show();
-    for (int i = 0; i < 5 && !view2.m_shown; ++i) {
-        QTest::qWait(500);
-    }
+    QTest::qWaitForWindowShown(&view2);
+    QTRY_VERIFY(view2.m_shown);
 
     QVERIFY(view2.m_index.isValid());
     QVERIFY(view2.m_index.row() != 0);
@@ -760,7 +759,8 @@ void tst_QListView::hideFirstRow()
     view.setUniformItemSizes(true);
     view.setRowHidden(0,true);
     view.show();
-    QTest::qWait(100);
+    QTest::qWaitForWindowShown(&view);
+    QTest::qWait(10);
 }
 
 void tst_QListView::batchedMode()
@@ -778,10 +778,9 @@ void tst_QListView::batchedMode()
     view.setBatchSize(2);
     view.resize(200,400);
     view.show();
+    QTest::qWaitForWindowShown(&view);
 
-#if !defined(Q_OS_WINCE)
-    QTest::qWait(100);
-#else
+#if defined(Q_OS_WINCE)
     QTest::qWait(2000);
 #endif
     QBitArray ba;
@@ -1203,9 +1202,9 @@ void tst_QListView::scrollTo()
     //we click the item
     QPoint p = lv.visualRect(index).center();
     QTest::mouseClick(lv.viewport(), Qt::LeftButton, Qt::NoModifier, p);
-    //let's wait 1 second because the scrolling is delayed
-    QTest::qWait(1000);
-    QCOMPARE(lv.visualRect(index).y(),0);
+    //let's wait because the scrolling is delayed
+    QTest::qWait(QApplication::doubleClickInterval() + 150);
+    QTRY_COMPARE(lv.visualRect(index).y(),0);
 
     //we scroll down. As the item is to tall for the view, it will disappear
     QTest::keyClick(lv.viewport(), Qt::Key_Down, Qt::NoModifier);
@@ -1222,9 +1221,9 @@ void tst_QListView::scrollTo()
     //we click the item
     p = lv.visualRect(index).center();
     QTest::mouseClick(lv.viewport(), Qt::LeftButton, Qt::NoModifier, p);
-    //let's wait 1 second because the scrolling is delayed
-    QTest::qWait(1000);
-    QCOMPARE(lv.visualRect(index).x(),0);
+    //let's wait because the scrolling is delayed
+    QTest::qWait(QApplication::doubleClickInterval() + 150);
+    QTRY_COMPARE(lv.visualRect(index).x(),0);
 
     //we scroll right. As the item is too wide for the view, it will disappear
     QTest::keyClick(lv.viewport(), Qt::Key_Right, Qt::NoModifier);
@@ -1243,9 +1242,9 @@ void tst_QListView::scrollTo()
     //we click the item
     p = lv.visualRect(index).center();
     QTest::mouseClick(lv.viewport(), Qt::LeftButton, Qt::NoModifier, p);
-    //let's wait 1 second because the scrolling is delayed
-    QTest::qWait(1000);
-    QCOMPARE(lv.visualRect(index).y(),0);
+    //let's wait because the scrolling is delayed
+    QTest::qWait(QApplication::doubleClickInterval() + 150);
+    QTRY_COMPARE(lv.visualRect(index).y(),0);
 
     //we scroll down. As the item is too tall for the view, it will partially disappear
     QTest::keyClick(lv.viewport(), Qt::Key_Down, Qt::NoModifier);
@@ -1277,7 +1276,7 @@ void tst_QListView::scrollBarRanges()
 
     for (int h = 30; h <= 210; ++h) {
         lv.resize(250, h);
-        QTest::qWait(100); // wait for the layout to be done
+        QApplication::processEvents(); // wait for the layout to be done
         int visibleRowCount = lv.viewport()->size().height() / rowHeight;
         int invisibleRowCount = rowCount - visibleRowCount;
         QCOMPARE(lv.verticalScrollBar()->maximum(), invisibleRowCount);
@@ -1366,7 +1365,7 @@ void tst_QListView::scrollBarAsNeeded()
 
         model.setStringList(list);
         QApplication::processEvents();
-        QTest::qWait(100);
+        QTest::qWait(50);
 
         QStringList replacement;
         for (i = 0; i < itemCount; ++i) {
@@ -1375,10 +1374,9 @@ void tst_QListView::scrollBarAsNeeded()
         model.setStringList(replacement);
 
         QApplication::processEvents();
-        QTest::qWait(100);
 
-        QCOMPARE(lv.horizontalScrollBar()->isVisible(), horizontalScrollBarVisible);
-        QCOMPARE(lv.verticalScrollBar()->isVisible(), verticalScrollBarVisible);
+        QTRY_COMPARE(lv.horizontalScrollBar()->isVisible(), horizontalScrollBarVisible);
+        QTRY_COMPARE(lv.verticalScrollBar()->isVisible(), verticalScrollBarVisible);
     }
 }
 
@@ -1433,10 +1431,9 @@ void tst_QListView::wordWrap()
     lv.setFixedSize(150, 150);
     lv.show();
     QApplication::processEvents();
-    QTest::qWait(100);
 
-    QCOMPARE(lv.horizontalScrollBar()->isVisible(), false);
-    QCOMPARE(lv.verticalScrollBar()->isVisible(), true);
+    QTRY_COMPARE(lv.horizontalScrollBar()->isVisible(), false);
+    QTRY_COMPARE(lv.verticalScrollBar()->isVisible(), true);
 }
 
 #if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
@@ -1557,7 +1554,8 @@ void tst_QListView::task248430_crashWith0SizedItem()
     QStringListModel model(QStringList() << QLatin1String("item1") << QString());
     view.setModel(&model);
     view.show();
-    QTest::qWait(100);
+    QTest::qWaitForWindowShown(&view);
+    QTest::qWait(20);
 }
 
 void tst_QListView::task250446_scrollChanged()
@@ -1569,21 +1567,21 @@ void tst_QListView::task250446_scrollChanged()
     QVERIFY(index.isValid());
     view.setCurrentIndex(index);
     view.show();
-    QTest::qWait(100);
+    QTest::qWaitForWindowShown(&view);
     const int scrollValue = view.verticalScrollBar()->maximum();
     view.verticalScrollBar()->setValue(scrollValue);
     QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
     QCOMPARE(view.currentIndex(), index);
 
     view.showMinimized();
-    QTest::qWait(100);
-    QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
-    QCOMPARE(view.currentIndex(), index);
+    QTest::qWait(50);
+    QTRY_COMPARE(view.verticalScrollBar()->value(), scrollValue);
+    QTRY_COMPARE(view.currentIndex(), index);
 
     view.showNormal();
-    QTest::qWait(100);
-    QCOMPARE(view.verticalScrollBar()->value(), scrollValue);
-    QCOMPARE(view.currentIndex(), index);
+    QTest::qWait(50);
+    QTRY_COMPARE(view.verticalScrollBar()->value(), scrollValue);
+    QTRY_COMPARE(view.currentIndex(), index);
 }
 
 void tst_QListView::task196118_visualRegionForSelection()
@@ -1699,7 +1697,7 @@ void tst_QListView::shiftSelectionWithNonUniformItemSizes()
         view.setViewMode(QListView::IconMode);
         view.setModel(&model);
         view.show();
-        QTest::qWait(30);
+        QTest::qWaitForWindowShown(&view);
 
         // Verfify that item sizes are non-uniform
         QVERIFY(view.sizeHintForIndex(model.index(0, 0)).height() > view.sizeHintForIndex(model.index(1, 0)).height());
@@ -1729,7 +1727,7 @@ void tst_QListView::shiftSelectionWithNonUniformItemSizes()
         view.setViewMode(QListView::IconMode);
         view.setModel(&model);
         view.show();
-        QTest::qWait(30);
+        QTest::qWaitForWindowShown(&view);
 
         // Verfify that item sizes are non-uniform
         QVERIFY(view.sizeHintForIndex(model.index(0, 0)).width() > view.sizeHintForIndex(model.index(1, 0)).width());
@@ -1789,7 +1787,6 @@ void tst_QListView::task262152_setModelColumnNavigate()
     view.show();
     QApplication::setActiveWindow(&view);
     QTest::qWaitForWindowShown(&view);
-    QTest::qWait(30);
     QTRY_COMPARE(static_cast<QWidget *>(&view), QApplication::activeWindow());
     QTest::keyClick(&view, Qt::Key_Down);
     QTest::qWait(30);
-- 
cgit v0.12


From 057532393ad96cd90a616cb7eccf762ddd0ff4dd Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 13:30:24 +0100
Subject: QNAM HTTP: Improve readHeader() of the HTTP reply

Just read() instead us using peek() and bytesAvailable()
Also don't use the obfuscated line ending checking code.

Reviewed-by: Peter Hartmann
---
 src/network/access/qhttpnetworkreply.cpp | 36 ++++++++++++++++++++++----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index b411467..c56a3a3 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -505,17 +505,31 @@ qint64 QHttpNetworkReplyPrivate::readHeader(QAbstractSocket *socket)
     qint64 bytes = 0;
     char c = 0;
     bool allHeaders = false;
-    while (!allHeaders && socket->bytesAvailable()) {
-        if (socket->peek(&c, 1) == 1 && c == '\n') {
-            // check for possible header endings. As per HTTP rfc,
-            // the header endings will be marked by CRLFCRLF. But
-            // we will allow CRLFLF, LFLF & CRLFCRLF
-            if (fragment.endsWith("\n\r") || fragment.endsWith('\n'))
-                allHeaders = true;
+    qint64 haveRead = 0;
+    do {
+        haveRead = socket->read(&c, 1);
+        if (haveRead == 0) {
+            // read more later
+            break;
+        } else if (haveRead == -1) {
+            // connection broke down
+            return -1;
+        } else {
+            fragment.append(c);
+            bytes++;
+
+            if (c == '\n') {
+                // check for possible header endings. As per HTTP rfc,
+                // the header endings will be marked by CRLFCRLF. But
+                // we will allow CRLFCRLF, CRLFLF, LFLF
+                if (fragment.endsWith("\r\n\r\n")
+                    || fragment.endsWith("\r\n\n")
+                    || fragment.endsWith("\n\n"))
+                    allHeaders = true;
+            }
         }
-        bytes += socket->read(&c, 1);
-        fragment.append(c);
-    }
+    } while (!allHeaders && haveRead > 0);
+
     // we received all headers now parse them
     if (allHeaders) {
         parseHeader(fragment);
@@ -565,7 +579,7 @@ void QHttpNetworkReplyPrivate::parseHeader(const QByteArray &header)
         } while (i < header.count() && (header.at(i) == ' ' || header.at(i) == '\t'));
         if (i == -1)
             break; // something is wrong
-
+        qDebug() << "added header" << field << value;
         fields.append(qMakePair(field, value));
     }
 }
-- 
cgit v0.12


From 7177a8d02bdec25b1c64dd65c7c7f5803809a244 Mon Sep 17 00:00:00 2001
From: Peter Hartmann <peter.hartmann@nokia.com>
Date: Tue, 9 Feb 2010 13:54:33 +0100
Subject: QNetworkCookie(Jar): fix includes

we need to include the module preefix in public headers

Reviewed-by: Denis Dzyubenko
---
 src/network/access/qnetworkcookie.h    | 2 +-
 src/network/access/qnetworkcookiejar.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/network/access/qnetworkcookie.h b/src/network/access/qnetworkcookie.h
index f34396f..3cc4cee 100644
--- a/src/network/access/qnetworkcookie.h
+++ b/src/network/access/qnetworkcookie.h
@@ -114,7 +114,7 @@ Q_NETWORK_EXPORT QDebug operator<<(QDebug, const QNetworkCookie &);
 QT_END_NAMESPACE
 
 // ### Qt5 remove this include
-#include "qnetworkcookiejar.h"
+#include <QtNetwork/QNetworkCookieJar>
 
 Q_DECLARE_METATYPE(QNetworkCookie)
 Q_DECLARE_METATYPE(QList<QNetworkCookie>)
diff --git a/src/network/access/qnetworkcookiejar.h b/src/network/access/qnetworkcookiejar.h
index 813bf3e..8086f38 100644
--- a/src/network/access/qnetworkcookiejar.h
+++ b/src/network/access/qnetworkcookiejar.h
@@ -46,7 +46,7 @@
 #include <QtCore/QUrl>
 
 // ### Qt5 remove this include
-#include "qnetworkcookie.h"
+#include <QtNetwork/QNetworkCookie>
 
 QT_BEGIN_HEADER
 
-- 
cgit v0.12


From 9d8af1a5a11571d3f514e4ad73a0712ea5d89b0e Mon Sep 17 00:00:00 2001
From: Kent Hansen <kent.hansen@nokia.com>
Date: Tue, 9 Feb 2010 11:40:39 +0100
Subject: Skip test that crashes on win32-g++

---
 tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
index 147896e..9514cd6 100644
--- a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
+++ b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
@@ -245,6 +245,10 @@ tst_Suite::tst_Suite()
 
     addTestExclusion("string-case", "V8-specific behavior? (Doesn't pass on SpiderMonkey either)");
 
+#ifdef Q_CC_MINGW
+    addTestExclusion("date$", "QTBUG-7698: Date.prototype.setMonth() crashes on win32-g++");
+#endif
+
 #ifdef Q_OS_WINCE
     addTestExclusion("deep-recursion", "Demands too much memory on WinCE");
     addTestExclusion("nested-repetition-count-overflow", "Demands too much memory on WinCE");
-- 
cgit v0.12


From 416155f9078d9d055f72b383f7cce113cdc42645 Mon Sep 17 00:00:00 2001
From: Kent Hansen <kent.hansen@nokia.com>
Date: Tue, 9 Feb 2010 12:29:03 +0100
Subject: Add platform-specific expected failures for JS test suite

---
 .../qscriptjstestsuite/tst_qscriptjstestsuite.cpp  | 53 ++++++++++++++++++++++
 .../qscriptv8testsuite/tst_qscriptv8testsuite.cpp  | 10 ++++
 2 files changed, 63 insertions(+)

diff --git a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
index b2a85d7..ffcb56e 100644
--- a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
+++ b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
@@ -686,6 +686,59 @@ tst_Suite::tst_Suite()
     addExpectedFailure("ecma/Expressions/11.4.7-02.js", "-(-2147483648) == 2147483648", willFixInNextReleaseMessage);
     addExpectedFailure("ecma/TypeConversion/9.3.1-3.js", "- -\"0x80000000\"", willFixInNextReleaseMessage);
 
+#ifdef Q_OS_WIN
+    addExpectedFailure("ecma_3/Expressions/11.7.3-01.js", "11.7.3 - >>> should evaluate operands in order: order", "QTBUG-8056");
+    addExpectedFailure("ecma_3/Operators/order-01.js", "operator evaluation order: 11.7.3 >>>", "QTBUG-8056");
+    addExpectedFailure("ecma_3/Operators/order-01.js", "operator evaluation order: 11.13.2 >>>=", "QTBUG-8056");
+#endif
+
+#ifdef Q_OS_SOLARIS
+    addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = 1; VAR2= -0; VAR1 /= VAR2", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.5.2.js", "Number.POSITIVE_INFINITY / -0", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.5.2.js", "Number.NEGATIVE_INFINITY / -0", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.5.2.js", "1 / -0", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Expressions/11.5.2.js", "-1 / -0", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.10.js", "Math.log(-0.0000001)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.10.js", "Math.log(-1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.11.js", "Infinity/Math.max(-0,-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.12.js", "Infinity/Math.min(0,-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.12.js", "Infinity/Math.min(-0,-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(NaN,0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(NaN,-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Infinity/Math.pow(-Infinity, -1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(0, -1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(0, -0.5)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(0, -1000)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Infinity/Math.pow(-0, 1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Infinity/Math.pow(-0, 3)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(-0, -2)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.15.js", "Infinity/Math.round(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.15.js", "Infinity/Math.round(-0.49)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.15.js", "Infinity/Math.round(-0.5)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.17.js", "Infinity/Math.sqrt(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.18.js", "Infinity/Math.tan(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.2.js", "Math.acos(1.00000001)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.2.js", "Math.acos(11.00000001)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.3.js", "Math.asin(1.000001)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.3.js", "Math.asin(-1.000001)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.3.js", "Infinity/Math.asin(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.4.js", "Infinity/Math.atan(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(0, -0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Infinity/Math.atan2(-0, 1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(-0,\t-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(-0,\t-1)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.6.js", "Infinity/Math.ceil('-0')", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.6.js", "Infinity/Math.ceil(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.6.js", "Infinity/Math.ceil(-Number.MIN_VALUE)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.6.js", "Infinity/Math.ceil(-0.9)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.9.js", "Infinity/Math.floor(-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/TypeConversion/9.3.1-3.js", "var z = 0; print(1/-z)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/TypeConversion/9.3.1-3.js", "1/-1e-2000", willFixInNextReleaseMessage);
+#endif
+
     static const char klass[] = "tst_QScriptJsTestSuite";
 
     QVector<uint> *data = qt_meta_data_tst_Suite();
diff --git a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
index 9514cd6..a3dfd6c 100644
--- a/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
+++ b/tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
@@ -236,6 +236,16 @@ tst_Suite::tst_Suite()
     addExpectedFailure("global-const-var-conflicts", "false", "true", willFixInNextReleaseMessage);
     addExpectedFailure("string-lastindexof", "0", "-1", "test is wrong?");
 
+#ifndef Q_OS_LINUX
+    addExpectedFailure("to-precision", "1.235e+27", "1.234e+27", "QTBUG-8053: toPrecision(4) gives wrong result on Mac");
+#endif
+
+#ifdef Q_OS_SOLARIS
+    addExpectedFailure("math-min-max", "Infinity", "-Infinity", willFixInNextReleaseMessage);
+    addExpectedFailure("negate-zero", "false", "true", willFixInNextReleaseMessage);
+    addExpectedFailure("str-to-num", "Infinity", "-Infinity", willFixInNextReleaseMessage);
+#endif
+
     addTestExclusion("debug-*", "not applicable");
     addTestExclusion("mirror-*", "not applicable");
 
-- 
cgit v0.12


From 79a7572bf2aa42ca246cb7efd53e3dac2cd426bc Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 14:09:24 +0100
Subject: QNAM HTTP: Reserve bytes for HTTP parsing

Reviewed-by: Peter Hartmann
---
 src/network/access/qhttpnetworkreply.cpp | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index c56a3a3..6615410 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -423,6 +423,11 @@ int QHttpNetworkReplyPrivate::gunzipBodyPartially(QByteArray &compressed, QByteA
 
 qint64 QHttpNetworkReplyPrivate::readStatus(QAbstractSocket *socket)
 {
+    if (fragment.isEmpty()) {
+        // reserve bytes for the status line. This is better than always append() which reallocs the byte array
+        fragment.reserve(32);
+    }
+
     qint64 bytes = 0;
     char c;
     qint64 haveRead = 0;
@@ -502,6 +507,13 @@ bool QHttpNetworkReplyPrivate::parseStatus(const QByteArray &status)
 
 qint64 QHttpNetworkReplyPrivate::readHeader(QAbstractSocket *socket)
 {
+    if (fragment.isEmpty()) {
+        // according to http://dev.opera.com/articles/view/mama-http-headers/ the average size of the header
+        // block is 381 bytes.
+        // reserve bytes. This is better than always append() which reallocs the byte array.
+        fragment.reserve(512);
+    }
+
     qint64 bytes = 0;
     char c = 0;
     bool allHeaders = false;
-- 
cgit v0.12


From 169dd653a730342d90b39a0744d2c82d318d8d07 Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Tue, 9 Feb 2010 14:37:46 +0100
Subject: QNAM HTTP: Forgot to remove a qDebug()

Reviewed-by: TrustMe
---
 src/network/access/qhttpnetworkreply.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index 6615410..512c045 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -591,7 +591,7 @@ void QHttpNetworkReplyPrivate::parseHeader(const QByteArray &header)
         } while (i < header.count() && (header.at(i) == ' ' || header.at(i) == '\t'));
         if (i == -1)
             break; // something is wrong
-        qDebug() << "added header" << field << value;
+
         fields.append(qMakePair(field, value));
     }
 }
-- 
cgit v0.12


From 0a9c7a44c6a9ca134c7a23a33a9285787a7a6d19 Mon Sep 17 00:00:00 2001
From: Liang Qi <liang.qi@nokia.com>
Date: Tue, 9 Feb 2010 16:05:50 +0100
Subject: Fix tst_QAbstractItemView::task250754_fontChange and
 tst_QAbstractItemView::QTBUG6407_extendedSelection for Symbian & 5800

We should consider the difference between Point and Pixel for font size. And also the margin and some other settings in style for views.

Reviewed-by: TrustMe
---
 tests/auto/qabstractitemview/tst_qabstractitemview.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
index 504ceac..ea86c16 100644
--- a/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/qabstractitemview/tst_qabstractitemview.cpp
@@ -1213,14 +1213,14 @@ void tst_QAbstractItemView::task250754_fontChange()
     tree.setModel(m);
 
     w.show();
-    w.resize(150,150);
+    w.resize(150,240);
     QTest::qWait(30);
     QFont font = tree.font();
-    font.setPointSize(5);
+    font.setPixelSize(10);
     tree.setFont(font);
     QTRY_VERIFY(!tree.verticalScrollBar()->isVisible());
 
-    font.setPointSize(45);
+    font.setPixelSize(60);
     tree.setFont(font);
     //now with the huge items, the scrollbar must be visible
     QTRY_VERIFY(tree.verticalScrollBar()->isVisible());
@@ -1444,7 +1444,10 @@ void tst_QAbstractItemView::QTBUG6407_extendedSelection()
     for(int i = 0; i < 50; ++i)
         view.addItem(QString::number(i));
 
-    view.resize(200,200);
+    QFont font = view.font();
+    font.setPixelSize(10);
+    view.setFont(font);
+    view.resize(200,240);
 
     view.show();
     QApplication::setActiveWindow(&view);
-- 
cgit v0.12


From 43f76aaa733f66895fd672a9243e950d410ef918 Mon Sep 17 00:00:00 2001
From: Kent Hansen <kent.hansen@nokia.com>
Date: Tue, 9 Feb 2010 15:38:44 +0100
Subject: Add mingw-specific expected failures for JS test suite

---
 tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
index ffcb56e..41df98c 100644
--- a/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
+++ b/tests/auto/qscriptjstestsuite/tst_qscriptjstestsuite.cpp
@@ -683,8 +683,10 @@ tst_Suite::tst_Suite()
     addExpectedFailure("ecma_3/String/15.5.4.11.js", "Section 7", willFixInNextReleaseMessage);
     addExpectedFailure("ecma_3/String/15.5.4.11.js", "Section 26", willFixInNextReleaseMessage);
 
+#ifndef Q_CC_MINGW
     addExpectedFailure("ecma/Expressions/11.4.7-02.js", "-(-2147483648) == 2147483648", willFixInNextReleaseMessage);
     addExpectedFailure("ecma/TypeConversion/9.3.1-3.js", "- -\"0x80000000\"", willFixInNextReleaseMessage);
+#endif
 
 #ifdef Q_OS_WIN
     addExpectedFailure("ecma_3/Expressions/11.7.3-01.js", "11.7.3 - >>> should evaluate operands in order: order", "QTBUG-8056");
@@ -692,6 +694,15 @@ tst_Suite::tst_Suite()
     addExpectedFailure("ecma_3/Operators/order-01.js", "operator evaluation order: 11.13.2 >>>=", "QTBUG-8056");
 #endif
 
+#ifdef Q_CC_MINGW
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(NaN,0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.13.js", "Math.pow(NaN,-0)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(Infinity, Infinity)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(Infinity, -Infinity)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(-Infinity, Infinity)", willFixInNextReleaseMessage);
+    addExpectedFailure("ecma/Math/15.8.2.5.js", "Math.atan2(-Infinity, -Infinity)", willFixInNextReleaseMessage);
+#endif
+
 #ifdef Q_OS_SOLARIS
     addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1", willFixInNextReleaseMessage);
     addExpectedFailure("ecma/Expressions/11.13.2-2.js", "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", willFixInNextReleaseMessage);
-- 
cgit v0.12


From dadfdfaa320aa5951d8512428d59e762b0da79f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Tue, 9 Feb 2010 16:10:40 +0100
Subject: Fixed some global QIcon/QPixmap instances that leaked handles on X11.

Never ever create global cache objects that deletes QPixmaps when
destructed!

Task-number: QTBUG-8046
Reviewed-by: Friedemann Kleint
---
 src/gui/image/qicon.cpp                 | 17 +++++++++-----
 src/qt3support/dialogs/q3filedialog.cpp | 40 ++++++++++++++++++++-------------
 src/qt3support/itemviews/q3iconview.cpp | 13 ++++++++---
 src/qt3support/itemviews/q3listview.cpp |  3 ---
 4 files changed, 46 insertions(+), 27 deletions(-)

diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp
index ac1d303..bf6eb8d 100644
--- a/src/gui/image/qicon.cpp
+++ b/src/gui/image/qicon.cpp
@@ -104,6 +104,15 @@ QT_BEGIN_NAMESPACE
 
 static QBasicAtomicInt serialNumCounter = Q_BASIC_ATOMIC_INITIALIZER(1);
 
+static void qt_cleanup_icon_cache();
+typedef QCache<QString, QIcon> IconCache;
+Q_GLOBAL_STATIC_WITH_INITIALIZER(IconCache, qtIconCache, qAddPostRoutine(qt_cleanup_icon_cache))
+
+static void qt_cleanup_icon_cache()
+{
+    qtIconCache()->clear();
+}
+
 QIconPrivate::QIconPrivate()
     : engine(0), ref(1),
     serialNum(serialNumCounter.fetchAndAddRelaxed(1)),
@@ -963,15 +972,13 @@ QString QIcon::themeName()
 */
 QIcon QIcon::fromTheme(const QString &name, const QIcon &fallback)
 {
-    static QCache <QString, QIcon> iconCache;
-
     QIcon icon;
 
-    if (iconCache.contains(name)) {
-        icon = *iconCache.object(name);
+    if (qtIconCache()->contains(name)) {
+        icon = *qtIconCache()->object(name);
     } else {
         QIcon *cachedIcon  = new QIcon(new QIconLoaderEngine(name));
-        iconCache.insert(name, cachedIcon);
+        qtIconCache()->insert(name, cachedIcon);
         icon = *cachedIcon;
     }
 
diff --git a/src/qt3support/dialogs/q3filedialog.cpp b/src/qt3support/dialogs/q3filedialog.cpp
index 9b8e4d3..35f7890 100644
--- a/src/qt3support/dialogs/q3filedialog.cpp
+++ b/src/qt3support/dialogs/q3filedialog.cpp
@@ -475,9 +475,17 @@ static int sortFilesBy = (int)QDir::Name;
 static bool sortAscending = true;
 static bool detailViewMode = false;
 
-static Q3CleanupHandler<QPixmap> qfd_cleanup_pixmap;
 static Q3CleanupHandler<QString> qfd_cleanup_string;
 
+static void qt_cleanup_fd_pixmaps();
+typedef QList<QPixmap *> FDPixmaps;
+Q_GLOBAL_STATIC_WITH_INITIALIZER(FDPixmaps, qfd_pixmaps, qAddPostRoutine(qt_cleanup_fd_pixmaps))
+
+static void qt_cleanup_fd_pixmaps()
+{
+    qDeleteAll(*qfd_pixmaps());
+}
+
 static QString toRootIfNotExists( const QString &path )
 {
     if ( !path.isEmpty() )
@@ -533,37 +541,37 @@ static void makeVariables() {
         qfd_cleanup_string.add(&workingDirectory);
 
         openFolderIcon = new QPixmap((const char **)open_xpm);
-        qfd_cleanup_pixmap.add(&openFolderIcon);
+        qfd_pixmaps()->append(openFolderIcon);
         symLinkDirIcon = new QPixmap((const char **)link_dir_xpm);
-        qfd_cleanup_pixmap.add(&symLinkDirIcon);
+        qfd_pixmaps()->append(symLinkDirIcon);
         symLinkFileIcon = new QPixmap((const char **)link_file_xpm);
-        qfd_cleanup_pixmap.add(&symLinkFileIcon);
+        qfd_pixmaps()->append(symLinkFileIcon);
         fileIcon = new QPixmap((const char **)file_xpm);
-        qfd_cleanup_pixmap.add(&fileIcon);
+        qfd_pixmaps()->append(fileIcon);
         closedFolderIcon = new QPixmap((const char **)closed_xpm);
-        qfd_cleanup_pixmap.add(&closedFolderIcon);
+        qfd_pixmaps()->append(closedFolderIcon);
         detailViewIcon = new QPixmap((const char **)detailedview_xpm);
-        qfd_cleanup_pixmap.add(&detailViewIcon);
+        qfd_pixmaps()->append(detailViewIcon);
         multiColumnListViewIcon = new QPixmap((const char **)mclistview_xpm);
-        qfd_cleanup_pixmap.add(&multiColumnListViewIcon);
+        qfd_pixmaps()->append(multiColumnListViewIcon);
         cdToParentIcon = new QPixmap((const char **)cdtoparent_xpm);
-        qfd_cleanup_pixmap.add(&cdToParentIcon);
+        qfd_pixmaps()->append(cdToParentIcon);
         newFolderIcon = new QPixmap((const char **)newfolder_xpm);
-        qfd_cleanup_pixmap.add(&newFolderIcon);
+        qfd_pixmaps()->append(newFolderIcon);
         previewInfoViewIcon
             = new QPixmap((const char **)previewinfoview_xpm);
-        qfd_cleanup_pixmap.add(&previewInfoViewIcon);
+        qfd_pixmaps()->append(previewInfoViewIcon);
         previewContentsViewIcon
             = new QPixmap((const char **)previewcontentsview_xpm);
-        qfd_cleanup_pixmap.add(&previewContentsViewIcon);
+        qfd_pixmaps()->append(previewContentsViewIcon);
         startCopyIcon = new QPixmap((const char **)start_xpm);
-        qfd_cleanup_pixmap.add(&startCopyIcon);
+        qfd_pixmaps()->append(startCopyIcon);
         endCopyIcon = new QPixmap((const char **)end_xpm);
-        qfd_cleanup_pixmap.add(&endCopyIcon);
+        qfd_pixmaps()->append(endCopyIcon);
         goBackIcon = new QPixmap((const char **)back_xpm);
-        qfd_cleanup_pixmap.add(&goBackIcon);
+        qfd_pixmaps()->append(goBackIcon);
         fifteenTransparentPixels = new QPixmap(closedFolderIcon->width(), 1);
-        qfd_cleanup_pixmap.add(&fifteenTransparentPixels);
+        qfd_pixmaps()->append(fifteenTransparentPixels);
         QBitmap m(fifteenTransparentPixels->width(), 1);
         m.fill(Qt::color0);
         fifteenTransparentPixels->setMask(m);
diff --git a/src/qt3support/itemviews/q3iconview.cpp b/src/qt3support/itemviews/q3iconview.cpp
index 67c956e..683e3d6 100644
--- a/src/qt3support/itemviews/q3iconview.cpp
+++ b/src/qt3support/itemviews/q3iconview.cpp
@@ -132,14 +132,21 @@ static QPixmap *qiv_selection = 0;
 #endif
 static bool optimize_layout = false;
 
-static Q3CleanupHandler<QPixmap> qiv_cleanup_pixmap;
 
+static void qt_cleanup_iv_pixmaps();
+typedef QList<QPixmap *> IVPixmaps;
+Q_GLOBAL_STATIC_WITH_INITIALIZER(IVPixmaps, qiv_pixmaps, qAddPostRoutine(qt_cleanup_iv_pixmaps))
+
+static void qt_cleanup_iv_pixmaps()
+{
+    qDeleteAll(*qiv_pixmaps());
+}
 
 static QPixmap *get_qiv_buffer_pixmap(const QSize &s)
 {
     if (!qiv_buffer_pixmap) {
         qiv_buffer_pixmap = new QPixmap(s);
-        qiv_cleanup_pixmap.add(&qiv_buffer_pixmap);
+        qiv_pixmaps()->append(qiv_buffer_pixmap);
         return qiv_buffer_pixmap;
     }
 
@@ -2580,7 +2587,7 @@ Q3IconView::Q3IconView(QWidget *parent, const char *name, Qt::WindowFlags f)
 {
     if (!unknown_icon) {
         unknown_icon = new QPixmap((const char **)unknown_xpm);
-        qiv_cleanup_pixmap.add(&unknown_icon);
+        qiv_pixmaps()->append(unknown_icon);
     }
 
     d = new Q3IconViewPrivate;
diff --git a/src/qt3support/itemviews/q3listview.cpp b/src/qt3support/itemviews/q3listview.cpp
index 2c15ad0..12dad84 100644
--- a/src/qt3support/itemviews/q3listview.cpp
+++ b/src/qt3support/itemviews/q3listview.cpp
@@ -70,9 +70,6 @@ QT_BEGIN_NAMESPACE
 
 const int Unsorted = 16383;
 
-static Q3CleanupHandler<QBitmap> qlv_cleanup_bitmap;
-
-
 struct Q3ListViewPrivate
 {
     // classes that are here to avoid polluting the global name space
-- 
cgit v0.12


From 33aa8f4a035c1ce9231b40844e6e0793205d12aa Mon Sep 17 00:00:00 2001
From: Gareth Stockwell <ext-gareth.stockwell@nokia.com>
Date: Tue, 9 Feb 2010 11:37:18 +0000
Subject: Added qwidget test case which displays a native child widget

As of commit bc82db, show()ing a native child widget causes a panic
on Symbian.  The panic code (WSERV-10) indicates that Activate() is
being called on an already-active graphics context.

This test case reproduces the defect.

Task-number: QTBUG-7960
---
 tests/auto/qwidget/tst_qwidget.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp
index 03eddee..b59017b 100644
--- a/tests/auto/qwidget/tst_qwidget.cpp
+++ b/tests/auto/qwidget/tst_qwidget.cpp
@@ -250,6 +250,7 @@ private slots:
 #else
     void persistentWinId();
 #endif
+    void showNativeChild();
     void qobject_castInDestroyedSlot();
 
     void showHideEvent_data();
@@ -4586,6 +4587,16 @@ void tst_QWidget::persistentWinId()
 }
 #endif // Q_OS_SYMBIAN
 
+void tst_QWidget::showNativeChild()
+{
+    QWidget topLevel;
+    topLevel.setGeometry(0, 0, 100, 100);
+    QWidget child(&topLevel);
+    child.winId();
+    topLevel.show();
+    QTest::qWaitForWindowShown(&topLevel);
+}
+
 class ShowHideEventWidget : public QWidget
 {
 public:
-- 
cgit v0.12


From 46df42af1a25fd06247bb96d9e0bf24bf19defe8 Mon Sep 17 00:00:00 2001
From: Gareth Stockwell <ext-gareth.stockwell@nokia.com>
Date: Tue, 9 Feb 2010 09:41:29 +0000
Subject: Fixed defect in handling of expose events for Symbian

Commit bc82db did not correctly handle native child widgets.

Consider the case when we have a top-level widget A with a native
child widget B.  When QSymbianControl::Draw() is called on the
control corresponding to B, the following occurs:
    1. The inExpose flag is set in B's QWExtra structure.
    2. The call to syncBackingStore() results in a call to
       QWidgetBackingStore::flush(), passing default parameters.
    3. Because no target widget was passed to flush(), this
       function selects the top-level widget (A) as the target for
       the flush operation, passing A as the first argument of
       QS60WindowSurface::flush().
    4. QS60WindowSurface::flush() checks the inExpose flag from A's
       QWExtra structure, finds it to be false, and proceeds to
       call DrawNow() on A's control.

Because QSymbianControl::Draw() uses the default graphics context,
this context is shared between controls.  This means that the DrawNow()
call in step 4 causes a WSERV-10 panic (Activate() called on an
already-active) graphics context.

This patch moves the inExpose flag from B's QWExtra into A's QTLWExtra,
with the result that the call to DrawNow() in step 4 is suppressed.

Task-number: QTBUG-7960
Reviewed-by: axis
---
 src/gui/kernel/qapplication_s60.cpp     | 11 +++++++----
 src/gui/kernel/qwidget_p.h              |  3 ++-
 src/gui/kernel/qwidget_s60.cpp          |  2 +-
 src/gui/painting/qwindowsurface_s60.cpp | 11 +++++++----
 4 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp
index 4a137ee..bf3ad71 100644
--- a/src/gui/kernel/qapplication_s60.cpp
+++ b/src/gui/kernel/qapplication_s60.cpp
@@ -809,12 +809,15 @@ TCoeInputCapabilities QSymbianControl::InputCapabilities() const
 void QSymbianControl::Draw(const TRect& controlRect) const
 {
     // Set flag to avoid calling DrawNow in window surface
-    QWExtra *extra = qwidget->d_func()->extraData();
-    if (extra && !extra->inExpose) {
-        extra->inExpose = true;
+    QWidget *window = qwidget->window();
+    Q_ASSERT(window);
+    QTLWExtra *topExtra = window->d_func()->maybeTopData();
+    Q_ASSERT(topExtra);
+    if (!topExtra->inExpose) {
+        topExtra->inExpose = true;
         QRect exposeRect = qt_TRect2QRect(controlRect);
         qwidget->d_func()->syncBackingStore(exposeRect);
-        extra->inExpose = false;
+        topExtra->inExpose = false;
     }
 
     QWindowSurface *surface = qwidget->windowSurface();
diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h
index b1eb3c3..4b62074 100644
--- a/src/gui/kernel/qwidget_p.h
+++ b/src/gui/kernel/qwidget_p.h
@@ -173,6 +173,8 @@ struct QTLWExtra {
 #ifndef QT_NO_QWS_MANAGER
     QWSManager *qwsManager;
 #endif
+#elif defined(Q_OS_SYMBIAN)
+    uint inExpose : 1; // Prevents drawing recursion
 #endif
 };
 
@@ -229,7 +231,6 @@ struct QWExtra {
 #endif
 #elif defined(Q_OS_SYMBIAN) // <----------------------------------------------------- Symbian
     uint activated : 1; // RWindowBase::Activated has been called
-    uint inExpose : 1; // Prevents drawing recursion
 
     /**
      * Defines the behaviour of QSymbianControl::Draw.
diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp
index a844430..ebd289c 100644
--- a/src/gui/kernel/qwidget_s60.cpp
+++ b/src/gui/kernel/qwidget_s60.cpp
@@ -878,6 +878,7 @@ void QWidgetPrivate::registerDropSite(bool /* on */)
 void QWidgetPrivate::createTLSysExtra()
 {
     extra->topextra->backingStore = 0;
+    extra->topextra->inExpose = 0;
 }
 
 void QWidgetPrivate::deleteTLSysExtra()
@@ -891,7 +892,6 @@ void QWidgetPrivate::createSysExtra()
     extra->activated = 0;
     extra->nativePaintMode = QWExtra::Default;
     extra->receiveNativePaintEvents = 0;
-    extra->inExpose = 0;
 }
 
 void QWidgetPrivate::deleteSysExtra()
diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index b41dc2c..6cbf3d9 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -145,12 +145,15 @@ QImage* QS60WindowSurface::buffer(const QWidget *widget)
 
 void QS60WindowSurface::flush(QWidget *widget, const QRegion &region, const QPoint &)
 {
-    QWExtra *extra = widget->d_func()->extraData();
-    if (extra && !extra->inExpose) {
-        extra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again
+    QWidget *window = widget->window();
+    Q_ASSERT(window);
+    QTLWExtra *topExtra = window->d_func()->maybeTopData();
+    Q_ASSERT(topExtra);
+    if (!topExtra->inExpose) {
+        topExtra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again
         TRect tr = qt_QRect2TRect(region.boundingRect());
         widget->winId()->DrawNow(tr);
-        extra->inExpose = false;
+        topExtra->inExpose = false;
     }
 }
 
-- 
cgit v0.12


From 500f28f04a08e37525e3d1deb5cfe6e908c66b15 Mon Sep 17 00:00:00 2001
From: Benjamin Poulain <benjamin.poulain@nokia.com>
Date: Tue, 9 Feb 2010 14:52:16 +0100
Subject: Refactor comp_func_solid_Clear() and comp_func_solid_Source()

Put the common code together with a #define.
Remove the check for the length from comp_func_Clear_impl and
move it to qt_memfill()
---
 src/gui/painting/qdrawhelper.cpp     | 36 +++++++++++++++-------------------
 src/gui/painting/qdrawhelper_mmx_p.h | 38 +++++++++++++++---------------------
 src/gui/painting/qdrawhelper_p.h     |  3 +++
 3 files changed, 35 insertions(+), 42 deletions(-)

diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 660a2a8..7a3da20 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -1267,32 +1267,28 @@ static const uint L2CacheLineLengthInInts = L2CacheLineLength/sizeof(uint);
   result = 0
   d = d * cia
 */
+#define comp_func_Clear_impl(dest, length, const_alpha)\
+{\
+    if (const_alpha == 255) {\
+        QT_MEMFILL_UINT(dest, length, 0);\
+    } else {\
+        int ialpha = 255 - const_alpha;\
+        PRELOAD_INIT(dest)\
+        for (int i = 0; i < length; ++i) {\
+            PRELOAD_COND(dest)\
+            dest[i] = BYTE_MUL(dest[i], ialpha);\
+        }\
+    }\
+}
+
 static void QT_FASTCALL comp_func_solid_Clear(uint *dest, int length, uint, uint const_alpha)
 {
-    if (const_alpha == 255) {
-        QT_MEMFILL_UINT(dest, length, 0);
-    } else {
-        int ialpha = 255 - const_alpha;
-        PRELOAD_INIT(dest)
-        for (int i = 0; i < length; ++i) {
-            PRELOAD_COND(dest)
-            dest[i] = BYTE_MUL(dest[i], ialpha);
-        }
-    }
+    comp_func_Clear_impl(dest, length, const_alpha);
 }
 
 static void QT_FASTCALL comp_func_Clear(uint *dest, const uint *, int length, uint const_alpha)
 {
-    if (const_alpha == 255) {
-        QT_MEMFILL_UINT(dest, length, 0);
-    } else {
-        int ialpha = 255 - const_alpha;
-        PRELOAD_INIT(dest)
-        for (int i = 0; i < length; ++i) {
-            PRELOAD_COND(dest)
-            dest[i] = BYTE_MUL(dest[i], ialpha);
-        }
-    }
+    comp_func_Clear_impl(dest, length, const_alpha);
 }
 
 /*
diff --git a/src/gui/painting/qdrawhelper_mmx_p.h b/src/gui/painting/qdrawhelper_mmx_p.h
index 8482262..f8bc480 100644
--- a/src/gui/painting/qdrawhelper_mmx_p.h
+++ b/src/gui/painting/qdrawhelper_mmx_p.h
@@ -146,36 +146,30 @@ struct QMMXCommonIntrinsics
   result = 0
   d = d * cia
 */
+#define comp_func_Clear_impl(dest, length, const_alpha)\
+{\
+    if (const_alpha == 255) {\
+        qt_memfill(static_cast<quint32*>(dest), quint32(0), length);\
+    } else {\
+        C_FF; C_80; C_00;\
+        m64 ia = MM::negate(MM::load_alpha(const_alpha));\
+        for (int i = 0; i < length; ++i) {\
+            dest[i] = MM::store(MM::byte_mul(MM::load(dest[i]), ia));\
+        }\
+        MM::end();\
+    }\
+}
+
 template <class MM>
 static void QT_FASTCALL comp_func_solid_Clear(uint *dest, int length, uint, uint const_alpha)
 {
-    if (!length)
-        return;
-
-    if (const_alpha == 255) {
-        qt_memfill(static_cast<quint32*>(dest), quint32(0), length);
-    } else {
-        C_FF; C_80; C_00;
-        m64 ia = MM::negate(MM::load_alpha(const_alpha));
-        for (int i = 0; i < length; ++i) {
-            dest[i] = MM::store(MM::byte_mul(MM::load(dest[i]), ia));
-        }
-    }
-    MM::end();
+    comp_func_Clear_impl(dest, length, const_alpha);
 }
 
 template <class MM>
 static void QT_FASTCALL comp_func_Clear(uint *dest, const uint *, int length, uint const_alpha)
 {
-    if (const_alpha == 255) {
-        qt_memfill(static_cast<quint32*>(dest), quint32(0), length);
-    } else {
-        C_FF; C_80; C_00;
-        m64 ia = MM::negate(MM::load_alpha(const_alpha));
-        for (int i = 0; i < length; ++i)
-            dest[i] = MM::store(MM::byte_mul(MM::load(dest[i]), ia));
-    }
-    MM::end();
+    comp_func_Clear_impl(dest, length, const_alpha);
 }
 
 /*
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index 6c47aac..cb0db4f 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -1549,6 +1549,9 @@ template<> inline void qt_memfill(quint8 *dest, quint8 color, int count)
 template <class T>
 inline void qt_memfill(T *dest, T value, int count)
 {
+    if (!count)
+        return;
+
     int n = (count + 7) / 8;
     switch (count & 0x07)
     {
-- 
cgit v0.12


From d9354e6e6863bc1f82b9581726c43f3bd76bc44b Mon Sep 17 00:00:00 2001
From: Benjamin Poulain <benjamin.poulain@nokia.com>
Date: Tue, 9 Feb 2010 16:58:56 +0100
Subject: Skip the transparent pixels when doing the sourceOver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Blending fully transparent pixels take a non-negligible time
when webkit use transparent layer. We can avoid that be skipping
those pixels since they have no impact on the final result.

Reviewed-by: Samuel Rødal
---
 src/gui/painting/qdrawhelper_mmx_p.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/gui/painting/qdrawhelper_mmx_p.h b/src/gui/painting/qdrawhelper_mmx_p.h
index f8bc480..59b3804 100644
--- a/src/gui/painting/qdrawhelper_mmx_p.h
+++ b/src/gui/painting/qdrawhelper_mmx_p.h
@@ -240,7 +240,10 @@ static void QT_FASTCALL comp_func_SourceOver(uint *dest, const uint *src, int le
     C_FF; C_80; C_00;
     if (const_alpha == 255) {
         for (int i = 0; i < length; ++i) {
-            if ((0xff000000 & src[i]) == 0xff000000) {
+            const uint alphaMaskedSource = 0xff000000 & src[i];
+            if (alphaMaskedSource == 0)
+                continue;
+            if (alphaMaskedSource == 0xff000000) {
                 dest[i] = src[i];
             } else {
                 m64 s = MM::load(src[i]);
@@ -251,6 +254,8 @@ static void QT_FASTCALL comp_func_SourceOver(uint *dest, const uint *src, int le
     } else {
         m64 ca = MM::load_alpha(const_alpha);
         for (int i = 0; i < length; ++i) {
+            if ((0xff000000 & src[i]) == 0)
+                continue;
             m64 s = MM::byte_mul(MM::load(src[i]), ca);
             m64 ia = MM::negate(MM::alpha(s));
             dest[i] = MM::store(MM::add(s, MM::byte_mul(MM::load(dest[i]), ia)));
-- 
cgit v0.12


From cf6a427a94b615dcb7ab1e594b27a593dcc73c62 Mon Sep 17 00:00:00 2001
From: Jason McDonald <jason.mcdonald@nokia.com>
Date: Wed, 10 Feb 2010 04:38:49 +1000
Subject: Tidy the changes file.

Reviewed-by: Trust Me
---
 dist/changes-4.6.2 | 274 +++++++++++++++++++----------------------------------
 1 file changed, 97 insertions(+), 177 deletions(-)

diff --git a/dist/changes-4.6.2 b/dist/changes-4.6.2
index aaaaacc..657aafc 100644
--- a/dist/changes-4.6.2
+++ b/dist/changes-4.6.2
@@ -16,22 +16,6 @@ Qt Bug Tracker: http://bugreports.qt.nokia.com
 Task Tracker:   http://qt.nokia.com/developer/task-tracker
 Merge Request:  http://qt.gitorious.org
 
-****************************************************************************
-*                           General                                        *
-****************************************************************************
-
-New features
-------------
-
- - SomeClass, SomeOtherClass
-    * New classes for foo, bar and baz
-
-Optimizations
--------------
-
- - Optimized foo in QSomeClass
-    * See list of Important Behavior Changes below
-
 
 ****************************************************************************
 *                          Library                                         *
@@ -42,98 +26,88 @@ QtCore
 
  - QAtomicPointer
     * [QTBUG-7356] Fixed a compilation failure when using the Intel
-    compiler on IA-64
-
+      compiler on IA-64
  - QFile
     * Fixed double-buffering issue when opening files in buffered mode.
-    * [QTBUG-7285] QFile::remove would fail if an unrelated operation on the
-      same instance had been previously failed. This manisfested itself in
-      QTemporaryFile failing to auto-remove files and QFile::copy leaving
+    * [QTBUG-7285] QFile::remove would() fail if an unrelated operation on the
+      same instance had been previously failed. This manifested itself in
+      QTemporaryFile failing to auto-remove files and QFile::copy() leaving
       temporary files behind in certain situations.
-
  - QFSFileEngine
-    * Fix typo that made realpath() not being used
-
+    * Fix typo that made realpath() not be used.
  - QIODevice
-    * Optimized readAll()
-
+    * Optimized readAll().
  - QReadWriteLock
-    * [MR 426] Fixed documentation
-
+    * [MR 426] Fixed documentation.
  - QXmlStreamWriter
-    * [QTBUG-6893] Fixed adding extra Byte Order Marks when writing to a xml file.
+    * [QTBUG-6893] Fixed adding extra Byte Order Marks when writing to a
+      .xml file.
 
 QtGui
 -----
 
+ - QApplication
+    * [QTBUG-6098] Added a flag to avoid construction of application panes.
+    * [QTBUG-7029] Fixed a crash when re-creating QApplication object due
+      to a dangling gesture manager pointer.
  - QAbstractScrollArea
-    * [QTBUG-1760] Reverted horizontal scrolling with mouse wheel when vertical scrollbar is hidden
-
+    * [QTBUG-1760] Reverted horizontal scrolling with mouse wheel when vertical
+      scrollbar is hidden
  - QBmpHandler
-    * [QTBUG-7530] Fixed an infinite loop that could occur when reading invalid BMP images.
-
+    * [QTBUG-7530] Fixed an infinite loop that could occur when reading invalid
+      BMP images.
  - QGraphicsEffect
     * [QTBUG-6901] Fixed performance problem when translating items with
       graphics effects.
-
  - QImage
     * [QTBUG-7231] Avoid an unnecessary copy in QImage::scaled().
-
- - QPDFEngine
-    * [QTBUG-7249] Fixed the encoding of the Tile and Creator tags in the PDF engine.
-
- - QApplication
-    * [QTBUG-6098] Added a flag to avoid construction of application panes.
  - QInputContext
-    * [QTBUG-7439] Avoided the loss of preedit text when losing focus on Symbian.
-
- * [QT-2629] Implemented event filter functions for Symbian.
- * [QTBUG-7029] Fixed a crash when re-creating QApplication object due to a
-   dangling gesture manager pointer.
- * [QTBUG-7198] Setting a style sheet could break the checkbox position in item views.
- * [QTBUG-7253] Fixed wrong stroke clipping with the raster engine when using a QPen
-   with a style other than SolidLine.
-
-
- * [MR 2077] Integrated merge request 2077
+    * [QTBUG-7439] Avoided the loss of preedit text when losing focus on
+      Symbian.
+ - QPDFEngine
+    * [QTBUG-7249] Fixed the encoding of the Tile and Creator tags in the PDF
+      engine.
+ - [QT-2629] Implemented event filter functions for Symbian.
+ - [QTBUG-7198] Setting a style sheet could break the checkbox position in
+   item views.
+ - [QTBUG-7253] Fixed wrong stroke clipping with the raster engine when using
+   a QPen with a style other than SolidLine.
 
 QtDBus
 ------
 
  - QDBusConnection
-    * [QT-2307] Fixed sending of D-Bus method calls with QDBus::BlockWithGui
+    * [QT-2307] Fixed sending of D-Bus method calls with QDBus::BlockWithGui.
 
 QtNetwork
 ---------
 
  - QNetworkAccessManager
     * Optimizations
-    * HTTP: Get rid of QAbstractSocket warnings that were sometimes displayed
-    * HTTP: setReadBufferSize() of the QNetworkReply finally is working on all layers
-    * [QTBUG-7713] HTTP: Fix bug related to re-sending a request
+    * HTTP: Get rid of QAbstractSocket warnings that were sometimes displayed.
+    * HTTP: setReadBufferSize() of the QNetworkReply finally is working on all
+      layers.
+    * [QTBUG-7713] HTTP: Fix bug related to re-sending a request.
     * [QTBUG-7060] Fixed an issue with parsing of HTTP headers like
-    "private, max-age=300"
-
+      "private, max-age=300".
  - QSslCertificate
-    * [QTBUG-6466] Fix issuerInfo() and subjectInfo()
-
+    * [QTBUG-6466] Fix issuerInfo() and subjectInfo().
  - QTcpSocket
-    * [QTBUG-7344] Fix performance degredation with write() on Windows
-    * [QTBUG-7316,QTBUG-7317] Also handle unknown errors from socket engine
+    * [QTBUG-7344] Fix performance degredation with write() on Windows.
+    * [QTBUG-7316,QTBUG-7317] Handle unknown errors from socket engine.
 
 QtOpenGL
 --------
 
  - [QTBUG-7490] Better support for user-generated binary shaders.
-
- - QGLWidget
-    * [QTBUG-7213] Fixed QGLWidget::renderPixmap() on Windows.
-
  - QGLPixelBuffer
-    * [QTBUG-7476] Fixed a crash under X11 when drawing QPixmaps to QGLPixelBuffers.
-
+    * [QTBUG-7476] Fixed a crash under X11 when drawing QPixmaps to
+      QGLPixelBuffers.
  - QGL2PaintEngineEx
     * [QTBUG-7203] Reset the GL stencil mask, op and function in resetGLState().
+ - QGLWidget
+    * [QTBUG-7213] Fixed QGLWidget::renderPixmap() on Windows.
+
 
 QtOpenVG
 --------
@@ -141,137 +115,89 @@ QtOpenVG
  - [QTBUG-7791] Optimize single-rect IntersectClip in OpenVG using the scissor.
  - [QTBUG-7864] Use OpenVG scissor on 90/180/270 rotations and simple clips.
 
-QtScript
---------
-
- - foo
-    * bar
-
-QtSql
------
-
- - foo
-    * bar
-
-QtXml
------
-
- - foo
-    * bar
-
 QtMultimedia
 ------------
 
  - QAudioInput
-    * [QTBUG-7044]: QAudioInput stopped working correctly after suspend()/resume() on linux.
-
-Qt Plugins
-----------
-
- - foo
-    * bar
+    * [QTBUG-7044]: QAudioInput stopped working correctly after
+      suspend()/resume() on linux.
 
 Examples
 --------
 
  - QtMultimedia
-    * [MR 418] Fixed the example for QAudioOutput
-
+    * [MR 418] Fixed the example for QAudioOutput.
  - WebKit
-    * [MR 2235] Added the framecapture example to the default build
-
-Third party components
-----------------------
-
- - Updated foo to version 2.3.9.
-
- - Updated bar to the latest version from baz.org.
+    * [MR 2235] Added the framecapture example to the default build.
 
 
 ****************************************************************************
 *                      Platform Specific Changes                           *
 ****************************************************************************
 
-Qt for Unix (X11 and Mac OS X)
-------------------------------
-
- -
-
 Qt for Linux/X11
 ----------------
-  * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
-    in Qt/X11.
-
-  * Fixed a crash when an input method tries to create a widget after the
-    application is destroyed.
-
-  - [QTBUG-6952] Fixed a problem using NoButtons in spinbox with QGtkStyle
-  - [QTBUG-7504] Fixed missing focus rect on check- and radiobutton with
-     some GTK+ themes.
-  - [QTBUG-6522] Fixed missing menu separator in some GTK+ themes.
-
-Qt for Windows
---------------
+ - Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+   in Qt/X11.
+ - Fixed a crash when an input method tries to create a widget after the
+   application is destroyed.
+ - [QTBUG-6952] Fixed a problem using NoButtons in spinbox with QGtkStyle.
+ - [QTBUG-7504] Fixed missing focus rect on check- and radiobutton with
+    some GTK+ themes.
+ - [QTBUG-6522] Fixed missing menu separator in some GTK+ themes.
 
 Qt for Mac OS X
 ---------------
 
  - [QTBUG-7832]: Restored missing margins around non-unified toolbars.
- - [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget on Cocoa.
- - [QTBUG-7481]: Re-added the Close button in QPrintPreviewDialog for Mac/Carbon.
- - [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4 lead to crash.
- - [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results in top menu hiding.
- - [QTBUG-7086]: QFileDialog now correctly responds to fileMode & acceptMode changes.
- - [QTBUG-7162]: Fixed a crash in Designer when previewing a QMainWindow with native toolbar.
- - [QTBUG-7305]: Fixed a crash when deleting QMainWindow with native toolbar on Cocoa.
- - [QTBUG-6882]: Fixed a text layout issue with QHeaderView in right-to-left mode.
-
-
-Qt for Embedded Linux
----------------------
-
- -
+ - [QTBUG-7312]: Menubar and dock disappear after hiding a fullscreen widget
+   on Cocoa.
+ - [QTBUG-7481]: Re-added the Close button in QPrintPreviewDialog for
+   Mac/Carbon.
+ - [QTBUG-7522]: Drawing fake buttons using QMacStyle+QStyleOptionViewItemV4
+   lead to crash.
+ - [QTBUG-7625]: Calling showFullScreen() then showNormal() on a widget results
+   in top menu hiding.
+ - [QTBUG-7086]: QFileDialog now correctly responds to fileMode & acceptMode
+   changes.
+ - [QTBUG-7162]: Fixed a crash in Designer when previewing a QMainWindow with
+   native toolbar.
+ - [QTBUG-7305]: Fixed a crash when deleting QMainWindow with native toolbar
+   on Cocoa.
+ - [QTBUG-6882]: Fixed a text layout issue with QHeaderView in right-to-left
+   mode.
 
 DirectFB
 --------
-  * Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
-    in DirectFB.
-  * Reimplement QPixmapData::scroll for QDirectFBPixmapData which optimizes
-    QPixmap::scroll
-  * Fix a rendering issue for semi-transparent top level windows in DirectFB.
-  * Make it possible to fall back to the raster engine for stretch blits in
-    DirectFB using QT_NO_DIRECTFB_STRETCHBLIT
- -
-
-Qt for Windows CE
------------------
 
- -
+ - Fix a bug where QPixmap::serialNumber was not set on a transformed pixmap
+   in DirectFB.
+ - Reimplement QPixmapData::scroll for QDirectFBPixmapData which optimizes
+   QPixmap::scroll.
+ - Fix a rendering issue for semi-transparent top level windows in DirectFB.
+ - Make it possible to fall back to the raster engine for stretch blits in
+   DirectFB using QT_NO_DIRECTFB_STRETCHBLIT.
 
 Qt for Symbian
 --------------
 
-  * [QTBUG-6556] Improve the DEF file handling scheme, to allow simple enable/
-    disable of DEF file usage (for use _during development only_ to decouple
-    the need to update the DEF files at the precise point that symbols are
-    removed, therefore allowing builds by CI systems to succeed even if symbols
-    have been removed.  This does not remove the need to update the DEF files
-    before release.  NOTE: Builds generated using this flag are not binary
-    compatible with previous versions of Qt.)
-
-- QProcess
-    * [QTBUG-7667] Fixed no-timeout case for QProcess::waitForFinished.
-
-- qmake
-    * [QTBUG-7695] Added support for ifdeffing for manufacturer in generated
-    pkg files.
-    * [QTBUG-7908] Smart installer package generation support
-
-- Patch_capabilities script
+ - [QTBUG-6556] Improve the DEF file handling scheme, to allow simple enable/
+   disable of DEF file usage (for use _during development only_ to decouple
+   the need to update the DEF files at the precise point that symbols are
+   removed, therefore allowing builds by CI systems to succeed even if symbols
+   have been removed.  This does not remove the need to update the DEF files
+   before release.  NOTE: Builds generated using this flag are not binary
+   compatible with previous versions of Qt.)
+ - QProcess
+   * [QTBUG-7667] Fixed no-timeout case for QProcess::waitForFinished.
+ - qmake
+   * [QTBUG-7695] Added support for ifdeffing for manufacturer in generated
+     pkg files.
+   * [QTBUG-7908] Smart installer package generation support.
+ - Patch_capabilities script
     * Added support for embedded sis name/uid patching.
-
-- Qt deployment
-    * [QTBUG-7518] Backup and restore support for Qt libs
+ - Qt deployment
+    * [QTBUG-7518] Backup and restore support for Qt libs.
 
 
 ****************************************************************************
@@ -279,28 +205,22 @@ Qt for Symbian
 ****************************************************************************
 
  - Designer
-   * [QTBUG-6965] Enabled editing seconds of QDateTime-type properties
+   * [QTBUG-6965] Enabled editing seconds of QDateTime-type properties.
    * [QTBUG-6757] Fixed bug where selection handles would be affected by
      a style sheet set on the main form.
 
  - uic3
    * [QTBUG-7404] Added option to preserve layout names set by Qt 3 Designer.
 
- - qdoc3
-   * bar
-
- - Linguist
-   * baz
-
 ****************************************************************************
 * Important Behavior Changes *
 ****************************************************************************
 
  - QNetworkAccessManager cache
-    * QNetworkAccessManager will no longer return expired pages, as
-      stated in the documentation
-    * The behaviour of PreferCache and PreferNetwork modes now match
-      the documentation more closely
+   * QNetworkAccessManager will no longer return expired pages, as
+     stated in the documentation
+   * The behaviour of PreferCache and PreferNetwork modes now match
+     the documentation more closely
 
  - QUrl
     * QUrl will now accept hostnames ending in dot and will not treat
-- 
cgit v0.12


From 3208a33a18d7eb666f0f47eff02ce4b21e248c10 Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@sosco.com>
Date: Tue, 9 Feb 2010 11:45:01 +0100
Subject: Catch up TRK library to creator
 f2b3e9f2dfbc580389b9b683a3e46e5a8422f55b

This is the last SHA before trk directory is renamed.
Note the \\.\ is prepended to windows com ports inside the library now,
so main.cpp no longer has this windows specific code.

commit f2b3e9f2dfbc580389b9b683a3e46e5a8422f55b
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Fri Feb 5 12:24:46 2010 +0100

    S60/Trk: Change trkutils to be a library of its own.

    To be able to share TrkDevices between Debugger and Qt4ProjectManager.

commit 61c3a260b59433abf8c3ef481ec536af88f8026c
Author: Sarika Kamisetty <sarikak11@gmail.com>
Date:   Thu Feb 4 09:57:54 2010 +0100

    Fix to App TRK connection with 'high COM port' does not work

    Merge-request: 111
    Reviewed-by: hjk <qtc-committer@nokia.com>

commit 2fd8b2d7ffa2ac032bfe3a17efe7d152c4cef14d
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Mon Feb 1 12:43:56 2010 +0100

    Fix some code scanning issues.

    QString: Use QChar where appropriate.

commit 805b0a9cc165ef6cd596bd8f5e59f650cd0eebb2
Author: hjk <qtc-committer@nokia.com>
Date:   Mon Feb 1 11:45:44 2010 +0100

    debugger: trk log output cosmetic

commit 75b42f18d886b59dbf3380dd12f39f40005ef08b
Merge: 4320314 a6ca348
Author: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date:   Fri Jan 29 22:49:55 2010 +0100

    Merge remote branch 'origin/1.3'

    Trailing whitespace removal re-applied manually.

commit a6ca348636dd92ab1445cff2286b3293163f5cea
Author: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date:   Fri Jan 29 21:33:57 2010 +0100

    remove trailing whitespace

    doing it in 1.3 as well to avoid possible later conflicts

commit 4ec51219ed5c2150e164473b9c5326b6c68d096a
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Thu Jan 28 17:04:05 2010 +0100

    Trk: Fix source code scanning tool issues.

    showing up in Qt.
---
 tools/runonphone/main.cpp                      |   4 -
 tools/runonphone/trk/bluetoothlistener.cpp     |   2 +-
 tools/runonphone/trk/bluetoothlistener.h       |   4 +-
 tools/runonphone/trk/bluetoothlistener_gui.cpp |   6 +-
 tools/runonphone/trk/bluetoothlistener_gui.h   |   8 +-
 tools/runonphone/trk/callback.h                |   2 +-
 tools/runonphone/trk/communicationstarter.h    |   8 +-
 tools/runonphone/trk/launcher.cpp              |  25 +++---
 tools/runonphone/trk/launcher.h                |   2 +-
 tools/runonphone/trk/symbianutils_global.h     |  55 +++++++++++++
 tools/runonphone/trk/trk.pri                   |   4 +-
 tools/runonphone/trk/trkdevice.cpp             |  18 +++--
 tools/runonphone/trk/trkdevice.h               |   3 +-
 tools/runonphone/trk/trkutils.cpp              | 105 ++++++++++++-------------
 tools/runonphone/trk/trkutils.h                |  45 +++++------
 tools/runonphone/trk/trkutils_p.h              |  62 +++++++++++++++
 16 files changed, 233 insertions(+), 120 deletions(-)
 create mode 100644 tools/runonphone/trk/symbianutils_global.h
 create mode 100644 tools/runonphone/trk/trkutils_p.h

diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp
index a77e713..1a5cdee 100644
--- a/tools/runonphone/main.cpp
+++ b/tools/runonphone/main.cpp
@@ -174,11 +174,7 @@ int main(int argc, char *argv[])
     }
     if(loglevel > 0)
         outstream << "Connecting to target via " << serialPortName << endl;
-#ifdef Q_OS_WIN
-    launcher->setTrkServerName(QString("\\\\.\\") + serialPortName);
-#else
     launcher->setTrkServerName(serialPortName);
-#endif
 
     launcher->setFileName(QString("c:\\sys\\bin\\") + exeFile);
     launcher->setCommandLineArgs(cmdLine);
diff --git a/tools/runonphone/trk/bluetoothlistener.cpp b/tools/runonphone/trk/bluetoothlistener.cpp
index 8d45fb5..df04288 100644
--- a/tools/runonphone/trk/bluetoothlistener.cpp
+++ b/tools/runonphone/trk/bluetoothlistener.cpp
@@ -184,7 +184,7 @@ bool BluetoothListener::start(const QString &device, QString *errorMessage)
     return true;
 }
 
-void BluetoothListener::slotStdOutput()        
+void BluetoothListener::slotStdOutput()
 {
     emitMessage(QString::fromLocal8Bit(d->process.readAllStandardOutput()));
 }
diff --git a/tools/runonphone/trk/bluetoothlistener.h b/tools/runonphone/trk/bluetoothlistener.h
index 027f286..36894e7 100644
--- a/tools/runonphone/trk/bluetoothlistener.h
+++ b/tools/runonphone/trk/bluetoothlistener.h
@@ -42,6 +42,8 @@
 #ifndef BLUETOOTHLISTENER_H
 #define BLUETOOTHLISTENER_H
 
+#include "symbianutils_global.h"
+
 #include <QtCore/QObject>
 #include <QtCore/QProcess>
 
@@ -53,7 +55,7 @@ struct BluetoothListenerPrivate;
  * The rfcomm command is used. It process can be started in the background
  * while connection attempts (TrkDevice::open()) are made in the foreground. */
 
-class BluetoothListener : public QObject
+class SYMBIANUTILS_EXPORT BluetoothListener : public QObject
 {
     Q_OBJECT
     Q_DISABLE_COPY(BluetoothListener)
diff --git a/tools/runonphone/trk/bluetoothlistener_gui.cpp b/tools/runonphone/trk/bluetoothlistener_gui.cpp
index 6ffdaef..5994eb5 100644
--- a/tools/runonphone/trk/bluetoothlistener_gui.cpp
+++ b/tools/runonphone/trk/bluetoothlistener_gui.cpp
@@ -50,7 +50,7 @@
 
 namespace trk {
 
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
     promptStartCommunication(BaseCommunicationStarter &starter,
                              const QString &msgBoxTitle,
                              const QString &msgBoxText,
@@ -88,7 +88,7 @@ PromptStartCommunicationResult
     return PromptStartCommunicationConnected;
 }
 
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
     promptStartSerial(BaseCommunicationStarter &starter,
                          QWidget *msgBoxParent,
                          QString *errorMessage)
@@ -98,7 +98,7 @@ PromptStartCommunicationResult
     return promptStartCommunication(starter, title, message, msgBoxParent, errorMessage);
 }
 
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
     promptStartBluetooth(BaseCommunicationStarter &starter,
                          QWidget *msgBoxParent,
                          QString *errorMessage)
diff --git a/tools/runonphone/trk/bluetoothlistener_gui.h b/tools/runonphone/trk/bluetoothlistener_gui.h
index d673ffe..10e7145 100644
--- a/tools/runonphone/trk/bluetoothlistener_gui.h
+++ b/tools/runonphone/trk/bluetoothlistener_gui.h
@@ -42,6 +42,8 @@
 #ifndef BLUETOOTHLISTENER_GUI_H
 #define BLUETOOTHLISTENER_GUI_H
 
+#include "symbianutils_global.h"
+
 #include <QtCore/QtGlobal>
 
 QT_BEGIN_NAMESPACE
@@ -62,7 +64,7 @@ enum PromptStartCommunicationResult {
     PromptStartCommunicationError
 };
 
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
         promptStartCommunication(BaseCommunicationStarter &starter,
                                  const QString &msgBoxTitle,
                                  const QString &msgBoxText,
@@ -71,14 +73,14 @@ PromptStartCommunicationResult
 
 // Convenience to start a serial connection (messages prompting
 // to launch Trk).
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
         promptStartSerial(BaseCommunicationStarter &starter,
                           QWidget *msgBoxParent,
                           QString *errorMessage);
 
 // Convenience to start blue tooth connection (messages
 // prompting to connect).
-PromptStartCommunicationResult
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
         promptStartBluetooth(BaseCommunicationStarter &starter,
                              QWidget *msgBoxParent,
                              QString *errorMessage);
diff --git a/tools/runonphone/trk/callback.h b/tools/runonphone/trk/callback.h
index edc2c74..3996d73 100644
--- a/tools/runonphone/trk/callback.h
+++ b/tools/runonphone/trk/callback.h
@@ -42,7 +42,7 @@
 #ifndef DEBUGGER_CALLBACK_H
 #define DEBUGGER_CALLBACK_H
 
-#include <QtCore/QtGlobal>
+#include "symbianutils_global.h"
 
 namespace trk {
 namespace Internal {
diff --git a/tools/runonphone/trk/communicationstarter.h b/tools/runonphone/trk/communicationstarter.h
index 34cf398..2d7dc50 100644
--- a/tools/runonphone/trk/communicationstarter.h
+++ b/tools/runonphone/trk/communicationstarter.h
@@ -42,6 +42,8 @@
 #ifndef COMMUNICATIONSTARTER_H
 #define COMMUNICATIONSTARTER_H
 
+#include "symbianutils_global.h"
+
 #include <QtCore/QSharedPointer>
 #include <QtCore/QObject>
 
@@ -60,7 +62,7 @@ struct BaseCommunicationStarterPrivate;
  * The base class can be used as is to prompt the user to launch App TRK for a
  * serial communication as this requires no further resource setup. */
 
-class BaseCommunicationStarter : public QObject {
+class SYMBIANUTILS_EXPORT BaseCommunicationStarter : public QObject {
     Q_OBJECT
     Q_DISABLE_COPY(BaseCommunicationStarter)
 public:
@@ -117,7 +119,7 @@ private:
  * implement as a factory function that creates and sets up the
  * listener (mode, message connection, etc). */
 
-class AbstractBluetoothStarter : public BaseCommunicationStarter {
+class SYMBIANUTILS_EXPORT AbstractBluetoothStarter : public BaseCommunicationStarter {
     Q_OBJECT
     Q_DISABLE_COPY(AbstractBluetoothStarter)
 public:
@@ -134,7 +136,7 @@ protected:
 /* ConsoleBluetoothStarter: Convenience class for console processes. Creates a
  * listener in "Listen" mode with the messages redirected to standard output. */
 
-class ConsoleBluetoothStarter : public AbstractBluetoothStarter {
+class SYMBIANUTILS_EXPORT ConsoleBluetoothStarter : public AbstractBluetoothStarter {
     Q_OBJECT
     Q_DISABLE_COPY(ConsoleBluetoothStarter)
 public:
diff --git a/tools/runonphone/trk/launcher.cpp b/tools/runonphone/trk/launcher.cpp
index 1796fc5..4f91545 100644
--- a/tools/runonphone/trk/launcher.cpp
+++ b/tools/runonphone/trk/launcher.cpp
@@ -41,6 +41,7 @@
 
 #include "launcher.h"
 #include "trkutils.h"
+#include "trkutils_p.h"
 #include "trkdevice.h"
 #include "bluetoothlistener.h"
 
@@ -595,17 +596,19 @@ void Launcher::handleSupportMask(const TrkResult &result)
         return;
     const char *data = result.data.data() + 1;
 
-    QByteArray str;
+    QString str = QLatin1String("SUPPORTED: ");
     for (int i = 0; i < 32; ++i) {
         //str.append("  [" + formatByte(data[i]) + "]: ");
-        for (int j = 0; j < 8; ++j)
-        if (data[i] & (1 << j))
-            str.append(QByteArray::number(i * 8 + j, 16) + " ");
+        for (int j = 0; j < 8; ++j) {
+            if (data[i] & (1 << j)) {
+                str.append(QString::number(i * 8 + j, 16));
+                str.append(QLatin1Char(' '));
+            }
+        }
     }
-    logMessage("SUPPORTED: " + str);
+    logMessage(str);
 }
 
-
 void Launcher::cleanUp()
 {
     //
@@ -614,9 +617,7 @@ void Launcher::cleanUp()
     //  Sub Cmd: Delete Process
     //ProcessID: 0x0000071F (1823)
     // [41 24 00 00 00 00 07 1F]
-    QByteArray ba;
-    appendByte(&ba, 0x00);
-    appendByte(&ba, 0x00);
+    QByteArray ba(2, char(0));
     appendInt(&ba, d->m_session.pid);
     d->m_device->sendTrkMessage(TrkDeleteItem, TrkCallback(), ba, "Delete process");
 
@@ -669,7 +670,7 @@ void Launcher::copyFileToRemote()
 {
     emit copyingStarted();
     QByteArray ba;
-    appendByte(&ba, 0x10);
+    ba.append(char(10));
     appendString(&ba, d->m_copyState.destinationFileName.toLocal8Bit(), TargetByteOrder, false);
     d->m_device->sendTrkMessage(TrkOpenFile, TrkCallback(this, &Launcher::handleFileCreation), ba);
 }
@@ -678,7 +679,7 @@ void Launcher::installRemotePackageSilently()
 {
     emit installingStarted();
     QByteArray ba;
-    appendByte(&ba, 'C');
+    ba.append('C');
     appendString(&ba, d->m_installFileName.toLocal8Bit(), TargetByteOrder, false);
     d->m_device->sendTrkMessage(TrkInstallFile, TrkCallback(this, &Launcher::handleInstallPackageFinished), ba);
 }
@@ -705,7 +706,7 @@ QByteArray Launcher::startProcessMessage(const QString &executable,
     // It's not started yet
     QByteArray ba;
     appendShort(&ba, 0, TargetByteOrder); // create new process
-    appendByte(&ba, 0); // options - currently unused
+    ba.append(char(0)); // options - currently unused
     if(arguments.isEmpty()) {
         appendString(&ba, executable.toLocal8Bit(), TargetByteOrder);
         return ba;
diff --git a/tools/runonphone/trk/launcher.h b/tools/runonphone/trk/launcher.h
index 8dc6ebe..2b23fd8 100644
--- a/tools/runonphone/trk/launcher.h
+++ b/tools/runonphone/trk/launcher.h
@@ -56,7 +56,7 @@ struct LauncherPrivate;
 
 typedef QSharedPointer<TrkDevice> TrkDevicePtr;
 
-class Launcher : public QObject
+class SYMBIANUTILS_EXPORT Launcher : public QObject
 {
     Q_OBJECT
     Q_DISABLE_COPY(Launcher)
diff --git a/tools/runonphone/trk/symbianutils_global.h b/tools/runonphone/trk/symbianutils_global.h
new file mode 100644
index 0000000..a6ffbe7
--- /dev/null
+++ b/tools/runonphone/trk/symbianutils_global.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMBIANUTILS_GLOBAL_H
+#define SYMBIANUTILS_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(SYMBIANUTILS_BUILD_LIB)
+#    define SYMBIANUTILS_EXPORT Q_DECL_EXPORT
+#elif defined(SYMBIANUTILS_BUILD_STATIC_LIB) || defined(SYMBIANUTILS_INCLUDE_PRI)
+#    define SYMBIANUTILS_EXPORT
+#else 
+#    define SYMBIANUTILS_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // SYMBIANUTILS_GLOBAL_H
diff --git a/tools/runonphone/trk/trk.pri b/tools/runonphone/trk/trk.pri
index 2ce17c0..a54df76 100644
--- a/tools/runonphone/trk/trk.pri
+++ b/tools/runonphone/trk/trk.pri
@@ -1,8 +1,10 @@
 INCLUDEPATH *= $$PWD
 
 # Input
-HEADERS += $$PWD/callback.h \
+HEADERS += $$PWD/symbianutils_global.h \
+    $$PWD/callback.h \
     $$PWD/trkutils.h \
+    $$PWD/trkutils_p.h \
     $$PWD/trkdevice.h \
     $$PWD/launcher.h \
     $$PWD/bluetoothlistener.h \
diff --git a/tools/runonphone/trk/trkdevice.cpp b/tools/runonphone/trk/trkdevice.cpp
index fe3261b..d587135 100644
--- a/tools/runonphone/trk/trkdevice.cpp
+++ b/tools/runonphone/trk/trkdevice.cpp
@@ -41,6 +41,7 @@
 
 #include "trkdevice.h"
 #include "trkutils.h"
+#include "trkutils_p.h"
 
 #include <QtCore/QString>
 #include <QtCore/QDebug>
@@ -516,7 +517,7 @@ static inline bool overlappedSyncWrite(HANDLE file,
 bool WriterThread::write(const QByteArray &data, QString *errorMessage)
 {
     if (verboseTrk)
-        qDebug() << "Write raw data: " << data.toHex();
+        qDebug() << "Write raw data: " << stringFromArray(data).toLatin1();
     QMutexLocker locker(&m_context->mutex);
 #ifdef Q_OS_WIN
     DWORD charsWritten;
@@ -856,8 +857,8 @@ void UnixReaderThread::terminate()
 {
     // Trigger select() by writing to the pipe
     char c = 0;
-    int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
-    // FIXME: Use result.
+    const int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
+    Q_UNUSED(written)
     wait();
 }
 
@@ -919,7 +920,7 @@ bool TrkDevice::open(const QString &port, QString *errorMessage)
         qDebug() << "Opening" << port << "is open: " << isOpen() << " serialFrame=" << serialFrame();
     close();
 #ifdef Q_OS_WIN
-    d->deviceContext->device = CreateFile(port.toStdWString().c_str(),
+    d->deviceContext->device = CreateFile(QString("\\\\.\\").append(port).toStdWString().c_str(),
                            GENERIC_READ | GENERIC_WRITE,
                            0,
                            NULL,
@@ -1061,8 +1062,13 @@ void TrkDevice::sendTrkMessage(byte code, TrkCallback callback,
      const QByteArray &data, const QVariant &cookie)
 {
     if (!d->writerThread.isNull()) {
-        if (d->verbose > 1)
-            qDebug() << "Sending " << code << data.toHex();
+        if (d->verbose > 1) {
+            QByteArray msg = "Sending:  ";
+            msg += QByteArray::number(code, 16);
+            msg += ": ";
+            msg += stringFromArray(data).toLatin1();
+            qDebug("%s", msg.data());
+        }
         d->writerThread->queueTrkMessage(code, callback, data, cookie);
     }
 }
diff --git a/tools/runonphone/trk/trkdevice.h b/tools/runonphone/trk/trkdevice.h
index e04f791..21a3cc1 100644
--- a/tools/runonphone/trk/trkdevice.h
+++ b/tools/runonphone/trk/trkdevice.h
@@ -42,6 +42,7 @@
 #ifndef TRKDEVICE_H
 #define TRKDEVICE_H
 
+#include "symbianutils_global.h"
 #include "callback.h"
 
 #include <QtCore/QObject>
@@ -74,7 +75,7 @@ enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f };
 
 typedef trk::Callback<const TrkResult &> TrkCallback;
 
-class TrkDevice : public QObject
+class SYMBIANUTILS_EXPORT TrkDevice : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
diff --git a/tools/runonphone/trk/trkutils.cpp b/tools/runonphone/trk/trkutils.cpp
index 3a96053..5cce950 100644
--- a/tools/runonphone/trk/trkutils.cpp
+++ b/tools/runonphone/trk/trkutils.cpp
@@ -86,7 +86,7 @@ void Session::reset()
     trkAppVersion.reset();
 }
 
-QString formatCpu(int major, int minor)
+static QString formatCpu(int major, int minor)
 {
     //: CPU description of an S60 device
     //: %1 major verison, %2 minor version
@@ -144,13 +144,44 @@ QString Session::deviceDescription(unsigned verbose) const
 }
 
 
+QByteArray decode7d(const QByteArray &ba)
+{
+    QByteArray res;
+    res.reserve(ba.size());
+    for (int i = 0; i < ba.size(); ++i) {
+        byte c = byte(ba.at(i));
+        if (c == 0x7d) {
+            ++i;
+            c = 0x20 ^ byte(ba.at(i));
+        }
+        res.append(c);
+    }
+    return res;
+}
+
+QByteArray encode7d(const QByteArray &ba)
+{
+    QByteArray res;
+    res.reserve(ba.size() + 2);
+    for (int i = 0; i < ba.size(); ++i) {
+        byte c = byte(ba.at(i));
+        if (c == 0x7e || c == 0x7d) {
+            res.append(0x7d);
+            res.append(0x20 ^ c);
+        } else {
+            res.append(c);
+        }
+    }
+    return res;
+}
+
 // FIXME: Use the QByteArray based version below?
-QString stringFromByte(byte c)
+static inline QString stringFromByte(byte c)
 {
-    return QString("%1 ").arg(c, 2, 16, QChar('0'));
+    return QString::fromLatin1("%1").arg(c, 2, 16, QChar('0'));
 }
 
-QString stringFromArray(const QByteArray &ba, int maxLen)
+SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen)
 {
     QString str;
     QString ascii;
@@ -170,7 +201,7 @@ QString stringFromArray(const QByteArray &ba, int maxLen)
     return str + "  " + ascii;
 }
 
-QByteArray hexNumber(uint n, int digits)
+SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits)
 {
     QByteArray ba = QByteArray::number(n, 16);
     if (digits == 0 || ba.size() == digits)
@@ -178,7 +209,7 @@ QByteArray hexNumber(uint n, int digits)
     return QByteArray(digits - ba.size(), '0') + ba;
 }
 
-QByteArray hexxNumber(uint n, int digits)
+SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits)
 {
     return "0x" + hexNumber(n, digits);
 }
@@ -200,9 +231,13 @@ void TrkResult::clear()
 
 QString TrkResult::toString() const
 {
-    QString res = stringFromByte(code) + "[" + stringFromByte(token);
-    res.chop(1);
-    return res + "] " + stringFromArray(data);
+    QString res = stringFromByte(code);
+    res += QLatin1String(" [");
+    res += stringFromByte(token);
+    res += QLatin1Char(']');
+    res += QLatin1Char(' ');
+    res += stringFromArray(data);
+    return res;
 }
 
 QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame)
@@ -303,12 +338,12 @@ bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByt
     return true;
 }
 
-ushort extractShort(const char *data)
+SYMBIANUTILS_EXPORT ushort extractShort(const char *data)
 {
     return byte(data[0]) * 256 + byte(data[1]);
 }
 
-uint extractInt(const char *data)
+SYMBIANUTILS_EXPORT uint extractInt(const char *data)
 {
     uint res = byte(data[0]);
     res *= 256; res += byte(data[1]);
@@ -317,7 +352,7 @@ uint extractInt(const char *data)
     return res;
 }
 
-QString quoteUnprintableLatin1(const QByteArray &ba)
+SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba)
 {
     QString res;
     char buf[10];
@@ -333,49 +368,7 @@ QString quoteUnprintableLatin1(const QByteArray &ba)
     return res;
 }
 
-QByteArray decode7d(const QByteArray &ba)
-{
-    QByteArray res;
-    res.reserve(ba.size());
-    for (int i = 0; i < ba.size(); ++i) {
-        byte c = byte(ba.at(i));
-        if (c == 0x7d) {
-            ++i;
-            c = 0x20 ^ byte(ba.at(i));
-        }
-        res.append(c);
-    }
-    //if (res != ba)
-    //    logMessage("DECODED: " << stringFromArray(ba)
-    //        << " -> " << stringFromArray(res));
-    return res;
-}
-
-QByteArray encode7d(const QByteArray &ba)
-{
-    QByteArray res;
-    res.reserve(ba.size() + 2);
-    for (int i = 0; i < ba.size(); ++i) {
-        byte c = byte(ba.at(i));
-        if (c == 0x7e || c == 0x7d) {
-            res.append(0x7d);
-            res.append(0x20 ^ c);
-        } else {
-            res.append(c);
-        }
-    }
-    //if (res != ba)
-    //    logMessage("ENCODED: " << stringFromArray(ba)
-    //        << " -> " << stringFromArray(res));
-    return res;
-}
-
-void appendByte(QByteArray *ba, byte b)
-{
-    ba->append(b);
-}
-
-void appendShort(QByteArray *ba, ushort s, Endianness endian)
+SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness endian)
 {
     if (endian == BigEndian) {
         ba->append(s / 256);
@@ -386,7 +379,7 @@ void appendShort(QByteArray *ba, ushort s, Endianness endian)
     }
 }
 
-void appendInt(QByteArray *ba, uint i, Endianness endian)
+SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness endian)
 {
     const uchar b3 = i % 256; i /= 256;
     const uchar b2 = i % 256; i /= 256;
diff --git a/tools/runonphone/trk/trkutils.h b/tools/runonphone/trk/trkutils.h
index 328dd2b..3a485c7 100644
--- a/tools/runonphone/trk/trkutils.h
+++ b/tools/runonphone/trk/trkutils.h
@@ -42,19 +42,20 @@
 #ifndef DEBUGGER_TRK_UTILS
 #define DEBUGGER_TRK_UTILS
 
+#include "symbianutils_global.h"
 #include <QtCore/QByteArray>
 #include <QtCore/QHash>
 #include <QtCore/QStringList>
 #include <QtCore/QVariant>
 
-typedef unsigned char byte;
-
 QT_BEGIN_NAMESPACE
 class QDateTime;
 QT_END_NAMESPACE
 
 namespace trk {
 
+typedef unsigned char byte;
+
 enum Command {
     TrkPing = 0x00,
     TrkConnect = 0x01,
@@ -85,17 +86,14 @@ enum Command {
     TrkNotifyProcessorReset = 0xa7
 };
 
-QByteArray decode7d(const QByteArray &ba);
-QByteArray encode7d(const QByteArray &ba);
-
 inline byte extractByte(const char *data) { return *data; }
-ushort extractShort(const char *data);
-uint extractInt(const char *data);
+SYMBIANUTILS_EXPORT ushort extractShort(const char *data);
+SYMBIANUTILS_EXPORT uint extractInt(const char *data);
 
-QString quoteUnprintableLatin1(const QByteArray &ba);
+SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba);
 
 // produces "xx xx xx "
-QString stringFromArray(const QByteArray &ba, int maxLen = - 1);
+SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen = - 1);
 
 enum Endianness
 {
@@ -104,13 +102,11 @@ enum Endianness
     TargetByteOrder = BigEndian,
 };
 
-void appendByte(QByteArray *ba, byte b);
-void appendShort(QByteArray *ba, ushort s, Endianness = TargetByteOrder);
-void appendInt(QByteArray *ba, uint i, Endianness = TargetByteOrder);
-void appendString(QByteArray *ba, const QByteArray &str, Endianness = TargetByteOrder, bool appendNullTerminator = true);
-void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteOrder);
+SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness = TargetByteOrder);
+SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness = TargetByteOrder);
+SYMBIANUTILS_EXPORT void appendString(QByteArray *ba, const QByteArray &str, Endianness = TargetByteOrder, bool appendNullTerminator = true);
 
-struct Library
+struct SYMBIANUTILS_EXPORT Library
 {
     Library() {}
 
@@ -119,7 +115,7 @@ struct Library
     uint dataseg;
 };
 
-struct TrkAppVersion
+struct SYMBIANUTILS_EXPORT TrkAppVersion
 {
     TrkAppVersion();
     void reset();    
@@ -130,7 +126,7 @@ struct TrkAppVersion
     int protocolMinor;
 };
 
-struct Session
+struct SYMBIANUTILS_EXPORT Session
 {
     Session();
     void reset();
@@ -163,7 +159,7 @@ struct Session
     QStringList modules;
 };
 
-struct TrkResult
+struct SYMBIANUTILS_EXPORT TrkResult
 {
     TrkResult();
     void clear();
@@ -179,15 +175,10 @@ struct TrkResult
     bool isDebugOutput;
 };
 
-// returns a QByteArray containing optionally
-// the serial frame [0x01 0x90 <len>] and 0x7e encoded7d(ba) 0x7e
-QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame);
-ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame);
-bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0);
-QByteArray errorMessage(byte code);
-QByteArray hexNumber(uint n, int digits = 0);
-QByteArray hexxNumber(uint n, int digits = 0); // prepends '0x', too
-uint swapEndian(uint in);
+SYMBIANUTILS_EXPORT QByteArray errorMessage(byte code);
+SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits = 0);
+SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits = 0); // prepends '0x', too
+SYMBIANUTILS_EXPORT uint swapEndian(uint in);
 
 } // namespace trk
 
diff --git a/tools/runonphone/trk/trkutils_p.h b/tools/runonphone/trk/trkutils_p.h
new file mode 100644
index 0000000..12b0109
--- /dev/null
+++ b/tools/runonphone/trk/trkutils_p.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DEBUGGER_TRK_PRIVATE_UTILS
+#define DEBUGGER_TRK_PRIVATE_UTILS
+
+#include "trkutils.h"
+#include "symbianutils_global.h"
+
+QT_BEGIN_NAMESPACE
+class QDateTime;
+QT_END_NAMESPACE
+
+namespace trk {
+
+void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteOrder);
+// returns a QByteArray containing optionally
+// the serial frame [0x01 0x90 <len>] and 0x7e encoded7d(ba) 0x7e
+QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame);
+bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0);
+
+} // namespace trk
+
+#endif // DEBUGGER_TRK_PRIVATE_UTILS
-- 
cgit v0.12


From 9965d0e0484882d905c1f8a3bdf19f6eecd30226 Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@sosco.com>
Date: Tue, 9 Feb 2010 11:50:08 +0100
Subject: rename trk -> symbianutils

commit 9c2676167a3aaeb99024a22343c3d998f191a75f
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Fri Feb 5 12:32:32 2010 +0100

    src/shared: Rename trk to symbianutils
---
 tools/runonphone/runonphone.pro                    |    4 +-
 .../runonphone/symbianutils/bluetoothlistener.cpp  |  224 ++++
 tools/runonphone/symbianutils/bluetoothlistener.h  |  103 ++
 .../symbianutils/bluetoothlistener_gui.cpp         |  111 ++
 .../symbianutils/bluetoothlistener_gui.h           |   89 ++
 tools/runonphone/symbianutils/callback.h           |  160 +++
 .../symbianutils/communicationstarter.cpp          |  260 +++++
 .../runonphone/symbianutils/communicationstarter.h |  162 +++
 tools/runonphone/symbianutils/launcher.cpp         |  741 +++++++++++++
 tools/runonphone/symbianutils/launcher.h           |  179 ++++
 tools/runonphone/symbianutils/symbianutils.pri     |   25 +
 .../runonphone/symbianutils/symbianutils_global.h  |   55 +
 tools/runonphone/symbianutils/trkdevice.cpp        | 1105 ++++++++++++++++++++
 tools/runonphone/symbianutils/trkdevice.h          |  134 +++
 tools/runonphone/symbianutils/trkutils.cpp         |  479 +++++++++
 tools/runonphone/symbianutils/trkutils.h           |  185 ++++
 tools/runonphone/symbianutils/trkutils_p.h         |   62 ++
 tools/runonphone/trk/bluetoothlistener.cpp         |  224 ----
 tools/runonphone/trk/bluetoothlistener.h           |  103 --
 tools/runonphone/trk/bluetoothlistener_gui.cpp     |  111 --
 tools/runonphone/trk/bluetoothlistener_gui.h       |   89 --
 tools/runonphone/trk/callback.h                    |  160 ---
 tools/runonphone/trk/communicationstarter.cpp      |  260 -----
 tools/runonphone/trk/communicationstarter.h        |  162 ---
 tools/runonphone/trk/launcher.cpp                  |  741 -------------
 tools/runonphone/trk/launcher.h                    |  179 ----
 tools/runonphone/trk/symbianutils_global.h         |   55 -
 tools/runonphone/trk/trk.pri                       |   25 -
 tools/runonphone/trk/trkdevice.cpp                 | 1105 --------------------
 tools/runonphone/trk/trkdevice.h                   |  134 ---
 tools/runonphone/trk/trkutils.cpp                  |  479 ---------
 tools/runonphone/trk/trkutils.h                    |  185 ----
 tools/runonphone/trk/trkutils_p.h                  |   62 --
 33 files changed, 4077 insertions(+), 4075 deletions(-)
 create mode 100644 tools/runonphone/symbianutils/bluetoothlistener.cpp
 create mode 100644 tools/runonphone/symbianutils/bluetoothlistener.h
 create mode 100644 tools/runonphone/symbianutils/bluetoothlistener_gui.cpp
 create mode 100644 tools/runonphone/symbianutils/bluetoothlistener_gui.h
 create mode 100644 tools/runonphone/symbianutils/callback.h
 create mode 100644 tools/runonphone/symbianutils/communicationstarter.cpp
 create mode 100644 tools/runonphone/symbianutils/communicationstarter.h
 create mode 100644 tools/runonphone/symbianutils/launcher.cpp
 create mode 100644 tools/runonphone/symbianutils/launcher.h
 create mode 100644 tools/runonphone/symbianutils/symbianutils.pri
 create mode 100644 tools/runonphone/symbianutils/symbianutils_global.h
 create mode 100644 tools/runonphone/symbianutils/trkdevice.cpp
 create mode 100644 tools/runonphone/symbianutils/trkdevice.h
 create mode 100644 tools/runonphone/symbianutils/trkutils.cpp
 create mode 100644 tools/runonphone/symbianutils/trkutils.h
 create mode 100644 tools/runonphone/symbianutils/trkutils_p.h
 delete mode 100644 tools/runonphone/trk/bluetoothlistener.cpp
 delete mode 100644 tools/runonphone/trk/bluetoothlistener.h
 delete mode 100644 tools/runonphone/trk/bluetoothlistener_gui.cpp
 delete mode 100644 tools/runonphone/trk/bluetoothlistener_gui.h
 delete mode 100644 tools/runonphone/trk/callback.h
 delete mode 100644 tools/runonphone/trk/communicationstarter.cpp
 delete mode 100644 tools/runonphone/trk/communicationstarter.h
 delete mode 100644 tools/runonphone/trk/launcher.cpp
 delete mode 100644 tools/runonphone/trk/launcher.h
 delete mode 100644 tools/runonphone/trk/symbianutils_global.h
 delete mode 100644 tools/runonphone/trk/trk.pri
 delete mode 100644 tools/runonphone/trk/trkdevice.cpp
 delete mode 100644 tools/runonphone/trk/trkdevice.h
 delete mode 100644 tools/runonphone/trk/trkutils.cpp
 delete mode 100644 tools/runonphone/trk/trkutils.h
 delete mode 100644 tools/runonphone/trk/trkutils_p.h

diff --git a/tools/runonphone/runonphone.pro b/tools/runonphone/runonphone.pro
index 2c1be98..7bed3e5 100644
--- a/tools/runonphone/runonphone.pro
+++ b/tools/runonphone/runonphone.pro
@@ -4,7 +4,7 @@ QT -= gui
 CONFIG += console
 CONFIG -= app_bundle
 
-include(trk/trk.pri)
+include(symbianutils/symbianutils.pri)
 
 SOURCES += main.cpp \
     trksignalhandler.cpp
@@ -12,6 +12,8 @@ SOURCES += main.cpp \
 HEADERS += trksignalhandler.h \
     serenum.h
 
+DEFINES += SYMBIANUTILS_INCLUDE_PRI
+
 windows { 
     SOURCES += serenum_win.cpp 
     LIBS += -lsetupapi \
diff --git a/tools/runonphone/symbianutils/bluetoothlistener.cpp b/tools/runonphone/symbianutils/bluetoothlistener.cpp
new file mode 100644
index 0000000..df04288
--- /dev/null
+++ b/tools/runonphone/symbianutils/bluetoothlistener.cpp
@@ -0,0 +1,224 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "bluetoothlistener.h"
+#include "trkdevice.h"
+
+#include <QtCore/QDebug>
+
+#ifdef Q_OS_UNIX
+#   include <unistd.h>
+#   include <signal.h>
+#else
+#   include <windows.h>
+#endif
+
+// Process id helpers.
+#ifdef Q_OS_WIN
+inline DWORD processId(const QProcess &p)
+{
+    if (const Q_PID processInfoStruct = p.pid())
+        return processInfoStruct->dwProcessId;
+    return 0;
+}
+#else
+inline Q_PID processId(const QProcess &p)
+{
+    return p.pid();
+}
+#endif
+
+
+enum { debug = 0 };
+
+namespace trk {
+
+struct BluetoothListenerPrivate {
+    BluetoothListenerPrivate();
+    QString device;
+    QProcess process;
+#ifdef Q_OS_WIN
+    DWORD pid;
+#else
+    Q_PID pid;
+#endif
+    bool printConsoleMessages;
+    BluetoothListener::Mode mode;
+};
+
+BluetoothListenerPrivate::BluetoothListenerPrivate() :
+    pid(0),
+    printConsoleMessages(false),
+    mode(BluetoothListener::Listen)
+{
+}
+
+BluetoothListener::BluetoothListener(QObject *parent) :
+    QObject(parent),
+    d(new BluetoothListenerPrivate)
+{
+    d->process.setProcessChannelMode(QProcess::MergedChannels);
+
+    connect(&d->process, SIGNAL(readyReadStandardError()),
+            this, SLOT(slotStdError()));
+    connect(&d->process, SIGNAL(readyReadStandardOutput()),
+            this, SLOT(slotStdOutput()));
+    connect(&d->process, SIGNAL(finished(int, QProcess::ExitStatus)),
+            this, SLOT(slotProcessFinished(int,QProcess::ExitStatus)));
+    connect(&d->process, SIGNAL(error(QProcess::ProcessError)),
+            this, SLOT(slotProcessError(QProcess::ProcessError)));
+}
+
+BluetoothListener::~BluetoothListener()
+{
+    const int trc = terminateProcess();
+    if (debug)
+        qDebug() << "~BluetoothListener: terminated" << trc;
+    delete d;
+}
+
+BluetoothListener::Mode BluetoothListener::mode() const
+{
+    return d->mode;
+}
+
+void BluetoothListener::setMode(Mode m)
+{
+    d->mode = m;
+}
+
+bool BluetoothListener::printConsoleMessages() const
+{
+    return d->printConsoleMessages;
+}
+
+void BluetoothListener::setPrintConsoleMessages(bool p)
+{
+    d->printConsoleMessages = p;
+}
+
+int BluetoothListener::terminateProcess()
+{
+    enum { TimeOutMS = 200 };
+    if (debug)
+        qDebug() << "terminateProcess" << d->process.pid() << d->process.state();
+    if (d->process.state() == QProcess::NotRunning)
+        return -1;
+    emitMessage(tr("%1: Stopping listener %2...").arg(d->device).arg(processId(d->process)));
+    // When listening, the process should terminate by itself after closing the connection
+    if (mode() == Listen && d->process.waitForFinished(TimeOutMS))
+        return 0;
+#ifdef Q_OS_UNIX
+    kill(d->process.pid(), SIGHUP); // Listens for SIGHUP
+    if (d->process.waitForFinished(TimeOutMS))
+        return 1;
+#endif
+    d->process.terminate();
+    if (d->process.waitForFinished(TimeOutMS))
+        return 2;
+    d->process.kill();
+    return 3;
+}
+
+bool BluetoothListener::start(const QString &device, QString *errorMessage)
+{
+    if (d->process.state() != QProcess::NotRunning) {
+        *errorMessage = QLatin1String("Internal error: Still running.");
+        return false;
+    }
+    d->device = device;
+    const QString binary = QLatin1String("rfcomm");
+    QStringList arguments;
+    arguments << QLatin1String("-r")
+              << (d->mode == Listen ? QLatin1String("listen") : QLatin1String("watch"))
+              << device << QString(QLatin1Char('1'));
+    if (debug)
+        qDebug() << binary << arguments;
+    emitMessage(tr("%1: Starting Bluetooth listener %2...").arg(device, binary));
+    d->pid = 0;
+    d->process.start(binary, arguments);
+    if (!d->process.waitForStarted()) {
+        *errorMessage = tr("Unable to run '%1': %2").arg(binary, d->process.errorString());
+        return false;
+    }
+    d->pid = processId(d->process); // Forgets it after crash/termination
+    emitMessage(tr("%1: Bluetooth listener running (%2).").arg(device).arg(processId(d->process)));
+    return true;
+}
+
+void BluetoothListener::slotStdOutput()
+{
+    emitMessage(QString::fromLocal8Bit(d->process.readAllStandardOutput()));
+}
+
+void BluetoothListener::emitMessage(const QString &m)
+{
+    if (d->printConsoleMessages || debug)
+        qDebug("%s\n", qPrintable(m));
+    emit message(m);
+}
+
+void BluetoothListener::slotStdError()
+{
+    emitMessage(QString::fromLocal8Bit(d->process.readAllStandardError()));
+}
+
+void BluetoothListener::slotProcessFinished(int ex, QProcess::ExitStatus state)
+{
+    switch (state) {
+    case QProcess::NormalExit:
+        emitMessage(tr("%1: Process %2 terminated with exit code %3.")
+                    .arg(d->device).arg(d->pid).arg(ex));
+        break;
+    case QProcess::CrashExit:
+        emitMessage(tr("%1: Process %2 crashed.").arg(d->device).arg(d->pid));
+        break;
+    }
+    emit terminated();
+}
+
+void BluetoothListener::slotProcessError(QProcess::ProcessError error)
+{
+    emitMessage(tr("%1: Process error %2: %3")
+        .arg(d->device).arg(error).arg(d->process.errorString()));
+}
+
+} // namespace trk
diff --git a/tools/runonphone/symbianutils/bluetoothlistener.h b/tools/runonphone/symbianutils/bluetoothlistener.h
new file mode 100644
index 0000000..36894e7
--- /dev/null
+++ b/tools/runonphone/symbianutils/bluetoothlistener.h
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef BLUETOOTHLISTENER_H
+#define BLUETOOTHLISTENER_H
+
+#include "symbianutils_global.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QProcess>
+
+namespace trk {
+struct BluetoothListenerPrivate;
+
+/* BluetoothListener: Starts a helper process watching connections on a
+ * Bluetooth device, Linux only:
+ * The rfcomm command is used. It process can be started in the background
+ * while connection attempts (TrkDevice::open()) are made in the foreground. */
+
+class SYMBIANUTILS_EXPORT BluetoothListener : public QObject
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(BluetoothListener)
+public:
+    // The Mode property must be set before calling start().
+    enum Mode {
+        Listen, /* Terminate after client closed (read: Trk app
+                 * on the phone terminated or disconnected).*/
+        Watch   // Keep running, watch for next connection from client
+    };
+
+    explicit BluetoothListener(QObject *parent = 0);
+    virtual ~BluetoothListener();
+
+    Mode mode() const;
+    void setMode(Mode m);
+
+    bool start(const QString &device, QString *errorMessage);
+
+    // Print messages on the console.
+    bool printConsoleMessages() const;
+    void setPrintConsoleMessages(bool p);
+
+signals:
+    void terminated();
+    void message(const QString &);
+
+public slots:
+    void emitMessage(const QString &m); // accessed by starter
+
+private slots:
+    void slotStdOutput();
+    void slotStdError();
+    void slotProcessFinished(int, QProcess::ExitStatus);
+    void slotProcessError(QProcess::ProcessError error);
+
+private:
+    int terminateProcess();
+
+    BluetoothListenerPrivate *d;
+};
+
+} // namespace trk
+
+#endif // BLUETOOTHLISTENER_H
diff --git a/tools/runonphone/symbianutils/bluetoothlistener_gui.cpp b/tools/runonphone/symbianutils/bluetoothlistener_gui.cpp
new file mode 100644
index 0000000..5994eb5
--- /dev/null
+++ b/tools/runonphone/symbianutils/bluetoothlistener_gui.cpp
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "bluetoothlistener_gui.h"
+#include "bluetoothlistener.h"
+#include "communicationstarter.h"
+
+#include <QtGui/QMessageBox>
+#include <QtGui/QPushButton>
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDebug>
+
+namespace trk {
+
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+    promptStartCommunication(BaseCommunicationStarter &starter,
+                             const QString &msgBoxTitle,
+                             const QString &msgBoxText,
+                             QWidget *msgBoxParent,
+                             QString *errorMessage)
+{
+    errorMessage->clear();
+    // Initial connection attempt.
+    switch (starter.start()) {
+    case BaseCommunicationStarter::Started:
+        break;
+    case BaseCommunicationStarter::ConnectionSucceeded:
+        return PromptStartCommunicationConnected;
+    case BaseCommunicationStarter::StartError:
+        *errorMessage = starter.errorString();
+        return PromptStartCommunicationError;
+    }
+    // Run the starter with the event loop of a message box, have the box
+    // closed by the signals of the starter.
+    QMessageBox messageBox(QMessageBox::Information, msgBoxTitle, msgBoxText, QMessageBox::Cancel, msgBoxParent);
+    QObject::connect(&starter, SIGNAL(connected()), &messageBox, SLOT(close()));
+    QObject::connect(&starter, SIGNAL(timeout()), &messageBox, SLOT(close()));
+    messageBox.exec();    
+    // Only starter.state() is reliable here to obtain the state.
+    switch (starter.state()) {
+    case AbstractBluetoothStarter::Running:
+        *errorMessage = QCoreApplication::translate("trk::promptStartCommunication", "Connection on %1 canceled.").arg(starter.device());
+        return PromptStartCommunicationCanceled;
+    case AbstractBluetoothStarter::TimedOut:
+        *errorMessage = starter.errorString();
+        return PromptStartCommunicationError;
+    case AbstractBluetoothStarter::Connected:
+        break;
+    }
+    return PromptStartCommunicationConnected;
+}
+
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+    promptStartSerial(BaseCommunicationStarter &starter,
+                         QWidget *msgBoxParent,
+                         QString *errorMessage)
+{
+    const QString title = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for App TRK");
+    const QString message = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for App TRK to start on %1...").arg(starter.device());
+    return promptStartCommunication(starter, title, message, msgBoxParent, errorMessage);
+}
+
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+    promptStartBluetooth(BaseCommunicationStarter &starter,
+                         QWidget *msgBoxParent,
+                         QString *errorMessage)
+{
+    const QString title = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for Bluetooth Connection");
+    const QString message = QCoreApplication::translate("trk::promptStartCommunication", "Connecting to %1...").arg(starter.device());
+    return promptStartCommunication(starter, title, message, msgBoxParent, errorMessage);
+}
+
+} // namespace trk
diff --git a/tools/runonphone/symbianutils/bluetoothlistener_gui.h b/tools/runonphone/symbianutils/bluetoothlistener_gui.h
new file mode 100644
index 0000000..10e7145
--- /dev/null
+++ b/tools/runonphone/symbianutils/bluetoothlistener_gui.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef BLUETOOTHLISTENER_GUI_H
+#define BLUETOOTHLISTENER_GUI_H
+
+#include "symbianutils_global.h"
+
+#include <QtCore/QtGlobal>
+
+QT_BEGIN_NAMESPACE
+class QWidget;
+QT_END_NAMESPACE
+
+namespace trk {
+class BaseCommunicationStarter;
+
+/* promptStartCommunication(): Convenience functions that
+ * prompt the user to start a communication (launching or
+ * connecting TRK) using a modal message box in which they can cancel.
+ * Pass in the starter with device and parameters set up.  */
+
+enum PromptStartCommunicationResult {
+    PromptStartCommunicationConnected,
+    PromptStartCommunicationCanceled,
+    PromptStartCommunicationError
+};
+
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+        promptStartCommunication(BaseCommunicationStarter &starter,
+                                 const QString &msgBoxTitle,
+                                 const QString &msgBoxText,
+                                 QWidget *msgBoxParent,
+                                 QString *errorMessage);
+
+// Convenience to start a serial connection (messages prompting
+// to launch Trk).
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+        promptStartSerial(BaseCommunicationStarter &starter,
+                          QWidget *msgBoxParent,
+                          QString *errorMessage);
+
+// Convenience to start blue tooth connection (messages
+// prompting to connect).
+SYMBIANUTILS_EXPORT PromptStartCommunicationResult
+        promptStartBluetooth(BaseCommunicationStarter &starter,
+                             QWidget *msgBoxParent,
+                             QString *errorMessage);
+} // namespace trk
+
+#endif // BLUETOOTHLISTENER_GUI_H
diff --git a/tools/runonphone/symbianutils/callback.h b/tools/runonphone/symbianutils/callback.h
new file mode 100644
index 0000000..3996d73
--- /dev/null
+++ b/tools/runonphone/symbianutils/callback.h
@@ -0,0 +1,160 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DEBUGGER_CALLBACK_H
+#define DEBUGGER_CALLBACK_H
+
+#include "symbianutils_global.h"
+
+namespace trk {
+namespace Internal {
+
+/* Helper class for the 1-argument functor:
+ * Cloneable base class for the implementation which is
+ * invokeable with the argument. */
+template <class Argument>
+class CallbackImplBase
+{
+    Q_DISABLE_COPY(CallbackImplBase)
+public:
+    CallbackImplBase() {}
+    virtual CallbackImplBase *clone() const = 0;
+    virtual void invoke(Argument a) = 0;
+    virtual ~CallbackImplBase() {}
+};
+
+/* Helper class for the 1-argument functor: Implementation for
+ * a class instance with a member function pointer. */
+template <class Class, class Argument>
+class CallbackMemberPtrImpl : public CallbackImplBase<Argument>
+{
+public:
+    typedef void (Class::*MemberFuncPtr)(Argument);
+
+    CallbackMemberPtrImpl(Class *instance,
+                          MemberFuncPtr memberFunc) :
+                          m_instance(instance),
+                          m_memberFunc(memberFunc) {}
+
+    virtual CallbackImplBase<Argument> *clone() const
+    {
+        return new CallbackMemberPtrImpl<Class, Argument>(m_instance, m_memberFunc);
+    }
+
+    virtual void invoke(Argument a)
+        { (m_instance->*m_memberFunc)(a); }
+private:
+    Class *m_instance;
+    MemberFuncPtr m_memberFunc;
+};
+
+} // namespace Internal
+
+/* Default-constructible, copyable 1-argument functor providing an
+ * operator()(Argument) that invokes a member function of a class:
+ * \code
+class Foo {
+public:
+    void print(const std::string &);
+};
+...
+Foo foo;
+Callback<const std::string &> f1(&foo, &Foo::print);
+f1("test");
+\endcode */
+
+template <class Argument>
+class Callback
+{
+public:
+    Callback() : m_impl(0) {}
+
+    template <class Class>
+    Callback(Class *instance, void (Class::*memberFunc)(Argument)) :
+        m_impl(new Internal::CallbackMemberPtrImpl<Class,Argument>(instance, memberFunc))
+    {}
+
+    ~Callback()
+    {
+        clean();
+    }
+
+    Callback(const Callback &rhs) :
+        m_impl(0)
+    {
+        if (rhs.m_impl)
+            m_impl = rhs.m_impl->clone();
+    }
+
+    Callback &operator=(const Callback &rhs)
+    {
+        if (this != &rhs) {
+            clean();
+            if (rhs.m_impl)
+                m_impl = rhs.m_impl->clone();
+        }
+        return *this;
+    }
+
+    bool isNull() const { return m_impl == 0; }
+    operator bool() const { return !isNull(); }
+
+    void operator()(Argument a)
+    {
+        if (m_impl)
+            m_impl->invoke(a);
+    }
+
+private:
+    void clean()
+    {
+        if (m_impl) {
+            delete m_impl;
+            m_impl = 0;
+        }
+    }
+
+    Internal::CallbackImplBase<Argument> *m_impl;
+};
+
+} // namespace trk
+
+#endif // DEBUGGER_CALLBACK_H
diff --git a/tools/runonphone/symbianutils/communicationstarter.cpp b/tools/runonphone/symbianutils/communicationstarter.cpp
new file mode 100644
index 0000000..e5e556e
--- /dev/null
+++ b/tools/runonphone/symbianutils/communicationstarter.cpp
@@ -0,0 +1,260 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "communicationstarter.h"
+#include "bluetoothlistener.h"
+#include "trkdevice.h"
+
+#include <QtCore/QTimer>
+#include <QtCore/QEventLoop>
+
+namespace trk {
+
+// --------------- AbstractBluetoothStarter
+struct BaseCommunicationStarterPrivate {
+    explicit BaseCommunicationStarterPrivate(const BaseCommunicationStarter::TrkDevicePtr &d);
+
+    const BaseCommunicationStarter::TrkDevicePtr trkDevice;
+    BluetoothListener *listener;
+    QTimer *timer;
+    int intervalMS;
+    int attempts;
+    int n;
+    QString device;
+    QString errorString;
+    BaseCommunicationStarter::State state;
+};
+
+BaseCommunicationStarterPrivate::BaseCommunicationStarterPrivate(const BaseCommunicationStarter::TrkDevicePtr &d) :
+        trkDevice(d),
+        listener(0),
+        timer(0),
+        intervalMS(1000),
+        attempts(-1),
+        n(0),
+        device(QLatin1String("/dev/rfcomm0")),
+        state(BaseCommunicationStarter::TimedOut)
+{
+}
+
+BaseCommunicationStarter::BaseCommunicationStarter(const TrkDevicePtr &trkDevice, QObject *parent) :
+        QObject(parent),
+        d(new BaseCommunicationStarterPrivate(trkDevice))
+{
+}
+
+BaseCommunicationStarter::~BaseCommunicationStarter()
+{
+    stopTimer();
+    delete d;
+}
+
+void BaseCommunicationStarter::stopTimer()
+{
+    if (d->timer && d->timer->isActive())
+        d->timer->stop();
+}
+
+bool BaseCommunicationStarter::initializeStartupResources(QString *errorMessage)
+{
+    errorMessage->clear();
+    return true;
+}
+
+BaseCommunicationStarter::StartResult BaseCommunicationStarter::start()
+{
+    if (state() == Running) {
+        d->errorString = QLatin1String("Internal error, attempt to re-start BaseCommunicationStarter.\n");
+        return StartError;
+    }
+    // Before we instantiate timers, and such, try to open the device,
+    // which should succeed if another listener is already running in
+    // 'Watch' mode
+    if (d->trkDevice->open(d->device , &(d->errorString)))
+        return ConnectionSucceeded;
+    // Pull up resources for next attempt
+    d->n = 0;
+    if (!initializeStartupResources(&(d->errorString)))
+        return StartError;
+    // Start timer
+    if (!d->timer) {
+        d->timer = new QTimer;
+        connect(d->timer, SIGNAL(timeout()), this, SLOT(slotTimer()));
+    }
+    d->timer->setInterval(d->intervalMS);
+    d->timer->setSingleShot(false);
+    d->timer->start();
+    d->state = Running;
+    return Started;
+}
+
+BaseCommunicationStarter::State BaseCommunicationStarter::state() const
+{
+    return d->state;
+}
+
+int BaseCommunicationStarter::intervalMS() const
+{
+    return d->intervalMS;
+}
+
+void BaseCommunicationStarter::setIntervalMS(int i)
+{
+    d->intervalMS = i;
+    if (d->timer)
+        d->timer->setInterval(i);
+}
+
+int BaseCommunicationStarter::attempts() const
+{
+    return d->attempts;
+}
+
+void BaseCommunicationStarter::setAttempts(int a)
+{
+    d->attempts = a;
+}
+
+QString BaseCommunicationStarter::device() const
+{
+    return d->device;
+}
+
+void BaseCommunicationStarter::setDevice(const QString &dv)
+{
+    d->device = dv;
+}
+
+QString BaseCommunicationStarter::errorString() const
+{
+    return d->errorString;
+}
+
+void BaseCommunicationStarter::slotTimer()
+{
+    ++d->n;
+    // Check for timeout
+    if (d->attempts >= 0 && d->n >= d->attempts) {
+        stopTimer();
+        d->errorString = tr("%1: timed out after %n attempts using an interval of %2ms.", 0, d->n)
+                         .arg(d->device).arg(d->intervalMS);
+        d->state = TimedOut;
+        emit timeout();
+    } else {
+        // Attempt n to connect?
+        if (d->trkDevice->open(d->device , &(d->errorString))) {
+            stopTimer();
+            const QString msg = tr("%1: Connection attempt %2 succeeded.").arg(d->device).arg(d->n);
+            emit message(msg);
+            d->state = Connected;
+            emit connected();
+        } else {
+            const QString msg = tr("%1: Connection attempt %2 failed: %3 (retrying)...")
+                                .arg(d->device).arg(d->n).arg(d->errorString);
+            emit message(msg);
+        }
+    }
+}
+
+// --------------- AbstractBluetoothStarter
+
+AbstractBluetoothStarter::AbstractBluetoothStarter(const TrkDevicePtr &trkDevice, QObject *parent) :
+    BaseCommunicationStarter(trkDevice, parent)
+{
+}
+
+bool AbstractBluetoothStarter::initializeStartupResources(QString *errorMessage)
+{
+    // Create the listener and forward messages to it.
+    BluetoothListener *listener = createListener();
+    connect(this, SIGNAL(message(QString)), listener, SLOT(emitMessage(QString)));
+    return listener->start(device(), errorMessage);
+}
+
+// -------- ConsoleBluetoothStarter
+ConsoleBluetoothStarter::ConsoleBluetoothStarter(const TrkDevicePtr &trkDevice,
+                                                 QObject *listenerParent,
+                                                 QObject *parent) :
+AbstractBluetoothStarter(trkDevice, parent),
+m_listenerParent(listenerParent)
+{
+}
+
+BluetoothListener *ConsoleBluetoothStarter::createListener()
+{
+    BluetoothListener *rc = new BluetoothListener(m_listenerParent);
+    rc->setMode(BluetoothListener::Listen);
+    rc->setPrintConsoleMessages(true);
+    return rc;
+}
+
+bool ConsoleBluetoothStarter::startBluetooth(const TrkDevicePtr &trkDevice,
+                                             QObject *listenerParent,
+                                             const QString &device,
+                                             int attempts,
+                                             QString *errorMessage)
+{
+    // Set up a console starter to print to stdout.
+    ConsoleBluetoothStarter starter(trkDevice, listenerParent);
+    starter.setDevice(device);
+    starter.setAttempts(attempts);
+    switch (starter.start()) {
+    case Started:
+        break;
+    case ConnectionSucceeded:
+        return true;
+    case StartError:
+        *errorMessage = starter.errorString();
+        return false;
+    }
+    // Run the starter with an event loop. @ToDo: Implement
+    // some asynchronous keypress read to cancel.
+    QEventLoop eventLoop;
+    connect(&starter, SIGNAL(connected()), &eventLoop, SLOT(quit()));
+    connect(&starter, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
+    eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
+    if (starter.state() != AbstractBluetoothStarter::Connected) {
+        *errorMessage = starter.errorString();
+        return false;
+    }
+    return true;
+}
+} // namespace trk
diff --git a/tools/runonphone/symbianutils/communicationstarter.h b/tools/runonphone/symbianutils/communicationstarter.h
new file mode 100644
index 0000000..2d7dc50
--- /dev/null
+++ b/tools/runonphone/symbianutils/communicationstarter.h
@@ -0,0 +1,162 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef COMMUNICATIONSTARTER_H
+#define COMMUNICATIONSTARTER_H
+
+#include "symbianutils_global.h"
+
+#include <QtCore/QSharedPointer>
+#include <QtCore/QObject>
+
+namespace trk {
+class TrkDevice;
+class BluetoothListener;
+struct BaseCommunicationStarterPrivate;
+
+/* BaseCommunicationStarter: A QObject that repeatedly tries to open a
+ * trk device until a connection succeeds or a timeout occurs (emitting
+ * signals), allowing to do something else in the foreground (local event loop
+ * [say QMessageBox] or some asynchronous operation). If the initial
+ * connection attempt in start() fails, the
+ * virtual initializeStartupResources() is called to initialize resources
+ * required to pull up the communication (namely Bluetooth listeners).
+ * The base class can be used as is to prompt the user to launch App TRK for a
+ * serial communication as this requires no further resource setup. */
+
+class SYMBIANUTILS_EXPORT BaseCommunicationStarter : public QObject {
+    Q_OBJECT
+    Q_DISABLE_COPY(BaseCommunicationStarter)
+public:
+    typedef QSharedPointer<TrkDevice> TrkDevicePtr;
+
+    enum State { Running, Connected, TimedOut };
+
+    explicit BaseCommunicationStarter(const TrkDevicePtr& trkDevice, QObject *parent = 0);
+    virtual ~BaseCommunicationStarter();
+
+    int intervalMS() const;
+    void setIntervalMS(int i);
+
+    int attempts() const;
+    void setAttempts(int a);
+
+    QString device() const;
+    void setDevice(const QString &);
+
+    State state() const;
+    QString errorString() const;
+
+    enum StartResult {
+        Started,               // Starter is now running.
+        ConnectionSucceeded,   /* Initial connection attempt succeeded,
+                                * no need to keep running. */
+        StartError             // Error occurred during start.
+    };
+
+    StartResult start();
+
+signals:
+    void connected();
+    void timeout();
+    void message(const QString &);
+
+private slots:
+    void slotTimer();
+
+protected:
+    virtual bool initializeStartupResources(QString *errorMessage);
+
+private:
+    inline void stopTimer();
+
+    BaseCommunicationStarterPrivate *d;
+};
+
+/* AbstractBluetoothStarter: Repeatedly tries to open a trk Bluetooth
+ * device. Note that in case a Listener is already running mode, the
+ * connection will succeed immediately.
+ * initializeStartupResources() is implemented to fire up the listener.
+ * Introduces a new virtual createListener() that derived classes must
+ * implement as a factory function that creates and sets up the
+ * listener (mode, message connection, etc). */
+
+class SYMBIANUTILS_EXPORT AbstractBluetoothStarter : public BaseCommunicationStarter {
+    Q_OBJECT
+    Q_DISABLE_COPY(AbstractBluetoothStarter)
+public:
+
+protected:
+    explicit AbstractBluetoothStarter(const TrkDevicePtr& trkDevice, QObject *parent = 0);
+
+    // Implemented to fire up the listener.
+    virtual bool initializeStartupResources(QString *errorMessage);
+    // New virtual: Overwrite to create and parametrize the listener.
+    virtual BluetoothListener *createListener() = 0;
+};
+
+/* ConsoleBluetoothStarter: Convenience class for console processes. Creates a
+ * listener in "Listen" mode with the messages redirected to standard output. */
+
+class SYMBIANUTILS_EXPORT ConsoleBluetoothStarter : public AbstractBluetoothStarter {
+    Q_OBJECT
+    Q_DISABLE_COPY(ConsoleBluetoothStarter)
+public:
+    static bool startBluetooth(const TrkDevicePtr& trkDevice,
+                               QObject *listenerParent,
+                               const QString &device,
+                               int attempts,
+                               QString *errorMessage);
+
+protected:
+    virtual BluetoothListener *createListener();
+
+private:
+    explicit ConsoleBluetoothStarter(const TrkDevicePtr& trkDevice,
+                                     QObject *listenerParent,
+                                     QObject *parent = 0);
+
+    QObject *m_listenerParent;
+};
+
+} // namespace trk
+
+#endif // COMMUNICATIONSTARTER_H
diff --git a/tools/runonphone/symbianutils/launcher.cpp b/tools/runonphone/symbianutils/launcher.cpp
new file mode 100644
index 0000000..4f91545
--- /dev/null
+++ b/tools/runonphone/symbianutils/launcher.cpp
@@ -0,0 +1,741 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "launcher.h"
+#include "trkutils.h"
+#include "trkutils_p.h"
+#include "trkdevice.h"
+#include "bluetoothlistener.h"
+
+#include <QtCore/QTimer>
+#include <QtCore/QDateTime>
+#include <QtCore/QVariant>
+#include <QtCore/QDebug>
+#include <QtCore/QQueue>
+#include <QtCore/QFile>
+#include <QtCore/QScopedPointer>
+
+namespace trk {
+
+struct LauncherPrivate {
+    struct CopyState {
+        QString sourceFileName;
+        QString destinationFileName;
+        uint copyFileHandle;
+        QScopedPointer<QByteArray> data;
+        int position;
+    };
+
+    explicit LauncherPrivate(const TrkDevicePtr &d);
+
+    TrkDevicePtr m_device;
+    QString m_trkServerName;
+    QByteArray m_trkReadBuffer;
+    Launcher::State m_state;
+
+    void logMessage(const QString &msg);
+    // Debuggee state
+    Session m_session; // global-ish data (process id, target information)
+
+    CopyState m_copyState;
+    QString m_fileName;
+    QStringList m_commandLineArgs;
+    QString m_installFileName;
+    int m_verbose;
+    Launcher::Actions m_startupActions;
+    bool m_closeDevice;
+};
+
+LauncherPrivate::LauncherPrivate(const TrkDevicePtr &d) :
+    m_device(d),
+    m_state(Launcher::Disconnected),
+    m_verbose(0),
+    m_closeDevice(true)
+{
+    if (m_device.isNull())
+        m_device = TrkDevicePtr(new TrkDevice);
+}
+
+Launcher::Launcher(Actions startupActions,
+                   const TrkDevicePtr &dev,
+                   QObject *parent) :
+    QObject(parent),
+    d(new LauncherPrivate(dev))
+{
+    d->m_startupActions = startupActions;
+    connect(d->m_device.data(), SIGNAL(messageReceived(trk::TrkResult)), this, SLOT(handleResult(trk::TrkResult)));    
+    connect(this, SIGNAL(finished()), d->m_device.data(), SLOT(close()));
+}
+
+Launcher::~Launcher()
+{
+    logMessage("Shutting down.\n");
+    delete d;
+}
+
+Launcher::State Launcher::state() const
+{
+    return d->m_state;
+}
+
+void Launcher::setState(State s)
+{
+    if (s != d->m_state) {
+        d->m_state = s;
+        emit stateChanged(s);
+    }
+}
+
+void Launcher::addStartupActions(trk::Launcher::Actions startupActions)
+{
+    d->m_startupActions = Actions(d->m_startupActions | startupActions);
+}
+
+void Launcher::setTrkServerName(const QString &name)
+{
+    d->m_trkServerName = name;
+}
+
+QString Launcher::trkServerName() const
+{
+    return d->m_trkServerName;
+}
+
+TrkDevicePtr Launcher::trkDevice() const
+{
+    return d->m_device;
+}
+
+void Launcher::setFileName(const QString &name)
+{
+    d->m_fileName = name;
+}
+
+void Launcher::setCopyFileName(const QString &srcName, const QString &dstName)
+{
+    d->m_copyState.sourceFileName = srcName;
+    d->m_copyState.destinationFileName = dstName;
+}
+
+void Launcher::setInstallFileName(const QString &name)
+{
+    d->m_installFileName = name;
+}
+
+void Launcher::setCommandLineArgs(const QStringList &args)
+{
+    d->m_commandLineArgs = args;
+}
+
+void Launcher::setSerialFrame(bool b)
+{
+    d->m_device->setSerialFrame(b);
+}
+
+bool Launcher::serialFrame() const
+{
+    return d->m_device->serialFrame();
+}
+
+
+bool Launcher::closeDevice() const
+{
+    return d->m_closeDevice;
+}
+
+void Launcher::setCloseDevice(bool c)
+{
+    d->m_closeDevice = c;
+}
+
+bool Launcher::startServer(QString *errorMessage)
+{
+    errorMessage->clear();
+    if (d->m_verbose) {
+        const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Arguments=%3 Package=%4 Remote Package=%5 Install file=%6")
+                            .arg(d->m_trkServerName, d->m_fileName,
+                                 d->m_commandLineArgs.join(QString(QLatin1Char(' '))),
+                                 d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
+        logMessage(msg);
+    }
+    if (d->m_startupActions & ActionCopy) {
+        if (d->m_copyState.sourceFileName.isEmpty()) {
+            qWarning("No local filename given for copying package.");
+            return false;
+        } else if (d->m_copyState.destinationFileName.isEmpty()) {
+            qWarning("No remote filename given for copying package.");
+            return false;
+        }
+    }
+    if (d->m_startupActions & ActionInstall && d->m_installFileName.isEmpty()) {
+        qWarning("No package name given for installing.");
+        return false;
+    }
+    if (d->m_startupActions & ActionRun && d->m_fileName.isEmpty()) {
+        qWarning("No remote executable given for running.");
+        return false;
+    }
+    if (!d->m_device->isOpen() && !d->m_device->open(d->m_trkServerName, errorMessage))
+        return false;
+    if (d->m_closeDevice) {
+        connect(this, SIGNAL(finished()), d->m_device.data(), SLOT(close()));
+    } else {
+        disconnect(this, SIGNAL(finished()), d->m_device.data(), 0);
+    }
+    setState(Connecting);
+    // Set up the temporary 'waiting' state if we do not get immediate connection
+    QTimer::singleShot(1000, this, SLOT(slotWaitingForTrk()));
+    d->m_device->sendTrkInitialPing();
+    d->m_device->sendTrkMessage(TrkDisconnect); // Disconnect, as trk might be still connected
+    d->m_device->sendTrkMessage(TrkSupported, TrkCallback(this, &Launcher::handleSupportMask));
+    d->m_device->sendTrkMessage(TrkCpuType, TrkCallback(this, &Launcher::handleCpuType));
+    d->m_device->sendTrkMessage(TrkVersions, TrkCallback(this, &Launcher::handleTrkVersion));
+    if (d->m_startupActions != ActionPingOnly)
+        d->m_device->sendTrkMessage(TrkConnect, TrkCallback(this, &Launcher::handleConnect));
+    return true;
+}
+
+void Launcher::slotWaitingForTrk()
+{
+    // Set temporary state if we are still in connected state
+    if (state() == Connecting)
+        setState(WaitingForTrk);
+}
+
+void Launcher::handleConnect(const TrkResult &result)
+{
+    if (result.errorCode()) {
+        emit canNotConnect(result.errorString());
+        return;
+    }
+    setState(Connected);
+    if (d->m_startupActions & ActionCopy)
+        copyFileToRemote();
+    else if (d->m_startupActions & ActionInstall)
+        installRemotePackageSilently();
+    else if (d->m_startupActions & ActionRun)
+        startInferiorIfNeeded();
+}
+
+void Launcher::setVerbose(int v)
+{
+    d->m_verbose = v;
+    d->m_device->setVerbose(v);
+}
+
+void Launcher::logMessage(const QString &msg)
+{
+    if (d->m_verbose)
+        qDebug() << "LAUNCHER: " << qPrintable(msg);
+}
+
+void Launcher::terminate()
+{
+    switch (state()) {
+    case DeviceDescriptionReceived:
+    case Connected:
+        if (d->m_session.pid) {
+            QByteArray ba;
+            appendShort(&ba, 0x0000, TargetByteOrder);
+            appendInt(&ba, d->m_session.pid, TargetByteOrder);
+            d->m_device->sendTrkMessage(TrkDeleteItem, TrkCallback(this, &Launcher::handleRemoteProcessKilled), ba);
+            return;
+        }
+        if (d->m_copyState.copyFileHandle)
+            closeRemoteFile(true);
+        disconnectTrk();
+        break;
+    case Disconnected:
+        break;
+    case Connecting:
+    case WaitingForTrk:
+        setState(Disconnected);
+        emit finished();
+        break;
+    }
+}
+
+void Launcher::handleRemoteProcessKilled(const TrkResult &result)
+{
+    Q_UNUSED(result)
+    disconnectTrk();
+}
+
+QString Launcher::msgStopped(uint pid, uint tid, uint address, const QString &why)
+{
+    return QString::fromLatin1("Process %1, thread %2 stopped at 0x%3: %4").
+            arg(pid).arg(tid).arg(address, 0, 16).
+            arg(why.isEmpty() ? QString::fromLatin1("<Unknown reason>") : why);
+}
+
+bool Launcher::parseNotifyStopped(const QByteArray &dataBA,
+                                  uint *pid, uint *tid, uint *address,
+                                  QString *why /* = 0 */)
+{
+    if (why)
+        why->clear();
+    *address = *pid = *tid = 0;
+    if (dataBA.size() < 12)
+        return false;
+    const char *data = dataBA.data();
+    *address = extractInt(data);
+    *pid = extractInt(data + 4);
+    *tid = extractInt(data + 8);
+    if (why && dataBA.size() >= 14) {
+        const unsigned short len = extractShort(data + 12);
+        if (len > 0)
+            *why = QString::fromLatin1(data + 14, len);
+    }
+    return true;
+}
+
+void Launcher::handleResult(const TrkResult &result)
+{
+    QByteArray prefix = "READ BUF:                                       ";
+    QByteArray str = result.toString().toUtf8();
+    if (result.isDebugOutput) { // handle application output
+        logMessage("APPLICATION OUTPUT: " + result.data);
+        emit applicationOutputReceived(result.data);
+        return;
+    }
+    switch (result.code) {
+        case TrkNotifyAck:
+            break;
+        case TrkNotifyNak: { // NAK
+            logMessage(prefix + "NAK: " + str);
+            //logMessage(prefix << "TOKEN: " << result.token);
+            logMessage(prefix + "ERROR: " + errorMessage(result.data.at(0)));
+            break;
+        }
+        case TrkNotifyStopped: { // Notified Stopped
+            QString reason;
+            uint pc;
+            uint pid;
+            uint tid;
+            parseNotifyStopped(result.data, &pid, &tid, &pc, &reason);
+            logMessage(prefix + msgStopped(pid, tid, pc, reason));
+            emit(processStopped(pc, pid, tid, reason));
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+        case TrkNotifyException: { // Notify Exception (obsolete)
+            logMessage(prefix + "NOTE: EXCEPTION  " + str);
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+        case TrkNotifyInternalError: { //
+            logMessage(prefix + "NOTE: INTERNAL ERROR: " + str);
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+
+        // target->host OS notification
+        case TrkNotifyCreated: { // Notify Created
+            /*
+            const char *data = result.data.data();
+            byte error = result.data.at(0);
+            byte type = result.data.at(1); // type: 1 byte; for dll item, this value is 2.
+            uint pid = extractInt(data + 2); //  ProcessID: 4 bytes;
+            uint tid = extractInt(data + 6); //threadID: 4 bytes
+            uint codeseg = extractInt(data + 10); //code address: 4 bytes; code base address for the library
+            uint dataseg = extractInt(data + 14); //data address: 4 bytes; data base address for the library
+            uint len = extractShort(data + 18); //length: 2 bytes; length of the library name string to follow
+            QByteArray name = result.data.mid(20, len); // name: library name
+
+            logMessage(prefix + "NOTE: LIBRARY LOAD: " + str);
+            logMessage(prefix + "TOKEN: " + result.token);
+            logMessage(prefix + "ERROR: " + int(error));
+            logMessage(prefix + "TYPE:  " + int(type));
+            logMessage(prefix + "PID:   " + pid);
+            logMessage(prefix + "TID:   " + tid);
+            logMessage(prefix + "CODE:  " + codeseg);
+            logMessage(prefix + "DATA:  " + dataseg);
+            logMessage(prefix + "LEN:   " + len);
+            logMessage(prefix + "NAME:  " + name);
+            */
+
+            if (result.data.size() < 10)
+                break;
+            QByteArray ba;
+            ba.append(result.data.mid(2, 8));
+            d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
+            //d->m_device->sendTrkAck(result.token)
+            break;
+        }
+        case TrkNotifyDeleted: { // NotifyDeleted
+            const ushort itemType = (unsigned char)result.data.at(1);
+            const ushort len = result.data.size() > 12 ? extractShort(result.data.data() + 10) : ushort(0);
+            const QString name = len ? QString::fromAscii(result.data.mid(12, len)) : QString();
+            logMessage(QString::fromLatin1("%1 %2 UNLOAD: %3").
+                       arg(QString::fromAscii(prefix)).arg(itemType ? QLatin1String("LIB") : QLatin1String("PROCESS")).
+                       arg(name));
+            d->m_device->sendTrkAck(result.token);
+            if (itemType == 0 // process
+                && result.data.size() >= 10
+                && d->m_session.pid == extractInt(result.data.data() + 6)) {
+                disconnectTrk();
+            }
+            break;
+        }
+        case TrkNotifyProcessorStarted: { // NotifyProcessorStarted
+            logMessage(prefix + "NOTE: PROCESSOR STARTED: " + str);
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+        case TrkNotifyProcessorStandBy: { // NotifyProcessorStandby
+            logMessage(prefix + "NOTE: PROCESSOR STANDBY: " + str);
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+        case TrkNotifyProcessorReset: { // NotifyProcessorReset
+            logMessage(prefix + "NOTE: PROCESSOR RESET: " + str);
+            d->m_device->sendTrkAck(result.token);
+            break;
+        }
+        default: {
+            logMessage(prefix + "INVALID: " + str);
+            break;
+        }
+    }
+}
+
+QString Launcher::deviceDescription(unsigned verbose) const
+{
+    return d->m_session.deviceDescription(verbose);
+}
+
+void Launcher::handleTrkVersion(const TrkResult &result)
+{
+    if (result.errorCode() || result.data.size() < 5) {
+        if (d->m_startupActions == ActionPingOnly) {
+            setState(Disconnected);
+            emit finished();
+        }
+        return;
+    }
+    d->m_session.trkAppVersion.trkMajor = result.data.at(1);
+    d->m_session.trkAppVersion.trkMinor = result.data.at(2);
+    d->m_session.trkAppVersion.protocolMajor = result.data.at(3);
+    d->m_session.trkAppVersion.protocolMinor = result.data.at(4);
+    setState(DeviceDescriptionReceived);
+    // Ping mode: Log & Terminate
+    if (d->m_startupActions == ActionPingOnly) {
+        qWarning("%s", qPrintable(deviceDescription()));
+        setState(Disconnected);
+        emit finished();
+    }
+}
+
+void Launcher::handleFileCreation(const TrkResult &result)
+{
+    if (result.errorCode() || result.data.size() < 6) {
+        emit canNotCreateFile(d->m_copyState.destinationFileName, result.errorString());
+        disconnectTrk();
+        return;
+    }
+    const char *data = result.data.data();
+    d->m_copyState.copyFileHandle = extractInt(data + 2);
+    QFile file(d->m_copyState.sourceFileName);
+    file.open(QIODevice::ReadOnly);
+    d->m_copyState.data.reset(new QByteArray(file.readAll()));
+    d->m_copyState.position = 0;
+    file.close();
+    continueCopying();
+}
+
+void Launcher::handleCopy(const TrkResult &result)
+{
+    if (result.errorCode() || result.data.size() < 4) {
+        closeRemoteFile(true);
+        emit canNotWriteFile(d->m_copyState.destinationFileName, result.errorString());
+        disconnectTrk();
+    } else {
+        continueCopying(extractShort(result.data.data() + 2));
+    }
+}
+
+void Launcher::continueCopying(uint lastCopiedBlockSize)
+{
+    int size = d->m_copyState.data->length();
+    d->m_copyState.position += lastCopiedBlockSize;
+    if (size == 0)
+        emit copyProgress(100);
+    else {
+        int percent = qMin((d->m_copyState.position*100)/size, 100);
+        emit copyProgress(percent);
+    }
+    if (d->m_copyState.position < size) {
+        QByteArray ba;
+        appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
+        appendString(&ba, d->m_copyState.data->mid(d->m_copyState.position, 2048), TargetByteOrder, false);
+        d->m_device->sendTrkMessage(TrkWriteFile, TrkCallback(this, &Launcher::handleCopy), ba);
+    } else {
+        closeRemoteFile();
+    }
+}
+
+void Launcher::closeRemoteFile(bool failed)
+{
+    QByteArray ba;
+    appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
+    appendDateTime(&ba, QDateTime::currentDateTime(), TargetByteOrder);
+    d->m_device->sendTrkMessage(TrkCloseFile,
+                               failed ? TrkCallback() : TrkCallback(this, &Launcher::handleFileCopied),
+                               ba);
+    d->m_copyState.data.reset();
+    d->m_copyState.copyFileHandle = 0;
+    d->m_copyState.position = 0;
+}
+
+void Launcher::handleFileCopied(const TrkResult &result)
+{
+    if (result.errorCode())
+        emit canNotCloseFile(d->m_copyState.destinationFileName, result.errorString());
+    if (d->m_startupActions & ActionInstall)
+        installRemotePackageSilently();
+    else if (d->m_startupActions & ActionRun)
+        startInferiorIfNeeded();
+    else
+        disconnectTrk();
+}
+
+void Launcher::handleCpuType(const TrkResult &result)
+{
+    logMessage("HANDLE CPU TYPE: " + result.toString());
+    if(result.errorCode() || result.data.size() < 7)
+        return;
+    //---TRK------------------------------------------------------
+    //  Command: 0x80 Acknowledge
+    //    Error: 0x00
+    // [80 03 00  04 00 00 04 00 00 00]
+    d->m_session.cpuMajor = result.data.at(1);
+    d->m_session.cpuMinor = result.data.at(2);
+    d->m_session.bigEndian = result.data.at(3);
+    d->m_session.defaultTypeSize = result.data.at(4);
+    d->m_session.fpTypeSize = result.data.at(5);
+    d->m_session.extended1TypeSize = result.data.at(6);
+    //d->m_session.extended2TypeSize = result.data[6];
+}
+
+void Launcher::handleCreateProcess(const TrkResult &result)
+{
+    if (result.errorCode()) {
+        emit canNotRun(result.errorString());
+        disconnectTrk();
+        return;
+    }
+    //  40 00 00]
+    //logMessage("       RESULT: " + result.toString());
+    // [80 08 00   00 00 01 B5   00 00 01 B6   78 67 40 00   00 40 00 00]
+    const char *data = result.data.data();
+    d->m_session.pid = extractInt(data + 1);
+    d->m_session.tid = extractInt(data + 5);
+    d->m_session.codeseg = extractInt(data + 9);
+    d->m_session.dataseg = extractInt(data + 13);
+    if (d->m_verbose) {
+        const QString msg = QString::fromLatin1("Process id: %1 Thread id: %2 code: 0x%3 data: 0x%4").
+                            arg(d->m_session.pid).arg(d->m_session.tid).arg(d->m_session.codeseg, 0, 16).
+                            arg(d->m_session.dataseg,  0 ,16);
+        logMessage(msg);
+    }
+    emit applicationRunning(d->m_session.pid);
+    QByteArray ba;
+    appendInt(&ba, d->m_session.pid);
+    appendInt(&ba, d->m_session.tid);
+    d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
+}
+
+void Launcher::handleWaitForFinished(const TrkResult &result)
+{
+    logMessage("   FINISHED: " + stringFromArray(result.data));
+    setState(Disconnected);
+    emit finished();
+}
+
+void Launcher::handleSupportMask(const TrkResult &result)
+{
+    if (result.errorCode() || result.data.size() < 32)
+        return;
+    const char *data = result.data.data() + 1;
+
+    QString str = QLatin1String("SUPPORTED: ");
+    for (int i = 0; i < 32; ++i) {
+        //str.append("  [" + formatByte(data[i]) + "]: ");
+        for (int j = 0; j < 8; ++j) {
+            if (data[i] & (1 << j)) {
+                str.append(QString::number(i * 8 + j, 16));
+                str.append(QLatin1Char(' '));
+            }
+        }
+    }
+    logMessage(str);
+}
+
+void Launcher::cleanUp()
+{
+    //
+    //---IDE------------------------------------------------------
+    //  Command: 0x41 Delete Item
+    //  Sub Cmd: Delete Process
+    //ProcessID: 0x0000071F (1823)
+    // [41 24 00 00 00 00 07 1F]
+    QByteArray ba(2, char(0));
+    appendInt(&ba, d->m_session.pid);
+    d->m_device->sendTrkMessage(TrkDeleteItem, TrkCallback(), ba, "Delete process");
+
+    //---TRK------------------------------------------------------
+    //  Command: 0x80 Acknowledge
+    //    Error: 0x00
+    // [80 24 00]
+
+    //---IDE------------------------------------------------------
+    //  Command: 0x1C Clear Break
+    // [1C 25 00 00 00 0A 78 6A 43 40]
+
+        //---TRK------------------------------------------------------
+        //  Command: 0xA1 Notify Deleted
+        // [A1 09 00 00 00 00 00 00 00 00 07 1F]
+        //---IDE------------------------------------------------------
+        //  Command: 0x80 Acknowledge
+        //    Error: 0x00
+        // [80 09 00]
+
+    //---TRK------------------------------------------------------
+    //  Command: 0x80 Acknowledge
+    //    Error: 0x00
+    // [80 25 00]
+
+    //---IDE------------------------------------------------------
+    //  Command: 0x1C Clear Break
+    // [1C 26 00 00 00 0B 78 6A 43 70]
+    //---TRK------------------------------------------------------
+    //  Command: 0x80 Acknowledge
+    //    Error: 0x00
+    // [80 26 00]
+
+
+    //---IDE------------------------------------------------------
+    //  Command: 0x02 Disconnect
+    // [02 27]
+//    sendTrkMessage(0x02, TrkCallback(this, &Launcher::handleDisconnect));
+    //---TRK------------------------------------------------------
+    //  Command: 0x80 Acknowledge
+    // Error: 0x00
+}
+
+void Launcher::disconnectTrk()
+{
+    d->m_device->sendTrkMessage(TrkDisconnect, TrkCallback(this, &Launcher::handleWaitForFinished));
+}
+
+void Launcher::copyFileToRemote()
+{
+    emit copyingStarted();
+    QByteArray ba;
+    ba.append(char(10));
+    appendString(&ba, d->m_copyState.destinationFileName.toLocal8Bit(), TargetByteOrder, false);
+    d->m_device->sendTrkMessage(TrkOpenFile, TrkCallback(this, &Launcher::handleFileCreation), ba);
+}
+
+void Launcher::installRemotePackageSilently()
+{
+    emit installingStarted();
+    QByteArray ba;
+    ba.append('C');
+    appendString(&ba, d->m_installFileName.toLocal8Bit(), TargetByteOrder, false);
+    d->m_device->sendTrkMessage(TrkInstallFile, TrkCallback(this, &Launcher::handleInstallPackageFinished), ba);
+}
+
+void Launcher::handleInstallPackageFinished(const TrkResult &result)
+{
+    if (result.errorCode()) {
+        emit canNotInstall(d->m_installFileName, result.errorString());
+        disconnectTrk();
+        return;
+    } else {
+        emit installingFinished();
+    }
+    if (d->m_startupActions & ActionRun) {
+        startInferiorIfNeeded();
+    } else {
+        disconnectTrk();
+    }
+}
+
+QByteArray Launcher::startProcessMessage(const QString &executable,
+                                         const QStringList &arguments)
+{
+    // It's not started yet
+    QByteArray ba;
+    appendShort(&ba, 0, TargetByteOrder); // create new process
+    ba.append(char(0)); // options - currently unused
+    if(arguments.isEmpty()) {
+        appendString(&ba, executable.toLocal8Bit(), TargetByteOrder);
+        return ba;
+    }
+    // Append full command line as one string (leading length information).
+    QByteArray commandLineBa;
+    commandLineBa.append(executable.toLocal8Bit());
+    commandLineBa.append('\0');
+    commandLineBa.append(arguments.join(QString(QLatin1Char(' '))).toLocal8Bit());
+    appendString(&ba, commandLineBa, TargetByteOrder);
+    return ba;
+}
+
+void Launcher::startInferiorIfNeeded()
+{
+    emit startingApplication();
+    if (d->m_session.pid != 0) {
+        logMessage("Process already 'started'");
+        return;
+    }
+    d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess),
+                                startProcessMessage(d->m_fileName, d->m_commandLineArgs)); // Create Item
+}
+
+void Launcher::resumeProcess(uint pid, uint tid)
+{
+    QByteArray ba;
+    appendInt(&ba, pid, BigEndian);
+    appendInt(&ba, tid, BigEndian);
+    d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
+}
+} // namespace trk
diff --git a/tools/runonphone/symbianutils/launcher.h b/tools/runonphone/symbianutils/launcher.h
new file mode 100644
index 0000000..2b23fd8
--- /dev/null
+++ b/tools/runonphone/symbianutils/launcher.h
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef LAUNCHER_H
+#define LAUNCHER_H
+
+#include "trkdevice.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QVariant>
+#include <QtCore/QSharedPointer>
+
+namespace trk {
+
+struct TrkResult;
+struct TrkMessage;
+struct LauncherPrivate;
+
+typedef QSharedPointer<TrkDevice> TrkDevicePtr;
+
+class SYMBIANUTILS_EXPORT Launcher : public QObject
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(Launcher)
+public:
+    typedef void (Launcher::*TrkCallBack)(const TrkResult &);
+
+    enum Actions {
+        ActionPingOnly = 0x0,
+        ActionCopy = 0x1,
+        ActionInstall = 0x2,
+        ActionCopyInstall = ActionCopy | ActionInstall,
+        ActionRun = 0x4,
+        ActionCopyRun = ActionCopy | ActionRun,
+        ActionInstallRun = ActionInstall | ActionRun,
+        ActionCopyInstallRun = ActionCopy | ActionInstall | ActionRun
+    };
+
+    enum State { Disconnected, Connecting, Connected,
+                 WaitingForTrk, // This occurs only if the initial ping times out after
+                                // a reasonable timeout, indicating that Trk is not
+                                // running. Note that this will never happen with
+                                // Bluetooth as communication immediately starts
+                                // after connecting.
+                 DeviceDescriptionReceived };
+
+    explicit Launcher(trk::Launcher::Actions startupActions = trk::Launcher::ActionPingOnly,
+                      const TrkDevicePtr &trkDevice = TrkDevicePtr(),
+                      QObject *parent = 0);
+    ~Launcher();
+
+    State state() const;
+
+    void addStartupActions(trk::Launcher::Actions startupActions);
+    void setTrkServerName(const QString &name);
+    QString trkServerName() const;
+    void setFileName(const QString &name);
+    void setCopyFileName(const QString &srcName, const QString &dstName);
+    void setInstallFileName(const QString &name);
+    void setCommandLineArgs(const QStringList &args);
+    bool startServer(QString *errorMessage);
+    void setVerbose(int v);    
+    void setSerialFrame(bool b);
+    bool serialFrame() const;
+    // Close device or leave it open
+    bool closeDevice() const;
+    void setCloseDevice(bool c);
+
+    TrkDevicePtr trkDevice() const;
+
+    // becomes valid after successful execution of ActionPingOnly
+    QString deviceDescription(unsigned verbose = 0u) const;
+
+    static QByteArray startProcessMessage(const QString &executable,
+                                          const QStringList &arguments);
+    // Parse a TrkNotifyStopped message
+    static bool parseNotifyStopped(const QByteArray &a,
+                                   uint *pid, uint *tid, uint *address,
+                                   QString *why = 0);
+    // Helper message
+    static QString msgStopped(uint pid, uint tid, uint address, const QString &why);
+
+signals:
+    void copyingStarted();
+    void canNotConnect(const QString &errorMessage);
+    void canNotCreateFile(const QString &filename, const QString &errorMessage);
+    void canNotWriteFile(const QString &filename, const QString &errorMessage);
+    void canNotCloseFile(const QString &filename, const QString &errorMessage);
+    void installingStarted();
+    void canNotInstall(const QString &packageFilename, const QString &errorMessage);
+    void installingFinished();
+    void startingApplication();
+    void applicationRunning(uint pid);
+    void canNotRun(const QString &errorMessage);
+    void finished();
+    void applicationOutputReceived(const QString &output);
+    void copyProgress(int percent);
+    void stateChanged(int);
+    void processStopped(uint pc, uint pid, uint tid, const QString& reason);
+
+public slots:
+    void terminate();
+    void resumeProcess(uint pid, uint tid);
+
+private slots:
+    void handleResult(const trk::TrkResult &data);
+    void slotWaitingForTrk();
+
+private:
+    // kill process and breakpoints
+    void cleanUp();
+    void disconnectTrk();
+
+    void handleRemoteProcessKilled(const TrkResult &result);
+    void handleConnect(const TrkResult &result);
+    void handleFileCreation(const TrkResult &result);
+    void handleCopy(const TrkResult &result);
+    void continueCopying(uint lastCopiedBlockSize = 0);
+    void closeRemoteFile(bool failed = false);
+    void handleFileCopied(const TrkResult &result);
+    void handleInstallPackageFinished(const TrkResult &result);
+    void handleCpuType(const TrkResult &result);
+    void handleCreateProcess(const TrkResult &result);
+    void handleWaitForFinished(const TrkResult &result);
+    void handleStop(const TrkResult &result);
+    void handleSupportMask(const TrkResult &result);
+    void handleTrkVersion(const TrkResult &result);
+
+    void copyFileToRemote();
+    void installRemotePackageSilently();
+    void startInferiorIfNeeded();
+
+    void logMessage(const QString &msg);
+    void setState(State s);
+
+    LauncherPrivate *d;
+};
+
+} // namespace Trk
+
+#endif // LAUNCHER_H
diff --git a/tools/runonphone/symbianutils/symbianutils.pri b/tools/runonphone/symbianutils/symbianutils.pri
new file mode 100644
index 0000000..a54df76
--- /dev/null
+++ b/tools/runonphone/symbianutils/symbianutils.pri
@@ -0,0 +1,25 @@
+INCLUDEPATH *= $$PWD
+
+# Input
+HEADERS += $$PWD/symbianutils_global.h \
+    $$PWD/callback.h \
+    $$PWD/trkutils.h \
+    $$PWD/trkutils_p.h \
+    $$PWD/trkdevice.h \
+    $$PWD/launcher.h \
+    $$PWD/bluetoothlistener.h \
+    $$PWD/communicationstarter.h
+
+SOURCES += $$PWD/trkutils.cpp \
+    $$PWD/trkdevice.cpp \
+    $$PWD/launcher.cpp \
+    $$PWD/bluetoothlistener.cpp \
+    $$PWD/communicationstarter.cpp
+
+# Tests/trklauncher is a console application
+contains(QT, gui) {
+   HEADERS += $$PWD/bluetoothlistener_gui.h
+    SOURCES += $$PWD/bluetoothlistener_gui.cpp
+} else {
+    message(Trk: Console ...)
+}
diff --git a/tools/runonphone/symbianutils/symbianutils_global.h b/tools/runonphone/symbianutils/symbianutils_global.h
new file mode 100644
index 0000000..a6ffbe7
--- /dev/null
+++ b/tools/runonphone/symbianutils/symbianutils_global.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMBIANUTILS_GLOBAL_H
+#define SYMBIANUTILS_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(SYMBIANUTILS_BUILD_LIB)
+#    define SYMBIANUTILS_EXPORT Q_DECL_EXPORT
+#elif defined(SYMBIANUTILS_BUILD_STATIC_LIB) || defined(SYMBIANUTILS_INCLUDE_PRI)
+#    define SYMBIANUTILS_EXPORT
+#else 
+#    define SYMBIANUTILS_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // SYMBIANUTILS_GLOBAL_H
diff --git a/tools/runonphone/symbianutils/trkdevice.cpp b/tools/runonphone/symbianutils/trkdevice.cpp
new file mode 100644
index 0000000..d587135
--- /dev/null
+++ b/tools/runonphone/symbianutils/trkdevice.cpp
@@ -0,0 +1,1105 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "trkdevice.h"
+#include "trkutils.h"
+#include "trkutils_p.h"
+
+#include <QtCore/QString>
+#include <QtCore/QDebug>
+#include <QtCore/QQueue>
+#include <QtCore/QHash>
+#include <QtCore/QMap>
+#include <QtCore/QThread>
+#include <QtCore/QMutex>
+#include <QtCore/QWaitCondition>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QMetaType>
+
+#ifdef Q_OS_WIN
+#  include <windows.h>
+#else
+#  include <QtCore/QFile>
+
+#  include <stdio.h>
+#  include <sys/ioctl.h>
+#  include <sys/types.h>
+#  include <termios.h>
+#  include <errno.h>
+#  include <string.h>
+#  include <unistd.h>
+/* Required headers for select() according to POSIX.1-2001 */
+#  include <sys/select.h>
+/* Required headers for select() according to earlier standards:
+       #include <sys/time.h>
+       #include <sys/types.h>
+       #include <unistd.h>
+*/
+#endif
+
+#ifdef Q_OS_WIN
+
+// Format windows error from GetLastError() value:
+// TODO: Use the one provided by the utils lib.
+QString winErrorMessage(unsigned long error)
+{
+    QString rc = QString::fromLatin1("#%1: ").arg(error);
+    ushort *lpMsgBuf;
+
+    const int len = FormatMessage(
+            FORMAT_MESSAGE_ALLOCATE_BUFFER
+                | FORMAT_MESSAGE_FROM_SYSTEM
+                | FORMAT_MESSAGE_IGNORE_INSERTS,
+            NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL);
+    if (len) {
+        rc = QString::fromUtf16(lpMsgBuf, len);
+        LocalFree(lpMsgBuf);
+    } else {
+        rc += QString::fromLatin1("<unknown error>");
+    }
+    return rc;
+}
+
+#endif
+
+enum { verboseTrk = 0 };
+
+namespace trk {
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkMessage
+//
+///////////////////////////////////////////////////////////////////////
+
+/* A message to be send to TRK, triggering a callback on receipt
+ * of the answer. */
+struct TrkMessage
+{
+    explicit TrkMessage(byte code = 0u, byte token = 0u,
+                        TrkCallback callback = TrkCallback());
+
+    byte code;
+    byte token;
+    QByteArray data;
+    QVariant cookie;
+    TrkCallback callback;
+};
+
+TrkMessage::TrkMessage(byte c, byte t, TrkCallback cb) :
+    code(c),
+    token(t),
+    callback(cb)
+{
+}
+
+QDebug operator<<(QDebug d, const TrkMessage &msg)
+{
+    return d << "Message: Code: " << msg.code
+        << " Token: " << msg.token << " " << msg.data.toHex();
+}
+
+} // namespace trk
+
+Q_DECLARE_METATYPE(trk::TrkMessage)
+Q_DECLARE_METATYPE(trk::TrkResult)
+
+namespace trk {
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkWriteQueue: Mixin class that manages a write queue of Trk messages.
+// pendingMessage()/notifyWriteResult() should be called from a worked/timer
+// that writes the messages. The class does not take precautions for multithreading.
+// A no-op message is simply taken off the queue. The calling class
+// can use the helper invokeNoopMessage() to trigger its callback.
+//
+///////////////////////////////////////////////////////////////////////
+
+class TrkWriteQueue
+{    
+    Q_DISABLE_COPY(TrkWriteQueue)
+public:
+    explicit TrkWriteQueue();
+
+    // Enqueue messages.
+    void queueTrkMessage(byte code, TrkCallback callback,
+                        const QByteArray &data, const QVariant &cookie);
+    void queueTrkInitialPing();
+
+    // Call this from the device read notification with the results.
+    void slotHandleResult(const TrkResult &result, QMutex *mutex = 0);
+
+    // pendingMessage() can be called periodically in a timer to retrieve
+    // the pending messages to be sent.
+    enum PendingMessageResult {
+        NoMessage,               // No message in queue.
+        PendingMessage,          /* There is a queued message. The calling class
+                                  * can write it out and use notifyWriteResult()
+                                  * to notify about the result. */
+        NoopMessageDequeued      // A no-op message has been dequeued. see invokeNoopMessage().
+    };
+
+    PendingMessageResult pendingMessage(TrkMessage *message);
+    // Notify the queue about the success of the write operation
+    // after taking the pendingMessage off.
+    enum WriteResult {
+        WriteOk,
+        WriteFailedDiscard, // Discard failed message
+        WriteFailedKeep,    // Keep failed message
+    };
+    void notifyWriteResult(WriteResult ok);
+
+    // Helper function that invokes the callback of a no-op message
+    static void invokeNoopMessage(trk::TrkMessage);
+
+private:
+    typedef QMap<byte, TrkMessage> TokenMessageMap;
+
+    byte nextTrkWriteToken();
+
+    byte m_trkWriteToken;
+    QQueue<TrkMessage> m_trkWriteQueue;
+    TokenMessageMap m_writtenTrkMessages;
+    bool m_trkWriteBusy;
+};
+
+TrkWriteQueue::TrkWriteQueue() :
+    m_trkWriteToken(0),
+    m_trkWriteBusy(false)
+{
+}
+
+byte TrkWriteQueue::nextTrkWriteToken()
+{
+    ++m_trkWriteToken;
+    if (m_trkWriteToken == 0)
+        ++m_trkWriteToken;
+    if (verboseTrk)
+        qDebug() << "Write token: " << m_trkWriteToken;
+    return m_trkWriteToken;
+}
+
+void TrkWriteQueue::queueTrkMessage(byte code, TrkCallback callback,
+    const QByteArray &data, const QVariant &cookie)
+{
+    const byte token = code == TRK_WRITE_QUEUE_NOOP_CODE ?
+                                byte(0) : nextTrkWriteToken();
+    TrkMessage msg(code, token, callback);
+    msg.data = data;
+    msg.cookie = cookie;
+    m_trkWriteQueue.append(msg);
+}
+
+TrkWriteQueue::PendingMessageResult TrkWriteQueue::pendingMessage(TrkMessage *message)
+{
+    // Invoked from timer, try to flush out message queue
+    if (m_trkWriteBusy || m_trkWriteQueue.isEmpty())
+        return NoMessage;
+    // Handle the noop message, just invoke CB in slot (ower thread)
+    if (m_trkWriteQueue.front().code == TRK_WRITE_QUEUE_NOOP_CODE) {
+        *message = m_trkWriteQueue.dequeue();
+        return NoopMessageDequeued;
+    }
+    // Insert into map fir answers (as reading threads might get an
+    // answer before notifyWriteResult(true)) is called.
+    *message = m_trkWriteQueue.front();
+    m_writtenTrkMessages.insert(message->token, *message);
+    m_trkWriteBusy = true;
+    return PendingMessage;
+}
+
+void TrkWriteQueue::invokeNoopMessage(trk::TrkMessage noopMessage)
+{
+    TrkResult result;
+    result.code = noopMessage.code;
+    result.token = noopMessage.token;
+    result.data = noopMessage.data;
+    result.cookie = noopMessage.cookie;
+    noopMessage.callback(result);
+}
+
+void TrkWriteQueue::notifyWriteResult(WriteResult wr)
+{
+    // On success, dequeue message and await result
+    const byte token = m_trkWriteQueue.front().token;
+    switch (wr) {
+    case WriteOk:
+        m_trkWriteQueue.dequeue();
+        break;
+    case WriteFailedKeep:
+    case WriteFailedDiscard:
+        m_writtenTrkMessages.remove(token);
+        m_trkWriteBusy = false;
+        if (wr == WriteFailedDiscard)
+            m_trkWriteQueue.dequeue();
+        break;
+    }
+}
+
+void TrkWriteQueue::slotHandleResult(const TrkResult &result, QMutex *mutex)
+{
+    // Find which request the message belongs to and invoke callback
+    // if ACK or on NAK if desired.
+    if (mutex)
+        mutex->lock();
+    m_trkWriteBusy = false;
+    const TokenMessageMap::iterator it = m_writtenTrkMessages.find(result.token);
+    if (it == m_writtenTrkMessages.end()) {
+        if (mutex)
+            mutex->unlock();
+        return;
+    }
+    TrkCallback callback = it.value().callback;
+    const QVariant cookie = it.value().cookie;
+    m_writtenTrkMessages.erase(it);
+    if (mutex)
+        mutex->unlock();
+    // Invoke callback
+    if (callback) {
+        TrkResult result1 = result;
+        result1.cookie = cookie;
+        callback(result1);
+    }
+}
+
+void TrkWriteQueue::queueTrkInitialPing()
+{
+    // Ping, reset sequence count
+    m_trkWriteToken = 0;
+    m_trkWriteQueue.append(TrkMessage(TrkPing, 0));
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// DeviceContext to be shared between threads
+//
+///////////////////////////////////////////////////////////////////////
+
+struct DeviceContext {
+    DeviceContext();
+#ifdef Q_OS_WIN
+    HANDLE device;
+    OVERLAPPED readOverlapped;
+    OVERLAPPED writeOverlapped;
+#else
+    QFile file;
+#endif
+    bool serialFrame;
+    QMutex mutex;
+};
+
+DeviceContext::DeviceContext() :
+#ifdef Q_OS_WIN
+    device(INVALID_HANDLE_VALUE),
+#endif
+    serialFrame(true)
+{
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkWriterThread: A thread operating a TrkWriteQueue.
+// with exception of the handling of the  TRK_WRITE_QUEUE_NOOP_CODE
+// synchronization message. The invocation of the callback is then
+// done by the thread owning the TrkWriteQueue, while pendingMessage() is called
+// from another thread. This happens via a Qt::BlockingQueuedConnection.
+
+///////////////////////////////////////////////////////////////////////
+
+class WriterThread : public QThread
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(WriterThread)
+public:            
+    explicit WriterThread(const QSharedPointer<DeviceContext> &context);
+
+    // Enqueue messages.
+    void queueTrkMessage(byte code, TrkCallback callback,
+                        const QByteArray &data, const QVariant &cookie);
+    void queueTrkInitialPing();
+
+    // Call this from the device read notification with the results.
+    void slotHandleResult(const TrkResult &result);
+
+    virtual void run();
+
+signals:
+    void error(const QString &);
+    void internalNoopMessageDequeued(const trk::TrkMessage&);
+
+public slots:
+    bool trkWriteRawMessage(const TrkMessage &msg);
+    void terminate();
+    void tryWrite();
+
+private slots:
+    void invokeNoopMessage(const trk::TrkMessage &);
+
+private:    
+    bool write(const QByteArray &data, QString *errorMessage);
+    inline int writePendingMessage();
+
+    const QSharedPointer<DeviceContext> m_context;
+    QMutex m_dataMutex;
+    QMutex m_waitMutex;
+    QWaitCondition m_waitCondition;
+    TrkWriteQueue m_queue;
+    bool m_terminate;
+};
+
+WriterThread::WriterThread(const QSharedPointer<DeviceContext> &context) :
+    m_context(context),
+    m_terminate(false)
+{
+    static const int trkMessageMetaId = qRegisterMetaType<trk::TrkMessage>();
+    Q_UNUSED(trkMessageMetaId)
+    connect(this, SIGNAL(internalNoopMessageDequeued(trk::TrkMessage)),
+            this, SLOT(invokeNoopMessage(trk::TrkMessage)), Qt::BlockingQueuedConnection);
+}
+
+void WriterThread::run()
+{
+    while (writePendingMessage() == 0) ;
+}
+
+int WriterThread::writePendingMessage()
+{
+    enum { MaxAttempts = 100, RetryIntervalMS = 200 };
+
+    // Wait. Use a timeout in case something is already queued before we
+    // start up or some weird hanging exit condition
+    m_waitMutex.lock();
+    m_waitCondition.wait(&m_waitMutex, 100);
+    m_waitMutex.unlock();
+    if (m_terminate)
+        return 1;
+
+    // Send off message
+    m_dataMutex.lock();
+    TrkMessage message;
+    const TrkWriteQueue::PendingMessageResult pr = m_queue.pendingMessage(&message);
+    m_dataMutex.unlock();
+
+    switch (pr) {
+    case TrkWriteQueue::NoMessage:
+        break;
+    case TrkWriteQueue::PendingMessage: {
+            //qDebug() << "Write pending message " << message;
+            // Untested: try to re-send a few times
+            bool success = false;
+            for (int r = 0; !success && (r < MaxAttempts); r++) {
+                success = trkWriteRawMessage(message);
+                if (!success) {
+                    emit error(QString::fromLatin1("Write failure, attempt %1 of %2.").arg(r).arg(int(MaxAttempts)));
+                    if (m_terminate)
+                        return 1;
+                    QThread::msleep(RetryIntervalMS);
+                }
+            }
+            // Notify queue. If still failed, give up.
+            m_dataMutex.lock();
+            m_queue.notifyWriteResult(success ? TrkWriteQueue::WriteOk : TrkWriteQueue::WriteFailedDiscard);
+            m_dataMutex.unlock();
+        }
+        break;
+    case TrkWriteQueue::NoopMessageDequeued:
+        // Sync with thread that owns us via a blocking signal
+        if (verboseTrk)
+            qDebug() << "Noop message dequeued" << message;
+        emit internalNoopMessageDequeued(message);
+        break;
+    } // switch
+    return 0;
+}
+
+void WriterThread::invokeNoopMessage(const trk::TrkMessage &msg)
+{
+    TrkWriteQueue::invokeNoopMessage(msg);
+}
+
+void WriterThread::terminate()
+{
+    m_terminate = true;
+    m_waitCondition.wakeAll();
+    wait();
+    m_terminate = false;
+}
+
+#ifdef Q_OS_WIN
+
+static inline QString msgTerminated(int size)
+{
+    return QString::fromLatin1("Terminated with %1 bytes pending.").arg(size);
+}
+
+// Interruptible synchronous write function.
+static inline bool overlappedSyncWrite(HANDLE file,
+                                       const bool &terminateFlag,
+                                       const char *data,
+                                       DWORD size, DWORD *charsWritten,
+                                       OVERLAPPED *overlapped,
+                                       QString *errorMessage)
+{
+    if (WriteFile(file, data, size, charsWritten, overlapped))
+        return true;
+    const DWORD writeError = GetLastError();
+    if (writeError != ERROR_IO_PENDING) {
+        *errorMessage = QString::fromLatin1("WriteFile failed: %1").arg(winErrorMessage(writeError));
+        return false;
+    }
+    // Wait for written or thread terminated
+    const DWORD timeoutMS = 200;
+    const unsigned maxAttempts = 20;
+    DWORD wr = WaitForSingleObject(overlapped->hEvent, timeoutMS);
+    for (unsigned n = 0; wr == WAIT_TIMEOUT && n < maxAttempts && !terminateFlag;
+         wr = WaitForSingleObject(overlapped->hEvent, timeoutMS), n++);
+    if (terminateFlag) {
+        *errorMessage = msgTerminated(size);
+        return false;
+    }
+    switch (wr) {
+    case WAIT_OBJECT_0:
+        break;
+    case WAIT_TIMEOUT:
+        *errorMessage = QString::fromLatin1("Write timed out.");
+        return false;
+    default:
+        *errorMessage = QString::fromLatin1("Error while waiting for WriteFile results: %1").arg(winErrorMessage(GetLastError()));
+        return false;
+    }
+    if (!GetOverlappedResult(file, overlapped, charsWritten, TRUE)) {
+        *errorMessage = QString::fromLatin1("Error writing %1 bytes: %2").arg(size).arg(winErrorMessage(GetLastError()));
+        return false;
+    }
+    return true;
+}
+#endif
+
+bool WriterThread::write(const QByteArray &data, QString *errorMessage)
+{
+    if (verboseTrk)
+        qDebug() << "Write raw data: " << stringFromArray(data).toLatin1();
+    QMutexLocker locker(&m_context->mutex);
+#ifdef Q_OS_WIN
+    DWORD charsWritten;
+    if (!overlappedSyncWrite(m_context->device, m_terminate, data.data(), data.size(), &charsWritten, &m_context->writeOverlapped, errorMessage)) {
+        return false;
+    }
+    FlushFileBuffers(m_context->device);
+    return true;
+#else
+    if (m_context->file.write(data) == -1 || !m_context->file.flush()) {
+        *errorMessage = QString::fromLatin1("Cannot write: %1").arg(m_context->file.errorString());
+        return false;
+    }
+    return  true;
+#endif
+}
+
+bool WriterThread::trkWriteRawMessage(const TrkMessage &msg)
+{
+    const QByteArray ba = frameMessage(msg.code, msg.token, msg.data, m_context->serialFrame);
+    QString errorMessage;
+    const bool rc = write(ba, &errorMessage);
+    if (!rc) {
+        qWarning("%s\n", qPrintable(errorMessage));
+        emit error(errorMessage);
+    }
+    return rc;
+}
+
+void WriterThread::tryWrite()
+{
+    m_waitCondition.wakeAll();
+}
+
+void WriterThread::queueTrkMessage(byte code, TrkCallback callback,
+                                   const QByteArray &data, const QVariant &cookie)
+{
+    m_dataMutex.lock();
+    m_queue.queueTrkMessage(code, callback, data, cookie);
+    m_dataMutex.unlock();
+    tryWrite();
+}
+
+void WriterThread::queueTrkInitialPing()
+{
+    m_dataMutex.lock();
+    m_queue.queueTrkInitialPing();
+    m_dataMutex.unlock();
+    tryWrite();
+}
+
+// Call this from the device read notification with the results.
+void WriterThread::slotHandleResult(const TrkResult &result)
+{
+    m_queue.slotHandleResult(result, &m_dataMutex);
+    tryWrite(); // Have messages been enqueued in-between?
+}
+
+
+///////////////////////////////////////////////////////////////////////
+//
+// ReaderThreadBase: Base class for a thread that reads data from
+// the device, decodes the messages and emit signals for the messages.
+// A Qt::BlockingQueuedConnection should be used for the message signal
+// to ensure messages are processed in the correct sequence.
+//
+///////////////////////////////////////////////////////////////////////
+
+class ReaderThreadBase : public QThread
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(ReaderThreadBase)
+public:
+
+signals:
+    void messageReceived(const trk::TrkResult &result, const QByteArray &rawData);
+
+protected:
+    explicit ReaderThreadBase(const QSharedPointer<DeviceContext> &context);
+    void processData(const QByteArray &a);
+    void processData(char c);
+
+    const QSharedPointer<DeviceContext> m_context;
+
+private:
+    void readMessages();
+
+    QByteArray m_trkReadBuffer;
+};
+
+ReaderThreadBase::ReaderThreadBase(const QSharedPointer<DeviceContext> &context) :
+    m_context(context)
+{
+    static const int trkResultMetaId = qRegisterMetaType<trk::TrkResult>();
+    Q_UNUSED(trkResultMetaId)
+}
+
+void ReaderThreadBase::processData(const QByteArray &a)
+{
+    m_trkReadBuffer += a;
+    readMessages();
+}
+
+void ReaderThreadBase::processData(char c)
+{
+    m_trkReadBuffer += c;
+    if (m_trkReadBuffer.size() > 1)
+        readMessages();
+}
+
+void ReaderThreadBase::readMessages()
+{
+    TrkResult r;
+    QByteArray rawData;
+    while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, &rawData)) {
+        emit messageReceived(r, rawData);
+    }
+}
+
+#ifdef Q_OS_WIN
+///////////////////////////////////////////////////////////////////////
+//
+// WinReaderThread: A thread reading from the device using Windows API.
+// Waits on an overlapped I/O handle and an event that tells the thread to
+// terminate.
+//
+///////////////////////////////////////////////////////////////////////
+
+class WinReaderThread : public ReaderThreadBase
+{
+    Q_OBJECT
+    Q_DISABLE_COPY(WinReaderThread)
+public:
+    explicit WinReaderThread(const QSharedPointer<DeviceContext> &context);
+    ~WinReaderThread();
+
+    virtual void run();
+
+signals:
+    void error(const QString &);
+
+public slots:
+    void terminate();
+
+private:
+    enum Handles { FileHandle, TerminateEventHandle, HandleCount };
+
+    inline int tryRead();
+
+    HANDLE m_handles[HandleCount];
+};
+
+WinReaderThread::WinReaderThread(const QSharedPointer<DeviceContext> &context) :
+    ReaderThreadBase(context)
+{
+    m_handles[FileHandle] = NULL;
+    m_handles[TerminateEventHandle] = CreateEvent(NULL, FALSE, FALSE, NULL);
+}
+
+WinReaderThread::~WinReaderThread()
+{
+    CloseHandle(m_handles[TerminateEventHandle]);
+}
+
+// Return 0 to continue or error code
+int WinReaderThread::tryRead()
+{
+    enum { BufSize = 1024 };
+    char buffer[BufSize];
+    // Check if there are already bytes waiting. If not, wait for first byte
+    COMSTAT comStat;
+    if (!ClearCommError(m_context->device, NULL, &comStat)){
+        emit error(QString::fromLatin1("ClearCommError failed: %1").arg(winErrorMessage(GetLastError())));
+        return -7;
+    }    
+    const DWORD bytesToRead = qMax(DWORD(1), qMin(comStat.cbInQue, DWORD(BufSize)));
+    // Trigger read
+    DWORD bytesRead = 0;
+    if (ReadFile(m_context->device, &buffer, bytesToRead, &bytesRead, &m_context->readOverlapped)) {
+        if (bytesRead == 1) {
+            processData(buffer[0]);
+        } else {
+            processData(QByteArray(buffer, bytesRead));
+        }
+        return 0;
+    }
+    const DWORD readError = GetLastError();
+    if (readError != ERROR_IO_PENDING) {
+        emit error(QString::fromLatin1("Read error: %1").arg(winErrorMessage(readError)));
+        return -1;
+    }    
+    // Wait for either termination or data
+    const DWORD wr = WaitForMultipleObjects(HandleCount, m_handles, false, INFINITE);
+    if (wr == WAIT_FAILED) {
+        emit error(QString::fromLatin1("Wait failed: %1").arg(winErrorMessage(GetLastError())));
+        return -2;
+    }
+    if (wr - WAIT_OBJECT_0 == TerminateEventHandle) {
+        return 1; // Terminate
+    }
+    // Check data
+    if (!GetOverlappedResult(m_context->device, &m_context->readOverlapped, &bytesRead, true)) {
+        emit error(QString::fromLatin1("GetOverlappedResult failed: %1").arg(winErrorMessage(GetLastError())));
+        return -3;
+    }
+    if (bytesRead == 1) {
+        processData(buffer[0]);
+    } else {
+        processData(QByteArray(buffer, bytesRead));
+    }
+    return 0;
+}
+
+void WinReaderThread::run()
+{
+    m_handles[FileHandle] = m_context->readOverlapped.hEvent;
+    while ( tryRead() == 0) ;
+}
+
+void WinReaderThread::terminate()
+{
+    SetEvent(m_handles[TerminateEventHandle]);
+    wait();
+}
+
+typedef WinReaderThread ReaderThread;
+
+#else
+
+///////////////////////////////////////////////////////////////////////
+//
+// UnixReaderThread: A thread reading from the device.
+// Uses select() to wait and a special ioctl() to find out the number
+// of bytes queued. For clean termination, the self-pipe trick is used.
+// The class maintains a pipe, on whose read end the select waits besides
+// the device file handle. To terminate, a byte is written to the pipe.
+//
+///////////////////////////////////////////////////////////////////////
+
+static inline QString msgUnixCallFailedErrno(const char *func, int errorNumber)
+{
+    return QString::fromLatin1("Call to %1() failed: %2").arg(QLatin1String(func), QString::fromLocal8Bit(strerror(errorNumber)));
+}
+
+class UnixReaderThread : public ReaderThreadBase {
+    Q_OBJECT
+    Q_DISABLE_COPY(UnixReaderThread)
+public:
+    explicit UnixReaderThread(const QSharedPointer<DeviceContext> &context);
+    ~UnixReaderThread();
+
+    virtual void run();
+
+signals:
+    void error(const QString &);
+
+public slots:
+    void terminate();
+
+private:
+    inline int tryRead();
+
+    int m_terminatePipeFileDescriptors[2];
+};
+
+UnixReaderThread::UnixReaderThread(const QSharedPointer<DeviceContext> &context) : 
+    ReaderThreadBase(context)
+{
+    m_terminatePipeFileDescriptors[0] = m_terminatePipeFileDescriptors[1] = -1;
+    // Set up pipes for termination. Should not fail
+    if (pipe(m_terminatePipeFileDescriptors) < 0)
+        qWarning("%s\n", qPrintable(msgUnixCallFailedErrno("pipe", errno)));
+}
+
+UnixReaderThread::~UnixReaderThread()
+{
+    close(m_terminatePipeFileDescriptors[0]);
+    close(m_terminatePipeFileDescriptors[1]);
+}
+
+int UnixReaderThread::tryRead()
+{
+    fd_set readSet, tempReadSet, tempExceptionSet;
+    struct timeval timeOut;
+    const int fileDescriptor = m_context->file.handle();
+    FD_ZERO(&readSet);
+    FD_SET(fileDescriptor, &readSet);
+    FD_SET(m_terminatePipeFileDescriptors[0], &readSet);
+    const int maxFileDescriptor = qMax(m_terminatePipeFileDescriptors[0], fileDescriptor);
+    int result = 0;
+    do {
+        memcpy(&tempReadSet, &readSet, sizeof(fd_set));
+        memcpy(&tempExceptionSet, &readSet, sizeof(fd_set));
+        timeOut.tv_sec = 1;
+        timeOut.tv_usec = 0;
+        result = select(maxFileDescriptor + 1, &tempReadSet, NULL, &tempExceptionSet, &timeOut);
+    } while ( result < 0 && errno == EINTR );
+    // Timeout?
+    if (result == 0)
+        return 0;
+   // Something wrong?
+    if (result < 0) {
+        emit error(msgUnixCallFailedErrno("select", errno));
+        return -1;
+    }
+    // Did the exception set trigger on the device?
+    if (FD_ISSET(fileDescriptor,&tempExceptionSet)) {
+        emit error(QLatin1String("An Exception occurred on the device."));
+        return -2;
+    }
+    // Check termination pipe.
+    if (FD_ISSET(m_terminatePipeFileDescriptors[0], &tempReadSet)
+        || FD_ISSET(m_terminatePipeFileDescriptors[0], &tempExceptionSet))
+        return 1;
+
+    // determine number of pending bytes and read
+    int numBytes;
+    if (ioctl(fileDescriptor, FIONREAD, &numBytes) < 0) {
+        emit error(msgUnixCallFailedErrno("ioctl", errno));
+        return -1;
+    }
+    m_context->mutex.lock();
+    const QByteArray data = m_context->file.read(numBytes);
+    m_context->mutex.unlock();
+    processData(data);
+    return 0;
+}
+
+void UnixReaderThread::run()
+{
+    // Read loop
+    while (tryRead() == 0)
+        ;
+}
+
+void UnixReaderThread::terminate()
+{
+    // Trigger select() by writing to the pipe
+    char c = 0;
+    const int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
+    Q_UNUSED(written)
+    wait();
+}
+
+typedef UnixReaderThread ReaderThread;
+
+#endif
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkDevicePrivate
+//
+///////////////////////////////////////////////////////////////////////
+
+struct TrkDevicePrivate
+{
+    TrkDevicePrivate();
+
+    QSharedPointer<DeviceContext> deviceContext;
+    QSharedPointer<WriterThread> writerThread;
+    QSharedPointer<ReaderThread> readerThread;
+
+    QByteArray trkReadBuffer;
+    int verbose;
+    QString errorString;
+};
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkDevice
+//
+///////////////////////////////////////////////////////////////////////
+
+TrkDevicePrivate::TrkDevicePrivate() :
+    deviceContext(new DeviceContext),
+    verbose(0)
+{
+}
+
+///////////////////////////////////////////////////////////////////////
+//
+// TrkDevice
+//
+///////////////////////////////////////////////////////////////////////
+
+TrkDevice::TrkDevice(QObject *parent) :
+    QObject(parent),
+    d(new TrkDevicePrivate)
+{}
+
+TrkDevice::~TrkDevice()
+{
+    close();
+    delete d;
+}
+
+bool TrkDevice::open(const QString &port, QString *errorMessage)
+{
+    if (d->verbose)
+        qDebug() << "Opening" << port << "is open: " << isOpen() << " serialFrame=" << serialFrame();
+    close();
+#ifdef Q_OS_WIN
+    d->deviceContext->device = CreateFile(QString("\\\\.\\").append(port).toStdWString().c_str(),
+                           GENERIC_READ | GENERIC_WRITE,
+                           0,
+                           NULL,
+                           OPEN_EXISTING,
+                           FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING|FILE_FLAG_OVERLAPPED,
+                           NULL);
+
+    if (INVALID_HANDLE_VALUE == d->deviceContext->device) {
+        *errorMessage = QString::fromLatin1("Could not open device '%1': %2").arg(port, winErrorMessage(GetLastError()));
+        return false;
+    }
+    memset(&d->deviceContext->readOverlapped, 0, sizeof(OVERLAPPED));
+    d->deviceContext->readOverlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+    memset(&d->deviceContext->writeOverlapped, 0, sizeof(OVERLAPPED));
+    d->deviceContext->writeOverlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+    if (d->deviceContext->readOverlapped.hEvent == NULL || d->deviceContext->writeOverlapped.hEvent == NULL) {
+        *errorMessage = QString::fromLatin1("Failed to create events: %1").arg(winErrorMessage(GetLastError()));
+        return false;
+    }
+#else
+    d->deviceContext->file.setFileName(port);
+    if (!d->deviceContext->file.open(QIODevice::ReadWrite|QIODevice::Unbuffered)) {
+        *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(port, d->deviceContext->file.errorString());
+        return false;
+    }
+
+    struct termios termInfo;
+    if (tcgetattr(d->deviceContext->file.handle(), &termInfo) < 0) {
+        *errorMessage = QString::fromLatin1("Unable to retrieve terminal settings: %1 %2").arg(errno).arg(QString::fromAscii(strerror(errno)));
+        return false;
+    }
+    // Turn off terminal echo as not get messages back, among other things
+    termInfo.c_cflag |= CREAD|CLOCAL;
+    termInfo.c_lflag &= (~(ICANON|ECHO|ECHOE|ECHOK|ECHONL|ISIG));
+    termInfo.c_iflag &= (~(INPCK|IGNPAR|PARMRK|ISTRIP|ICRNL|IXANY));
+    termInfo.c_oflag &= (~OPOST);
+    termInfo.c_cc[VMIN]  = 0;
+    termInfo.c_cc[VINTR] = _POSIX_VDISABLE;
+    termInfo.c_cc[VQUIT] = _POSIX_VDISABLE;
+    termInfo.c_cc[VSTART] = _POSIX_VDISABLE;
+    termInfo.c_cc[VSTOP] = _POSIX_VDISABLE;
+    termInfo.c_cc[VSUSP] = _POSIX_VDISABLE;
+    if (tcsetattr(d->deviceContext->file.handle(), TCSAFLUSH, &termInfo) < 0) {
+        *errorMessage = QString::fromLatin1("Unable to apply terminal settings: %1 %2").arg(errno).arg(QString::fromAscii(strerror(errno)));
+        return false;
+    }
+#endif
+    d->readerThread = QSharedPointer<ReaderThread>(new ReaderThread(d->deviceContext));
+    connect(d->readerThread.data(), SIGNAL(error(QString)), this, SLOT(emitError(QString)),
+            Qt::QueuedConnection);
+    connect(d->readerThread.data(), SIGNAL(messageReceived(trk::TrkResult,QByteArray)),
+            this, SLOT(slotMessageReceived(trk::TrkResult,QByteArray)),
+            Qt::QueuedConnection);
+    d->readerThread->start();
+
+    d->writerThread = QSharedPointer<WriterThread>(new WriterThread(d->deviceContext));
+    connect(d->writerThread.data(), SIGNAL(error(QString)), this, SLOT(emitError(QString)),
+            Qt::QueuedConnection);    
+    d->writerThread->start();    
+
+    if (d->verbose)
+        qDebug() << "Opened" << port;
+    return true;
+}
+
+void TrkDevice::close()
+{
+    if (!isOpen())
+        return;
+    if (d->readerThread)
+        d->readerThread->terminate();
+    if (d->writerThread)
+        d->writerThread->terminate();
+#ifdef Q_OS_WIN
+    CloseHandle(d->deviceContext->device);
+    d->deviceContext->device = INVALID_HANDLE_VALUE;
+    CloseHandle(d->deviceContext->readOverlapped.hEvent);
+    CloseHandle(d->deviceContext->writeOverlapped.hEvent);
+    d->deviceContext->readOverlapped.hEvent = d->deviceContext->writeOverlapped.hEvent = NULL;
+#else
+    d->deviceContext->file.close();
+#endif
+    if (d->verbose)
+        emitLogMessage("Close");
+}
+
+bool TrkDevice::isOpen() const
+{
+#ifdef Q_OS_WIN
+    return d->deviceContext->device != INVALID_HANDLE_VALUE;
+#else
+    return d->deviceContext->file.isOpen();
+#endif
+}
+
+QString TrkDevice::errorString() const
+{
+    return d->errorString;
+}
+
+bool TrkDevice::serialFrame() const
+{
+    return d->deviceContext->serialFrame;
+}
+
+void TrkDevice::setSerialFrame(bool f)
+{
+    d->deviceContext->serialFrame = f;
+}
+
+int TrkDevice::verbose() const
+{
+    return d->verbose;
+}
+
+void TrkDevice::setVerbose(int b)
+{
+    d->verbose = b;
+}
+
+void TrkDevice::slotMessageReceived(const trk::TrkResult &result, const QByteArray &rawData)
+{
+    d->writerThread->slotHandleResult(result);
+    if (d->verbose > 1)
+        qDebug() << "Received: " << result.toString();
+    emit messageReceived(result);    
+    if (!rawData.isEmpty())
+        emit rawDataReceived(rawData);
+}
+
+void TrkDevice::emitError(const QString &s)
+{
+    d->errorString = s;
+    qWarning("%s\n", qPrintable(s));
+    emit error(s);
+}
+
+void TrkDevice::sendTrkMessage(byte code, TrkCallback callback,
+     const QByteArray &data, const QVariant &cookie)
+{
+    if (!d->writerThread.isNull()) {
+        if (d->verbose > 1) {
+            QByteArray msg = "Sending:  ";
+            msg += QByteArray::number(code, 16);
+            msg += ": ";
+            msg += stringFromArray(data).toLatin1();
+            qDebug("%s", msg.data());
+        }
+        d->writerThread->queueTrkMessage(code, callback, data, cookie);
+    }
+}
+
+void TrkDevice::sendTrkInitialPing()
+{
+    if (!d->writerThread.isNull())
+        d->writerThread->queueTrkInitialPing();
+}
+
+bool TrkDevice::sendTrkAck(byte token)
+{
+    if (d->writerThread.isNull())
+        return false;
+    // The acknowledgement must not be queued!
+    TrkMessage msg(0x80, token);
+    msg.token = token;
+    msg.data.append('\0');
+    if (verboseTrk)
+        qDebug() << "Write synchroneous message: " << msg;
+    return d->writerThread->trkWriteRawMessage(msg);
+    // 01 90 00 07 7e 80 01 00 7d 5e 7e
+}
+
+void TrkDevice::emitLogMessage(const QString &msg)
+{
+    if (d->verbose)
+        qDebug("%s\n", qPrintable(msg));
+    emit logMessage(msg);
+}
+
+} // namespace trk
+
+#include "trkdevice.moc"
diff --git a/tools/runonphone/symbianutils/trkdevice.h b/tools/runonphone/symbianutils/trkdevice.h
new file mode 100644
index 0000000..21a3cc1
--- /dev/null
+++ b/tools/runonphone/symbianutils/trkdevice.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef TRKDEVICE_H
+#define TRKDEVICE_H
+
+#include "symbianutils_global.h"
+#include "callback.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QVariant>
+#include <QtCore/QByteArray>
+#include <QtCore/QSharedPointer>
+
+QT_BEGIN_NAMESPACE
+class QIODevice;
+QT_END_NAMESPACE
+
+namespace trk {
+
+struct TrkResult;
+struct TrkMessage;
+struct TrkDevicePrivate;
+
+/* TrkDevice: Implements a Windows COM or Linux device for
+ * Trk communications. Provides synchronous write and asynchronous
+ * read operation.
+ * The serialFrames property specifies whether packets are encapsulated in
+ * "0x90 <length>" frames, which is currently the case for serial ports. 
+ * Contains a write message queue allowing
+ * for queueing messages with a notification callback. If the message receives
+ * an ACK, the callback is invoked.
+ * The special message TRK_WRITE_QUEUE_NOOP_CODE code can be used for synchronisation.
+ * The respective  message will not be sent, the callback is just invoked. */
+
+enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f };
+
+typedef trk::Callback<const TrkResult &> TrkCallback;
+
+class SYMBIANUTILS_EXPORT TrkDevice : public QObject
+{
+    Q_OBJECT
+    Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
+    Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
+public:
+    explicit TrkDevice(QObject *parent = 0);
+    virtual ~TrkDevice();
+
+    bool open(const QString &port, QString *errorMessage);
+    bool isOpen() const;
+
+    QString errorString() const;
+
+    bool serialFrame() const;
+    void setSerialFrame(bool f);
+
+    int verbose() const;
+    void setVerbose(int b);
+
+    // Enqueue a message with a notification callback.
+    void sendTrkMessage(unsigned char code,
+                        TrkCallback callBack = TrkCallback(),
+                        const QByteArray &data = QByteArray(),
+                        const QVariant &cookie = QVariant());
+
+    // Enqeue an initial ping
+    void sendTrkInitialPing();
+
+    // Send an Ack synchronously, bypassing the queue
+    bool sendTrkAck(unsigned char token);
+
+signals:
+    void messageReceived(const trk::TrkResult &result);
+    // Emitted with the contents of messages enclosed in 07e, not for log output
+    void rawDataReceived(const QByteArray &data);
+    void error(const QString &msg);
+    void logMessage(const QString &msg);
+
+private slots:
+    void slotMessageReceived(const trk::TrkResult &result, const QByteArray &a);
+
+protected slots:
+    void emitError(const QString &msg);
+    void emitLogMessage(const QString &msg);
+
+public slots:
+    void close();
+
+private:
+    void readMessages();
+    TrkDevicePrivate *d;
+};
+
+} // namespace trk
+
+#endif // TRKDEVICE_H
diff --git a/tools/runonphone/symbianutils/trkutils.cpp b/tools/runonphone/symbianutils/trkutils.cpp
new file mode 100644
index 0000000..5cce950
--- /dev/null
+++ b/tools/runonphone/symbianutils/trkutils.cpp
@@ -0,0 +1,479 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "trkutils.h"
+#include <ctype.h>
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDebug>
+#include <QtCore/QDate>
+#include <QtCore/QDateTime>
+#include <QtCore/QTime>
+
+#define logMessage(s)  do { qDebug() << "TRKCLIENT: " << s; } while (0)
+
+namespace trk {
+
+TrkAppVersion::TrkAppVersion()
+{
+    reset();
+}
+
+void TrkAppVersion::reset()
+{
+    trkMajor = trkMinor= protocolMajor = protocolMinor = 0;
+}
+
+Session::Session()
+{
+    reset();
+}
+
+void Session::reset()
+{
+    cpuMajor = 0;
+    cpuMinor = 0;
+    bigEndian = 0;
+    defaultTypeSize = 0;
+    fpTypeSize = 0;
+    extended1TypeSize = 0;
+    extended2TypeSize = 0;
+    pid = 0;
+    tid = 0;
+    codeseg = 0;
+    dataseg = 0;
+
+    currentThread = 0;
+    libraries.clear();
+    trkAppVersion.reset();
+}
+
+static QString formatCpu(int major, int minor)
+{
+    //: CPU description of an S60 device
+    //: %1 major verison, %2 minor version
+    //: %3 real name of major verison, %4 real name of minor version
+    const QString str = QCoreApplication::translate("trk::Session", "CPU: v%1.%2%3%4");
+    QString majorStr;
+    QString minorStr;
+    switch (major) {
+    case 0x04:
+        majorStr = " ARM";
+        break;
+    }
+    switch (minor) {
+    case 0x00:
+        minorStr = " 920T";
+        break;
+    }
+    return str.arg(major).arg(minor).arg(majorStr).arg(minorStr);
+ }
+
+QString formatTrkVersion(const TrkAppVersion &version)
+{
+    QString str = QCoreApplication::translate("trk::Session",
+                                              "App TRK: v%1.%2 TRK protocol: v%3.%4");
+    str = str.arg(version.trkMajor).arg(version.trkMinor);
+    return str.arg(version.protocolMajor).arg(version.protocolMinor);
+}
+
+QString Session::deviceDescription(unsigned verbose) const
+{
+    if (!cpuMajor)
+        return QString();
+
+    //: s60description
+    //: description of an S60 device
+    //: %1 CPU description, %2 endianness
+    //: %3 default type size (if any), %4 float size (if any)
+    //: %5 TRK version
+    QString msg = QCoreApplication::translate("trk::Session", "%1, %2%3%4, %5");
+    QString endianness = bigEndian
+                         ? QCoreApplication::translate("trk::Session", "big endian")
+                         : QCoreApplication::translate("trk::Session", "little endian");
+    msg = msg.arg(formatCpu(cpuMajor, cpuMinor)).arg(endianness);
+    //: The separator in a list of strings
+    QString defaultTypeSizeStr;
+    QString fpTypeSizeStr;
+    if (verbose && defaultTypeSize)
+        //: will be inserted into s60description
+        defaultTypeSizeStr = QCoreApplication::translate("trk::Session", ", type size: %1").arg(defaultTypeSize);
+    if (verbose && fpTypeSize)
+        //: will be inserted into s60description
+        fpTypeSizeStr = QCoreApplication::translate("trk::Session", ", float size: %1").arg(fpTypeSize);
+    msg = msg.arg(defaultTypeSizeStr).arg(fpTypeSizeStr);
+    return msg.arg(formatTrkVersion(trkAppVersion));
+}
+
+
+QByteArray decode7d(const QByteArray &ba)
+{
+    QByteArray res;
+    res.reserve(ba.size());
+    for (int i = 0; i < ba.size(); ++i) {
+        byte c = byte(ba.at(i));
+        if (c == 0x7d) {
+            ++i;
+            c = 0x20 ^ byte(ba.at(i));
+        }
+        res.append(c);
+    }
+    return res;
+}
+
+QByteArray encode7d(const QByteArray &ba)
+{
+    QByteArray res;
+    res.reserve(ba.size() + 2);
+    for (int i = 0; i < ba.size(); ++i) {
+        byte c = byte(ba.at(i));
+        if (c == 0x7e || c == 0x7d) {
+            res.append(0x7d);
+            res.append(0x20 ^ c);
+        } else {
+            res.append(c);
+        }
+    }
+    return res;
+}
+
+// FIXME: Use the QByteArray based version below?
+static inline QString stringFromByte(byte c)
+{
+    return QString::fromLatin1("%1").arg(c, 2, 16, QChar('0'));
+}
+
+SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen)
+{
+    QString str;
+    QString ascii;
+    const int size = maxLen == -1 ? ba.size() : qMin(ba.size(), maxLen);
+    for (int i = 0; i < size; ++i) {
+        //if (i == 5 || i == ba.size() - 2)
+        //    str += "  ";
+        int c = byte(ba.at(i));
+        str += QString("%1 ").arg(c, 2, 16, QChar('0'));
+        if (i >= 8 && i < ba.size() - 2)
+            ascii += QChar(c).isPrint() ? QChar(c) : QChar('.');
+    }
+    if (size != ba.size()) {
+        str += "...";
+        ascii += "...";
+    }
+    return str + "  " + ascii;
+}
+
+SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits)
+{
+    QByteArray ba = QByteArray::number(n, 16);
+    if (digits == 0 || ba.size() == digits)
+        return ba;
+    return QByteArray(digits - ba.size(), '0') + ba;
+}
+
+SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits)
+{
+    return "0x" + hexNumber(n, digits);
+}
+
+TrkResult::TrkResult() :
+    code(0),
+    token(0),
+    isDebugOutput(false)
+{
+}
+
+void TrkResult::clear()
+{
+    code = token= 0;
+    isDebugOutput = false;
+    data.clear();
+    cookie = QVariant();
+}
+
+QString TrkResult::toString() const
+{
+    QString res = stringFromByte(code);
+    res += QLatin1String(" [");
+    res += stringFromByte(token);
+    res += QLatin1Char(']');
+    res += QLatin1Char(' ');
+    res += stringFromArray(data);
+    return res;
+}
+
+QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame)
+{
+    byte s = command + token;
+    for (int i = 0; i != data.size(); ++i)
+        s += data.at(i);
+    byte checksum = 255 - (s & 0xff);
+    //int x = s + ~s;
+    //logMessage("check: " << s << checksum << x;
+
+    QByteArray response;
+    response.reserve(data.size() + 3);
+    response.append(char(command));
+    response.append(char(token));
+    response.append(data);
+    response.append(char(checksum));
+
+    QByteArray encodedData = encode7d(response);
+
+    QByteArray ba;
+    ba.reserve(encodedData.size() + 6);
+    if (serialFrame) {
+        ba.append(char(0x01));
+        ba.append(char(0x90));
+        const ushort encodedSize = encodedData.size() + 2; // 2 x 0x7e
+        appendShort(&ba, encodedSize, BigEndian);
+    }
+    ba.append(char(0x7e));
+    ba.append(encodedData);
+    ba.append(char(0x7e));
+
+    return ba;
+}
+
+/* returns 0 if array doesn't represent a result,
+otherwise returns the length of the result data */
+ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame)
+{
+    if (serialFrame) {
+        // Serial protocol with length info
+        if (buffer.length() < 4)
+            return 0;
+        if (buffer.at(0) != 0x01 || byte(buffer.at(1)) != 0x90)
+            return 0;
+        const ushort len = extractShort(buffer.data() + 2);
+        return (buffer.size() >= len + 4) ? len : ushort(0);
+    }
+    // Frameless protocol without length info
+    const char delimiter = char(0x7e);
+    const int firstDelimiterPos = buffer.indexOf(delimiter);
+    // Regular message delimited by 0x7e..0x7e
+    if (firstDelimiterPos == 0) {
+        const int endPos = buffer.indexOf(delimiter, firstDelimiterPos + 1);
+        return endPos != -1 ? endPos + 1 - firstDelimiterPos : 0;
+    }
+    // Some ASCII log message up to first delimiter or all
+    return firstDelimiterPos != -1 ? firstDelimiterPos : buffer.size();
+}
+
+bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByteArray *rawData)
+{
+    result->clear();
+    if(rawData)
+        rawData->clear();
+    const ushort len = isValidTrkResult(*buffer, serialFrame);
+    if (!len)
+        return false;
+    // handle receiving application output, which is not a regular command
+    const int delimiterPos = serialFrame ? 4 : 0;
+    if (buffer->at(delimiterPos) != 0x7e) {
+        result->isDebugOutput = true;
+        result->data = buffer->mid(delimiterPos, len);
+        result->data.replace("\r\n", "\n");
+        *buffer->remove(0, delimiterPos + len);
+        return true;
+    }
+    // FIXME: what happens if the length contains 0xfe?
+    // Assume for now that it passes unencoded!
+    const QByteArray data = decode7d(buffer->mid(delimiterPos + 1, len - 2));
+    if(rawData)
+        *rawData = data;
+    *buffer->remove(0, delimiterPos + len);
+
+    byte sum = 0;
+    for (int i = 0; i < data.size(); ++i) // 3 = 2 * 0xfe + sum
+        sum += byte(data.at(i));
+    if (sum != 0xff)
+        logMessage("*** CHECKSUM ERROR: " << byte(sum));
+
+    result->code = data.at(0);
+    result->token = data.at(1);
+    result->data = data.mid(2, data.size() - 3);
+    //logMessage("   REST BUF: " << stringFromArray(*buffer));
+    //logMessage("   CURR DATA: " << stringFromArray(data));
+    //QByteArray prefix = "READ BUF:                                       ";
+    //logMessage((prefix + "HEADER: " + stringFromArray(header).toLatin1()).data());
+    return true;
+}
+
+SYMBIANUTILS_EXPORT ushort extractShort(const char *data)
+{
+    return byte(data[0]) * 256 + byte(data[1]);
+}
+
+SYMBIANUTILS_EXPORT uint extractInt(const char *data)
+{
+    uint res = byte(data[0]);
+    res *= 256; res += byte(data[1]);
+    res *= 256; res += byte(data[2]);
+    res *= 256; res += byte(data[3]);
+    return res;
+}
+
+SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba)
+{
+    QString res;
+    char buf[10];
+    for (int i = 0, n = ba.size(); i != n; ++i) {
+        const byte c = ba.at(i);
+        if (isprint(c)) {
+            res += c;
+        } else {
+            qsnprintf(buf, sizeof(buf) - 1, "\\%x", int(c));
+            res += buf;
+        }
+    }
+    return res;
+}
+
+SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness endian)
+{
+    if (endian == BigEndian) {
+        ba->append(s / 256);
+        ba->append(s % 256);
+    } else {
+        ba->append(s % 256);
+        ba->append(s / 256);
+    }
+}
+
+SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness endian)
+{
+    const uchar b3 = i % 256; i /= 256;
+    const uchar b2 = i % 256; i /= 256;
+    const uchar b1 = i % 256; i /= 256;
+    const uchar b0 = i;
+    ba->reserve(ba->size() + 4);
+    if (endian == BigEndian) {
+        ba->append(b0);
+        ba->append(b1);
+        ba->append(b2);
+        ba->append(b3);
+    } else {
+        ba->append(b3);
+        ba->append(b2);
+        ba->append(b1);
+        ba->append(b0);
+    }
+}
+
+void appendString(QByteArray *ba, const QByteArray &str, Endianness endian, bool appendNullTerminator)
+{
+    const int fullSize = str.size() + (appendNullTerminator ? 1 : 0);
+    appendShort(ba, fullSize, endian); // count the terminating \0
+    ba->append(str);
+    if (appendNullTerminator)
+        ba->append('\0');
+}
+
+void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness endian)
+{
+    // convert the QDateTime to UTC and append its representation to QByteArray
+    // format is the same as in FAT file system
+    dateTime = dateTime.toUTC();
+    const QTime utcTime = dateTime.time();
+    const QDate utcDate = dateTime.date();
+    uint fatDateTime = (utcTime.hour() << 11 | utcTime.minute() << 5 | utcTime.second()/2) << 16;
+    fatDateTime |= (utcDate.year()-1980) << 9 | utcDate.month() << 5 | utcDate.day();
+    appendInt(ba, fatDateTime, endian);
+}
+
+QByteArray errorMessage(byte code)
+{
+    switch (code) {
+        case 0x00: return "No error";
+        case 0x01: return "Generic error in CWDS message";
+        case 0x02: return "Unexpected packet size in send msg";
+        case 0x03: return "Internal error occurred in CWDS";
+        case 0x04: return "Escape followed by frame flag";
+        case 0x05: return "Bad FCS in packet";
+        case 0x06: return "Packet too long";
+        case 0x07: return "Sequence ID not expected (gap in sequence)";
+
+        case 0x10: return "Command not supported";
+        case 0x11: return "Command param out of range";
+        case 0x12: return "An option was not supported";
+        case 0x13: return "Read/write to invalid memory";
+        case 0x14: return "Read/write invalid registers";
+        case 0x15: return "Exception occurred in CWDS";
+        case 0x16: return "Targeted system or thread is running";
+        case 0x17: return "Breakpoint resources (HW or SW) exhausted";
+        case 0x18: return "Requested breakpoint conflicts with existing one";
+
+        case 0x20: return "General OS-related error";
+        case 0x21: return "Request specified invalid process";
+        case 0x22: return "Request specified invalid thread";
+    }
+    return "Unknown error";
+}
+
+uint swapEndian(uint in)
+{
+    return (in>>24) | ((in<<8) & 0x00FF0000) | ((in>>8) & 0x0000FF00) | (in<<24);
+}
+
+int TrkResult::errorCode() const
+{
+    // NAK means always error, else data sized 1 with a non-null element
+    const bool isNAK = code == 0xff;
+    if (data.size() != 1 && !isNAK)
+        return 0;
+    if (const int errorCode = data.at(0))
+        return errorCode;
+    return isNAK ? 0xff : 0;
+}
+
+QString TrkResult::errorString() const
+{
+    // NAK means always error, else data sized 1 with a non-null element
+    if (code == 0xff)
+        return "NAK";
+    if (data.size() < 1)
+        return "Unknown error packet";
+    return errorMessage(data.at(0));
+}
+
+} // namespace trk
+
diff --git a/tools/runonphone/symbianutils/trkutils.h b/tools/runonphone/symbianutils/trkutils.h
new file mode 100644
index 0000000..3a485c7
--- /dev/null
+++ b/tools/runonphone/symbianutils/trkutils.h
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DEBUGGER_TRK_UTILS
+#define DEBUGGER_TRK_UTILS
+
+#include "symbianutils_global.h"
+#include <QtCore/QByteArray>
+#include <QtCore/QHash>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+
+QT_BEGIN_NAMESPACE
+class QDateTime;
+QT_END_NAMESPACE
+
+namespace trk {
+
+typedef unsigned char byte;
+
+enum Command {
+    TrkPing = 0x00,
+    TrkConnect = 0x01,
+    TrkDisconnect = 0x02,
+    TrkVersions = 0x04,
+    TrkSupported = 0x05,
+    TrkCpuType = 0x06,
+    TrkHostVersions = 0x09,
+    TrkContinue = 0x18,
+    TrkCreateItem = 0x40,
+    TrkDeleteItem = 0x41,
+
+    TrkWriteFile = 0x48,
+    TrkOpenFile = 0x4a,
+    TrkCloseFile = 0x4b,
+    TrkInstallFile = 0x4d,
+    TrkInstallFile2 = 0x4e,
+
+    TrkNotifyAck = 0x80,
+    TrkNotifyNak = 0xff,
+    TrkNotifyStopped = 0x90,
+    TrkNotifyException = 0x91,
+    TrkNotifyInternalError = 0x92,
+    TrkNotifyCreated = 0xa0,
+    TrkNotifyDeleted = 0xa1,
+    TrkNotifyProcessorStarted = 0xa2,
+    TrkNotifyProcessorStandBy = 0xa6,
+    TrkNotifyProcessorReset = 0xa7
+};
+
+inline byte extractByte(const char *data) { return *data; }
+SYMBIANUTILS_EXPORT ushort extractShort(const char *data);
+SYMBIANUTILS_EXPORT uint extractInt(const char *data);
+
+SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba);
+
+// produces "xx xx xx "
+SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen = - 1);
+
+enum Endianness
+{
+    LittleEndian,
+    BigEndian,
+    TargetByteOrder = BigEndian,
+};
+
+SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness = TargetByteOrder);
+SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness = TargetByteOrder);
+SYMBIANUTILS_EXPORT void appendString(QByteArray *ba, const QByteArray &str, Endianness = TargetByteOrder, bool appendNullTerminator = true);
+
+struct SYMBIANUTILS_EXPORT Library
+{
+    Library() {}
+
+    QByteArray name;
+    uint codeseg;
+    uint dataseg;
+};
+
+struct SYMBIANUTILS_EXPORT TrkAppVersion
+{
+    TrkAppVersion();
+    void reset();    
+
+    int trkMajor;
+    int trkMinor;
+    int protocolMajor;
+    int protocolMinor;
+};
+
+struct SYMBIANUTILS_EXPORT Session
+{
+    Session();
+    void reset();
+    QString deviceDescription(unsigned verbose) const;
+
+    // Trk feedback
+    byte cpuMajor;
+    byte cpuMinor;
+    byte bigEndian;
+    byte defaultTypeSize;
+    byte fpTypeSize;
+    byte extended1TypeSize;
+    byte extended2TypeSize;
+    TrkAppVersion trkAppVersion;
+    uint pid;
+    uint tid;
+    uint codeseg;
+    uint dataseg;
+    QHash<uint, uint> addressToBP;
+
+    typedef QList<Library> Libraries;
+    Libraries libraries;
+
+    typedef uint Thread;
+    typedef QList<Thread> Threads;
+    Threads threads;
+
+    // Gdb request
+    uint currentThread;
+    QStringList modules;
+};
+
+struct SYMBIANUTILS_EXPORT TrkResult
+{
+    TrkResult();
+    void clear();
+    QString toString() const;
+    // 0 for no error.
+    int errorCode() const;
+    QString errorString() const;
+
+    byte code;
+    byte token;
+    QByteArray data;
+    QVariant cookie;
+    bool isDebugOutput;
+};
+
+SYMBIANUTILS_EXPORT QByteArray errorMessage(byte code);
+SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits = 0);
+SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits = 0); // prepends '0x', too
+SYMBIANUTILS_EXPORT uint swapEndian(uint in);
+
+} // namespace trk
+
+#endif // DEBUGGER_TRK_UTILS
diff --git a/tools/runonphone/symbianutils/trkutils_p.h b/tools/runonphone/symbianutils/trkutils_p.h
new file mode 100644
index 0000000..12b0109
--- /dev/null
+++ b/tools/runonphone/symbianutils/trkutils_p.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef DEBUGGER_TRK_PRIVATE_UTILS
+#define DEBUGGER_TRK_PRIVATE_UTILS
+
+#include "trkutils.h"
+#include "symbianutils_global.h"
+
+QT_BEGIN_NAMESPACE
+class QDateTime;
+QT_END_NAMESPACE
+
+namespace trk {
+
+void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteOrder);
+// returns a QByteArray containing optionally
+// the serial frame [0x01 0x90 <len>] and 0x7e encoded7d(ba) 0x7e
+QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame);
+bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0);
+
+} // namespace trk
+
+#endif // DEBUGGER_TRK_PRIVATE_UTILS
diff --git a/tools/runonphone/trk/bluetoothlistener.cpp b/tools/runonphone/trk/bluetoothlistener.cpp
deleted file mode 100644
index df04288..0000000
--- a/tools/runonphone/trk/bluetoothlistener.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "bluetoothlistener.h"
-#include "trkdevice.h"
-
-#include <QtCore/QDebug>
-
-#ifdef Q_OS_UNIX
-#   include <unistd.h>
-#   include <signal.h>
-#else
-#   include <windows.h>
-#endif
-
-// Process id helpers.
-#ifdef Q_OS_WIN
-inline DWORD processId(const QProcess &p)
-{
-    if (const Q_PID processInfoStruct = p.pid())
-        return processInfoStruct->dwProcessId;
-    return 0;
-}
-#else
-inline Q_PID processId(const QProcess &p)
-{
-    return p.pid();
-}
-#endif
-
-
-enum { debug = 0 };
-
-namespace trk {
-
-struct BluetoothListenerPrivate {
-    BluetoothListenerPrivate();
-    QString device;
-    QProcess process;
-#ifdef Q_OS_WIN
-    DWORD pid;
-#else
-    Q_PID pid;
-#endif
-    bool printConsoleMessages;
-    BluetoothListener::Mode mode;
-};
-
-BluetoothListenerPrivate::BluetoothListenerPrivate() :
-    pid(0),
-    printConsoleMessages(false),
-    mode(BluetoothListener::Listen)
-{
-}
-
-BluetoothListener::BluetoothListener(QObject *parent) :
-    QObject(parent),
-    d(new BluetoothListenerPrivate)
-{
-    d->process.setProcessChannelMode(QProcess::MergedChannels);
-
-    connect(&d->process, SIGNAL(readyReadStandardError()),
-            this, SLOT(slotStdError()));
-    connect(&d->process, SIGNAL(readyReadStandardOutput()),
-            this, SLOT(slotStdOutput()));
-    connect(&d->process, SIGNAL(finished(int, QProcess::ExitStatus)),
-            this, SLOT(slotProcessFinished(int,QProcess::ExitStatus)));
-    connect(&d->process, SIGNAL(error(QProcess::ProcessError)),
-            this, SLOT(slotProcessError(QProcess::ProcessError)));
-}
-
-BluetoothListener::~BluetoothListener()
-{
-    const int trc = terminateProcess();
-    if (debug)
-        qDebug() << "~BluetoothListener: terminated" << trc;
-    delete d;
-}
-
-BluetoothListener::Mode BluetoothListener::mode() const
-{
-    return d->mode;
-}
-
-void BluetoothListener::setMode(Mode m)
-{
-    d->mode = m;
-}
-
-bool BluetoothListener::printConsoleMessages() const
-{
-    return d->printConsoleMessages;
-}
-
-void BluetoothListener::setPrintConsoleMessages(bool p)
-{
-    d->printConsoleMessages = p;
-}
-
-int BluetoothListener::terminateProcess()
-{
-    enum { TimeOutMS = 200 };
-    if (debug)
-        qDebug() << "terminateProcess" << d->process.pid() << d->process.state();
-    if (d->process.state() == QProcess::NotRunning)
-        return -1;
-    emitMessage(tr("%1: Stopping listener %2...").arg(d->device).arg(processId(d->process)));
-    // When listening, the process should terminate by itself after closing the connection
-    if (mode() == Listen && d->process.waitForFinished(TimeOutMS))
-        return 0;
-#ifdef Q_OS_UNIX
-    kill(d->process.pid(), SIGHUP); // Listens for SIGHUP
-    if (d->process.waitForFinished(TimeOutMS))
-        return 1;
-#endif
-    d->process.terminate();
-    if (d->process.waitForFinished(TimeOutMS))
-        return 2;
-    d->process.kill();
-    return 3;
-}
-
-bool BluetoothListener::start(const QString &device, QString *errorMessage)
-{
-    if (d->process.state() != QProcess::NotRunning) {
-        *errorMessage = QLatin1String("Internal error: Still running.");
-        return false;
-    }
-    d->device = device;
-    const QString binary = QLatin1String("rfcomm");
-    QStringList arguments;
-    arguments << QLatin1String("-r")
-              << (d->mode == Listen ? QLatin1String("listen") : QLatin1String("watch"))
-              << device << QString(QLatin1Char('1'));
-    if (debug)
-        qDebug() << binary << arguments;
-    emitMessage(tr("%1: Starting Bluetooth listener %2...").arg(device, binary));
-    d->pid = 0;
-    d->process.start(binary, arguments);
-    if (!d->process.waitForStarted()) {
-        *errorMessage = tr("Unable to run '%1': %2").arg(binary, d->process.errorString());
-        return false;
-    }
-    d->pid = processId(d->process); // Forgets it after crash/termination
-    emitMessage(tr("%1: Bluetooth listener running (%2).").arg(device).arg(processId(d->process)));
-    return true;
-}
-
-void BluetoothListener::slotStdOutput()
-{
-    emitMessage(QString::fromLocal8Bit(d->process.readAllStandardOutput()));
-}
-
-void BluetoothListener::emitMessage(const QString &m)
-{
-    if (d->printConsoleMessages || debug)
-        qDebug("%s\n", qPrintable(m));
-    emit message(m);
-}
-
-void BluetoothListener::slotStdError()
-{
-    emitMessage(QString::fromLocal8Bit(d->process.readAllStandardError()));
-}
-
-void BluetoothListener::slotProcessFinished(int ex, QProcess::ExitStatus state)
-{
-    switch (state) {
-    case QProcess::NormalExit:
-        emitMessage(tr("%1: Process %2 terminated with exit code %3.")
-                    .arg(d->device).arg(d->pid).arg(ex));
-        break;
-    case QProcess::CrashExit:
-        emitMessage(tr("%1: Process %2 crashed.").arg(d->device).arg(d->pid));
-        break;
-    }
-    emit terminated();
-}
-
-void BluetoothListener::slotProcessError(QProcess::ProcessError error)
-{
-    emitMessage(tr("%1: Process error %2: %3")
-        .arg(d->device).arg(error).arg(d->process.errorString()));
-}
-
-} // namespace trk
diff --git a/tools/runonphone/trk/bluetoothlistener.h b/tools/runonphone/trk/bluetoothlistener.h
deleted file mode 100644
index 36894e7..0000000
--- a/tools/runonphone/trk/bluetoothlistener.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef BLUETOOTHLISTENER_H
-#define BLUETOOTHLISTENER_H
-
-#include "symbianutils_global.h"
-
-#include <QtCore/QObject>
-#include <QtCore/QProcess>
-
-namespace trk {
-struct BluetoothListenerPrivate;
-
-/* BluetoothListener: Starts a helper process watching connections on a
- * Bluetooth device, Linux only:
- * The rfcomm command is used. It process can be started in the background
- * while connection attempts (TrkDevice::open()) are made in the foreground. */
-
-class SYMBIANUTILS_EXPORT BluetoothListener : public QObject
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(BluetoothListener)
-public:
-    // The Mode property must be set before calling start().
-    enum Mode {
-        Listen, /* Terminate after client closed (read: Trk app
-                 * on the phone terminated or disconnected).*/
-        Watch   // Keep running, watch for next connection from client
-    };
-
-    explicit BluetoothListener(QObject *parent = 0);
-    virtual ~BluetoothListener();
-
-    Mode mode() const;
-    void setMode(Mode m);
-
-    bool start(const QString &device, QString *errorMessage);
-
-    // Print messages on the console.
-    bool printConsoleMessages() const;
-    void setPrintConsoleMessages(bool p);
-
-signals:
-    void terminated();
-    void message(const QString &);
-
-public slots:
-    void emitMessage(const QString &m); // accessed by starter
-
-private slots:
-    void slotStdOutput();
-    void slotStdError();
-    void slotProcessFinished(int, QProcess::ExitStatus);
-    void slotProcessError(QProcess::ProcessError error);
-
-private:
-    int terminateProcess();
-
-    BluetoothListenerPrivate *d;
-};
-
-} // namespace trk
-
-#endif // BLUETOOTHLISTENER_H
diff --git a/tools/runonphone/trk/bluetoothlistener_gui.cpp b/tools/runonphone/trk/bluetoothlistener_gui.cpp
deleted file mode 100644
index 5994eb5..0000000
--- a/tools/runonphone/trk/bluetoothlistener_gui.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "bluetoothlistener_gui.h"
-#include "bluetoothlistener.h"
-#include "communicationstarter.h"
-
-#include <QtGui/QMessageBox>
-#include <QtGui/QPushButton>
-#include <QtCore/QCoreApplication>
-#include <QtCore/QDebug>
-
-namespace trk {
-
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-    promptStartCommunication(BaseCommunicationStarter &starter,
-                             const QString &msgBoxTitle,
-                             const QString &msgBoxText,
-                             QWidget *msgBoxParent,
-                             QString *errorMessage)
-{
-    errorMessage->clear();
-    // Initial connection attempt.
-    switch (starter.start()) {
-    case BaseCommunicationStarter::Started:
-        break;
-    case BaseCommunicationStarter::ConnectionSucceeded:
-        return PromptStartCommunicationConnected;
-    case BaseCommunicationStarter::StartError:
-        *errorMessage = starter.errorString();
-        return PromptStartCommunicationError;
-    }
-    // Run the starter with the event loop of a message box, have the box
-    // closed by the signals of the starter.
-    QMessageBox messageBox(QMessageBox::Information, msgBoxTitle, msgBoxText, QMessageBox::Cancel, msgBoxParent);
-    QObject::connect(&starter, SIGNAL(connected()), &messageBox, SLOT(close()));
-    QObject::connect(&starter, SIGNAL(timeout()), &messageBox, SLOT(close()));
-    messageBox.exec();    
-    // Only starter.state() is reliable here to obtain the state.
-    switch (starter.state()) {
-    case AbstractBluetoothStarter::Running:
-        *errorMessage = QCoreApplication::translate("trk::promptStartCommunication", "Connection on %1 canceled.").arg(starter.device());
-        return PromptStartCommunicationCanceled;
-    case AbstractBluetoothStarter::TimedOut:
-        *errorMessage = starter.errorString();
-        return PromptStartCommunicationError;
-    case AbstractBluetoothStarter::Connected:
-        break;
-    }
-    return PromptStartCommunicationConnected;
-}
-
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-    promptStartSerial(BaseCommunicationStarter &starter,
-                         QWidget *msgBoxParent,
-                         QString *errorMessage)
-{
-    const QString title = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for App TRK");
-    const QString message = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for App TRK to start on %1...").arg(starter.device());
-    return promptStartCommunication(starter, title, message, msgBoxParent, errorMessage);
-}
-
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-    promptStartBluetooth(BaseCommunicationStarter &starter,
-                         QWidget *msgBoxParent,
-                         QString *errorMessage)
-{
-    const QString title = QCoreApplication::translate("trk::promptStartCommunication", "Waiting for Bluetooth Connection");
-    const QString message = QCoreApplication::translate("trk::promptStartCommunication", "Connecting to %1...").arg(starter.device());
-    return promptStartCommunication(starter, title, message, msgBoxParent, errorMessage);
-}
-
-} // namespace trk
diff --git a/tools/runonphone/trk/bluetoothlistener_gui.h b/tools/runonphone/trk/bluetoothlistener_gui.h
deleted file mode 100644
index 10e7145..0000000
--- a/tools/runonphone/trk/bluetoothlistener_gui.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef BLUETOOTHLISTENER_GUI_H
-#define BLUETOOTHLISTENER_GUI_H
-
-#include "symbianutils_global.h"
-
-#include <QtCore/QtGlobal>
-
-QT_BEGIN_NAMESPACE
-class QWidget;
-QT_END_NAMESPACE
-
-namespace trk {
-class BaseCommunicationStarter;
-
-/* promptStartCommunication(): Convenience functions that
- * prompt the user to start a communication (launching or
- * connecting TRK) using a modal message box in which they can cancel.
- * Pass in the starter with device and parameters set up.  */
-
-enum PromptStartCommunicationResult {
-    PromptStartCommunicationConnected,
-    PromptStartCommunicationCanceled,
-    PromptStartCommunicationError
-};
-
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-        promptStartCommunication(BaseCommunicationStarter &starter,
-                                 const QString &msgBoxTitle,
-                                 const QString &msgBoxText,
-                                 QWidget *msgBoxParent,
-                                 QString *errorMessage);
-
-// Convenience to start a serial connection (messages prompting
-// to launch Trk).
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-        promptStartSerial(BaseCommunicationStarter &starter,
-                          QWidget *msgBoxParent,
-                          QString *errorMessage);
-
-// Convenience to start blue tooth connection (messages
-// prompting to connect).
-SYMBIANUTILS_EXPORT PromptStartCommunicationResult
-        promptStartBluetooth(BaseCommunicationStarter &starter,
-                             QWidget *msgBoxParent,
-                             QString *errorMessage);
-} // namespace trk
-
-#endif // BLUETOOTHLISTENER_GUI_H
diff --git a/tools/runonphone/trk/callback.h b/tools/runonphone/trk/callback.h
deleted file mode 100644
index 3996d73..0000000
--- a/tools/runonphone/trk/callback.h
+++ /dev/null
@@ -1,160 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DEBUGGER_CALLBACK_H
-#define DEBUGGER_CALLBACK_H
-
-#include "symbianutils_global.h"
-
-namespace trk {
-namespace Internal {
-
-/* Helper class for the 1-argument functor:
- * Cloneable base class for the implementation which is
- * invokeable with the argument. */
-template <class Argument>
-class CallbackImplBase
-{
-    Q_DISABLE_COPY(CallbackImplBase)
-public:
-    CallbackImplBase() {}
-    virtual CallbackImplBase *clone() const = 0;
-    virtual void invoke(Argument a) = 0;
-    virtual ~CallbackImplBase() {}
-};
-
-/* Helper class for the 1-argument functor: Implementation for
- * a class instance with a member function pointer. */
-template <class Class, class Argument>
-class CallbackMemberPtrImpl : public CallbackImplBase<Argument>
-{
-public:
-    typedef void (Class::*MemberFuncPtr)(Argument);
-
-    CallbackMemberPtrImpl(Class *instance,
-                          MemberFuncPtr memberFunc) :
-                          m_instance(instance),
-                          m_memberFunc(memberFunc) {}
-
-    virtual CallbackImplBase<Argument> *clone() const
-    {
-        return new CallbackMemberPtrImpl<Class, Argument>(m_instance, m_memberFunc);
-    }
-
-    virtual void invoke(Argument a)
-        { (m_instance->*m_memberFunc)(a); }
-private:
-    Class *m_instance;
-    MemberFuncPtr m_memberFunc;
-};
-
-} // namespace Internal
-
-/* Default-constructible, copyable 1-argument functor providing an
- * operator()(Argument) that invokes a member function of a class:
- * \code
-class Foo {
-public:
-    void print(const std::string &);
-};
-...
-Foo foo;
-Callback<const std::string &> f1(&foo, &Foo::print);
-f1("test");
-\endcode */
-
-template <class Argument>
-class Callback
-{
-public:
-    Callback() : m_impl(0) {}
-
-    template <class Class>
-    Callback(Class *instance, void (Class::*memberFunc)(Argument)) :
-        m_impl(new Internal::CallbackMemberPtrImpl<Class,Argument>(instance, memberFunc))
-    {}
-
-    ~Callback()
-    {
-        clean();
-    }
-
-    Callback(const Callback &rhs) :
-        m_impl(0)
-    {
-        if (rhs.m_impl)
-            m_impl = rhs.m_impl->clone();
-    }
-
-    Callback &operator=(const Callback &rhs)
-    {
-        if (this != &rhs) {
-            clean();
-            if (rhs.m_impl)
-                m_impl = rhs.m_impl->clone();
-        }
-        return *this;
-    }
-
-    bool isNull() const { return m_impl == 0; }
-    operator bool() const { return !isNull(); }
-
-    void operator()(Argument a)
-    {
-        if (m_impl)
-            m_impl->invoke(a);
-    }
-
-private:
-    void clean()
-    {
-        if (m_impl) {
-            delete m_impl;
-            m_impl = 0;
-        }
-    }
-
-    Internal::CallbackImplBase<Argument> *m_impl;
-};
-
-} // namespace trk
-
-#endif // DEBUGGER_CALLBACK_H
diff --git a/tools/runonphone/trk/communicationstarter.cpp b/tools/runonphone/trk/communicationstarter.cpp
deleted file mode 100644
index e5e556e..0000000
--- a/tools/runonphone/trk/communicationstarter.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "communicationstarter.h"
-#include "bluetoothlistener.h"
-#include "trkdevice.h"
-
-#include <QtCore/QTimer>
-#include <QtCore/QEventLoop>
-
-namespace trk {
-
-// --------------- AbstractBluetoothStarter
-struct BaseCommunicationStarterPrivate {
-    explicit BaseCommunicationStarterPrivate(const BaseCommunicationStarter::TrkDevicePtr &d);
-
-    const BaseCommunicationStarter::TrkDevicePtr trkDevice;
-    BluetoothListener *listener;
-    QTimer *timer;
-    int intervalMS;
-    int attempts;
-    int n;
-    QString device;
-    QString errorString;
-    BaseCommunicationStarter::State state;
-};
-
-BaseCommunicationStarterPrivate::BaseCommunicationStarterPrivate(const BaseCommunicationStarter::TrkDevicePtr &d) :
-        trkDevice(d),
-        listener(0),
-        timer(0),
-        intervalMS(1000),
-        attempts(-1),
-        n(0),
-        device(QLatin1String("/dev/rfcomm0")),
-        state(BaseCommunicationStarter::TimedOut)
-{
-}
-
-BaseCommunicationStarter::BaseCommunicationStarter(const TrkDevicePtr &trkDevice, QObject *parent) :
-        QObject(parent),
-        d(new BaseCommunicationStarterPrivate(trkDevice))
-{
-}
-
-BaseCommunicationStarter::~BaseCommunicationStarter()
-{
-    stopTimer();
-    delete d;
-}
-
-void BaseCommunicationStarter::stopTimer()
-{
-    if (d->timer && d->timer->isActive())
-        d->timer->stop();
-}
-
-bool BaseCommunicationStarter::initializeStartupResources(QString *errorMessage)
-{
-    errorMessage->clear();
-    return true;
-}
-
-BaseCommunicationStarter::StartResult BaseCommunicationStarter::start()
-{
-    if (state() == Running) {
-        d->errorString = QLatin1String("Internal error, attempt to re-start BaseCommunicationStarter.\n");
-        return StartError;
-    }
-    // Before we instantiate timers, and such, try to open the device,
-    // which should succeed if another listener is already running in
-    // 'Watch' mode
-    if (d->trkDevice->open(d->device , &(d->errorString)))
-        return ConnectionSucceeded;
-    // Pull up resources for next attempt
-    d->n = 0;
-    if (!initializeStartupResources(&(d->errorString)))
-        return StartError;
-    // Start timer
-    if (!d->timer) {
-        d->timer = new QTimer;
-        connect(d->timer, SIGNAL(timeout()), this, SLOT(slotTimer()));
-    }
-    d->timer->setInterval(d->intervalMS);
-    d->timer->setSingleShot(false);
-    d->timer->start();
-    d->state = Running;
-    return Started;
-}
-
-BaseCommunicationStarter::State BaseCommunicationStarter::state() const
-{
-    return d->state;
-}
-
-int BaseCommunicationStarter::intervalMS() const
-{
-    return d->intervalMS;
-}
-
-void BaseCommunicationStarter::setIntervalMS(int i)
-{
-    d->intervalMS = i;
-    if (d->timer)
-        d->timer->setInterval(i);
-}
-
-int BaseCommunicationStarter::attempts() const
-{
-    return d->attempts;
-}
-
-void BaseCommunicationStarter::setAttempts(int a)
-{
-    d->attempts = a;
-}
-
-QString BaseCommunicationStarter::device() const
-{
-    return d->device;
-}
-
-void BaseCommunicationStarter::setDevice(const QString &dv)
-{
-    d->device = dv;
-}
-
-QString BaseCommunicationStarter::errorString() const
-{
-    return d->errorString;
-}
-
-void BaseCommunicationStarter::slotTimer()
-{
-    ++d->n;
-    // Check for timeout
-    if (d->attempts >= 0 && d->n >= d->attempts) {
-        stopTimer();
-        d->errorString = tr("%1: timed out after %n attempts using an interval of %2ms.", 0, d->n)
-                         .arg(d->device).arg(d->intervalMS);
-        d->state = TimedOut;
-        emit timeout();
-    } else {
-        // Attempt n to connect?
-        if (d->trkDevice->open(d->device , &(d->errorString))) {
-            stopTimer();
-            const QString msg = tr("%1: Connection attempt %2 succeeded.").arg(d->device).arg(d->n);
-            emit message(msg);
-            d->state = Connected;
-            emit connected();
-        } else {
-            const QString msg = tr("%1: Connection attempt %2 failed: %3 (retrying)...")
-                                .arg(d->device).arg(d->n).arg(d->errorString);
-            emit message(msg);
-        }
-    }
-}
-
-// --------------- AbstractBluetoothStarter
-
-AbstractBluetoothStarter::AbstractBluetoothStarter(const TrkDevicePtr &trkDevice, QObject *parent) :
-    BaseCommunicationStarter(trkDevice, parent)
-{
-}
-
-bool AbstractBluetoothStarter::initializeStartupResources(QString *errorMessage)
-{
-    // Create the listener and forward messages to it.
-    BluetoothListener *listener = createListener();
-    connect(this, SIGNAL(message(QString)), listener, SLOT(emitMessage(QString)));
-    return listener->start(device(), errorMessage);
-}
-
-// -------- ConsoleBluetoothStarter
-ConsoleBluetoothStarter::ConsoleBluetoothStarter(const TrkDevicePtr &trkDevice,
-                                                 QObject *listenerParent,
-                                                 QObject *parent) :
-AbstractBluetoothStarter(trkDevice, parent),
-m_listenerParent(listenerParent)
-{
-}
-
-BluetoothListener *ConsoleBluetoothStarter::createListener()
-{
-    BluetoothListener *rc = new BluetoothListener(m_listenerParent);
-    rc->setMode(BluetoothListener::Listen);
-    rc->setPrintConsoleMessages(true);
-    return rc;
-}
-
-bool ConsoleBluetoothStarter::startBluetooth(const TrkDevicePtr &trkDevice,
-                                             QObject *listenerParent,
-                                             const QString &device,
-                                             int attempts,
-                                             QString *errorMessage)
-{
-    // Set up a console starter to print to stdout.
-    ConsoleBluetoothStarter starter(trkDevice, listenerParent);
-    starter.setDevice(device);
-    starter.setAttempts(attempts);
-    switch (starter.start()) {
-    case Started:
-        break;
-    case ConnectionSucceeded:
-        return true;
-    case StartError:
-        *errorMessage = starter.errorString();
-        return false;
-    }
-    // Run the starter with an event loop. @ToDo: Implement
-    // some asynchronous keypress read to cancel.
-    QEventLoop eventLoop;
-    connect(&starter, SIGNAL(connected()), &eventLoop, SLOT(quit()));
-    connect(&starter, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
-    eventLoop.exec(QEventLoop::ExcludeUserInputEvents);
-    if (starter.state() != AbstractBluetoothStarter::Connected) {
-        *errorMessage = starter.errorString();
-        return false;
-    }
-    return true;
-}
-} // namespace trk
diff --git a/tools/runonphone/trk/communicationstarter.h b/tools/runonphone/trk/communicationstarter.h
deleted file mode 100644
index 2d7dc50..0000000
--- a/tools/runonphone/trk/communicationstarter.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef COMMUNICATIONSTARTER_H
-#define COMMUNICATIONSTARTER_H
-
-#include "symbianutils_global.h"
-
-#include <QtCore/QSharedPointer>
-#include <QtCore/QObject>
-
-namespace trk {
-class TrkDevice;
-class BluetoothListener;
-struct BaseCommunicationStarterPrivate;
-
-/* BaseCommunicationStarter: A QObject that repeatedly tries to open a
- * trk device until a connection succeeds or a timeout occurs (emitting
- * signals), allowing to do something else in the foreground (local event loop
- * [say QMessageBox] or some asynchronous operation). If the initial
- * connection attempt in start() fails, the
- * virtual initializeStartupResources() is called to initialize resources
- * required to pull up the communication (namely Bluetooth listeners).
- * The base class can be used as is to prompt the user to launch App TRK for a
- * serial communication as this requires no further resource setup. */
-
-class SYMBIANUTILS_EXPORT BaseCommunicationStarter : public QObject {
-    Q_OBJECT
-    Q_DISABLE_COPY(BaseCommunicationStarter)
-public:
-    typedef QSharedPointer<TrkDevice> TrkDevicePtr;
-
-    enum State { Running, Connected, TimedOut };
-
-    explicit BaseCommunicationStarter(const TrkDevicePtr& trkDevice, QObject *parent = 0);
-    virtual ~BaseCommunicationStarter();
-
-    int intervalMS() const;
-    void setIntervalMS(int i);
-
-    int attempts() const;
-    void setAttempts(int a);
-
-    QString device() const;
-    void setDevice(const QString &);
-
-    State state() const;
-    QString errorString() const;
-
-    enum StartResult {
-        Started,               // Starter is now running.
-        ConnectionSucceeded,   /* Initial connection attempt succeeded,
-                                * no need to keep running. */
-        StartError             // Error occurred during start.
-    };
-
-    StartResult start();
-
-signals:
-    void connected();
-    void timeout();
-    void message(const QString &);
-
-private slots:
-    void slotTimer();
-
-protected:
-    virtual bool initializeStartupResources(QString *errorMessage);
-
-private:
-    inline void stopTimer();
-
-    BaseCommunicationStarterPrivate *d;
-};
-
-/* AbstractBluetoothStarter: Repeatedly tries to open a trk Bluetooth
- * device. Note that in case a Listener is already running mode, the
- * connection will succeed immediately.
- * initializeStartupResources() is implemented to fire up the listener.
- * Introduces a new virtual createListener() that derived classes must
- * implement as a factory function that creates and sets up the
- * listener (mode, message connection, etc). */
-
-class SYMBIANUTILS_EXPORT AbstractBluetoothStarter : public BaseCommunicationStarter {
-    Q_OBJECT
-    Q_DISABLE_COPY(AbstractBluetoothStarter)
-public:
-
-protected:
-    explicit AbstractBluetoothStarter(const TrkDevicePtr& trkDevice, QObject *parent = 0);
-
-    // Implemented to fire up the listener.
-    virtual bool initializeStartupResources(QString *errorMessage);
-    // New virtual: Overwrite to create and parametrize the listener.
-    virtual BluetoothListener *createListener() = 0;
-};
-
-/* ConsoleBluetoothStarter: Convenience class for console processes. Creates a
- * listener in "Listen" mode with the messages redirected to standard output. */
-
-class SYMBIANUTILS_EXPORT ConsoleBluetoothStarter : public AbstractBluetoothStarter {
-    Q_OBJECT
-    Q_DISABLE_COPY(ConsoleBluetoothStarter)
-public:
-    static bool startBluetooth(const TrkDevicePtr& trkDevice,
-                               QObject *listenerParent,
-                               const QString &device,
-                               int attempts,
-                               QString *errorMessage);
-
-protected:
-    virtual BluetoothListener *createListener();
-
-private:
-    explicit ConsoleBluetoothStarter(const TrkDevicePtr& trkDevice,
-                                     QObject *listenerParent,
-                                     QObject *parent = 0);
-
-    QObject *m_listenerParent;
-};
-
-} // namespace trk
-
-#endif // COMMUNICATIONSTARTER_H
diff --git a/tools/runonphone/trk/launcher.cpp b/tools/runonphone/trk/launcher.cpp
deleted file mode 100644
index 4f91545..0000000
--- a/tools/runonphone/trk/launcher.cpp
+++ /dev/null
@@ -1,741 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "launcher.h"
-#include "trkutils.h"
-#include "trkutils_p.h"
-#include "trkdevice.h"
-#include "bluetoothlistener.h"
-
-#include <QtCore/QTimer>
-#include <QtCore/QDateTime>
-#include <QtCore/QVariant>
-#include <QtCore/QDebug>
-#include <QtCore/QQueue>
-#include <QtCore/QFile>
-#include <QtCore/QScopedPointer>
-
-namespace trk {
-
-struct LauncherPrivate {
-    struct CopyState {
-        QString sourceFileName;
-        QString destinationFileName;
-        uint copyFileHandle;
-        QScopedPointer<QByteArray> data;
-        int position;
-    };
-
-    explicit LauncherPrivate(const TrkDevicePtr &d);
-
-    TrkDevicePtr m_device;
-    QString m_trkServerName;
-    QByteArray m_trkReadBuffer;
-    Launcher::State m_state;
-
-    void logMessage(const QString &msg);
-    // Debuggee state
-    Session m_session; // global-ish data (process id, target information)
-
-    CopyState m_copyState;
-    QString m_fileName;
-    QStringList m_commandLineArgs;
-    QString m_installFileName;
-    int m_verbose;
-    Launcher::Actions m_startupActions;
-    bool m_closeDevice;
-};
-
-LauncherPrivate::LauncherPrivate(const TrkDevicePtr &d) :
-    m_device(d),
-    m_state(Launcher::Disconnected),
-    m_verbose(0),
-    m_closeDevice(true)
-{
-    if (m_device.isNull())
-        m_device = TrkDevicePtr(new TrkDevice);
-}
-
-Launcher::Launcher(Actions startupActions,
-                   const TrkDevicePtr &dev,
-                   QObject *parent) :
-    QObject(parent),
-    d(new LauncherPrivate(dev))
-{
-    d->m_startupActions = startupActions;
-    connect(d->m_device.data(), SIGNAL(messageReceived(trk::TrkResult)), this, SLOT(handleResult(trk::TrkResult)));    
-    connect(this, SIGNAL(finished()), d->m_device.data(), SLOT(close()));
-}
-
-Launcher::~Launcher()
-{
-    logMessage("Shutting down.\n");
-    delete d;
-}
-
-Launcher::State Launcher::state() const
-{
-    return d->m_state;
-}
-
-void Launcher::setState(State s)
-{
-    if (s != d->m_state) {
-        d->m_state = s;
-        emit stateChanged(s);
-    }
-}
-
-void Launcher::addStartupActions(trk::Launcher::Actions startupActions)
-{
-    d->m_startupActions = Actions(d->m_startupActions | startupActions);
-}
-
-void Launcher::setTrkServerName(const QString &name)
-{
-    d->m_trkServerName = name;
-}
-
-QString Launcher::trkServerName() const
-{
-    return d->m_trkServerName;
-}
-
-TrkDevicePtr Launcher::trkDevice() const
-{
-    return d->m_device;
-}
-
-void Launcher::setFileName(const QString &name)
-{
-    d->m_fileName = name;
-}
-
-void Launcher::setCopyFileName(const QString &srcName, const QString &dstName)
-{
-    d->m_copyState.sourceFileName = srcName;
-    d->m_copyState.destinationFileName = dstName;
-}
-
-void Launcher::setInstallFileName(const QString &name)
-{
-    d->m_installFileName = name;
-}
-
-void Launcher::setCommandLineArgs(const QStringList &args)
-{
-    d->m_commandLineArgs = args;
-}
-
-void Launcher::setSerialFrame(bool b)
-{
-    d->m_device->setSerialFrame(b);
-}
-
-bool Launcher::serialFrame() const
-{
-    return d->m_device->serialFrame();
-}
-
-
-bool Launcher::closeDevice() const
-{
-    return d->m_closeDevice;
-}
-
-void Launcher::setCloseDevice(bool c)
-{
-    d->m_closeDevice = c;
-}
-
-bool Launcher::startServer(QString *errorMessage)
-{
-    errorMessage->clear();
-    if (d->m_verbose) {
-        const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Arguments=%3 Package=%4 Remote Package=%5 Install file=%6")
-                            .arg(d->m_trkServerName, d->m_fileName,
-                                 d->m_commandLineArgs.join(QString(QLatin1Char(' '))),
-                                 d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
-        logMessage(msg);
-    }
-    if (d->m_startupActions & ActionCopy) {
-        if (d->m_copyState.sourceFileName.isEmpty()) {
-            qWarning("No local filename given for copying package.");
-            return false;
-        } else if (d->m_copyState.destinationFileName.isEmpty()) {
-            qWarning("No remote filename given for copying package.");
-            return false;
-        }
-    }
-    if (d->m_startupActions & ActionInstall && d->m_installFileName.isEmpty()) {
-        qWarning("No package name given for installing.");
-        return false;
-    }
-    if (d->m_startupActions & ActionRun && d->m_fileName.isEmpty()) {
-        qWarning("No remote executable given for running.");
-        return false;
-    }
-    if (!d->m_device->isOpen() && !d->m_device->open(d->m_trkServerName, errorMessage))
-        return false;
-    if (d->m_closeDevice) {
-        connect(this, SIGNAL(finished()), d->m_device.data(), SLOT(close()));
-    } else {
-        disconnect(this, SIGNAL(finished()), d->m_device.data(), 0);
-    }
-    setState(Connecting);
-    // Set up the temporary 'waiting' state if we do not get immediate connection
-    QTimer::singleShot(1000, this, SLOT(slotWaitingForTrk()));
-    d->m_device->sendTrkInitialPing();
-    d->m_device->sendTrkMessage(TrkDisconnect); // Disconnect, as trk might be still connected
-    d->m_device->sendTrkMessage(TrkSupported, TrkCallback(this, &Launcher::handleSupportMask));
-    d->m_device->sendTrkMessage(TrkCpuType, TrkCallback(this, &Launcher::handleCpuType));
-    d->m_device->sendTrkMessage(TrkVersions, TrkCallback(this, &Launcher::handleTrkVersion));
-    if (d->m_startupActions != ActionPingOnly)
-        d->m_device->sendTrkMessage(TrkConnect, TrkCallback(this, &Launcher::handleConnect));
-    return true;
-}
-
-void Launcher::slotWaitingForTrk()
-{
-    // Set temporary state if we are still in connected state
-    if (state() == Connecting)
-        setState(WaitingForTrk);
-}
-
-void Launcher::handleConnect(const TrkResult &result)
-{
-    if (result.errorCode()) {
-        emit canNotConnect(result.errorString());
-        return;
-    }
-    setState(Connected);
-    if (d->m_startupActions & ActionCopy)
-        copyFileToRemote();
-    else if (d->m_startupActions & ActionInstall)
-        installRemotePackageSilently();
-    else if (d->m_startupActions & ActionRun)
-        startInferiorIfNeeded();
-}
-
-void Launcher::setVerbose(int v)
-{
-    d->m_verbose = v;
-    d->m_device->setVerbose(v);
-}
-
-void Launcher::logMessage(const QString &msg)
-{
-    if (d->m_verbose)
-        qDebug() << "LAUNCHER: " << qPrintable(msg);
-}
-
-void Launcher::terminate()
-{
-    switch (state()) {
-    case DeviceDescriptionReceived:
-    case Connected:
-        if (d->m_session.pid) {
-            QByteArray ba;
-            appendShort(&ba, 0x0000, TargetByteOrder);
-            appendInt(&ba, d->m_session.pid, TargetByteOrder);
-            d->m_device->sendTrkMessage(TrkDeleteItem, TrkCallback(this, &Launcher::handleRemoteProcessKilled), ba);
-            return;
-        }
-        if (d->m_copyState.copyFileHandle)
-            closeRemoteFile(true);
-        disconnectTrk();
-        break;
-    case Disconnected:
-        break;
-    case Connecting:
-    case WaitingForTrk:
-        setState(Disconnected);
-        emit finished();
-        break;
-    }
-}
-
-void Launcher::handleRemoteProcessKilled(const TrkResult &result)
-{
-    Q_UNUSED(result)
-    disconnectTrk();
-}
-
-QString Launcher::msgStopped(uint pid, uint tid, uint address, const QString &why)
-{
-    return QString::fromLatin1("Process %1, thread %2 stopped at 0x%3: %4").
-            arg(pid).arg(tid).arg(address, 0, 16).
-            arg(why.isEmpty() ? QString::fromLatin1("<Unknown reason>") : why);
-}
-
-bool Launcher::parseNotifyStopped(const QByteArray &dataBA,
-                                  uint *pid, uint *tid, uint *address,
-                                  QString *why /* = 0 */)
-{
-    if (why)
-        why->clear();
-    *address = *pid = *tid = 0;
-    if (dataBA.size() < 12)
-        return false;
-    const char *data = dataBA.data();
-    *address = extractInt(data);
-    *pid = extractInt(data + 4);
-    *tid = extractInt(data + 8);
-    if (why && dataBA.size() >= 14) {
-        const unsigned short len = extractShort(data + 12);
-        if (len > 0)
-            *why = QString::fromLatin1(data + 14, len);
-    }
-    return true;
-}
-
-void Launcher::handleResult(const TrkResult &result)
-{
-    QByteArray prefix = "READ BUF:                                       ";
-    QByteArray str = result.toString().toUtf8();
-    if (result.isDebugOutput) { // handle application output
-        logMessage("APPLICATION OUTPUT: " + result.data);
-        emit applicationOutputReceived(result.data);
-        return;
-    }
-    switch (result.code) {
-        case TrkNotifyAck:
-            break;
-        case TrkNotifyNak: { // NAK
-            logMessage(prefix + "NAK: " + str);
-            //logMessage(prefix << "TOKEN: " << result.token);
-            logMessage(prefix + "ERROR: " + errorMessage(result.data.at(0)));
-            break;
-        }
-        case TrkNotifyStopped: { // Notified Stopped
-            QString reason;
-            uint pc;
-            uint pid;
-            uint tid;
-            parseNotifyStopped(result.data, &pid, &tid, &pc, &reason);
-            logMessage(prefix + msgStopped(pid, tid, pc, reason));
-            emit(processStopped(pc, pid, tid, reason));
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-        case TrkNotifyException: { // Notify Exception (obsolete)
-            logMessage(prefix + "NOTE: EXCEPTION  " + str);
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-        case TrkNotifyInternalError: { //
-            logMessage(prefix + "NOTE: INTERNAL ERROR: " + str);
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-
-        // target->host OS notification
-        case TrkNotifyCreated: { // Notify Created
-            /*
-            const char *data = result.data.data();
-            byte error = result.data.at(0);
-            byte type = result.data.at(1); // type: 1 byte; for dll item, this value is 2.
-            uint pid = extractInt(data + 2); //  ProcessID: 4 bytes;
-            uint tid = extractInt(data + 6); //threadID: 4 bytes
-            uint codeseg = extractInt(data + 10); //code address: 4 bytes; code base address for the library
-            uint dataseg = extractInt(data + 14); //data address: 4 bytes; data base address for the library
-            uint len = extractShort(data + 18); //length: 2 bytes; length of the library name string to follow
-            QByteArray name = result.data.mid(20, len); // name: library name
-
-            logMessage(prefix + "NOTE: LIBRARY LOAD: " + str);
-            logMessage(prefix + "TOKEN: " + result.token);
-            logMessage(prefix + "ERROR: " + int(error));
-            logMessage(prefix + "TYPE:  " + int(type));
-            logMessage(prefix + "PID:   " + pid);
-            logMessage(prefix + "TID:   " + tid);
-            logMessage(prefix + "CODE:  " + codeseg);
-            logMessage(prefix + "DATA:  " + dataseg);
-            logMessage(prefix + "LEN:   " + len);
-            logMessage(prefix + "NAME:  " + name);
-            */
-
-            if (result.data.size() < 10)
-                break;
-            QByteArray ba;
-            ba.append(result.data.mid(2, 8));
-            d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
-            //d->m_device->sendTrkAck(result.token)
-            break;
-        }
-        case TrkNotifyDeleted: { // NotifyDeleted
-            const ushort itemType = (unsigned char)result.data.at(1);
-            const ushort len = result.data.size() > 12 ? extractShort(result.data.data() + 10) : ushort(0);
-            const QString name = len ? QString::fromAscii(result.data.mid(12, len)) : QString();
-            logMessage(QString::fromLatin1("%1 %2 UNLOAD: %3").
-                       arg(QString::fromAscii(prefix)).arg(itemType ? QLatin1String("LIB") : QLatin1String("PROCESS")).
-                       arg(name));
-            d->m_device->sendTrkAck(result.token);
-            if (itemType == 0 // process
-                && result.data.size() >= 10
-                && d->m_session.pid == extractInt(result.data.data() + 6)) {
-                disconnectTrk();
-            }
-            break;
-        }
-        case TrkNotifyProcessorStarted: { // NotifyProcessorStarted
-            logMessage(prefix + "NOTE: PROCESSOR STARTED: " + str);
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-        case TrkNotifyProcessorStandBy: { // NotifyProcessorStandby
-            logMessage(prefix + "NOTE: PROCESSOR STANDBY: " + str);
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-        case TrkNotifyProcessorReset: { // NotifyProcessorReset
-            logMessage(prefix + "NOTE: PROCESSOR RESET: " + str);
-            d->m_device->sendTrkAck(result.token);
-            break;
-        }
-        default: {
-            logMessage(prefix + "INVALID: " + str);
-            break;
-        }
-    }
-}
-
-QString Launcher::deviceDescription(unsigned verbose) const
-{
-    return d->m_session.deviceDescription(verbose);
-}
-
-void Launcher::handleTrkVersion(const TrkResult &result)
-{
-    if (result.errorCode() || result.data.size() < 5) {
-        if (d->m_startupActions == ActionPingOnly) {
-            setState(Disconnected);
-            emit finished();
-        }
-        return;
-    }
-    d->m_session.trkAppVersion.trkMajor = result.data.at(1);
-    d->m_session.trkAppVersion.trkMinor = result.data.at(2);
-    d->m_session.trkAppVersion.protocolMajor = result.data.at(3);
-    d->m_session.trkAppVersion.protocolMinor = result.data.at(4);
-    setState(DeviceDescriptionReceived);
-    // Ping mode: Log & Terminate
-    if (d->m_startupActions == ActionPingOnly) {
-        qWarning("%s", qPrintable(deviceDescription()));
-        setState(Disconnected);
-        emit finished();
-    }
-}
-
-void Launcher::handleFileCreation(const TrkResult &result)
-{
-    if (result.errorCode() || result.data.size() < 6) {
-        emit canNotCreateFile(d->m_copyState.destinationFileName, result.errorString());
-        disconnectTrk();
-        return;
-    }
-    const char *data = result.data.data();
-    d->m_copyState.copyFileHandle = extractInt(data + 2);
-    QFile file(d->m_copyState.sourceFileName);
-    file.open(QIODevice::ReadOnly);
-    d->m_copyState.data.reset(new QByteArray(file.readAll()));
-    d->m_copyState.position = 0;
-    file.close();
-    continueCopying();
-}
-
-void Launcher::handleCopy(const TrkResult &result)
-{
-    if (result.errorCode() || result.data.size() < 4) {
-        closeRemoteFile(true);
-        emit canNotWriteFile(d->m_copyState.destinationFileName, result.errorString());
-        disconnectTrk();
-    } else {
-        continueCopying(extractShort(result.data.data() + 2));
-    }
-}
-
-void Launcher::continueCopying(uint lastCopiedBlockSize)
-{
-    int size = d->m_copyState.data->length();
-    d->m_copyState.position += lastCopiedBlockSize;
-    if (size == 0)
-        emit copyProgress(100);
-    else {
-        int percent = qMin((d->m_copyState.position*100)/size, 100);
-        emit copyProgress(percent);
-    }
-    if (d->m_copyState.position < size) {
-        QByteArray ba;
-        appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
-        appendString(&ba, d->m_copyState.data->mid(d->m_copyState.position, 2048), TargetByteOrder, false);
-        d->m_device->sendTrkMessage(TrkWriteFile, TrkCallback(this, &Launcher::handleCopy), ba);
-    } else {
-        closeRemoteFile();
-    }
-}
-
-void Launcher::closeRemoteFile(bool failed)
-{
-    QByteArray ba;
-    appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
-    appendDateTime(&ba, QDateTime::currentDateTime(), TargetByteOrder);
-    d->m_device->sendTrkMessage(TrkCloseFile,
-                               failed ? TrkCallback() : TrkCallback(this, &Launcher::handleFileCopied),
-                               ba);
-    d->m_copyState.data.reset();
-    d->m_copyState.copyFileHandle = 0;
-    d->m_copyState.position = 0;
-}
-
-void Launcher::handleFileCopied(const TrkResult &result)
-{
-    if (result.errorCode())
-        emit canNotCloseFile(d->m_copyState.destinationFileName, result.errorString());
-    if (d->m_startupActions & ActionInstall)
-        installRemotePackageSilently();
-    else if (d->m_startupActions & ActionRun)
-        startInferiorIfNeeded();
-    else
-        disconnectTrk();
-}
-
-void Launcher::handleCpuType(const TrkResult &result)
-{
-    logMessage("HANDLE CPU TYPE: " + result.toString());
-    if(result.errorCode() || result.data.size() < 7)
-        return;
-    //---TRK------------------------------------------------------
-    //  Command: 0x80 Acknowledge
-    //    Error: 0x00
-    // [80 03 00  04 00 00 04 00 00 00]
-    d->m_session.cpuMajor = result.data.at(1);
-    d->m_session.cpuMinor = result.data.at(2);
-    d->m_session.bigEndian = result.data.at(3);
-    d->m_session.defaultTypeSize = result.data.at(4);
-    d->m_session.fpTypeSize = result.data.at(5);
-    d->m_session.extended1TypeSize = result.data.at(6);
-    //d->m_session.extended2TypeSize = result.data[6];
-}
-
-void Launcher::handleCreateProcess(const TrkResult &result)
-{
-    if (result.errorCode()) {
-        emit canNotRun(result.errorString());
-        disconnectTrk();
-        return;
-    }
-    //  40 00 00]
-    //logMessage("       RESULT: " + result.toString());
-    // [80 08 00   00 00 01 B5   00 00 01 B6   78 67 40 00   00 40 00 00]
-    const char *data = result.data.data();
-    d->m_session.pid = extractInt(data + 1);
-    d->m_session.tid = extractInt(data + 5);
-    d->m_session.codeseg = extractInt(data + 9);
-    d->m_session.dataseg = extractInt(data + 13);
-    if (d->m_verbose) {
-        const QString msg = QString::fromLatin1("Process id: %1 Thread id: %2 code: 0x%3 data: 0x%4").
-                            arg(d->m_session.pid).arg(d->m_session.tid).arg(d->m_session.codeseg, 0, 16).
-                            arg(d->m_session.dataseg,  0 ,16);
-        logMessage(msg);
-    }
-    emit applicationRunning(d->m_session.pid);
-    QByteArray ba;
-    appendInt(&ba, d->m_session.pid);
-    appendInt(&ba, d->m_session.tid);
-    d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
-}
-
-void Launcher::handleWaitForFinished(const TrkResult &result)
-{
-    logMessage("   FINISHED: " + stringFromArray(result.data));
-    setState(Disconnected);
-    emit finished();
-}
-
-void Launcher::handleSupportMask(const TrkResult &result)
-{
-    if (result.errorCode() || result.data.size() < 32)
-        return;
-    const char *data = result.data.data() + 1;
-
-    QString str = QLatin1String("SUPPORTED: ");
-    for (int i = 0; i < 32; ++i) {
-        //str.append("  [" + formatByte(data[i]) + "]: ");
-        for (int j = 0; j < 8; ++j) {
-            if (data[i] & (1 << j)) {
-                str.append(QString::number(i * 8 + j, 16));
-                str.append(QLatin1Char(' '));
-            }
-        }
-    }
-    logMessage(str);
-}
-
-void Launcher::cleanUp()
-{
-    //
-    //---IDE------------------------------------------------------
-    //  Command: 0x41 Delete Item
-    //  Sub Cmd: Delete Process
-    //ProcessID: 0x0000071F (1823)
-    // [41 24 00 00 00 00 07 1F]
-    QByteArray ba(2, char(0));
-    appendInt(&ba, d->m_session.pid);
-    d->m_device->sendTrkMessage(TrkDeleteItem, TrkCallback(), ba, "Delete process");
-
-    //---TRK------------------------------------------------------
-    //  Command: 0x80 Acknowledge
-    //    Error: 0x00
-    // [80 24 00]
-
-    //---IDE------------------------------------------------------
-    //  Command: 0x1C Clear Break
-    // [1C 25 00 00 00 0A 78 6A 43 40]
-
-        //---TRK------------------------------------------------------
-        //  Command: 0xA1 Notify Deleted
-        // [A1 09 00 00 00 00 00 00 00 00 07 1F]
-        //---IDE------------------------------------------------------
-        //  Command: 0x80 Acknowledge
-        //    Error: 0x00
-        // [80 09 00]
-
-    //---TRK------------------------------------------------------
-    //  Command: 0x80 Acknowledge
-    //    Error: 0x00
-    // [80 25 00]
-
-    //---IDE------------------------------------------------------
-    //  Command: 0x1C Clear Break
-    // [1C 26 00 00 00 0B 78 6A 43 70]
-    //---TRK------------------------------------------------------
-    //  Command: 0x80 Acknowledge
-    //    Error: 0x00
-    // [80 26 00]
-
-
-    //---IDE------------------------------------------------------
-    //  Command: 0x02 Disconnect
-    // [02 27]
-//    sendTrkMessage(0x02, TrkCallback(this, &Launcher::handleDisconnect));
-    //---TRK------------------------------------------------------
-    //  Command: 0x80 Acknowledge
-    // Error: 0x00
-}
-
-void Launcher::disconnectTrk()
-{
-    d->m_device->sendTrkMessage(TrkDisconnect, TrkCallback(this, &Launcher::handleWaitForFinished));
-}
-
-void Launcher::copyFileToRemote()
-{
-    emit copyingStarted();
-    QByteArray ba;
-    ba.append(char(10));
-    appendString(&ba, d->m_copyState.destinationFileName.toLocal8Bit(), TargetByteOrder, false);
-    d->m_device->sendTrkMessage(TrkOpenFile, TrkCallback(this, &Launcher::handleFileCreation), ba);
-}
-
-void Launcher::installRemotePackageSilently()
-{
-    emit installingStarted();
-    QByteArray ba;
-    ba.append('C');
-    appendString(&ba, d->m_installFileName.toLocal8Bit(), TargetByteOrder, false);
-    d->m_device->sendTrkMessage(TrkInstallFile, TrkCallback(this, &Launcher::handleInstallPackageFinished), ba);
-}
-
-void Launcher::handleInstallPackageFinished(const TrkResult &result)
-{
-    if (result.errorCode()) {
-        emit canNotInstall(d->m_installFileName, result.errorString());
-        disconnectTrk();
-        return;
-    } else {
-        emit installingFinished();
-    }
-    if (d->m_startupActions & ActionRun) {
-        startInferiorIfNeeded();
-    } else {
-        disconnectTrk();
-    }
-}
-
-QByteArray Launcher::startProcessMessage(const QString &executable,
-                                         const QStringList &arguments)
-{
-    // It's not started yet
-    QByteArray ba;
-    appendShort(&ba, 0, TargetByteOrder); // create new process
-    ba.append(char(0)); // options - currently unused
-    if(arguments.isEmpty()) {
-        appendString(&ba, executable.toLocal8Bit(), TargetByteOrder);
-        return ba;
-    }
-    // Append full command line as one string (leading length information).
-    QByteArray commandLineBa;
-    commandLineBa.append(executable.toLocal8Bit());
-    commandLineBa.append('\0');
-    commandLineBa.append(arguments.join(QString(QLatin1Char(' '))).toLocal8Bit());
-    appendString(&ba, commandLineBa, TargetByteOrder);
-    return ba;
-}
-
-void Launcher::startInferiorIfNeeded()
-{
-    emit startingApplication();
-    if (d->m_session.pid != 0) {
-        logMessage("Process already 'started'");
-        return;
-    }
-    d->m_device->sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess),
-                                startProcessMessage(d->m_fileName, d->m_commandLineArgs)); // Create Item
-}
-
-void Launcher::resumeProcess(uint pid, uint tid)
-{
-    QByteArray ba;
-    appendInt(&ba, pid, BigEndian);
-    appendInt(&ba, tid, BigEndian);
-    d->m_device->sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
-}
-} // namespace trk
diff --git a/tools/runonphone/trk/launcher.h b/tools/runonphone/trk/launcher.h
deleted file mode 100644
index 2b23fd8..0000000
--- a/tools/runonphone/trk/launcher.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef LAUNCHER_H
-#define LAUNCHER_H
-
-#include "trkdevice.h"
-
-#include <QtCore/QObject>
-#include <QtCore/QVariant>
-#include <QtCore/QSharedPointer>
-
-namespace trk {
-
-struct TrkResult;
-struct TrkMessage;
-struct LauncherPrivate;
-
-typedef QSharedPointer<TrkDevice> TrkDevicePtr;
-
-class SYMBIANUTILS_EXPORT Launcher : public QObject
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(Launcher)
-public:
-    typedef void (Launcher::*TrkCallBack)(const TrkResult &);
-
-    enum Actions {
-        ActionPingOnly = 0x0,
-        ActionCopy = 0x1,
-        ActionInstall = 0x2,
-        ActionCopyInstall = ActionCopy | ActionInstall,
-        ActionRun = 0x4,
-        ActionCopyRun = ActionCopy | ActionRun,
-        ActionInstallRun = ActionInstall | ActionRun,
-        ActionCopyInstallRun = ActionCopy | ActionInstall | ActionRun
-    };
-
-    enum State { Disconnected, Connecting, Connected,
-                 WaitingForTrk, // This occurs only if the initial ping times out after
-                                // a reasonable timeout, indicating that Trk is not
-                                // running. Note that this will never happen with
-                                // Bluetooth as communication immediately starts
-                                // after connecting.
-                 DeviceDescriptionReceived };
-
-    explicit Launcher(trk::Launcher::Actions startupActions = trk::Launcher::ActionPingOnly,
-                      const TrkDevicePtr &trkDevice = TrkDevicePtr(),
-                      QObject *parent = 0);
-    ~Launcher();
-
-    State state() const;
-
-    void addStartupActions(trk::Launcher::Actions startupActions);
-    void setTrkServerName(const QString &name);
-    QString trkServerName() const;
-    void setFileName(const QString &name);
-    void setCopyFileName(const QString &srcName, const QString &dstName);
-    void setInstallFileName(const QString &name);
-    void setCommandLineArgs(const QStringList &args);
-    bool startServer(QString *errorMessage);
-    void setVerbose(int v);    
-    void setSerialFrame(bool b);
-    bool serialFrame() const;
-    // Close device or leave it open
-    bool closeDevice() const;
-    void setCloseDevice(bool c);
-
-    TrkDevicePtr trkDevice() const;
-
-    // becomes valid after successful execution of ActionPingOnly
-    QString deviceDescription(unsigned verbose = 0u) const;
-
-    static QByteArray startProcessMessage(const QString &executable,
-                                          const QStringList &arguments);
-    // Parse a TrkNotifyStopped message
-    static bool parseNotifyStopped(const QByteArray &a,
-                                   uint *pid, uint *tid, uint *address,
-                                   QString *why = 0);
-    // Helper message
-    static QString msgStopped(uint pid, uint tid, uint address, const QString &why);
-
-signals:
-    void copyingStarted();
-    void canNotConnect(const QString &errorMessage);
-    void canNotCreateFile(const QString &filename, const QString &errorMessage);
-    void canNotWriteFile(const QString &filename, const QString &errorMessage);
-    void canNotCloseFile(const QString &filename, const QString &errorMessage);
-    void installingStarted();
-    void canNotInstall(const QString &packageFilename, const QString &errorMessage);
-    void installingFinished();
-    void startingApplication();
-    void applicationRunning(uint pid);
-    void canNotRun(const QString &errorMessage);
-    void finished();
-    void applicationOutputReceived(const QString &output);
-    void copyProgress(int percent);
-    void stateChanged(int);
-    void processStopped(uint pc, uint pid, uint tid, const QString& reason);
-
-public slots:
-    void terminate();
-    void resumeProcess(uint pid, uint tid);
-
-private slots:
-    void handleResult(const trk::TrkResult &data);
-    void slotWaitingForTrk();
-
-private:
-    // kill process and breakpoints
-    void cleanUp();
-    void disconnectTrk();
-
-    void handleRemoteProcessKilled(const TrkResult &result);
-    void handleConnect(const TrkResult &result);
-    void handleFileCreation(const TrkResult &result);
-    void handleCopy(const TrkResult &result);
-    void continueCopying(uint lastCopiedBlockSize = 0);
-    void closeRemoteFile(bool failed = false);
-    void handleFileCopied(const TrkResult &result);
-    void handleInstallPackageFinished(const TrkResult &result);
-    void handleCpuType(const TrkResult &result);
-    void handleCreateProcess(const TrkResult &result);
-    void handleWaitForFinished(const TrkResult &result);
-    void handleStop(const TrkResult &result);
-    void handleSupportMask(const TrkResult &result);
-    void handleTrkVersion(const TrkResult &result);
-
-    void copyFileToRemote();
-    void installRemotePackageSilently();
-    void startInferiorIfNeeded();
-
-    void logMessage(const QString &msg);
-    void setState(State s);
-
-    LauncherPrivate *d;
-};
-
-} // namespace Trk
-
-#endif // LAUNCHER_H
diff --git a/tools/runonphone/trk/symbianutils_global.h b/tools/runonphone/trk/symbianutils_global.h
deleted file mode 100644
index a6ffbe7..0000000
--- a/tools/runonphone/trk/symbianutils_global.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SYMBIANUTILS_GLOBAL_H
-#define SYMBIANUTILS_GLOBAL_H
-
-#include <QtCore/qglobal.h>
-
-#if defined(SYMBIANUTILS_BUILD_LIB)
-#    define SYMBIANUTILS_EXPORT Q_DECL_EXPORT
-#elif defined(SYMBIANUTILS_BUILD_STATIC_LIB) || defined(SYMBIANUTILS_INCLUDE_PRI)
-#    define SYMBIANUTILS_EXPORT
-#else 
-#    define SYMBIANUTILS_EXPORT Q_DECL_IMPORT
-#endif
-
-#endif // SYMBIANUTILS_GLOBAL_H
diff --git a/tools/runonphone/trk/trk.pri b/tools/runonphone/trk/trk.pri
deleted file mode 100644
index a54df76..0000000
--- a/tools/runonphone/trk/trk.pri
+++ /dev/null
@@ -1,25 +0,0 @@
-INCLUDEPATH *= $$PWD
-
-# Input
-HEADERS += $$PWD/symbianutils_global.h \
-    $$PWD/callback.h \
-    $$PWD/trkutils.h \
-    $$PWD/trkutils_p.h \
-    $$PWD/trkdevice.h \
-    $$PWD/launcher.h \
-    $$PWD/bluetoothlistener.h \
-    $$PWD/communicationstarter.h
-
-SOURCES += $$PWD/trkutils.cpp \
-    $$PWD/trkdevice.cpp \
-    $$PWD/launcher.cpp \
-    $$PWD/bluetoothlistener.cpp \
-    $$PWD/communicationstarter.cpp
-
-# Tests/trklauncher is a console application
-contains(QT, gui) {
-   HEADERS += $$PWD/bluetoothlistener_gui.h
-    SOURCES += $$PWD/bluetoothlistener_gui.cpp
-} else {
-    message(Trk: Console ...)
-}
diff --git a/tools/runonphone/trk/trkdevice.cpp b/tools/runonphone/trk/trkdevice.cpp
deleted file mode 100644
index d587135..0000000
--- a/tools/runonphone/trk/trkdevice.cpp
+++ /dev/null
@@ -1,1105 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "trkdevice.h"
-#include "trkutils.h"
-#include "trkutils_p.h"
-
-#include <QtCore/QString>
-#include <QtCore/QDebug>
-#include <QtCore/QQueue>
-#include <QtCore/QHash>
-#include <QtCore/QMap>
-#include <QtCore/QThread>
-#include <QtCore/QMutex>
-#include <QtCore/QWaitCondition>
-#include <QtCore/QSharedPointer>
-#include <QtCore/QMetaType>
-
-#ifdef Q_OS_WIN
-#  include <windows.h>
-#else
-#  include <QtCore/QFile>
-
-#  include <stdio.h>
-#  include <sys/ioctl.h>
-#  include <sys/types.h>
-#  include <termios.h>
-#  include <errno.h>
-#  include <string.h>
-#  include <unistd.h>
-/* Required headers for select() according to POSIX.1-2001 */
-#  include <sys/select.h>
-/* Required headers for select() according to earlier standards:
-       #include <sys/time.h>
-       #include <sys/types.h>
-       #include <unistd.h>
-*/
-#endif
-
-#ifdef Q_OS_WIN
-
-// Format windows error from GetLastError() value:
-// TODO: Use the one provided by the utils lib.
-QString winErrorMessage(unsigned long error)
-{
-    QString rc = QString::fromLatin1("#%1: ").arg(error);
-    ushort *lpMsgBuf;
-
-    const int len = FormatMessage(
-            FORMAT_MESSAGE_ALLOCATE_BUFFER
-                | FORMAT_MESSAGE_FROM_SYSTEM
-                | FORMAT_MESSAGE_IGNORE_INSERTS,
-            NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL);
-    if (len) {
-        rc = QString::fromUtf16(lpMsgBuf, len);
-        LocalFree(lpMsgBuf);
-    } else {
-        rc += QString::fromLatin1("<unknown error>");
-    }
-    return rc;
-}
-
-#endif
-
-enum { verboseTrk = 0 };
-
-namespace trk {
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkMessage
-//
-///////////////////////////////////////////////////////////////////////
-
-/* A message to be send to TRK, triggering a callback on receipt
- * of the answer. */
-struct TrkMessage
-{
-    explicit TrkMessage(byte code = 0u, byte token = 0u,
-                        TrkCallback callback = TrkCallback());
-
-    byte code;
-    byte token;
-    QByteArray data;
-    QVariant cookie;
-    TrkCallback callback;
-};
-
-TrkMessage::TrkMessage(byte c, byte t, TrkCallback cb) :
-    code(c),
-    token(t),
-    callback(cb)
-{
-}
-
-QDebug operator<<(QDebug d, const TrkMessage &msg)
-{
-    return d << "Message: Code: " << msg.code
-        << " Token: " << msg.token << " " << msg.data.toHex();
-}
-
-} // namespace trk
-
-Q_DECLARE_METATYPE(trk::TrkMessage)
-Q_DECLARE_METATYPE(trk::TrkResult)
-
-namespace trk {
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkWriteQueue: Mixin class that manages a write queue of Trk messages.
-// pendingMessage()/notifyWriteResult() should be called from a worked/timer
-// that writes the messages. The class does not take precautions for multithreading.
-// A no-op message is simply taken off the queue. The calling class
-// can use the helper invokeNoopMessage() to trigger its callback.
-//
-///////////////////////////////////////////////////////////////////////
-
-class TrkWriteQueue
-{    
-    Q_DISABLE_COPY(TrkWriteQueue)
-public:
-    explicit TrkWriteQueue();
-
-    // Enqueue messages.
-    void queueTrkMessage(byte code, TrkCallback callback,
-                        const QByteArray &data, const QVariant &cookie);
-    void queueTrkInitialPing();
-
-    // Call this from the device read notification with the results.
-    void slotHandleResult(const TrkResult &result, QMutex *mutex = 0);
-
-    // pendingMessage() can be called periodically in a timer to retrieve
-    // the pending messages to be sent.
-    enum PendingMessageResult {
-        NoMessage,               // No message in queue.
-        PendingMessage,          /* There is a queued message. The calling class
-                                  * can write it out and use notifyWriteResult()
-                                  * to notify about the result. */
-        NoopMessageDequeued      // A no-op message has been dequeued. see invokeNoopMessage().
-    };
-
-    PendingMessageResult pendingMessage(TrkMessage *message);
-    // Notify the queue about the success of the write operation
-    // after taking the pendingMessage off.
-    enum WriteResult {
-        WriteOk,
-        WriteFailedDiscard, // Discard failed message
-        WriteFailedKeep,    // Keep failed message
-    };
-    void notifyWriteResult(WriteResult ok);
-
-    // Helper function that invokes the callback of a no-op message
-    static void invokeNoopMessage(trk::TrkMessage);
-
-private:
-    typedef QMap<byte, TrkMessage> TokenMessageMap;
-
-    byte nextTrkWriteToken();
-
-    byte m_trkWriteToken;
-    QQueue<TrkMessage> m_trkWriteQueue;
-    TokenMessageMap m_writtenTrkMessages;
-    bool m_trkWriteBusy;
-};
-
-TrkWriteQueue::TrkWriteQueue() :
-    m_trkWriteToken(0),
-    m_trkWriteBusy(false)
-{
-}
-
-byte TrkWriteQueue::nextTrkWriteToken()
-{
-    ++m_trkWriteToken;
-    if (m_trkWriteToken == 0)
-        ++m_trkWriteToken;
-    if (verboseTrk)
-        qDebug() << "Write token: " << m_trkWriteToken;
-    return m_trkWriteToken;
-}
-
-void TrkWriteQueue::queueTrkMessage(byte code, TrkCallback callback,
-    const QByteArray &data, const QVariant &cookie)
-{
-    const byte token = code == TRK_WRITE_QUEUE_NOOP_CODE ?
-                                byte(0) : nextTrkWriteToken();
-    TrkMessage msg(code, token, callback);
-    msg.data = data;
-    msg.cookie = cookie;
-    m_trkWriteQueue.append(msg);
-}
-
-TrkWriteQueue::PendingMessageResult TrkWriteQueue::pendingMessage(TrkMessage *message)
-{
-    // Invoked from timer, try to flush out message queue
-    if (m_trkWriteBusy || m_trkWriteQueue.isEmpty())
-        return NoMessage;
-    // Handle the noop message, just invoke CB in slot (ower thread)
-    if (m_trkWriteQueue.front().code == TRK_WRITE_QUEUE_NOOP_CODE) {
-        *message = m_trkWriteQueue.dequeue();
-        return NoopMessageDequeued;
-    }
-    // Insert into map fir answers (as reading threads might get an
-    // answer before notifyWriteResult(true)) is called.
-    *message = m_trkWriteQueue.front();
-    m_writtenTrkMessages.insert(message->token, *message);
-    m_trkWriteBusy = true;
-    return PendingMessage;
-}
-
-void TrkWriteQueue::invokeNoopMessage(trk::TrkMessage noopMessage)
-{
-    TrkResult result;
-    result.code = noopMessage.code;
-    result.token = noopMessage.token;
-    result.data = noopMessage.data;
-    result.cookie = noopMessage.cookie;
-    noopMessage.callback(result);
-}
-
-void TrkWriteQueue::notifyWriteResult(WriteResult wr)
-{
-    // On success, dequeue message and await result
-    const byte token = m_trkWriteQueue.front().token;
-    switch (wr) {
-    case WriteOk:
-        m_trkWriteQueue.dequeue();
-        break;
-    case WriteFailedKeep:
-    case WriteFailedDiscard:
-        m_writtenTrkMessages.remove(token);
-        m_trkWriteBusy = false;
-        if (wr == WriteFailedDiscard)
-            m_trkWriteQueue.dequeue();
-        break;
-    }
-}
-
-void TrkWriteQueue::slotHandleResult(const TrkResult &result, QMutex *mutex)
-{
-    // Find which request the message belongs to and invoke callback
-    // if ACK or on NAK if desired.
-    if (mutex)
-        mutex->lock();
-    m_trkWriteBusy = false;
-    const TokenMessageMap::iterator it = m_writtenTrkMessages.find(result.token);
-    if (it == m_writtenTrkMessages.end()) {
-        if (mutex)
-            mutex->unlock();
-        return;
-    }
-    TrkCallback callback = it.value().callback;
-    const QVariant cookie = it.value().cookie;
-    m_writtenTrkMessages.erase(it);
-    if (mutex)
-        mutex->unlock();
-    // Invoke callback
-    if (callback) {
-        TrkResult result1 = result;
-        result1.cookie = cookie;
-        callback(result1);
-    }
-}
-
-void TrkWriteQueue::queueTrkInitialPing()
-{
-    // Ping, reset sequence count
-    m_trkWriteToken = 0;
-    m_trkWriteQueue.append(TrkMessage(TrkPing, 0));
-}
-
-///////////////////////////////////////////////////////////////////////
-//
-// DeviceContext to be shared between threads
-//
-///////////////////////////////////////////////////////////////////////
-
-struct DeviceContext {
-    DeviceContext();
-#ifdef Q_OS_WIN
-    HANDLE device;
-    OVERLAPPED readOverlapped;
-    OVERLAPPED writeOverlapped;
-#else
-    QFile file;
-#endif
-    bool serialFrame;
-    QMutex mutex;
-};
-
-DeviceContext::DeviceContext() :
-#ifdef Q_OS_WIN
-    device(INVALID_HANDLE_VALUE),
-#endif
-    serialFrame(true)
-{
-}
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkWriterThread: A thread operating a TrkWriteQueue.
-// with exception of the handling of the  TRK_WRITE_QUEUE_NOOP_CODE
-// synchronization message. The invocation of the callback is then
-// done by the thread owning the TrkWriteQueue, while pendingMessage() is called
-// from another thread. This happens via a Qt::BlockingQueuedConnection.
-
-///////////////////////////////////////////////////////////////////////
-
-class WriterThread : public QThread
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(WriterThread)
-public:            
-    explicit WriterThread(const QSharedPointer<DeviceContext> &context);
-
-    // Enqueue messages.
-    void queueTrkMessage(byte code, TrkCallback callback,
-                        const QByteArray &data, const QVariant &cookie);
-    void queueTrkInitialPing();
-
-    // Call this from the device read notification with the results.
-    void slotHandleResult(const TrkResult &result);
-
-    virtual void run();
-
-signals:
-    void error(const QString &);
-    void internalNoopMessageDequeued(const trk::TrkMessage&);
-
-public slots:
-    bool trkWriteRawMessage(const TrkMessage &msg);
-    void terminate();
-    void tryWrite();
-
-private slots:
-    void invokeNoopMessage(const trk::TrkMessage &);
-
-private:    
-    bool write(const QByteArray &data, QString *errorMessage);
-    inline int writePendingMessage();
-
-    const QSharedPointer<DeviceContext> m_context;
-    QMutex m_dataMutex;
-    QMutex m_waitMutex;
-    QWaitCondition m_waitCondition;
-    TrkWriteQueue m_queue;
-    bool m_terminate;
-};
-
-WriterThread::WriterThread(const QSharedPointer<DeviceContext> &context) :
-    m_context(context),
-    m_terminate(false)
-{
-    static const int trkMessageMetaId = qRegisterMetaType<trk::TrkMessage>();
-    Q_UNUSED(trkMessageMetaId)
-    connect(this, SIGNAL(internalNoopMessageDequeued(trk::TrkMessage)),
-            this, SLOT(invokeNoopMessage(trk::TrkMessage)), Qt::BlockingQueuedConnection);
-}
-
-void WriterThread::run()
-{
-    while (writePendingMessage() == 0) ;
-}
-
-int WriterThread::writePendingMessage()
-{
-    enum { MaxAttempts = 100, RetryIntervalMS = 200 };
-
-    // Wait. Use a timeout in case something is already queued before we
-    // start up or some weird hanging exit condition
-    m_waitMutex.lock();
-    m_waitCondition.wait(&m_waitMutex, 100);
-    m_waitMutex.unlock();
-    if (m_terminate)
-        return 1;
-
-    // Send off message
-    m_dataMutex.lock();
-    TrkMessage message;
-    const TrkWriteQueue::PendingMessageResult pr = m_queue.pendingMessage(&message);
-    m_dataMutex.unlock();
-
-    switch (pr) {
-    case TrkWriteQueue::NoMessage:
-        break;
-    case TrkWriteQueue::PendingMessage: {
-            //qDebug() << "Write pending message " << message;
-            // Untested: try to re-send a few times
-            bool success = false;
-            for (int r = 0; !success && (r < MaxAttempts); r++) {
-                success = trkWriteRawMessage(message);
-                if (!success) {
-                    emit error(QString::fromLatin1("Write failure, attempt %1 of %2.").arg(r).arg(int(MaxAttempts)));
-                    if (m_terminate)
-                        return 1;
-                    QThread::msleep(RetryIntervalMS);
-                }
-            }
-            // Notify queue. If still failed, give up.
-            m_dataMutex.lock();
-            m_queue.notifyWriteResult(success ? TrkWriteQueue::WriteOk : TrkWriteQueue::WriteFailedDiscard);
-            m_dataMutex.unlock();
-        }
-        break;
-    case TrkWriteQueue::NoopMessageDequeued:
-        // Sync with thread that owns us via a blocking signal
-        if (verboseTrk)
-            qDebug() << "Noop message dequeued" << message;
-        emit internalNoopMessageDequeued(message);
-        break;
-    } // switch
-    return 0;
-}
-
-void WriterThread::invokeNoopMessage(const trk::TrkMessage &msg)
-{
-    TrkWriteQueue::invokeNoopMessage(msg);
-}
-
-void WriterThread::terminate()
-{
-    m_terminate = true;
-    m_waitCondition.wakeAll();
-    wait();
-    m_terminate = false;
-}
-
-#ifdef Q_OS_WIN
-
-static inline QString msgTerminated(int size)
-{
-    return QString::fromLatin1("Terminated with %1 bytes pending.").arg(size);
-}
-
-// Interruptible synchronous write function.
-static inline bool overlappedSyncWrite(HANDLE file,
-                                       const bool &terminateFlag,
-                                       const char *data,
-                                       DWORD size, DWORD *charsWritten,
-                                       OVERLAPPED *overlapped,
-                                       QString *errorMessage)
-{
-    if (WriteFile(file, data, size, charsWritten, overlapped))
-        return true;
-    const DWORD writeError = GetLastError();
-    if (writeError != ERROR_IO_PENDING) {
-        *errorMessage = QString::fromLatin1("WriteFile failed: %1").arg(winErrorMessage(writeError));
-        return false;
-    }
-    // Wait for written or thread terminated
-    const DWORD timeoutMS = 200;
-    const unsigned maxAttempts = 20;
-    DWORD wr = WaitForSingleObject(overlapped->hEvent, timeoutMS);
-    for (unsigned n = 0; wr == WAIT_TIMEOUT && n < maxAttempts && !terminateFlag;
-         wr = WaitForSingleObject(overlapped->hEvent, timeoutMS), n++);
-    if (terminateFlag) {
-        *errorMessage = msgTerminated(size);
-        return false;
-    }
-    switch (wr) {
-    case WAIT_OBJECT_0:
-        break;
-    case WAIT_TIMEOUT:
-        *errorMessage = QString::fromLatin1("Write timed out.");
-        return false;
-    default:
-        *errorMessage = QString::fromLatin1("Error while waiting for WriteFile results: %1").arg(winErrorMessage(GetLastError()));
-        return false;
-    }
-    if (!GetOverlappedResult(file, overlapped, charsWritten, TRUE)) {
-        *errorMessage = QString::fromLatin1("Error writing %1 bytes: %2").arg(size).arg(winErrorMessage(GetLastError()));
-        return false;
-    }
-    return true;
-}
-#endif
-
-bool WriterThread::write(const QByteArray &data, QString *errorMessage)
-{
-    if (verboseTrk)
-        qDebug() << "Write raw data: " << stringFromArray(data).toLatin1();
-    QMutexLocker locker(&m_context->mutex);
-#ifdef Q_OS_WIN
-    DWORD charsWritten;
-    if (!overlappedSyncWrite(m_context->device, m_terminate, data.data(), data.size(), &charsWritten, &m_context->writeOverlapped, errorMessage)) {
-        return false;
-    }
-    FlushFileBuffers(m_context->device);
-    return true;
-#else
-    if (m_context->file.write(data) == -1 || !m_context->file.flush()) {
-        *errorMessage = QString::fromLatin1("Cannot write: %1").arg(m_context->file.errorString());
-        return false;
-    }
-    return  true;
-#endif
-}
-
-bool WriterThread::trkWriteRawMessage(const TrkMessage &msg)
-{
-    const QByteArray ba = frameMessage(msg.code, msg.token, msg.data, m_context->serialFrame);
-    QString errorMessage;
-    const bool rc = write(ba, &errorMessage);
-    if (!rc) {
-        qWarning("%s\n", qPrintable(errorMessage));
-        emit error(errorMessage);
-    }
-    return rc;
-}
-
-void WriterThread::tryWrite()
-{
-    m_waitCondition.wakeAll();
-}
-
-void WriterThread::queueTrkMessage(byte code, TrkCallback callback,
-                                   const QByteArray &data, const QVariant &cookie)
-{
-    m_dataMutex.lock();
-    m_queue.queueTrkMessage(code, callback, data, cookie);
-    m_dataMutex.unlock();
-    tryWrite();
-}
-
-void WriterThread::queueTrkInitialPing()
-{
-    m_dataMutex.lock();
-    m_queue.queueTrkInitialPing();
-    m_dataMutex.unlock();
-    tryWrite();
-}
-
-// Call this from the device read notification with the results.
-void WriterThread::slotHandleResult(const TrkResult &result)
-{
-    m_queue.slotHandleResult(result, &m_dataMutex);
-    tryWrite(); // Have messages been enqueued in-between?
-}
-
-
-///////////////////////////////////////////////////////////////////////
-//
-// ReaderThreadBase: Base class for a thread that reads data from
-// the device, decodes the messages and emit signals for the messages.
-// A Qt::BlockingQueuedConnection should be used for the message signal
-// to ensure messages are processed in the correct sequence.
-//
-///////////////////////////////////////////////////////////////////////
-
-class ReaderThreadBase : public QThread
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(ReaderThreadBase)
-public:
-
-signals:
-    void messageReceived(const trk::TrkResult &result, const QByteArray &rawData);
-
-protected:
-    explicit ReaderThreadBase(const QSharedPointer<DeviceContext> &context);
-    void processData(const QByteArray &a);
-    void processData(char c);
-
-    const QSharedPointer<DeviceContext> m_context;
-
-private:
-    void readMessages();
-
-    QByteArray m_trkReadBuffer;
-};
-
-ReaderThreadBase::ReaderThreadBase(const QSharedPointer<DeviceContext> &context) :
-    m_context(context)
-{
-    static const int trkResultMetaId = qRegisterMetaType<trk::TrkResult>();
-    Q_UNUSED(trkResultMetaId)
-}
-
-void ReaderThreadBase::processData(const QByteArray &a)
-{
-    m_trkReadBuffer += a;
-    readMessages();
-}
-
-void ReaderThreadBase::processData(char c)
-{
-    m_trkReadBuffer += c;
-    if (m_trkReadBuffer.size() > 1)
-        readMessages();
-}
-
-void ReaderThreadBase::readMessages()
-{
-    TrkResult r;
-    QByteArray rawData;
-    while (extractResult(&m_trkReadBuffer, m_context->serialFrame, &r, &rawData)) {
-        emit messageReceived(r, rawData);
-    }
-}
-
-#ifdef Q_OS_WIN
-///////////////////////////////////////////////////////////////////////
-//
-// WinReaderThread: A thread reading from the device using Windows API.
-// Waits on an overlapped I/O handle and an event that tells the thread to
-// terminate.
-//
-///////////////////////////////////////////////////////////////////////
-
-class WinReaderThread : public ReaderThreadBase
-{
-    Q_OBJECT
-    Q_DISABLE_COPY(WinReaderThread)
-public:
-    explicit WinReaderThread(const QSharedPointer<DeviceContext> &context);
-    ~WinReaderThread();
-
-    virtual void run();
-
-signals:
-    void error(const QString &);
-
-public slots:
-    void terminate();
-
-private:
-    enum Handles { FileHandle, TerminateEventHandle, HandleCount };
-
-    inline int tryRead();
-
-    HANDLE m_handles[HandleCount];
-};
-
-WinReaderThread::WinReaderThread(const QSharedPointer<DeviceContext> &context) :
-    ReaderThreadBase(context)
-{
-    m_handles[FileHandle] = NULL;
-    m_handles[TerminateEventHandle] = CreateEvent(NULL, FALSE, FALSE, NULL);
-}
-
-WinReaderThread::~WinReaderThread()
-{
-    CloseHandle(m_handles[TerminateEventHandle]);
-}
-
-// Return 0 to continue or error code
-int WinReaderThread::tryRead()
-{
-    enum { BufSize = 1024 };
-    char buffer[BufSize];
-    // Check if there are already bytes waiting. If not, wait for first byte
-    COMSTAT comStat;
-    if (!ClearCommError(m_context->device, NULL, &comStat)){
-        emit error(QString::fromLatin1("ClearCommError failed: %1").arg(winErrorMessage(GetLastError())));
-        return -7;
-    }    
-    const DWORD bytesToRead = qMax(DWORD(1), qMin(comStat.cbInQue, DWORD(BufSize)));
-    // Trigger read
-    DWORD bytesRead = 0;
-    if (ReadFile(m_context->device, &buffer, bytesToRead, &bytesRead, &m_context->readOverlapped)) {
-        if (bytesRead == 1) {
-            processData(buffer[0]);
-        } else {
-            processData(QByteArray(buffer, bytesRead));
-        }
-        return 0;
-    }
-    const DWORD readError = GetLastError();
-    if (readError != ERROR_IO_PENDING) {
-        emit error(QString::fromLatin1("Read error: %1").arg(winErrorMessage(readError)));
-        return -1;
-    }    
-    // Wait for either termination or data
-    const DWORD wr = WaitForMultipleObjects(HandleCount, m_handles, false, INFINITE);
-    if (wr == WAIT_FAILED) {
-        emit error(QString::fromLatin1("Wait failed: %1").arg(winErrorMessage(GetLastError())));
-        return -2;
-    }
-    if (wr - WAIT_OBJECT_0 == TerminateEventHandle) {
-        return 1; // Terminate
-    }
-    // Check data
-    if (!GetOverlappedResult(m_context->device, &m_context->readOverlapped, &bytesRead, true)) {
-        emit error(QString::fromLatin1("GetOverlappedResult failed: %1").arg(winErrorMessage(GetLastError())));
-        return -3;
-    }
-    if (bytesRead == 1) {
-        processData(buffer[0]);
-    } else {
-        processData(QByteArray(buffer, bytesRead));
-    }
-    return 0;
-}
-
-void WinReaderThread::run()
-{
-    m_handles[FileHandle] = m_context->readOverlapped.hEvent;
-    while ( tryRead() == 0) ;
-}
-
-void WinReaderThread::terminate()
-{
-    SetEvent(m_handles[TerminateEventHandle]);
-    wait();
-}
-
-typedef WinReaderThread ReaderThread;
-
-#else
-
-///////////////////////////////////////////////////////////////////////
-//
-// UnixReaderThread: A thread reading from the device.
-// Uses select() to wait and a special ioctl() to find out the number
-// of bytes queued. For clean termination, the self-pipe trick is used.
-// The class maintains a pipe, on whose read end the select waits besides
-// the device file handle. To terminate, a byte is written to the pipe.
-//
-///////////////////////////////////////////////////////////////////////
-
-static inline QString msgUnixCallFailedErrno(const char *func, int errorNumber)
-{
-    return QString::fromLatin1("Call to %1() failed: %2").arg(QLatin1String(func), QString::fromLocal8Bit(strerror(errorNumber)));
-}
-
-class UnixReaderThread : public ReaderThreadBase {
-    Q_OBJECT
-    Q_DISABLE_COPY(UnixReaderThread)
-public:
-    explicit UnixReaderThread(const QSharedPointer<DeviceContext> &context);
-    ~UnixReaderThread();
-
-    virtual void run();
-
-signals:
-    void error(const QString &);
-
-public slots:
-    void terminate();
-
-private:
-    inline int tryRead();
-
-    int m_terminatePipeFileDescriptors[2];
-};
-
-UnixReaderThread::UnixReaderThread(const QSharedPointer<DeviceContext> &context) : 
-    ReaderThreadBase(context)
-{
-    m_terminatePipeFileDescriptors[0] = m_terminatePipeFileDescriptors[1] = -1;
-    // Set up pipes for termination. Should not fail
-    if (pipe(m_terminatePipeFileDescriptors) < 0)
-        qWarning("%s\n", qPrintable(msgUnixCallFailedErrno("pipe", errno)));
-}
-
-UnixReaderThread::~UnixReaderThread()
-{
-    close(m_terminatePipeFileDescriptors[0]);
-    close(m_terminatePipeFileDescriptors[1]);
-}
-
-int UnixReaderThread::tryRead()
-{
-    fd_set readSet, tempReadSet, tempExceptionSet;
-    struct timeval timeOut;
-    const int fileDescriptor = m_context->file.handle();
-    FD_ZERO(&readSet);
-    FD_SET(fileDescriptor, &readSet);
-    FD_SET(m_terminatePipeFileDescriptors[0], &readSet);
-    const int maxFileDescriptor = qMax(m_terminatePipeFileDescriptors[0], fileDescriptor);
-    int result = 0;
-    do {
-        memcpy(&tempReadSet, &readSet, sizeof(fd_set));
-        memcpy(&tempExceptionSet, &readSet, sizeof(fd_set));
-        timeOut.tv_sec = 1;
-        timeOut.tv_usec = 0;
-        result = select(maxFileDescriptor + 1, &tempReadSet, NULL, &tempExceptionSet, &timeOut);
-    } while ( result < 0 && errno == EINTR );
-    // Timeout?
-    if (result == 0)
-        return 0;
-   // Something wrong?
-    if (result < 0) {
-        emit error(msgUnixCallFailedErrno("select", errno));
-        return -1;
-    }
-    // Did the exception set trigger on the device?
-    if (FD_ISSET(fileDescriptor,&tempExceptionSet)) {
-        emit error(QLatin1String("An Exception occurred on the device."));
-        return -2;
-    }
-    // Check termination pipe.
-    if (FD_ISSET(m_terminatePipeFileDescriptors[0], &tempReadSet)
-        || FD_ISSET(m_terminatePipeFileDescriptors[0], &tempExceptionSet))
-        return 1;
-
-    // determine number of pending bytes and read
-    int numBytes;
-    if (ioctl(fileDescriptor, FIONREAD, &numBytes) < 0) {
-        emit error(msgUnixCallFailedErrno("ioctl", errno));
-        return -1;
-    }
-    m_context->mutex.lock();
-    const QByteArray data = m_context->file.read(numBytes);
-    m_context->mutex.unlock();
-    processData(data);
-    return 0;
-}
-
-void UnixReaderThread::run()
-{
-    // Read loop
-    while (tryRead() == 0)
-        ;
-}
-
-void UnixReaderThread::terminate()
-{
-    // Trigger select() by writing to the pipe
-    char c = 0;
-    const int written = write(m_terminatePipeFileDescriptors[1], &c, 1);
-    Q_UNUSED(written)
-    wait();
-}
-
-typedef UnixReaderThread ReaderThread;
-
-#endif
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkDevicePrivate
-//
-///////////////////////////////////////////////////////////////////////
-
-struct TrkDevicePrivate
-{
-    TrkDevicePrivate();
-
-    QSharedPointer<DeviceContext> deviceContext;
-    QSharedPointer<WriterThread> writerThread;
-    QSharedPointer<ReaderThread> readerThread;
-
-    QByteArray trkReadBuffer;
-    int verbose;
-    QString errorString;
-};
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkDevice
-//
-///////////////////////////////////////////////////////////////////////
-
-TrkDevicePrivate::TrkDevicePrivate() :
-    deviceContext(new DeviceContext),
-    verbose(0)
-{
-}
-
-///////////////////////////////////////////////////////////////////////
-//
-// TrkDevice
-//
-///////////////////////////////////////////////////////////////////////
-
-TrkDevice::TrkDevice(QObject *parent) :
-    QObject(parent),
-    d(new TrkDevicePrivate)
-{}
-
-TrkDevice::~TrkDevice()
-{
-    close();
-    delete d;
-}
-
-bool TrkDevice::open(const QString &port, QString *errorMessage)
-{
-    if (d->verbose)
-        qDebug() << "Opening" << port << "is open: " << isOpen() << " serialFrame=" << serialFrame();
-    close();
-#ifdef Q_OS_WIN
-    d->deviceContext->device = CreateFile(QString("\\\\.\\").append(port).toStdWString().c_str(),
-                           GENERIC_READ | GENERIC_WRITE,
-                           0,
-                           NULL,
-                           OPEN_EXISTING,
-                           FILE_ATTRIBUTE_NORMAL|FILE_FLAG_NO_BUFFERING|FILE_FLAG_OVERLAPPED,
-                           NULL);
-
-    if (INVALID_HANDLE_VALUE == d->deviceContext->device) {
-        *errorMessage = QString::fromLatin1("Could not open device '%1': %2").arg(port, winErrorMessage(GetLastError()));
-        return false;
-    }
-    memset(&d->deviceContext->readOverlapped, 0, sizeof(OVERLAPPED));
-    d->deviceContext->readOverlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-    memset(&d->deviceContext->writeOverlapped, 0, sizeof(OVERLAPPED));
-    d->deviceContext->writeOverlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
-    if (d->deviceContext->readOverlapped.hEvent == NULL || d->deviceContext->writeOverlapped.hEvent == NULL) {
-        *errorMessage = QString::fromLatin1("Failed to create events: %1").arg(winErrorMessage(GetLastError()));
-        return false;
-    }
-#else
-    d->deviceContext->file.setFileName(port);
-    if (!d->deviceContext->file.open(QIODevice::ReadWrite|QIODevice::Unbuffered)) {
-        *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(port, d->deviceContext->file.errorString());
-        return false;
-    }
-
-    struct termios termInfo;
-    if (tcgetattr(d->deviceContext->file.handle(), &termInfo) < 0) {
-        *errorMessage = QString::fromLatin1("Unable to retrieve terminal settings: %1 %2").arg(errno).arg(QString::fromAscii(strerror(errno)));
-        return false;
-    }
-    // Turn off terminal echo as not get messages back, among other things
-    termInfo.c_cflag |= CREAD|CLOCAL;
-    termInfo.c_lflag &= (~(ICANON|ECHO|ECHOE|ECHOK|ECHONL|ISIG));
-    termInfo.c_iflag &= (~(INPCK|IGNPAR|PARMRK|ISTRIP|ICRNL|IXANY));
-    termInfo.c_oflag &= (~OPOST);
-    termInfo.c_cc[VMIN]  = 0;
-    termInfo.c_cc[VINTR] = _POSIX_VDISABLE;
-    termInfo.c_cc[VQUIT] = _POSIX_VDISABLE;
-    termInfo.c_cc[VSTART] = _POSIX_VDISABLE;
-    termInfo.c_cc[VSTOP] = _POSIX_VDISABLE;
-    termInfo.c_cc[VSUSP] = _POSIX_VDISABLE;
-    if (tcsetattr(d->deviceContext->file.handle(), TCSAFLUSH, &termInfo) < 0) {
-        *errorMessage = QString::fromLatin1("Unable to apply terminal settings: %1 %2").arg(errno).arg(QString::fromAscii(strerror(errno)));
-        return false;
-    }
-#endif
-    d->readerThread = QSharedPointer<ReaderThread>(new ReaderThread(d->deviceContext));
-    connect(d->readerThread.data(), SIGNAL(error(QString)), this, SLOT(emitError(QString)),
-            Qt::QueuedConnection);
-    connect(d->readerThread.data(), SIGNAL(messageReceived(trk::TrkResult,QByteArray)),
-            this, SLOT(slotMessageReceived(trk::TrkResult,QByteArray)),
-            Qt::QueuedConnection);
-    d->readerThread->start();
-
-    d->writerThread = QSharedPointer<WriterThread>(new WriterThread(d->deviceContext));
-    connect(d->writerThread.data(), SIGNAL(error(QString)), this, SLOT(emitError(QString)),
-            Qt::QueuedConnection);    
-    d->writerThread->start();    
-
-    if (d->verbose)
-        qDebug() << "Opened" << port;
-    return true;
-}
-
-void TrkDevice::close()
-{
-    if (!isOpen())
-        return;
-    if (d->readerThread)
-        d->readerThread->terminate();
-    if (d->writerThread)
-        d->writerThread->terminate();
-#ifdef Q_OS_WIN
-    CloseHandle(d->deviceContext->device);
-    d->deviceContext->device = INVALID_HANDLE_VALUE;
-    CloseHandle(d->deviceContext->readOverlapped.hEvent);
-    CloseHandle(d->deviceContext->writeOverlapped.hEvent);
-    d->deviceContext->readOverlapped.hEvent = d->deviceContext->writeOverlapped.hEvent = NULL;
-#else
-    d->deviceContext->file.close();
-#endif
-    if (d->verbose)
-        emitLogMessage("Close");
-}
-
-bool TrkDevice::isOpen() const
-{
-#ifdef Q_OS_WIN
-    return d->deviceContext->device != INVALID_HANDLE_VALUE;
-#else
-    return d->deviceContext->file.isOpen();
-#endif
-}
-
-QString TrkDevice::errorString() const
-{
-    return d->errorString;
-}
-
-bool TrkDevice::serialFrame() const
-{
-    return d->deviceContext->serialFrame;
-}
-
-void TrkDevice::setSerialFrame(bool f)
-{
-    d->deviceContext->serialFrame = f;
-}
-
-int TrkDevice::verbose() const
-{
-    return d->verbose;
-}
-
-void TrkDevice::setVerbose(int b)
-{
-    d->verbose = b;
-}
-
-void TrkDevice::slotMessageReceived(const trk::TrkResult &result, const QByteArray &rawData)
-{
-    d->writerThread->slotHandleResult(result);
-    if (d->verbose > 1)
-        qDebug() << "Received: " << result.toString();
-    emit messageReceived(result);    
-    if (!rawData.isEmpty())
-        emit rawDataReceived(rawData);
-}
-
-void TrkDevice::emitError(const QString &s)
-{
-    d->errorString = s;
-    qWarning("%s\n", qPrintable(s));
-    emit error(s);
-}
-
-void TrkDevice::sendTrkMessage(byte code, TrkCallback callback,
-     const QByteArray &data, const QVariant &cookie)
-{
-    if (!d->writerThread.isNull()) {
-        if (d->verbose > 1) {
-            QByteArray msg = "Sending:  ";
-            msg += QByteArray::number(code, 16);
-            msg += ": ";
-            msg += stringFromArray(data).toLatin1();
-            qDebug("%s", msg.data());
-        }
-        d->writerThread->queueTrkMessage(code, callback, data, cookie);
-    }
-}
-
-void TrkDevice::sendTrkInitialPing()
-{
-    if (!d->writerThread.isNull())
-        d->writerThread->queueTrkInitialPing();
-}
-
-bool TrkDevice::sendTrkAck(byte token)
-{
-    if (d->writerThread.isNull())
-        return false;
-    // The acknowledgement must not be queued!
-    TrkMessage msg(0x80, token);
-    msg.token = token;
-    msg.data.append('\0');
-    if (verboseTrk)
-        qDebug() << "Write synchroneous message: " << msg;
-    return d->writerThread->trkWriteRawMessage(msg);
-    // 01 90 00 07 7e 80 01 00 7d 5e 7e
-}
-
-void TrkDevice::emitLogMessage(const QString &msg)
-{
-    if (d->verbose)
-        qDebug("%s\n", qPrintable(msg));
-    emit logMessage(msg);
-}
-
-} // namespace trk
-
-#include "trkdevice.moc"
diff --git a/tools/runonphone/trk/trkdevice.h b/tools/runonphone/trk/trkdevice.h
deleted file mode 100644
index 21a3cc1..0000000
--- a/tools/runonphone/trk/trkdevice.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TRKDEVICE_H
-#define TRKDEVICE_H
-
-#include "symbianutils_global.h"
-#include "callback.h"
-
-#include <QtCore/QObject>
-#include <QtCore/QVariant>
-#include <QtCore/QByteArray>
-#include <QtCore/QSharedPointer>
-
-QT_BEGIN_NAMESPACE
-class QIODevice;
-QT_END_NAMESPACE
-
-namespace trk {
-
-struct TrkResult;
-struct TrkMessage;
-struct TrkDevicePrivate;
-
-/* TrkDevice: Implements a Windows COM or Linux device for
- * Trk communications. Provides synchronous write and asynchronous
- * read operation.
- * The serialFrames property specifies whether packets are encapsulated in
- * "0x90 <length>" frames, which is currently the case for serial ports. 
- * Contains a write message queue allowing
- * for queueing messages with a notification callback. If the message receives
- * an ACK, the callback is invoked.
- * The special message TRK_WRITE_QUEUE_NOOP_CODE code can be used for synchronisation.
- * The respective  message will not be sent, the callback is just invoked. */
-
-enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f };
-
-typedef trk::Callback<const TrkResult &> TrkCallback;
-
-class SYMBIANUTILS_EXPORT TrkDevice : public QObject
-{
-    Q_OBJECT
-    Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
-    Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
-public:
-    explicit TrkDevice(QObject *parent = 0);
-    virtual ~TrkDevice();
-
-    bool open(const QString &port, QString *errorMessage);
-    bool isOpen() const;
-
-    QString errorString() const;
-
-    bool serialFrame() const;
-    void setSerialFrame(bool f);
-
-    int verbose() const;
-    void setVerbose(int b);
-
-    // Enqueue a message with a notification callback.
-    void sendTrkMessage(unsigned char code,
-                        TrkCallback callBack = TrkCallback(),
-                        const QByteArray &data = QByteArray(),
-                        const QVariant &cookie = QVariant());
-
-    // Enqeue an initial ping
-    void sendTrkInitialPing();
-
-    // Send an Ack synchronously, bypassing the queue
-    bool sendTrkAck(unsigned char token);
-
-signals:
-    void messageReceived(const trk::TrkResult &result);
-    // Emitted with the contents of messages enclosed in 07e, not for log output
-    void rawDataReceived(const QByteArray &data);
-    void error(const QString &msg);
-    void logMessage(const QString &msg);
-
-private slots:
-    void slotMessageReceived(const trk::TrkResult &result, const QByteArray &a);
-
-protected slots:
-    void emitError(const QString &msg);
-    void emitLogMessage(const QString &msg);
-
-public slots:
-    void close();
-
-private:
-    void readMessages();
-    TrkDevicePrivate *d;
-};
-
-} // namespace trk
-
-#endif // TRKDEVICE_H
diff --git a/tools/runonphone/trk/trkutils.cpp b/tools/runonphone/trk/trkutils.cpp
deleted file mode 100644
index 5cce950..0000000
--- a/tools/runonphone/trk/trkutils.cpp
+++ /dev/null
@@ -1,479 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "trkutils.h"
-#include <ctype.h>
-
-#include <QtCore/QCoreApplication>
-#include <QtCore/QDebug>
-#include <QtCore/QDate>
-#include <QtCore/QDateTime>
-#include <QtCore/QTime>
-
-#define logMessage(s)  do { qDebug() << "TRKCLIENT: " << s; } while (0)
-
-namespace trk {
-
-TrkAppVersion::TrkAppVersion()
-{
-    reset();
-}
-
-void TrkAppVersion::reset()
-{
-    trkMajor = trkMinor= protocolMajor = protocolMinor = 0;
-}
-
-Session::Session()
-{
-    reset();
-}
-
-void Session::reset()
-{
-    cpuMajor = 0;
-    cpuMinor = 0;
-    bigEndian = 0;
-    defaultTypeSize = 0;
-    fpTypeSize = 0;
-    extended1TypeSize = 0;
-    extended2TypeSize = 0;
-    pid = 0;
-    tid = 0;
-    codeseg = 0;
-    dataseg = 0;
-
-    currentThread = 0;
-    libraries.clear();
-    trkAppVersion.reset();
-}
-
-static QString formatCpu(int major, int minor)
-{
-    //: CPU description of an S60 device
-    //: %1 major verison, %2 minor version
-    //: %3 real name of major verison, %4 real name of minor version
-    const QString str = QCoreApplication::translate("trk::Session", "CPU: v%1.%2%3%4");
-    QString majorStr;
-    QString minorStr;
-    switch (major) {
-    case 0x04:
-        majorStr = " ARM";
-        break;
-    }
-    switch (minor) {
-    case 0x00:
-        minorStr = " 920T";
-        break;
-    }
-    return str.arg(major).arg(minor).arg(majorStr).arg(minorStr);
- }
-
-QString formatTrkVersion(const TrkAppVersion &version)
-{
-    QString str = QCoreApplication::translate("trk::Session",
-                                              "App TRK: v%1.%2 TRK protocol: v%3.%4");
-    str = str.arg(version.trkMajor).arg(version.trkMinor);
-    return str.arg(version.protocolMajor).arg(version.protocolMinor);
-}
-
-QString Session::deviceDescription(unsigned verbose) const
-{
-    if (!cpuMajor)
-        return QString();
-
-    //: s60description
-    //: description of an S60 device
-    //: %1 CPU description, %2 endianness
-    //: %3 default type size (if any), %4 float size (if any)
-    //: %5 TRK version
-    QString msg = QCoreApplication::translate("trk::Session", "%1, %2%3%4, %5");
-    QString endianness = bigEndian
-                         ? QCoreApplication::translate("trk::Session", "big endian")
-                         : QCoreApplication::translate("trk::Session", "little endian");
-    msg = msg.arg(formatCpu(cpuMajor, cpuMinor)).arg(endianness);
-    //: The separator in a list of strings
-    QString defaultTypeSizeStr;
-    QString fpTypeSizeStr;
-    if (verbose && defaultTypeSize)
-        //: will be inserted into s60description
-        defaultTypeSizeStr = QCoreApplication::translate("trk::Session", ", type size: %1").arg(defaultTypeSize);
-    if (verbose && fpTypeSize)
-        //: will be inserted into s60description
-        fpTypeSizeStr = QCoreApplication::translate("trk::Session", ", float size: %1").arg(fpTypeSize);
-    msg = msg.arg(defaultTypeSizeStr).arg(fpTypeSizeStr);
-    return msg.arg(formatTrkVersion(trkAppVersion));
-}
-
-
-QByteArray decode7d(const QByteArray &ba)
-{
-    QByteArray res;
-    res.reserve(ba.size());
-    for (int i = 0; i < ba.size(); ++i) {
-        byte c = byte(ba.at(i));
-        if (c == 0x7d) {
-            ++i;
-            c = 0x20 ^ byte(ba.at(i));
-        }
-        res.append(c);
-    }
-    return res;
-}
-
-QByteArray encode7d(const QByteArray &ba)
-{
-    QByteArray res;
-    res.reserve(ba.size() + 2);
-    for (int i = 0; i < ba.size(); ++i) {
-        byte c = byte(ba.at(i));
-        if (c == 0x7e || c == 0x7d) {
-            res.append(0x7d);
-            res.append(0x20 ^ c);
-        } else {
-            res.append(c);
-        }
-    }
-    return res;
-}
-
-// FIXME: Use the QByteArray based version below?
-static inline QString stringFromByte(byte c)
-{
-    return QString::fromLatin1("%1").arg(c, 2, 16, QChar('0'));
-}
-
-SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen)
-{
-    QString str;
-    QString ascii;
-    const int size = maxLen == -1 ? ba.size() : qMin(ba.size(), maxLen);
-    for (int i = 0; i < size; ++i) {
-        //if (i == 5 || i == ba.size() - 2)
-        //    str += "  ";
-        int c = byte(ba.at(i));
-        str += QString("%1 ").arg(c, 2, 16, QChar('0'));
-        if (i >= 8 && i < ba.size() - 2)
-            ascii += QChar(c).isPrint() ? QChar(c) : QChar('.');
-    }
-    if (size != ba.size()) {
-        str += "...";
-        ascii += "...";
-    }
-    return str + "  " + ascii;
-}
-
-SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits)
-{
-    QByteArray ba = QByteArray::number(n, 16);
-    if (digits == 0 || ba.size() == digits)
-        return ba;
-    return QByteArray(digits - ba.size(), '0') + ba;
-}
-
-SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits)
-{
-    return "0x" + hexNumber(n, digits);
-}
-
-TrkResult::TrkResult() :
-    code(0),
-    token(0),
-    isDebugOutput(false)
-{
-}
-
-void TrkResult::clear()
-{
-    code = token= 0;
-    isDebugOutput = false;
-    data.clear();
-    cookie = QVariant();
-}
-
-QString TrkResult::toString() const
-{
-    QString res = stringFromByte(code);
-    res += QLatin1String(" [");
-    res += stringFromByte(token);
-    res += QLatin1Char(']');
-    res += QLatin1Char(' ');
-    res += stringFromArray(data);
-    return res;
-}
-
-QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame)
-{
-    byte s = command + token;
-    for (int i = 0; i != data.size(); ++i)
-        s += data.at(i);
-    byte checksum = 255 - (s & 0xff);
-    //int x = s + ~s;
-    //logMessage("check: " << s << checksum << x;
-
-    QByteArray response;
-    response.reserve(data.size() + 3);
-    response.append(char(command));
-    response.append(char(token));
-    response.append(data);
-    response.append(char(checksum));
-
-    QByteArray encodedData = encode7d(response);
-
-    QByteArray ba;
-    ba.reserve(encodedData.size() + 6);
-    if (serialFrame) {
-        ba.append(char(0x01));
-        ba.append(char(0x90));
-        const ushort encodedSize = encodedData.size() + 2; // 2 x 0x7e
-        appendShort(&ba, encodedSize, BigEndian);
-    }
-    ba.append(char(0x7e));
-    ba.append(encodedData);
-    ba.append(char(0x7e));
-
-    return ba;
-}
-
-/* returns 0 if array doesn't represent a result,
-otherwise returns the length of the result data */
-ushort isValidTrkResult(const QByteArray &buffer, bool serialFrame)
-{
-    if (serialFrame) {
-        // Serial protocol with length info
-        if (buffer.length() < 4)
-            return 0;
-        if (buffer.at(0) != 0x01 || byte(buffer.at(1)) != 0x90)
-            return 0;
-        const ushort len = extractShort(buffer.data() + 2);
-        return (buffer.size() >= len + 4) ? len : ushort(0);
-    }
-    // Frameless protocol without length info
-    const char delimiter = char(0x7e);
-    const int firstDelimiterPos = buffer.indexOf(delimiter);
-    // Regular message delimited by 0x7e..0x7e
-    if (firstDelimiterPos == 0) {
-        const int endPos = buffer.indexOf(delimiter, firstDelimiterPos + 1);
-        return endPos != -1 ? endPos + 1 - firstDelimiterPos : 0;
-    }
-    // Some ASCII log message up to first delimiter or all
-    return firstDelimiterPos != -1 ? firstDelimiterPos : buffer.size();
-}
-
-bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *result, QByteArray *rawData)
-{
-    result->clear();
-    if(rawData)
-        rawData->clear();
-    const ushort len = isValidTrkResult(*buffer, serialFrame);
-    if (!len)
-        return false;
-    // handle receiving application output, which is not a regular command
-    const int delimiterPos = serialFrame ? 4 : 0;
-    if (buffer->at(delimiterPos) != 0x7e) {
-        result->isDebugOutput = true;
-        result->data = buffer->mid(delimiterPos, len);
-        result->data.replace("\r\n", "\n");
-        *buffer->remove(0, delimiterPos + len);
-        return true;
-    }
-    // FIXME: what happens if the length contains 0xfe?
-    // Assume for now that it passes unencoded!
-    const QByteArray data = decode7d(buffer->mid(delimiterPos + 1, len - 2));
-    if(rawData)
-        *rawData = data;
-    *buffer->remove(0, delimiterPos + len);
-
-    byte sum = 0;
-    for (int i = 0; i < data.size(); ++i) // 3 = 2 * 0xfe + sum
-        sum += byte(data.at(i));
-    if (sum != 0xff)
-        logMessage("*** CHECKSUM ERROR: " << byte(sum));
-
-    result->code = data.at(0);
-    result->token = data.at(1);
-    result->data = data.mid(2, data.size() - 3);
-    //logMessage("   REST BUF: " << stringFromArray(*buffer));
-    //logMessage("   CURR DATA: " << stringFromArray(data));
-    //QByteArray prefix = "READ BUF:                                       ";
-    //logMessage((prefix + "HEADER: " + stringFromArray(header).toLatin1()).data());
-    return true;
-}
-
-SYMBIANUTILS_EXPORT ushort extractShort(const char *data)
-{
-    return byte(data[0]) * 256 + byte(data[1]);
-}
-
-SYMBIANUTILS_EXPORT uint extractInt(const char *data)
-{
-    uint res = byte(data[0]);
-    res *= 256; res += byte(data[1]);
-    res *= 256; res += byte(data[2]);
-    res *= 256; res += byte(data[3]);
-    return res;
-}
-
-SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba)
-{
-    QString res;
-    char buf[10];
-    for (int i = 0, n = ba.size(); i != n; ++i) {
-        const byte c = ba.at(i);
-        if (isprint(c)) {
-            res += c;
-        } else {
-            qsnprintf(buf, sizeof(buf) - 1, "\\%x", int(c));
-            res += buf;
-        }
-    }
-    return res;
-}
-
-SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness endian)
-{
-    if (endian == BigEndian) {
-        ba->append(s / 256);
-        ba->append(s % 256);
-    } else {
-        ba->append(s % 256);
-        ba->append(s / 256);
-    }
-}
-
-SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness endian)
-{
-    const uchar b3 = i % 256; i /= 256;
-    const uchar b2 = i % 256; i /= 256;
-    const uchar b1 = i % 256; i /= 256;
-    const uchar b0 = i;
-    ba->reserve(ba->size() + 4);
-    if (endian == BigEndian) {
-        ba->append(b0);
-        ba->append(b1);
-        ba->append(b2);
-        ba->append(b3);
-    } else {
-        ba->append(b3);
-        ba->append(b2);
-        ba->append(b1);
-        ba->append(b0);
-    }
-}
-
-void appendString(QByteArray *ba, const QByteArray &str, Endianness endian, bool appendNullTerminator)
-{
-    const int fullSize = str.size() + (appendNullTerminator ? 1 : 0);
-    appendShort(ba, fullSize, endian); // count the terminating \0
-    ba->append(str);
-    if (appendNullTerminator)
-        ba->append('\0');
-}
-
-void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness endian)
-{
-    // convert the QDateTime to UTC and append its representation to QByteArray
-    // format is the same as in FAT file system
-    dateTime = dateTime.toUTC();
-    const QTime utcTime = dateTime.time();
-    const QDate utcDate = dateTime.date();
-    uint fatDateTime = (utcTime.hour() << 11 | utcTime.minute() << 5 | utcTime.second()/2) << 16;
-    fatDateTime |= (utcDate.year()-1980) << 9 | utcDate.month() << 5 | utcDate.day();
-    appendInt(ba, fatDateTime, endian);
-}
-
-QByteArray errorMessage(byte code)
-{
-    switch (code) {
-        case 0x00: return "No error";
-        case 0x01: return "Generic error in CWDS message";
-        case 0x02: return "Unexpected packet size in send msg";
-        case 0x03: return "Internal error occurred in CWDS";
-        case 0x04: return "Escape followed by frame flag";
-        case 0x05: return "Bad FCS in packet";
-        case 0x06: return "Packet too long";
-        case 0x07: return "Sequence ID not expected (gap in sequence)";
-
-        case 0x10: return "Command not supported";
-        case 0x11: return "Command param out of range";
-        case 0x12: return "An option was not supported";
-        case 0x13: return "Read/write to invalid memory";
-        case 0x14: return "Read/write invalid registers";
-        case 0x15: return "Exception occurred in CWDS";
-        case 0x16: return "Targeted system or thread is running";
-        case 0x17: return "Breakpoint resources (HW or SW) exhausted";
-        case 0x18: return "Requested breakpoint conflicts with existing one";
-
-        case 0x20: return "General OS-related error";
-        case 0x21: return "Request specified invalid process";
-        case 0x22: return "Request specified invalid thread";
-    }
-    return "Unknown error";
-}
-
-uint swapEndian(uint in)
-{
-    return (in>>24) | ((in<<8) & 0x00FF0000) | ((in>>8) & 0x0000FF00) | (in<<24);
-}
-
-int TrkResult::errorCode() const
-{
-    // NAK means always error, else data sized 1 with a non-null element
-    const bool isNAK = code == 0xff;
-    if (data.size() != 1 && !isNAK)
-        return 0;
-    if (const int errorCode = data.at(0))
-        return errorCode;
-    return isNAK ? 0xff : 0;
-}
-
-QString TrkResult::errorString() const
-{
-    // NAK means always error, else data sized 1 with a non-null element
-    if (code == 0xff)
-        return "NAK";
-    if (data.size() < 1)
-        return "Unknown error packet";
-    return errorMessage(data.at(0));
-}
-
-} // namespace trk
-
diff --git a/tools/runonphone/trk/trkutils.h b/tools/runonphone/trk/trkutils.h
deleted file mode 100644
index 3a485c7..0000000
--- a/tools/runonphone/trk/trkutils.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DEBUGGER_TRK_UTILS
-#define DEBUGGER_TRK_UTILS
-
-#include "symbianutils_global.h"
-#include <QtCore/QByteArray>
-#include <QtCore/QHash>
-#include <QtCore/QStringList>
-#include <QtCore/QVariant>
-
-QT_BEGIN_NAMESPACE
-class QDateTime;
-QT_END_NAMESPACE
-
-namespace trk {
-
-typedef unsigned char byte;
-
-enum Command {
-    TrkPing = 0x00,
-    TrkConnect = 0x01,
-    TrkDisconnect = 0x02,
-    TrkVersions = 0x04,
-    TrkSupported = 0x05,
-    TrkCpuType = 0x06,
-    TrkHostVersions = 0x09,
-    TrkContinue = 0x18,
-    TrkCreateItem = 0x40,
-    TrkDeleteItem = 0x41,
-
-    TrkWriteFile = 0x48,
-    TrkOpenFile = 0x4a,
-    TrkCloseFile = 0x4b,
-    TrkInstallFile = 0x4d,
-    TrkInstallFile2 = 0x4e,
-
-    TrkNotifyAck = 0x80,
-    TrkNotifyNak = 0xff,
-    TrkNotifyStopped = 0x90,
-    TrkNotifyException = 0x91,
-    TrkNotifyInternalError = 0x92,
-    TrkNotifyCreated = 0xa0,
-    TrkNotifyDeleted = 0xa1,
-    TrkNotifyProcessorStarted = 0xa2,
-    TrkNotifyProcessorStandBy = 0xa6,
-    TrkNotifyProcessorReset = 0xa7
-};
-
-inline byte extractByte(const char *data) { return *data; }
-SYMBIANUTILS_EXPORT ushort extractShort(const char *data);
-SYMBIANUTILS_EXPORT uint extractInt(const char *data);
-
-SYMBIANUTILS_EXPORT QString quoteUnprintableLatin1(const QByteArray &ba);
-
-// produces "xx xx xx "
-SYMBIANUTILS_EXPORT QString stringFromArray(const QByteArray &ba, int maxLen = - 1);
-
-enum Endianness
-{
-    LittleEndian,
-    BigEndian,
-    TargetByteOrder = BigEndian,
-};
-
-SYMBIANUTILS_EXPORT void appendShort(QByteArray *ba, ushort s, Endianness = TargetByteOrder);
-SYMBIANUTILS_EXPORT void appendInt(QByteArray *ba, uint i, Endianness = TargetByteOrder);
-SYMBIANUTILS_EXPORT void appendString(QByteArray *ba, const QByteArray &str, Endianness = TargetByteOrder, bool appendNullTerminator = true);
-
-struct SYMBIANUTILS_EXPORT Library
-{
-    Library() {}
-
-    QByteArray name;
-    uint codeseg;
-    uint dataseg;
-};
-
-struct SYMBIANUTILS_EXPORT TrkAppVersion
-{
-    TrkAppVersion();
-    void reset();    
-
-    int trkMajor;
-    int trkMinor;
-    int protocolMajor;
-    int protocolMinor;
-};
-
-struct SYMBIANUTILS_EXPORT Session
-{
-    Session();
-    void reset();
-    QString deviceDescription(unsigned verbose) const;
-
-    // Trk feedback
-    byte cpuMajor;
-    byte cpuMinor;
-    byte bigEndian;
-    byte defaultTypeSize;
-    byte fpTypeSize;
-    byte extended1TypeSize;
-    byte extended2TypeSize;
-    TrkAppVersion trkAppVersion;
-    uint pid;
-    uint tid;
-    uint codeseg;
-    uint dataseg;
-    QHash<uint, uint> addressToBP;
-
-    typedef QList<Library> Libraries;
-    Libraries libraries;
-
-    typedef uint Thread;
-    typedef QList<Thread> Threads;
-    Threads threads;
-
-    // Gdb request
-    uint currentThread;
-    QStringList modules;
-};
-
-struct SYMBIANUTILS_EXPORT TrkResult
-{
-    TrkResult();
-    void clear();
-    QString toString() const;
-    // 0 for no error.
-    int errorCode() const;
-    QString errorString() const;
-
-    byte code;
-    byte token;
-    QByteArray data;
-    QVariant cookie;
-    bool isDebugOutput;
-};
-
-SYMBIANUTILS_EXPORT QByteArray errorMessage(byte code);
-SYMBIANUTILS_EXPORT QByteArray hexNumber(uint n, int digits = 0);
-SYMBIANUTILS_EXPORT QByteArray hexxNumber(uint n, int digits = 0); // prepends '0x', too
-SYMBIANUTILS_EXPORT uint swapEndian(uint in);
-
-} // namespace trk
-
-#endif // DEBUGGER_TRK_UTILS
diff --git a/tools/runonphone/trk/trkutils_p.h b/tools/runonphone/trk/trkutils_p.h
deleted file mode 100644
index 12b0109..0000000
--- a/tools/runonphone/trk/trkutils_p.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights.  These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef DEBUGGER_TRK_PRIVATE_UTILS
-#define DEBUGGER_TRK_PRIVATE_UTILS
-
-#include "trkutils.h"
-#include "symbianutils_global.h"
-
-QT_BEGIN_NAMESPACE
-class QDateTime;
-QT_END_NAMESPACE
-
-namespace trk {
-
-void appendDateTime(QByteArray *ba, QDateTime dateTime, Endianness = TargetByteOrder);
-// returns a QByteArray containing optionally
-// the serial frame [0x01 0x90 <len>] and 0x7e encoded7d(ba) 0x7e
-QByteArray frameMessage(byte command, byte token, const QByteArray &data, bool serialFrame);
-bool extractResult(QByteArray *buffer, bool serialFrame, TrkResult *r, QByteArray *rawData = 0);
-
-} // namespace trk
-
-#endif // DEBUGGER_TRK_PRIVATE_UTILS
-- 
cgit v0.12


From 39709d61fbd4a17edf5f141877d312d3872ccce0 Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@sosco.com>
Date: Tue, 9 Feb 2010 11:56:37 +0100
Subject: Catch up symbianutils to creator
 3efdb87682a5785bac7b90f9f9a8bb819a1cb053

commit 3efdb87682a5785bac7b90f9f9a8bb819a1cb053
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Mon Feb 8 14:10:51 2010 +0100

    S60/Trk: Make the port a property of TrkDevice.

    Associate the port with the device instead of passing it to open
    for better handling.

commit 76872c6ed8a1477f1914266d6917ee4aad6ff7e9
Author: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date:   Fri Feb 5 17:34:02 2010 +0100

    S60: Move serialdevicelister.cpp to symbianutils/symbiandevicemanager.cpp
---
 .../symbianutils/communicationstarter.cpp          |  21 +-
 .../runonphone/symbianutils/communicationstarter.h |   2 -
 tools/runonphone/symbianutils/launcher.cpp         |   9 +-
 .../symbianutils/symbiandevicemanager.cpp          | 331 +++++++++++++++++++++
 .../runonphone/symbianutils/symbiandevicemanager.h | 145 +++++++++
 tools/runonphone/symbianutils/symbianutils.pri     |   6 +-
 tools/runonphone/symbianutils/trkdevice.cpp        |  31 +-
 tools/runonphone/symbianutils/trkdevice.h          |   6 +-
 tools/runonphone/symbianutils/trkutils.cpp         |   1 +
 9 files changed, 520 insertions(+), 32 deletions(-)
 create mode 100644 tools/runonphone/symbianutils/symbiandevicemanager.cpp
 create mode 100644 tools/runonphone/symbianutils/symbiandevicemanager.h

diff --git a/tools/runonphone/symbianutils/communicationstarter.cpp b/tools/runonphone/symbianutils/communicationstarter.cpp
index e5e556e..cdee49f 100644
--- a/tools/runonphone/symbianutils/communicationstarter.cpp
+++ b/tools/runonphone/symbianutils/communicationstarter.cpp
@@ -58,7 +58,6 @@ struct BaseCommunicationStarterPrivate {
     int intervalMS;
     int attempts;
     int n;
-    QString device;
     QString errorString;
     BaseCommunicationStarter::State state;
 };
@@ -70,7 +69,6 @@ BaseCommunicationStarterPrivate::BaseCommunicationStarterPrivate(const BaseCommu
         intervalMS(1000),
         attempts(-1),
         n(0),
-        device(QLatin1String("/dev/rfcomm0")),
         state(BaseCommunicationStarter::TimedOut)
 {
 }
@@ -108,7 +106,7 @@ BaseCommunicationStarter::StartResult BaseCommunicationStarter::start()
     // Before we instantiate timers, and such, try to open the device,
     // which should succeed if another listener is already running in
     // 'Watch' mode
-    if (d->trkDevice->open(d->device , &(d->errorString)))
+    if (d->trkDevice->open(&(d->errorString)))
         return ConnectionSucceeded;
     // Pull up resources for next attempt
     d->n = 0;
@@ -155,12 +153,7 @@ void BaseCommunicationStarter::setAttempts(int a)
 
 QString BaseCommunicationStarter::device() const
 {
-    return d->device;
-}
-
-void BaseCommunicationStarter::setDevice(const QString &dv)
-{
-    d->device = dv;
+    return d->trkDevice->port();
 }
 
 QString BaseCommunicationStarter::errorString() const
@@ -175,20 +168,20 @@ void BaseCommunicationStarter::slotTimer()
     if (d->attempts >= 0 && d->n >= d->attempts) {
         stopTimer();
         d->errorString = tr("%1: timed out after %n attempts using an interval of %2ms.", 0, d->n)
-                         .arg(d->device).arg(d->intervalMS);
+                         .arg(d->trkDevice->port()).arg(d->intervalMS);
         d->state = TimedOut;
         emit timeout();
     } else {
         // Attempt n to connect?
-        if (d->trkDevice->open(d->device , &(d->errorString))) {
+        if (d->trkDevice->open(&(d->errorString))) {
             stopTimer();
-            const QString msg = tr("%1: Connection attempt %2 succeeded.").arg(d->device).arg(d->n);
+            const QString msg = tr("%1: Connection attempt %2 succeeded.").arg(d->trkDevice->port()).arg(d->n);
             emit message(msg);
             d->state = Connected;
             emit connected();
         } else {
             const QString msg = tr("%1: Connection attempt %2 failed: %3 (retrying)...")
-                                .arg(d->device).arg(d->n).arg(d->errorString);
+                                .arg(d->trkDevice->port()).arg(d->n).arg(d->errorString);
             emit message(msg);
         }
     }
@@ -228,13 +221,11 @@ BluetoothListener *ConsoleBluetoothStarter::createListener()
 
 bool ConsoleBluetoothStarter::startBluetooth(const TrkDevicePtr &trkDevice,
                                              QObject *listenerParent,
-                                             const QString &device,
                                              int attempts,
                                              QString *errorMessage)
 {
     // Set up a console starter to print to stdout.
     ConsoleBluetoothStarter starter(trkDevice, listenerParent);
-    starter.setDevice(device);
     starter.setAttempts(attempts);
     switch (starter.start()) {
     case Started:
diff --git a/tools/runonphone/symbianutils/communicationstarter.h b/tools/runonphone/symbianutils/communicationstarter.h
index 2d7dc50..0a060ee 100644
--- a/tools/runonphone/symbianutils/communicationstarter.h
+++ b/tools/runonphone/symbianutils/communicationstarter.h
@@ -80,7 +80,6 @@ public:
     void setAttempts(int a);
 
     QString device() const;
-    void setDevice(const QString &);
 
     State state() const;
     QString errorString() const;
@@ -142,7 +141,6 @@ class SYMBIANUTILS_EXPORT ConsoleBluetoothStarter : public AbstractBluetoothStar
 public:
     static bool startBluetooth(const TrkDevicePtr& trkDevice,
                                QObject *listenerParent,
-                               const QString &device,
                                int attempts,
                                QString *errorMessage);
 
diff --git a/tools/runonphone/symbianutils/launcher.cpp b/tools/runonphone/symbianutils/launcher.cpp
index 4f91545..408829b 100644
--- a/tools/runonphone/symbianutils/launcher.cpp
+++ b/tools/runonphone/symbianutils/launcher.cpp
@@ -67,7 +67,6 @@ struct LauncherPrivate {
     explicit LauncherPrivate(const TrkDevicePtr &d);
 
     TrkDevicePtr m_device;
-    QString m_trkServerName;
     QByteArray m_trkReadBuffer;
     Launcher::State m_state;
 
@@ -131,12 +130,12 @@ void Launcher::addStartupActions(trk::Launcher::Actions startupActions)
 
 void Launcher::setTrkServerName(const QString &name)
 {
-    d->m_trkServerName = name;
+    d->m_device->setPort(name);
 }
 
 QString Launcher::trkServerName() const
 {
-    return d->m_trkServerName;
+    return d->m_device->port();
 }
 
 TrkDevicePtr Launcher::trkDevice() const
@@ -191,7 +190,7 @@ bool Launcher::startServer(QString *errorMessage)
     errorMessage->clear();
     if (d->m_verbose) {
         const QString msg = QString::fromLatin1("Port=%1 Executable=%2 Arguments=%3 Package=%4 Remote Package=%5 Install file=%6")
-                            .arg(d->m_trkServerName, d->m_fileName,
+                            .arg(trkServerName(), d->m_fileName,
                                  d->m_commandLineArgs.join(QString(QLatin1Char(' '))),
                                  d->m_copyState.sourceFileName, d->m_copyState.destinationFileName, d->m_installFileName);
         logMessage(msg);
@@ -213,7 +212,7 @@ bool Launcher::startServer(QString *errorMessage)
         qWarning("No remote executable given for running.");
         return false;
     }
-    if (!d->m_device->isOpen() && !d->m_device->open(d->m_trkServerName, errorMessage))
+    if (!d->m_device->isOpen() && !d->m_device->open(errorMessage))
         return false;
     if (d->m_closeDevice) {
         connect(this, SIGNAL(finished()), d->m_device.data(), SLOT(close()));
diff --git a/tools/runonphone/symbianutils/symbiandevicemanager.cpp b/tools/runonphone/symbianutils/symbiandevicemanager.cpp
new file mode 100644
index 0000000..f663816
--- /dev/null
+++ b/tools/runonphone/symbianutils/symbiandevicemanager.cpp
@@ -0,0 +1,331 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "symbiandevicemanager.h"
+
+#include <QtCore/QSettings>
+#include <QtCore/QStringList>
+#include <QtCore/QFileInfo>
+#include <QtCore/QtDebug>
+#include <QtCore/QTextStream>
+#include <QtCore/QSharedData>
+#include <QtCore/QScopedPointer>
+
+namespace SymbianUtils {
+
+enum { debug = 0 };
+
+static const char REGKEY_CURRENT_CONTROL_SET[] = "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet";
+static const char USBSER[] = "Services/usbser/Enum";
+
+const char *SymbianDeviceManager::linuxBlueToothDeviceRootC = "/dev/rfcomm";
+
+// ------------- SymbianDevice
+class SymbianDeviceData : public QSharedData {
+public:
+    SymbianDeviceData() : type(SerialPortCommunication) {}
+
+    QString portName;
+    QString friendlyName;
+    QString deviceDesc;
+    QString manufacturer;
+    DeviceCommunicationType type;
+};
+
+SymbianDevice::SymbianDevice(SymbianDeviceData *data) :
+    m_data(data)
+{
+
+}
+
+SymbianDevice::SymbianDevice() :
+    m_data(new SymbianDeviceData)
+{
+}
+SymbianDevice::SymbianDevice(const SymbianDevice &rhs) :
+        m_data(rhs.m_data)
+{
+}
+
+SymbianDevice &SymbianDevice::operator=(const SymbianDevice &rhs)
+{
+    if (this != &rhs)
+        m_data = rhs.m_data;
+    return *this;
+}
+
+SymbianDevice::~SymbianDevice()
+{
+}
+
+QString SymbianDevice::portName() const
+{
+    return m_data->portName;
+}
+
+QString SymbianDevice::friendlyName() const
+{
+    return m_data->friendlyName;
+}
+
+QString SymbianDevice::deviceDesc() const
+{
+    return m_data->deviceDesc;
+}
+
+QString SymbianDevice::manufacturer() const
+{
+    return m_data->manufacturer;
+}
+
+DeviceCommunicationType SymbianDevice::type() const
+{
+    return m_data->type;
+}
+
+bool SymbianDevice::isNull() const
+{
+    return !m_data->portName.isEmpty();
+}
+
+QString SymbianDevice::toString() const
+{
+    QString rc;
+    QTextStream str(&rc);
+    format(str);
+    return rc;
+}
+
+void SymbianDevice::format(QTextStream &str) const
+{
+    str << (m_data->type == BlueToothCommunication ? "Bluetooth: " : "Serial: ")
+        << m_data->portName;
+    if (!m_data->friendlyName.isEmpty()) {
+        str << " (" << m_data->friendlyName;
+        if (!m_data->deviceDesc.isEmpty())
+          str << " / " << m_data->deviceDesc;
+        str << ')';
+    }
+    if (!m_data->manufacturer.isEmpty())
+        str << " [" << m_data->manufacturer << ']';
+}
+
+// Compare by port and friendly name
+int SymbianDevice::compare(const SymbianDevice &rhs) const
+{
+    if (const int prc = m_data->portName.compare(rhs.m_data->portName))
+        return prc;
+    if (const int frc = m_data->friendlyName.compare(rhs.m_data->friendlyName))
+        return frc;
+    return 0;
+}
+
+QDebug operator<<(QDebug d, const SymbianDevice &cd)
+{
+    d.nospace() << cd.toString();
+    return d;
+}
+
+// ------------- SymbianDeviceManagerPrivate
+struct SymbianDeviceManagerPrivate {
+    SymbianDeviceManagerPrivate() : m_initialized(false) {}
+
+    bool m_initialized;
+    SymbianDeviceManager::SymbianDeviceList m_devices;
+};
+
+SymbianDeviceManager::SymbianDeviceManager(QObject *parent) :
+    QObject(parent),
+    d(new SymbianDeviceManagerPrivate)
+{
+}
+
+SymbianDeviceManager::~SymbianDeviceManager()
+{
+    delete d;
+}
+
+SymbianDeviceManager::SymbianDeviceList SymbianDeviceManager::devices() const
+{
+    if (!d->m_initialized)
+        const_cast<SymbianDeviceManager*>(this)->update(false);
+    return d->m_devices;
+}
+
+QString SymbianDeviceManager::toString() const
+{
+    QString rc;
+    QTextStream str(&rc);
+    const int count = d->m_devices.size();
+    for (int i = 0; i < count; i++) {
+        str << '#' << i << ' ';
+        d->m_devices.at(i).format(str);
+        str << '\n';
+    }
+    return rc;
+}
+
+QString SymbianDeviceManager::friendlyNameForPort(const QString &port) const
+{
+    foreach (const SymbianDevice &device, d->m_devices) {
+        if (device.portName() == port)
+            return device.friendlyName();
+    }
+    return QString();
+}
+
+void SymbianDeviceManager::update()
+{
+    update(true);
+}
+
+void SymbianDeviceManager::update(bool emitSignals)
+{
+    typedef SymbianDeviceList::iterator SymbianDeviceListIterator;
+
+    if (debug)
+        qDebug(">SerialDeviceLister::update(%d)\n%s", int(emitSignals),
+               qPrintable(toString()));
+
+    d->m_initialized = true;
+    // Get ordered new list
+    SymbianDeviceList newDevices = serialPorts() + blueToothDevices();
+    if (newDevices.size() > 1)
+        qStableSort(newDevices.begin(), newDevices.end());
+    if (d->m_devices == newDevices) // Happy, nothing changed.
+        return;
+    // Merge the lists and emit the respective added/removed signals, assuming
+    // no one can plug a different device on the same port at the speed of lightning
+    if (!d->m_devices.isEmpty()) {
+        // Find deleted devices
+        for (SymbianDeviceListIterator oldIt = d->m_devices.begin(); oldIt != d->m_devices.end(); ) {
+            if (newDevices.contains(*oldIt)) {
+                ++oldIt;
+            } else {
+                const SymbianDevice toBeDeleted = *oldIt;
+                oldIt = d->m_devices.erase(oldIt);
+                if (emitSignals)
+                    emit deviceRemoved(toBeDeleted);
+            }
+        }
+    }
+    if (!newDevices.isEmpty()) {
+        // Find new devices and insert in order
+        foreach(const SymbianDevice &newDevice, newDevices) {
+            if (!d->m_devices.contains(newDevice)) {
+                d->m_devices.append(newDevice);
+                if (emitSignals)
+                    emit deviceAdded(newDevice);
+            }
+        }
+        if (d->m_devices.size() > 1)
+            qStableSort(d->m_devices.begin(), d->m_devices.end());
+    }
+    if (emitSignals)
+        emit updated();
+
+    if (debug)
+        qDebug("<SerialDeviceLister::update\n%s\n", qPrintable(toString()));
+}
+
+SymbianDeviceManager::SymbianDeviceList SymbianDeviceManager::serialPorts() const
+{
+    SymbianDeviceList rc;
+#ifdef Q_OS_WIN
+    const QSettings registry(REGKEY_CURRENT_CONTROL_SET, QSettings::NativeFormat);
+    const QString usbSerialRootKey = QLatin1String(USBSER) + QLatin1Char('/');
+    const int count = registry.value(usbSerialRootKey + QLatin1String("Count")).toInt();
+    for (int i = 0; i < count; ++i) {
+        QString driver = registry.value(usbSerialRootKey + QString::number(i)).toString();
+        if (driver.contains(QLatin1String("JAVACOMM"))) {
+            driver.replace(QLatin1Char('\\'), QLatin1Char('/'));
+            const QString driverRootKey = QLatin1String("Enum/") + driver + QLatin1Char('/');
+            if (debug > 1)
+                qDebug() << "SerialDeviceLister::serialPorts(): Checking " << i << count
+                         << REGKEY_CURRENT_CONTROL_SET << usbSerialRootKey << driverRootKey;
+            QScopedPointer<SymbianDeviceData> device(new SymbianDeviceData);
+            device->type = SerialPortCommunication;
+            device->friendlyName = registry.value(driverRootKey + QLatin1String("FriendlyName")).toString();
+            device->portName = registry.value(driverRootKey + QLatin1String("Device Parameters/PortName")).toString();
+            device->deviceDesc = registry.value(driverRootKey + QLatin1String("DeviceDesc")).toString();
+            device->manufacturer = registry.value(driverRootKey + QLatin1String("Mfg")).toString();
+            rc.append(SymbianDevice(device.take()));
+        }
+    }
+#endif
+    return rc;
+}
+
+SymbianDeviceManager::SymbianDeviceList SymbianDeviceManager::blueToothDevices() const
+{
+    SymbianDeviceList rc;
+#if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+    // Bluetooth devices are created on connection. List the existing ones
+    // or at least the first one.
+    const QString prefix = QLatin1String(linuxBlueToothDeviceRootC);
+    const QString friendlyFormat = QLatin1String("Bluetooth device (%1)");
+    for (int d = 0; d < 4; d++) {
+        QScopedPointer<SymbianDeviceData> device(new SymbianDeviceData);
+        device->type = BlueToothCommunication;
+        device->portName = prefix + QString::number(d);
+        if (d == 0 || QFileInfo(device->portName).exists()) {
+            device->friendlyName = friendlyFormat.arg(device->portName);
+            rc.push_back(SymbianDevice(device.take()));
+        }
+    }
+#endif
+    return rc;
+}
+
+Q_GLOBAL_STATIC(SymbianDeviceManager, symbianDeviceManager)
+
+SymbianDeviceManager *SymbianDeviceManager::instance()
+{
+    return symbianDeviceManager();
+}
+
+QDebug operator<<(QDebug d, const SymbianDeviceManager &sdm)
+{
+    d.nospace() << sdm.toString();
+    return d;
+}
+
+} // namespace SymbianUtilsInternal
diff --git a/tools/runonphone/symbianutils/symbiandevicemanager.h b/tools/runonphone/symbianutils/symbiandevicemanager.h
new file mode 100644
index 0000000..dcf131a
--- /dev/null
+++ b/tools/runonphone/symbianutils/symbiandevicemanager.h
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef SYMBIANDEVICEMANAGER_H
+#define SYMBIANDEVICEMANAGER_H
+
+#include "symbianutils_global.h"
+
+#include <QtCore/QObject>
+#include <QtCore/QExplicitlySharedDataPointer>
+
+QT_BEGIN_NAMESPACE
+class QDebug;
+class QTextStream;
+QT_END_NAMESPACE
+
+namespace SymbianUtils {
+
+struct SymbianDeviceManagerPrivate;
+class SymbianDeviceData;
+
+enum DeviceCommunicationType {
+    SerialPortCommunication = 0,
+    BlueToothCommunication = 1
+};
+
+// SymbianDevice, explicitly shared.
+class SYMBIANUTILS_EXPORT SymbianDevice {
+    explicit SymbianDevice(SymbianDeviceData *data);
+    friend class SymbianDeviceManager;
+public:
+    SymbianDevice();
+    SymbianDevice(const SymbianDevice &rhs);
+    SymbianDevice &operator=(const SymbianDevice &rhs);
+    ~SymbianDevice();
+    int compare(const SymbianDevice &rhs) const;
+
+    DeviceCommunicationType type() const;
+    bool isNull() const;
+    QString portName() const;
+    QString friendlyName() const;
+
+    // Windows only.
+    QString deviceDesc() const;
+    QString manufacturer() const;
+
+    void format(QTextStream &str) const;
+    QString toString() const;
+
+private:
+    QExplicitlySharedDataPointer<SymbianDeviceData> m_data;
+};
+
+QDebug operator<<(QDebug d, const SymbianDevice &);
+
+inline bool operator==(const SymbianDevice &d1, const SymbianDevice &d2)
+    { return d1.compare(d2) == 0; }
+inline bool operator!=(const SymbianDevice &d1, const SymbianDevice &d2)
+    { return d1.compare(d2) != 0; }
+inline bool operator<(const SymbianDevice &d1, const SymbianDevice &d2)
+    { return d1.compare(d2) < 0; }
+
+/* SymbianDeviceManager: Singleton that maintains a list of Symbian devices.
+ * and emits change signals.
+ * On Windows, the update slot must be connected to a signal
+ * emitted from an event handler listening for WM_DEVICECHANGE. */
+class SYMBIANUTILS_EXPORT SymbianDeviceManager : public QObject
+{
+    Q_OBJECT
+public:
+    typedef QList<SymbianDevice> SymbianDeviceList;
+
+    static const char *linuxBlueToothDeviceRootC;
+
+    // Do not use this constructor, it is just public for Q_GLOBAL_STATIC
+    explicit SymbianDeviceManager(QObject *parent = 0);
+    virtual ~SymbianDeviceManager();
+
+    // Singleton access.
+    static SymbianDeviceManager *instance();
+
+    SymbianDeviceList devices() const;
+    QString toString() const;
+
+    QString friendlyNameForPort(const QString &port) const;
+
+public slots:
+    void update();
+
+signals:
+    void deviceRemoved(const SymbianDevice &d);
+    void deviceAdded(const SymbianDevice &d);
+    void updated();
+
+private:
+    void update(bool emitSignals);
+    SymbianDeviceList serialPorts() const;
+    SymbianDeviceList blueToothDevices() const;
+
+    SymbianDeviceManagerPrivate *d;
+};
+
+QDebug operator<<(QDebug d, const SymbianDeviceManager &);
+
+} // namespace SymbianUtils
+
+#endif // SYMBIANDEVICEMANAGER_H
diff --git a/tools/runonphone/symbianutils/symbianutils.pri b/tools/runonphone/symbianutils/symbianutils.pri
index a54df76..6309517 100644
--- a/tools/runonphone/symbianutils/symbianutils.pri
+++ b/tools/runonphone/symbianutils/symbianutils.pri
@@ -8,13 +8,15 @@ HEADERS += $$PWD/symbianutils_global.h \
     $$PWD/trkdevice.h \
     $$PWD/launcher.h \
     $$PWD/bluetoothlistener.h \
-    $$PWD/communicationstarter.h
+    $$PWD/communicationstarter.h \
+    $$PWD/symbiandevicemanager.h
 
 SOURCES += $$PWD/trkutils.cpp \
     $$PWD/trkdevice.cpp \
     $$PWD/launcher.cpp \
     $$PWD/bluetoothlistener.cpp \
-    $$PWD/communicationstarter.cpp
+    $$PWD/communicationstarter.cpp \
+    $$PWD/symbiandevicemanager.cpp
 
 # Tests/trklauncher is a console application
 contains(QT, gui) {
diff --git a/tools/runonphone/symbianutils/trkdevice.cpp b/tools/runonphone/symbianutils/trkdevice.cpp
index d587135..b327ab3 100644
--- a/tools/runonphone/symbianutils/trkdevice.cpp
+++ b/tools/runonphone/symbianutils/trkdevice.cpp
@@ -883,6 +883,7 @@ struct TrkDevicePrivate
     QByteArray trkReadBuffer;
     int verbose;
     QString errorString;
+    QString port;
 };
 
 ///////////////////////////////////////////////////////////////////////
@@ -914,13 +915,19 @@ TrkDevice::~TrkDevice()
     delete d;
 }
 
-bool TrkDevice::open(const QString &port, QString *errorMessage)
+bool TrkDevice::open(QString *errorMessage)
 {
     if (d->verbose)
-        qDebug() << "Opening" << port << "is open: " << isOpen() << " serialFrame=" << serialFrame();
+        qDebug() << "Opening" << port() << "is open: " << isOpen() << " serialFrame=" << serialFrame();
+    if (d->port.isEmpty()) {
+        *errorMessage = QLatin1String("Internal error: No port set on TrkDevice");
+        return false;
+    }
+
     close();
 #ifdef Q_OS_WIN
-    d->deviceContext->device = CreateFile(QString("\\\\.\\").append(port).toStdWString().c_str(),
+    const QString fullPort = QLatin1String("\\\\.\\") + d->port;
+    d->deviceContext->device = CreateFile(reinterpret_cast<const WCHAR*>(fullPort.utf16()),
                            GENERIC_READ | GENERIC_WRITE,
                            0,
                            NULL,
@@ -929,7 +936,7 @@ bool TrkDevice::open(const QString &port, QString *errorMessage)
                            NULL);
 
     if (INVALID_HANDLE_VALUE == d->deviceContext->device) {
-        *errorMessage = QString::fromLatin1("Could not open device '%1': %2").arg(port, winErrorMessage(GetLastError()));
+        *errorMessage = QString::fromLatin1("Could not open device '%1': %2").arg(port(), winErrorMessage(GetLastError()));
         return false;
     }
     memset(&d->deviceContext->readOverlapped, 0, sizeof(OVERLAPPED));
@@ -941,9 +948,9 @@ bool TrkDevice::open(const QString &port, QString *errorMessage)
         return false;
     }
 #else
-    d->deviceContext->file.setFileName(port);
+    d->deviceContext->file.setFileName(d->port);
     if (!d->deviceContext->file.open(QIODevice::ReadWrite|QIODevice::Unbuffered)) {
-        *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(port, d->deviceContext->file.errorString());
+        *errorMessage = QString::fromLatin1("Cannot open %1: %2").arg(d->port, d->deviceContext->file.errorString());
         return false;
     }
 
@@ -982,7 +989,7 @@ bool TrkDevice::open(const QString &port, QString *errorMessage)
     d->writerThread->start();    
 
     if (d->verbose)
-        qDebug() << "Opened" << port;
+        qDebug() << "Opened" << d->port;
     return true;
 }
 
@@ -1016,6 +1023,16 @@ bool TrkDevice::isOpen() const
 #endif
 }
 
+QString TrkDevice::port() const
+{
+    return d->port;
+}
+
+void TrkDevice::setPort(const QString &p)
+{
+    d->port = p;
+}
+
 QString TrkDevice::errorString() const
 {
     return d->errorString;
diff --git a/tools/runonphone/symbianutils/trkdevice.h b/tools/runonphone/symbianutils/trkdevice.h
index 21a3cc1..78012fd 100644
--- a/tools/runonphone/symbianutils/trkdevice.h
+++ b/tools/runonphone/symbianutils/trkdevice.h
@@ -80,13 +80,17 @@ class SYMBIANUTILS_EXPORT TrkDevice : public QObject
     Q_OBJECT
     Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
     Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
+    Q_PROPERTY(QString port READ port WRITE setPort)
 public:
     explicit TrkDevice(QObject *parent = 0);
     virtual ~TrkDevice();
 
-    bool open(const QString &port, QString *errorMessage);
+    bool open(QString *errorMessage);
     bool isOpen() const;
 
+    QString port() const;
+    void setPort(const QString &p);
+
     QString errorString() const;
 
     bool serialFrame() const;
diff --git a/tools/runonphone/symbianutils/trkutils.cpp b/tools/runonphone/symbianutils/trkutils.cpp
index 5cce950..9b43c96 100644
--- a/tools/runonphone/symbianutils/trkutils.cpp
+++ b/tools/runonphone/symbianutils/trkutils.cpp
@@ -143,6 +143,7 @@ QString Session::deviceDescription(unsigned verbose) const
     return msg.arg(formatTrkVersion(trkAppVersion));
 }
 
+// --------------
 
 QByteArray decode7d(const QByteArray &ba)
 {
-- 
cgit v0.12


From b0c972dfd208411086b53ee2c2b0594ade3e2d10 Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@sosco.com>
Date: Tue, 9 Feb 2010 20:04:09 +0100
Subject: Add the download URI for smart installer package to documentation

Task-number: QTBUG-8068
Reviewed-by: David Boddie
---
 doc/src/deployment/deployment.qdoc          |  7 ++++++-
 doc/src/platforms/symbian-introduction.qdoc | 11 ++++++++++-
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/doc/src/deployment/deployment.qdoc b/doc/src/deployment/deployment.qdoc
index 41babd9..43f5d33 100644
--- a/doc/src/deployment/deployment.qdoc
+++ b/doc/src/deployment/deployment.qdoc
@@ -1581,7 +1581,12 @@
     \snippet doc/src/snippets/code/doc_src_deployment.qdoc 58
 
     If everything compiled and linked without any errors, we are now ready to create
-    an application installation package (\c wiggly_installer.sis):
+    an application installation package (\c wiggly_installer.sis).
+
+    If you haven't done so already, download the latest release of the Smart Installer
+    from \l{http://get.qt.nokia.com/nokiasmartinstaller/}, and install it on top of the Qt package
+
+    Then use this command to create the installer sis package:
 
     \snippet doc/src/snippets/code/doc_src_deployment.qdoc 59
 
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 94075f5..5cebee3 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -127,7 +127,8 @@
     \row \o \c run           \o Run the application on the emulator.
     \row \o \c runonphone    \o Run the application on a device.
     \row \o \c sis           \o Create signed \c .sis file for project.
-    \row \o \c installer_sis \o Create signed smart installer \c .sis file for project.
+    \row \o \c installer_sis \o Create signed \l{Smart Installer}{smart installer}
+                                \c .sis file for project.
                                 Smart installer will attempt to download
                                 missing dependencies in addition to
                                 just installing the application.
@@ -141,6 +142,14 @@
     To work on your project in Carbide, simply import the \c .pro file
     by right clicking on the project explorer and executing "Import...".
 
+    \section2 Smart Installer
+
+    The Smart Installer makes sure that deployed applications have all the Qt dependencies
+    they need to run on a device.
+
+    Download the latest release of the Smart Installer from \l{http://get.qt.nokia.com/nokiasmartinstaller/},
+    and install it on top of the Qt package.
+
     \section1 Installing your own applications
 
     To install your own applications on hardware, you need a signed \c .sis file.
-- 
cgit v0.12


From 4935ec52fc07d4aaa7ae594cfe9986e25ca62dcb Mon Sep 17 00:00:00 2001
From: Bill King <bill.king@nokia.com>
Date: Wed, 10 Feb 2010 10:50:59 +1000
Subject: (ODBC) Use wchar_t instead of assuming 2 bytes.

On some platforms, especially iODBC, wchar_t is a 32bit value, not 16

Task-number: QTBUG-6928
---
 src/sql/drivers/odbc/qsql_odbc.cpp | 37 +++++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index 2049a76..4d3663e 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -144,6 +144,7 @@ public:
 
     QSqlRecord rInf;
     QVector<QVariant> fieldCache;
+    QVector<wchar_t *> paramCache;
     int fieldCacheIdx;
     int disconnectCount;
     bool hasSQLFetchScroll;
@@ -202,7 +203,7 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode
                 *nativeCode = nativeCode_;
             QString tmpstore;
 #ifdef UNICODE
-            tmpstore = QString((const QChar*)description_.data(), msgLen);
+            tmpstore = QString::fromWCharArray((const wchar_t*)description_, msgLen);
 #else
             tmpstore = QString::fromLocal8Bit((const char*)description_.data(), msgLen);
 #endif
@@ -332,7 +333,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
     } else {
         colSize++; // make sure there is room for more than the 0 termination
         if (unicode) {
-            colSize *= 2; // a tiny bit faster, since it saves a SQLGetData() call
+            colSize *= sizeof(wchar_t); // a tiny bit faster, since it saves a SQLGetData() call
         }
     }
     QVarLengthArray<char> buf(colSize);
@@ -353,9 +354,9 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
             // contain the number of bytes returned - it contains the
             // total number of bytes that CAN be fetched
             // colSize-1: remove 0 termination when there is more data to fetch
-            int rSize = (r == SQL_SUCCESS_WITH_INFO) ? (unicode ? colSize-2 : colSize-1) : lengthIndicator;
+            int rSize = (r == SQL_SUCCESS_WITH_INFO) ? (unicode ? colSize-sizeof(wchar_t) : colSize-1) : lengthIndicator;
             if (unicode) {
-                fieldVal += QString((const QChar*) buf.constData(), rSize / 2);
+                fieldVal += QString::fromWCharArray((wchar_t*)buf.constData(), rSize / sizeof(wchar_t));
             } else {
                 fieldVal += QString::fromAscii(buf.constData(), rSize);
             }
@@ -551,7 +552,7 @@ static QSqlField qMakeFieldInfo(const QODBCPrivate* p, int i )
     }
 
 #ifdef UNICODE
-    QString qColName((const QChar*)colName, colNameLen);
+    QString qColName = QString::fromWCharArray((const wchar_t*)colName, colNameLen);
 #else
     QString qColName = QString::fromLocal8Bit((const char*)colName);
 #endif
@@ -1270,9 +1271,12 @@ bool QODBCResult::exec()
 
     // bind parameters - only positional binding allowed
     QVector<QVariant>& values = boundValues();
+    QVector<wchar_t *> wcharstorage;
+
     int i;
     SQLRETURN r;
     for (i = 0; i < values.count(); ++i) {
+        wcharstorage.append(NULL);
         if (bindValueType(i) & QSql::Out)
             values[i].detach();
         const QVariant &val = values.at(i);
@@ -1435,13 +1439,14 @@ bool QODBCResult::exec()
 #ifndef Q_ODBC_VERSION_2
                 if (d->unicode) {
                     QString str = val.toString();
-                    str.utf16();
+                    int strSize = str.length() * sizeof(wchar_t);
                     if (*ind != SQL_NULL_DATA)
-                        *ind = str.length() * sizeof(QChar);
-                    int strSize = str.length() * sizeof(QChar);
+                        *ind = strSize;
 
                     if (bindValueType(i) & QSql::Out) {
-                        QByteArray ba((char*)str.constData(), str.capacity() * sizeof(QChar));
+                        wchar_t *temp=new wchar_t[str.capacity()*sizeof(wchar_t)];
+                        str.toWCharArray(temp);
+                        QByteArray ba((char*)temp, str.capacity() * sizeof(wchar_t));
                         r = SQLBindParameter(d->hStmt,
                                             i + 1,
                                             qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],
@@ -1453,9 +1458,13 @@ bool QODBCResult::exec()
                                             ba.size(),
                                             ind);
                         tmpStorage.append(ba);
+                        wcharstorage.replace(i,temp);
                         break;
                     }
 
+                    wchar_t *temp=new wchar_t[(1+str.length())*sizeof(wchar_t)];
+                    str.toWCharArray(temp);
+                    temp[str.length()]=0;
                     r = SQLBindParameter(d->hStmt,
                                           i + 1,
                                           qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],
@@ -1463,9 +1472,10 @@ bool QODBCResult::exec()
                                           strSize > 254 ? SQL_WLONGVARCHAR : SQL_WVARCHAR,
                                           strSize,
                                           0,
-                                          (void *)str.constData(),
+                                          (void *)temp,
                                           strSize,
                                           ind);
+                    wcharstorage.replace(i,temp);
                     break;
                 }
                 else
@@ -1515,6 +1525,13 @@ bool QODBCResult::exec()
         }
     }
     r = SQLExecute(d->hStmt);
+
+    for(int i=0;i<wcharstorage.size();i++)
+    {
+        if(wcharstorage.at(i))
+            delete [](wcharstorage.at(i));
+    }
+
     if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
         qWarning() << "QODBCResult::exec: Unable to execute statement:" << qODBCWarn(d);
         setLastError(qMakeError(QCoreApplication::translate("QODBCResult",
-- 
cgit v0.12


From 52e46af04738af62ad0da0daa161de707ff855e0 Mon Sep 17 00:00:00 2001
From: Prasanth Ullattil <prasanth.ullattil@nokia.com>
Date: Tue, 9 Feb 2010 18:12:12 +0100
Subject: Cannot drag actions in Designer on Mac OS X/Cocoa.

QMimeData sub classes reimplementing the formats() might not expose the
temporary "application/x-qt-mime-type-name" mimetype used by DnD. So
make sure that the NSDragPboard PasteBoard will contain this dummy mime
type.

Task-number: QTBUG-7981
Reviewed-by: mortens
---
 src/gui/kernel/qclipboard_mac.cpp | 12 ++++++++++++
 src/gui/kernel/qcocoaview_mac.mm  |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/gui/kernel/qclipboard_mac.cpp b/src/gui/kernel/qclipboard_mac.cpp
index f3a971d..49a6cc8 100644
--- a/src/gui/kernel/qclipboard_mac.cpp
+++ b/src/gui/kernel/qclipboard_mac.cpp
@@ -388,6 +388,18 @@ QMacPasteboard::setMimeData(QMimeData *mime_src)
         clear_helper();
         QStringList formats = mime_src->formats();
 
+#ifdef QT_MAC_USE_COCOA
+        // QMimeData sub classes reimplementing the formats() might not expose the
+        // temporary "application/x-qt-mime-type-name" mimetype. So check the existence
+        // of this mime type while doing drag and drop.
+        QString dummyMimeType(QLatin1String("application/x-qt-mime-type-name"));
+        if (!formats.contains(dummyMimeType)) {
+            QByteArray dummyType = mime_src->data(dummyMimeType);
+            if (!dummyType.isEmpty()) {
+                formats.append(dummyMimeType);
+            }
+        }
+#endif
         for(int f = 0; f < formats.size(); ++f) {
             QString mimeType = formats.at(f);
             for (QList<QMacPasteboardMime *>::Iterator it = availableConverters.begin(); it != availableConverters.end(); ++it) {
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 2c35be2..756cf92 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -1404,7 +1404,7 @@ Qt::DropAction QDragManager::drag(QDrag *o)
 
     // setup the data
     QMacPasteboard dragBoard((CFStringRef) NSDragPboard, QMacPasteboardMime::MIME_DND);
-    dragPrivate()->data->setData(QLatin1String("application/x-qt-mime-type-name"), QByteArray());
+    dragPrivate()->data->setData(QLatin1String("application/x-qt-mime-type-name"), QByteArray("dummy"));
     dragBoard.setMimeData(dragPrivate()->data);
 
     // create the image
-- 
cgit v0.12


From 3930b896eba50eb657c88923b2922a2fba0d6385 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Wed, 10 Feb 2010 10:27:32 +0100
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
 qtwebkit/qtwebkit-4.6 ( 36fe058a9001e6d47f0fd41c6304cdfdf3a735ed )

Changes in WebKit/qt since the last update:
* Missing fileSystemPath() method in Qt KURL implementation
---
 src/3rdparty/webkit/VERSION                        |  2 +-
 src/3rdparty/webkit/WebCore/ChangeLog              | 12 ++++++++++++
 src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp |  6 ++++--
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 4348cbc..2b39e81 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
 
 and has the sha1 checksum
 
-        da5d96a26e80162027bc95ce7e5725fe4b277ff7
+        36fe058a9001e6d47f0fd41c6304cdfdf3a735ed
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog
index 1f6f290..61c2227 100644
--- a/src/3rdparty/webkit/WebCore/ChangeLog
+++ b/src/3rdparty/webkit/WebCore/ChangeLog
@@ -1,3 +1,15 @@
+2010-01-14  Diego Gonzalez  <diego.gonzalez@openbossa.org>
+
+        Reviewed by Kenneth Christiansen.
+
+        [Qt] Missing fileSystemPath() method in Qt KURL implementation
+        https://bugs.webkit.org/show_bug.cgi?id=33614
+
+        No new tests.
+
+        * platform/qt/KURLQt.cpp:
+        (WebCore::KURL::fileSystemPath):
+
 2010-02-01  Andreas Kling  <andreas.kling@nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp
index 0763fe0..1f62006 100644
--- a/src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/qt/KURLQt.cpp
@@ -95,8 +95,10 @@ KURL::operator QUrl() const
 
 String KURL::fileSystemPath() const
 {
-    notImplemented();
-    return String();
+    if (!isValid() || !protocolIs("file"))
+        return String();
+
+    return String(path());
 }
 
 }
-- 
cgit v0.12


From 8c8aabdfac1518f9d62097ea5c80cea3d50131a3 Mon Sep 17 00:00:00 2001
From: Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
Date: Tue, 9 Feb 2010 16:32:10 +0200
Subject: Fix an unhandled exception in QScriptValue's test generator.

$QT_END_LICENSE was interpreted as a template key by Template() object,
causing substitute() call to throw a KeyError exception.

The bug was introduced in 9962e2d96a212c518054220167eb6f61e1052bcc.

Reviewed-by: TrustMe
---
 tests/auto/qscriptvalue/testgen/gen.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/auto/qscriptvalue/testgen/gen.py b/tests/auto/qscriptvalue/testgen/gen.py
index 7161e6b..b3c81b9 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvalue/testgen/gen.py
@@ -231,7 +231,7 @@ if __name__ == '__main__':
     row_esc = escape(row)
     out.append(qsvTempl.substitute(expr = row, expr_esc = row_esc))
 
-  result = mainTempl.substitute(dump= "".join(out) \
+  result = mainTempl.safe_substitute(dump= "".join(out) \
                               , values = (11 * ' ' + '<< ').join(qsv) \
                               , count = len(qsv) \
                               , dataTags = (11 * ' ' + '<< ').join(map(lambda w: '"' + escape(w.replace('\n','')) + '"\n', qsv)))
-- 
cgit v0.12


From e6f401fb1a25f133bd3476ff327b2ba45fd741b7 Mon Sep 17 00:00:00 2001
From: Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
Date: Tue, 9 Feb 2010 16:39:03 +0200
Subject: Add new test values to QScriptValue test generator.

Two new values were added; results from QScriptEngine::nullValue() and
QScriptEngine::undefinedValue().

Reviewed-by: Kent Hansen
---
 tests/auto/qscriptvalue/testgen/data.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt
index 8e7026e..a041c9b 100644
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ b/tests/auto/qscriptvalue/testgen/data.txt
@@ -114,3 +114,7 @@ engine->evaluate("/foo/")
 engine->evaluate("new Object()")
 engine->evaluate("new Array()")
 engine->evaluate("new Error()")
+
+#other
+engine->nullValue()
+engine->undefinedValue()
\ No newline at end of file
-- 
cgit v0.12


From caf93a2b6d3df012055ab70ad4bba1bb7b29141d Mon Sep 17 00:00:00 2001
From: Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
Date: Tue, 9 Feb 2010 16:47:51 +0200
Subject: Apply newly generated test values.

Apply test results for values created directly from QScriptEngine
(results of nullValue() and undefinedValue())

Reviewed-by: Kent Hansen
---
 .../qscriptvalue/tst_qscriptvalue_generated.cpp    | 127 +++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
index 1d105b4..4e621b3 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
@@ -152,6 +152,8 @@ void tst_QScriptValue::initScriptValues()
     DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
     DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
     DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+    DEFINE_TEST_VALUE(engine->nullValue());
+    DEFINE_TEST_VALUE(engine->undefinedValue());
 }
 
 
@@ -267,6 +269,8 @@ void tst_QScriptValue::isValid_makeData(const char* expr)
                 << "engine->evaluate(\"new Object()\")"
                 << "engine->evaluate(\"new Array()\")"
                 << "engine->evaluate(\"new Error()\")"
+                << "engine->nullValue()"
+                << "engine->undefinedValue()"
                ;
     }
     newRow(expr) << isValid.contains(expr);
@@ -453,6 +457,7 @@ void tst_QScriptValue::isNull_makeData(const char* expr)
         isNull << "QScriptValue(QScriptValue::NullValue)"
                 << "QScriptValue(0, QScriptValue::NullValue)"
                 << "QScriptValue(engine, QScriptValue::NullValue)"
+                << "engine->nullValue()"
                ;
     }
     newRow(expr) << isNull.contains(expr);
@@ -535,6 +540,7 @@ void tst_QScriptValue::isUndefined_makeData(const char* expr)
                 << "QScriptValue(0, QScriptValue::UndefinedValue)"
                 << "QScriptValue(engine, QScriptValue::UndefinedValue)"
                 << "engine->evaluate(\"{}\")"
+                << "engine->undefinedValue()"
                ;
     }
     newRow(expr) << isUndefined.contains(expr);
@@ -810,6 +816,8 @@ void tst_QScriptValue::toString_makeData(const char* expr)
         toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
         toString.insert("engine->evaluate(\"new Array()\")", "");
         toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+        toString.insert("engine->nullValue()", "null");
+        toString.insert("engine->undefinedValue()", "undefined");
     }
     newRow(expr) << toString.value(expr);
 }
@@ -936,6 +944,8 @@ void tst_QScriptValue::toNumber_makeData(const char* expr)
         toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
         toNumber.insert("engine->evaluate(\"new Array()\")", 0);
         toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+        toNumber.insert("engine->nullValue()", 0);
+        toNumber.insert("engine->undefinedValue()", qQNaN());
     }
     newRow(expr) << toNumber.value(expr);
 }
@@ -1070,6 +1080,8 @@ void tst_QScriptValue::toBool_makeData(const char* expr)
         toBool.insert("engine->evaluate(\"new Object()\")", true);
         toBool.insert("engine->evaluate(\"new Array()\")", true);
         toBool.insert("engine->evaluate(\"new Error()\")", true);
+        toBool.insert("engine->nullValue()", false);
+        toBool.insert("engine->undefinedValue()", false);
     }
     newRow(expr) << toBool.value(expr);
 }
@@ -1196,6 +1208,8 @@ void tst_QScriptValue::toBoolean_makeData(const char* expr)
         toBoolean.insert("engine->evaluate(\"new Object()\")", true);
         toBoolean.insert("engine->evaluate(\"new Array()\")", true);
         toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+        toBoolean.insert("engine->nullValue()", false);
+        toBoolean.insert("engine->undefinedValue()", false);
     }
     newRow(expr) << toBoolean.value(expr);
 }
@@ -1322,6 +1336,8 @@ void tst_QScriptValue::toInteger_makeData(const char* expr)
         toInteger.insert("engine->evaluate(\"new Object()\")", 0);
         toInteger.insert("engine->evaluate(\"new Array()\")", 0);
         toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+        toInteger.insert("engine->nullValue()", 0);
+        toInteger.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << toInteger.value(expr);
 }
@@ -1452,6 +1468,8 @@ void tst_QScriptValue::toInt32_makeData(const char* expr)
         toInt32.insert("engine->evaluate(\"new Object()\")", 0);
         toInt32.insert("engine->evaluate(\"new Array()\")", 0);
         toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+        toInt32.insert("engine->nullValue()", 0);
+        toInt32.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << toInt32.value(expr);
 }
@@ -1578,6 +1596,8 @@ void tst_QScriptValue::toUInt32_makeData(const char* expr)
         toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
         toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
         toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+        toUInt32.insert("engine->nullValue()", 0);
+        toUInt32.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << toUInt32.value(expr);
 }
@@ -1704,6 +1724,8 @@ void tst_QScriptValue::toUInt16_makeData(const char* expr)
         toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
         toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
         toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+        toUInt16.insert("engine->nullValue()", 0);
+        toUInt16.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << toUInt16.value(expr);
 }
@@ -1736,6 +1758,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1743,6 +1767,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
@@ -1937,6 +1963,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1944,6 +1972,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
@@ -2138,6 +2168,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2145,6 +2177,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
@@ -2355,6 +2389,8 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
         equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
         equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
         equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
         equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
@@ -2401,6 +2437,24 @@ void tst_QScriptValue::equals_makeData(const char *expr)
         equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
         equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
         equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->nullValue() <=> engine->nullValue()");
+        equals.insert("engine->nullValue() <=> engine->undefinedValue()");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->undefinedValue() <=> engine->nullValue()");
+        equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
     }
     QHash<QString, QScriptValue>::const_iterator it;
     for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2435,9 +2489,11 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
         equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
         equals.insert("QScriptValue(true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
@@ -2530,9 +2586,11 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
         equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
@@ -2625,9 +2683,11 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+        equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
         equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
         equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
@@ -2721,6 +2781,7 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
         equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
         equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
         equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
         equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
         equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
         equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
@@ -2737,6 +2798,15 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
         equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
         equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
         equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+        equals.insert("engine->nullValue() <=> engine->nullValue()");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+        equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+        equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
     }
     QHash<QString, QScriptValue>::const_iterator it;
     for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -3090,6 +3160,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()");
         equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
         equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
         equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
@@ -3180,6 +3251,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()");
         equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
         equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
         equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -3291,6 +3363,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
         equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
         equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()");
         equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
         equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
         equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
@@ -3903,6 +3976,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()");
         equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
         equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
         equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
@@ -3993,6 +4067,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()");
         equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
         equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
         equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4104,6 +4179,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
         equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
         equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()");
         equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
         equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
         equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -4717,6 +4793,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()");
         equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
         equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
         equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
@@ -4807,6 +4884,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
         equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
         equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+        equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()");
         equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
         equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
         equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4918,6 +4996,7 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
         equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
         equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+        equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()");
         equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
         equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
         equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -5533,6 +5612,42 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
         equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
         equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
         equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(\"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(QString(\"12.4\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, 0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, \"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(0, QString(\"12.3\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, true)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, int(122))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, uint(124))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 123.0)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 6.37e-8)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x43211234)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10000)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, 0x10001)");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, qInf())");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))");
+        equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))");
     }
     QHash<QString, QScriptValue>::const_iterator it;
     for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5718,6 +5833,8 @@ void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
         value.insert("engine->evaluate(\"new Array()\")", "");
         value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+        value.insert("engine->nullValue()", "");
+        value.insert("engine->undefinedValue()", "");
     }
     newRow(expr) << value.value(expr);
 }
@@ -5844,6 +5961,8 @@ void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", qQNaN());
         value.insert("engine->evaluate(\"new Array()\")", 0);
         value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", qQNaN());
     }
     newRow(expr) << value.value(expr);
 }
@@ -5978,6 +6097,8 @@ void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", true);
         value.insert("engine->evaluate(\"new Array()\")", true);
         value.insert("engine->evaluate(\"new Error()\")", true);
+        value.insert("engine->nullValue()", false);
+        value.insert("engine->undefinedValue()", false);
     }
     newRow(expr) << value.value(expr);
 }
@@ -6104,6 +6225,8 @@ void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", 0);
         value.insert("engine->evaluate(\"new Array()\")", 0);
         value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << value.value(expr);
 }
@@ -6230,6 +6353,8 @@ void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", 0);
         value.insert("engine->evaluate(\"new Array()\")", 0);
         value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << value.value(expr);
 }
@@ -6356,6 +6481,8 @@ void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
         value.insert("engine->evaluate(\"new Object()\")", 0);
         value.insert("engine->evaluate(\"new Array()\")", 0);
         value.insert("engine->evaluate(\"new Error()\")", 0);
+        value.insert("engine->nullValue()", 0);
+        value.insert("engine->undefinedValue()", 0);
     }
     newRow(expr) << value.value(expr);
 }
-- 
cgit v0.12


From 37ffa8f59c5dc1f4a1174a07e0a6df6e266d40c0 Mon Sep 17 00:00:00 2001
From: Olivier Goffart <ogoffart@trolltech.com>
Date: Wed, 10 Feb 2010 10:05:41 +0100
Subject: Stabilize QListView test on Mac

---
 tests/auto/qlistview/tst_qlistview.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/tests/auto/qlistview/tst_qlistview.cpp b/tests/auto/qlistview/tst_qlistview.cpp
index 2c31d8b..d2181f8 100644
--- a/tests/auto/qlistview/tst_qlistview.cpp
+++ b/tests/auto/qlistview/tst_qlistview.cpp
@@ -779,6 +779,7 @@ void tst_QListView::batchedMode()
     view.resize(200,400);
     view.show();
     QTest::qWaitForWindowShown(&view);
+    QTest::qWait(100);
 
 #if defined(Q_OS_WINCE)
     QTest::qWait(2000);
@@ -1846,6 +1847,7 @@ void tst_QListView::taskQTBUG_2233_scrollHiddenItems()
         view.setRowHidden(i, true);
     }
     QApplication::processEvents();
+    QTest::qWait(50);
     QCOMPARE(bar->value(), bar->maximum());
     QCOMPARE(bar->maximum(), rowCount/4 - nbVisibleItem);
 }
-- 
cgit v0.12


From 31ba9218c63b6c0177fabae3ff33cc5f3c2df8d5 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 10 Feb 2010 11:05:59 +0100
Subject: Fix warnings ~QX11PixmapData(): QPixmap objects must be destroyed..
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

in the property browser solution.

Reviewed-by: Trond Kjernåsen <trond@trolltech.com>
Task-number: QTBUG-8046
---
 .../qtpropertybrowser/qtpropertybrowserutils.cpp   | 16 +++--
 .../qtpropertybrowser/qtpropertybrowserutils_p.h   |  1 +
 .../shared/qtpropertybrowser/qtpropertymanager.cpp | 82 +++++++++++++---------
 3 files changed, 61 insertions(+), 38 deletions(-)

diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
index b84de11..0b14292 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils.cpp
@@ -93,15 +93,23 @@ QtCursorDatabase::QtCursorDatabase()
                         QApplication::UnicodeUTF8), QIcon(QLatin1String(":/trolltech/qtpropertybrowser/images/cursor-busy.png")));
 }
 
+void QtCursorDatabase::clear()
+{
+    m_cursorNames.clear();
+    m_cursorIcons.clear();
+    m_valueToCursorShape.clear();
+    m_cursorShapeToValue.clear();
+}
+
 void QtCursorDatabase::appendCursor(Qt::CursorShape shape, const QString &name, const QIcon &icon)
 {
     if (m_cursorShapeToValue.contains(shape))
         return;
-    int value = m_cursorNames.count();
+    const int value = m_cursorNames.count();
     m_cursorNames.append(name);
-    m_cursorIcons[value] = icon;
-    m_valueToCursorShape[value] = shape;
-    m_cursorShapeToValue[shape] = value;
+    m_cursorIcons.insert(value, icon);
+    m_valueToCursorShape.insert(value, shape);
+    m_cursorShapeToValue.insert(shape, value);
 }
 
 QStringList QtCursorDatabase::cursorShapeNames() const
diff --git a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
index b60fb94..baa7a4a 100644
--- a/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
+++ b/tools/shared/qtpropertybrowser/qtpropertybrowserutils_p.h
@@ -68,6 +68,7 @@ class QtCursorDatabase
 {
 public:
     QtCursorDatabase();
+    void clear();
 
     QStringList cursorShapeNames() const;
     QMap<int, QIcon> cursorShapeIcons() const;
diff --git a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
index 67ab2fb..d9ff10a 100644
--- a/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
+++ b/tools/shared/qtpropertybrowser/qtpropertymanager.cpp
@@ -1391,16 +1391,54 @@ void QtStringPropertyManager::uninitializeProperty(QtProperty *property)
 }
 
 // QtBoolPropertyManager
+//     Return an icon containing a check box indicator
+static QIcon drawCheckBox(bool value)
+{
+    QStyleOptionButton opt;
+    opt.state |= value ? QStyle::State_On : QStyle::State_Off;
+    opt.state |= QStyle::State_Enabled;
+    const QStyle *style = QApplication::style();
+    // Figure out size of an indicator and make sure it is not scaled down in a list view item
+    // by making the pixmap as big as a list view icon and centering the indicator in it.
+    // (if it is smaller, it can't be helped)
+    const int indicatorWidth = style->pixelMetric(QStyle::PM_IndicatorWidth, &opt);
+    const int indicatorHeight = style->pixelMetric(QStyle::PM_IndicatorHeight, &opt);
+    const int listViewIconSize = indicatorWidth;
+    const int pixmapWidth = indicatorWidth;
+    const int pixmapHeight = qMax(indicatorHeight, listViewIconSize);
+
+    opt.rect = QRect(0, 0, indicatorWidth, indicatorHeight);
+    QPixmap pixmap = QPixmap(pixmapWidth, pixmapHeight);
+    pixmap.fill(Qt::transparent);
+    {
+        // Center?
+        const int xoff = (pixmapWidth  > indicatorWidth)  ? (pixmapWidth  - indicatorWidth)  / 2 : 0;
+        const int yoff = (pixmapHeight > indicatorHeight) ? (pixmapHeight - indicatorHeight) / 2 : 0;
+        QPainter painter(&pixmap);
+        painter.translate(xoff, yoff);
+        style->drawPrimitive(QStyle::PE_IndicatorCheckBox, &opt, &painter);
+    }
+    return QIcon(pixmap);
+}
 
 class QtBoolPropertyManagerPrivate
 {
     QtBoolPropertyManager *q_ptr;
     Q_DECLARE_PUBLIC(QtBoolPropertyManager)
 public:
+    QtBoolPropertyManagerPrivate();
 
     QMap<const QtProperty *, bool> m_values;
+    const QIcon m_checkedIcon;
+    const QIcon m_uncheckedIcon;
 };
 
+QtBoolPropertyManagerPrivate::QtBoolPropertyManagerPrivate() :
+    m_checkedIcon(drawCheckBox(true)),
+    m_uncheckedIcon(drawCheckBox(false))
+{
+}
+
 /*!
     \class QtBoolPropertyManager
     \internal
@@ -1471,36 +1509,6 @@ QString QtBoolPropertyManager::valueText(const QtProperty *property) const
     return it.value() ? trueText : falseText;
 }
 
-// Return an icon containing a check box indicator
-static QIcon drawCheckBox(bool value)
-{
-    QStyleOptionButton opt;
-    opt.state |= value ? QStyle::State_On : QStyle::State_Off;
-    opt.state |= QStyle::State_Enabled;
-    const QStyle *style = QApplication::style();
-    // Figure out size of an indicator and make sure it is not scaled down in a list view item
-    // by making the pixmap as big as a list view icon and centering the indicator in it.
-    // (if it is smaller, it can't be helped)
-    const int indicatorWidth = style->pixelMetric(QStyle::PM_IndicatorWidth, &opt);
-    const int indicatorHeight = style->pixelMetric(QStyle::PM_IndicatorHeight, &opt);
-    const int listViewIconSize = indicatorWidth;
-    const int pixmapWidth = indicatorWidth;
-    const int pixmapHeight = qMax(indicatorHeight, listViewIconSize);
-
-    opt.rect = QRect(0, 0, indicatorWidth, indicatorHeight);
-    QPixmap pixmap = QPixmap(pixmapWidth, pixmapHeight);
-    pixmap.fill(Qt::transparent);
-    {
-        // Center?
-        const int xoff = (pixmapWidth  > indicatorWidth)  ? (pixmapWidth  - indicatorWidth)  / 2 : 0;
-        const int yoff = (pixmapHeight > indicatorHeight) ? (pixmapHeight - indicatorHeight) / 2 : 0;
-        QPainter painter(&pixmap);
-        painter.translate(xoff, yoff);
-        style->drawPrimitive(QStyle::PE_IndicatorCheckBox, &opt, &painter);
-    }
-    return QIcon(pixmap);
-}
-
 /*!
     \reimp
 */
@@ -1510,9 +1518,7 @@ QIcon QtBoolPropertyManager::valueIcon(const QtProperty *property) const
     if (it == d_ptr->m_values.constEnd())
         return QIcon();
 
-    static const QIcon checkedIcon = drawCheckBox(true);
-    static const QIcon uncheckedIcon = drawCheckBox(false);
-    return it.value() ? checkedIcon : uncheckedIcon;
+    return it.value() ? d_ptr->m_checkedIcon : d_ptr->m_uncheckedIcon;
 }
 
 /*!
@@ -6287,7 +6293,15 @@ void QtColorPropertyManager::uninitializeProperty(QtProperty *property)
 
 // QtCursorPropertyManager
 
-Q_GLOBAL_STATIC(QtCursorDatabase, cursorDatabase)
+// Make sure icons are removed as soon as QApplication is destroyed, otherwise,
+// handles are leaked on X11.
+static void clearCursorDatabase();
+Q_GLOBAL_STATIC_WITH_INITIALIZER(QtCursorDatabase, cursorDatabase, qAddPostRoutine(clearCursorDatabase))
+
+static void clearCursorDatabase()
+{
+    cursorDatabase()->clear();
+}
 
 class QtCursorPropertyManagerPrivate
 {
-- 
cgit v0.12


From de88b9663c01691c64e2677444aab5c1b806c4c2 Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Wed, 10 Feb 2010 12:12:00 +0200
Subject: Removed dependency to moc.exe from Symbian builds

Having dependency to moc.exe makes no sense since we cannot build it
anyway when building with Symbian toolchain.

Task-number: QTBUG-7836
Reviewed-by: Janne Koskinen
---
 mkspecs/features/moc.prf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index 42ce1bc..e4b7dae 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -97,7 +97,7 @@ equals(MOC_DIR, .) {
 }
 
 #auto depend on moc
-unix:!no_mocdepend {
+unix:!symbian:!no_mocdepend {
      moc_source.depends += $$first(QMAKE_MOC)
      moc_header.depends += $$first(QMAKE_MOC)
      !contains(TARGET, moc) { #auto build moc
-- 
cgit v0.12


From d7f8be6ec47bc8c241df95f7d13547a60362677b Mon Sep 17 00:00:00 2001
From: Thomas Zander <t.zander@nokia.com>
Date: Wed, 10 Feb 2010 11:24:27 +0100
Subject: Make compile

Reviewed-By: Alessandro Portale
---
 src/gui/text/qfontengine_s60.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gui/text/qfontengine_s60.cpp b/src/gui/text/qfontengine_s60.cpp
index 9dd4af7..3ea084b 100644
--- a/src/gui/text/qfontengine_s60.cpp
+++ b/src/gui/text/qfontengine_s60.cpp
@@ -44,7 +44,7 @@
 #include "qglobal.h"
 #include <private/qapplication_p.h>
 #include "qimage.h"
-#include "qt_s60_p.h"
+#include <private/qt_s60_p.h>
 
 #include <e32base.h>
 #include <e32std.h>
-- 
cgit v0.12


From 72b510e78973e47c31ae60070cb74b41f291b1ec Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Wed, 10 Feb 2010 12:18:39 +0100
Subject: Updated WebKit from /home/shausman/src/webkit/trunk to
 qtwebkit/qtwebkit-4.6 ( ffae5e11181a3961193fa21ea405851cad714d4b )

Changes in WebKit/qt since the last update:
*  https://bugs.webkit.org/show_bug.cgi?id=34170 -- [Qt] Javascript undefined > 0 returns true on Symbian
---
 src/3rdparty/webkit/JavaScriptCore/ChangeLog           | 13 +++++++++++++
 src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp |  4 ++++
 src/3rdparty/webkit/VERSION                            |  2 +-
 3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
index b943840..6446773 100644
--- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog
@@ -1,3 +1,16 @@
+2010-02-09  Janne Koskinen  <janne.p.koskinen@digia.com>
+
+        Reviewed by Laszlo Gombos.
+
+        [Qt] use nanval() for Symbian as nonInlineNaN
+        https://bugs.webkit.org/show_bug.cgi?id=34170
+
+        numeric_limits<double>::quiet_NaN is broken in Symbian
+        causing NaN to be evaluated as a number.
+
+        * runtime/JSValue.cpp:
+        (JSC::nonInlineNaN):
+
 2010-01-07  Norbert Leser  <norbert.leser@nokia.com>
 
         Reviewed by NOBODY (OOPS!).
diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
index 699c1cd..502312c 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
@@ -174,7 +174,11 @@ uint32_t toUInt32SlowCase(double d, bool& ok)
 
 NEVER_INLINE double nonInlineNaN()
 {
+#if OS(SYMBIAN)
+    return nanval();
+#else
     return std::numeric_limits<double>::quiet_NaN();
+#endif
 }
 
 } // namespace JSC
diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION
index 2b39e81..cc0e04f 100644
--- a/src/3rdparty/webkit/VERSION
+++ b/src/3rdparty/webkit/VERSION
@@ -8,4 +8,4 @@ The commit imported was from the
 
 and has the sha1 checksum
 
-        36fe058a9001e6d47f0fd41c6304cdfdf3a735ed
+        ffae5e11181a3961193fa21ea405851cad714d4b
-- 
cgit v0.12


From 64233a38fe5a1755a6426caf55eaf8abbd4187ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Wed, 10 Feb 2010 12:48:55 +0100
Subject: Clarify QFont::rawName() docs.

Task-number: related to QTBUG-8038
Reviewed-by: Kim
---
 src/gui/text/qfont.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index bbd35f1..dd9e69e 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -629,8 +629,9 @@ QFontEngineData::~QFontEngineData()
 
     Returns the name of the font within the underlying window system.
 
-    Only on X11 when Qt was built without FontConfig support the XLFD (X Logical Font Description)
-    is returned; otherwise an empty string.
+    On X11, this function will return an empty string if Qt is built with
+    FontConfig support; otherwise the XLFD (X Logical Font Description) is
+    returned.
 
     Using the return value of this function is usually \e not \e
     portable.
-- 
cgit v0.12


From 709a3a4b96f4cc483e63958494adbc5efdf6c57d Mon Sep 17 00:00:00 2001
From: Janne Anttila <janne.anttila@digia.com>
Date: Wed, 10 Feb 2010 14:08:17 +0200
Subject: License update as requested by legal for file relicensed from S60.

Rev-By: TrustMe
---
 src/3rdparty/s60/eiksoftkeyimage.h | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/src/3rdparty/s60/eiksoftkeyimage.h b/src/3rdparty/s60/eiksoftkeyimage.h
index 84f6108a..a658421 100644
--- a/src/3rdparty/s60/eiksoftkeyimage.h
+++ b/src/3rdparty/s60/eiksoftkeyimage.h
@@ -39,23 +39,6 @@
 **
 ****************************************************************************/
 
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  Changes cba button's label to image.
-*
-*/
-
 #ifndef EIKSOFTKEYIMAGE_H
 #define EIKSOFTKEYIMAGE_H
 
-- 
cgit v0.12


From f04f014835e9fd4c41e9113e8036ba71ff884ae9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Samuel=20R=C3=B8dal?= <sroedal@trolltech.com>
Date: Wed, 10 Feb 2010 13:11:01 +0100
Subject: Prevented assert when using drop shadow effect in the GL 2 engine.

The GL 2 pixmap filter uses Indexed8 images in the drop shadow case.

Reviewed-by: Tom Cooksey
---
 src/gui/image/qpixmapfilter.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp
index 7cf942c..2792e45 100644
--- a/src/gui/image/qpixmapfilter.cpp
+++ b/src/gui/image/qpixmapfilter.cpp
@@ -713,7 +713,8 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp
         radius *= qreal(0.5);
 
     Q_ASSERT(img.format() == QImage::Format_ARGB32_Premultiplied
-             || img.format() == QImage::Format_RGB32);
+             || img.format() == QImage::Format_RGB32
+             || img.format() == QImage::Format_Indexed8);
 
     // choose the alpha such that pixels at radius distance from a fully
     // saturated pixel will have an alpha component of no greater than
-- 
cgit v0.12


From 0d1e1f26cd9c29e960117e23c57a84055f1cc9e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Wed, 10 Feb 2010 13:26:21 +0100
Subject: Fixed drawing pixmaps onto bitmaps on X11 w/o Xrender support.

Task-number: QTBUG-8032
Reviewed-by: Kim
---
 src/gui/painting/qpaintengine_x11.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gui/painting/qpaintengine_x11.cpp b/src/gui/painting/qpaintengine_x11.cpp
index 147491e..da48fcb 100644
--- a/src/gui/painting/qpaintengine_x11.cpp
+++ b/src/gui/painting/qpaintengine_x11.cpp
@@ -1989,6 +1989,9 @@ void QX11PaintEngine::drawPixmap(const QRectF &r, const QPixmap &px, const QRect
         }
         XFillRectangle(d->dpy, d->hd, d->gc, x, y, sw, sh);
         restore_clip = true;
+    } else if (mono_dst && !mono_src) {
+        QBitmap bitmap(pixmap);
+        XCopyArea(d->dpy, bitmap.handle(), d->hd, d->gc, sx, sy, sw, sh, x, y);
     } else {
         XCopyArea(d->dpy, pixmap.handle(), d->hd, d->gc, sx, sy, sw, sh, x, y);
     }
-- 
cgit v0.12


From e950fad2ab8b0c93da176ce2f07a4d45a3185cb4 Mon Sep 17 00:00:00 2001
From: Pierre Rossi <pierre.rossi@nokia.com>
Date: Wed, 10 Feb 2010 14:00:57 +0100
Subject: Take into account the solaris-cc-64-stlport mkspec

Reviewed-by: Simon Hausmann
---
 src/corelib/arch/sparc/arch.pri | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/corelib/arch/sparc/arch.pri b/src/corelib/arch/sparc/arch.pri
index 3113dd3..9bb3a88 100644
--- a/src/corelib/arch/sparc/arch.pri
+++ b/src/corelib/arch/sparc/arch.pri
@@ -1,7 +1,7 @@
 #
 # SPARC architecture
 #
-*-64 {
+*-64* {
     SOURCES += $$QT_ARCH_CPP/qatomic64.s
 } 
 else {
-- 
cgit v0.12


From 0d27306664188a61571d31a38fec1d9040aae5f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Wed, 10 Feb 2010 14:19:08 +0100
Subject: Fixed drawing QPixmaps on QGLWidgets on different X11 screens.

Don't try to use the texture_from_pixmap extension when drawing a pixmap
from one X11 screen onto a different X11 screen in the GL 2 engine.
For that to work, the pixmap will have to be re-created on the new
screen, which is exactly what the default bind method does (via QImage
conversion).

Task-number: QTBUG-8054
Reviewed-by: Kim
---
 src/opengl/qgl.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index fce9fdb..0a89412 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -104,6 +104,10 @@ QT_BEGIN_NAMESPACE
 QGLExtensionFuncs QGLContextPrivate::qt_extensionFuncs;
 #endif
 
+#ifdef Q_WS_X11
+extern const QX11Info *qt_x11Info(const QPaintDevice *pd);
+#endif
+
 struct QGLThreadContext {
     QGLContext *context;
 };
@@ -2350,7 +2354,10 @@ QGLTexture *QGLContextPrivate::bindTexture(const QPixmap &pixmap, GLenum target,
 
 #if defined(Q_WS_X11)
     // Try to use texture_from_pixmap
-    if (pd->classId() == QPixmapData::X11Class && pd->pixelType() == QPixmapData::PixmapType) {
+    const QX11Info *xinfo = qt_x11Info(paintDevice);
+    if (pd->classId() == QPixmapData::X11Class && pd->pixelType() == QPixmapData::PixmapType
+        && xinfo && xinfo->screen() == pixmap.x11Info().screen())
+    {
         texture = bindTextureFromNativePixmap(pd, key, options);
         if (texture) {
             texture->options |= QGLContext::MemoryManagedBindOption;
-- 
cgit v0.12


From 358bbd707bb5e0ce255559e45f8dedb9e9243a9d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= <trond@trolltech.com>
Date: Wed, 10 Feb 2010 14:37:58 +0100
Subject: Fixed usage of QGLPixelBuffer with share widgets on other X11
 screens.

When trying to share the internal pbo context with a widget context, the
pbo context needs to be created on the same X11 screen as the widget
context.

Task-number: QTBUG-8047
Reviewed-by: Kim
---
 src/opengl/qglpixelbuffer_x11.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/opengl/qglpixelbuffer_x11.cpp b/src/opengl/qglpixelbuffer_x11.cpp
index 5b34cbb..32a42a2 100644
--- a/src/opengl/qglpixelbuffer_x11.cpp
+++ b/src/opengl/qglpixelbuffer_x11.cpp
@@ -181,7 +181,11 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge
 
     qt_format_to_attrib_list(f, attribs);
 
-    GLXFBConfig *configs = glXChooseFBConfig(X11->display, X11->defaultScreen, attribs, &num_configs);
+    int screen = X11->defaultScreen;
+    if (shareWidget)
+        screen = shareWidget->x11Info().screen();
+
+    GLXFBConfig *configs = glXChooseFBConfig(X11->display, screen, attribs, &num_configs);
     if (configs && num_configs) {
         int res;
         glXGetFBConfigAttrib(X11->display, configs[0], GLX_LEVEL, &res);
-- 
cgit v0.12


From 5ab191af20bf2b1fed2b8886ac247c2953087c14 Mon Sep 17 00:00:00 2001
From: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Date: Tue, 9 Feb 2010 12:33:52 +0100
Subject: Fixed compilation with QT_NO_WHEELEVENT

Reviewed-by: Prasanth
---
 src/gui/kernel/qapplication_mac.mm   | 6 ++++++
 src/gui/kernel/qapplication_p.h      | 2 ++
 src/gui/kernel/qapplication_x11.cpp  | 8 ++++++++
 src/gui/kernel/qcocoaview_mac.mm     | 3 +++
 src/gui/util/qsystemtrayicon_p.h     | 2 ++
 src/gui/util/qsystemtrayicon_x11.cpp | 2 ++
 src/gui/widgets/qabstractslider.cpp  | 6 +++++-
 src/gui/widgets/qabstractspinbox.h   | 2 ++
 src/gui/widgets/qcombobox.h          | 2 ++
 src/gui/widgets/qmenu.h              | 2 ++
 src/gui/widgets/qscrollbar.cpp       | 2 ++
 11 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm
index e8b821af..54a4901 100644
--- a/src/gui/kernel/qapplication_mac.mm
+++ b/src/gui/kernel/qapplication_mac.mm
@@ -2143,6 +2143,7 @@ QApplicationPrivate::globalEventProcessor(EventHandlerCallRef er, EventRef event
             }
 
             if (wheel_deltaX || wheel_deltaY) {
+#ifndef QT_NO_WHEELEVENT
                 if (wheel_deltaX) {
                     QWheelEvent qwe(plocal, p, wheel_deltaX, buttons, modifiers, Qt::Horizontal);
                     QApplication::sendSpontaneousEvent(widget, &qwe);
@@ -2165,6 +2166,7 @@ QApplicationPrivate::globalEventProcessor(EventHandlerCallRef er, EventRef event
                             handled_event = false;
                     }
                 }
+#endif // QT_NO_WHEELEVENT
             } else {
 #ifdef QMAC_SPEAK_TO_ME
                 const int speak_keys = Qt::AltModifier | Qt::ShiftModifier;
@@ -2717,6 +2719,7 @@ int QApplication::keyboardInputInterval()
     return QApplicationPrivate::keyboard_input_time;
 }
 
+#ifndef QT_NO_WHEELEVENT
 void QApplication::setWheelScrollLines(int n)
 {
     QApplicationPrivate::wheel_scroll_lines = n;
@@ -2726,6 +2729,7 @@ int QApplication::wheelScrollLines()
 {
     return QApplicationPrivate::wheel_scroll_lines;
 }
+#endif
 
 void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
 {
@@ -2888,9 +2892,11 @@ bool QApplicationPrivate::qt_mac_apply_settings()
                             QApplication::cursorFlashTime()).toInt();
         QApplication::setCursorFlashTime(num);
 
+#ifndef QT_NO_WHEELEVENT
         num = settings.value(QLatin1String("wheelScrollLines"),
                             QApplication::wheelScrollLines()).toInt();
         QApplication::setWheelScrollLines(num);
+#endif
 
         QString colorspec = settings.value(QLatin1String("colorSpec"),
                                             QVariant(QLatin1String("default"))).toString();
diff --git a/src/gui/kernel/qapplication_p.h b/src/gui/kernel/qapplication_p.h
index 9c001ab..b3ec732 100644
--- a/src/gui/kernel/qapplication_p.h
+++ b/src/gui/kernel/qapplication_p.h
@@ -427,7 +427,9 @@ public:
     static int  cursor_flash_time;
     static int  mouse_double_click_time;
     static int  keyboard_input_time;
+#ifndef QT_NO_WHEELEVENT
     static int  wheel_scroll_lines;
+#endif
 
     static bool animate_ui;
     static bool animate_menu;
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index 2a1f655..afd927b 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -944,10 +944,12 @@ bool QApplicationPrivate::x11_apply_settings()
                        QApplication::cursorFlashTime()).toInt();
     QApplication::setCursorFlashTime(num);
 
+#ifndef QT_NO_WHEELEVENT
     num =
         settings.value(QLatin1String("wheelScrollLines"),
                        QApplication::wheelScrollLines()).toInt();
     QApplication::setWheelScrollLines(num);
+#endif
 
     QString colorspec = settings.value(QLatin1String("colorSpec"),
                                        QVariant(QLatin1String("default"))).toString();
@@ -4401,8 +4403,10 @@ bool QETWidget::translateWheelEvent(int global_x, int global_y, int delta,
         QWidget* popup = qApp->activePopupWidget();
         if (popup && window() != popup)
             popup->close();
+#ifndef QT_NO_WHEELEVENT
         QWheelEvent e(pos, globalPos, delta, buttons, modifiers, orient);
         if (QApplication::sendSpontaneousEvent(widget, &e))
+#endif
             return true;
     }
 
@@ -4413,8 +4417,10 @@ bool QETWidget::translateWheelEvent(int global_x, int global_y, int delta,
         QWidget* popup = qApp->activePopupWidget();
         if (popup && widget != popup)
             popup->hide();
+#ifndef QT_NO_WHEELEVENT
         QWheelEvent e(pos, globalPos, delta, buttons, modifiers, orient);
         if (QApplication::sendSpontaneousEvent(widget, &e))
+#endif
             return true;
     }
     return false;
@@ -5313,6 +5319,7 @@ int QApplication::keyboardInputInterval()
     return QApplicationPrivate::keyboard_input_time;
 }
 
+#ifndef QT_NO_WHEELEVENT
 void QApplication::setWheelScrollLines(int n)
 {
     QApplicationPrivate::wheel_scroll_lines = n;
@@ -5322,6 +5329,7 @@ int QApplication::wheelScrollLines()
 {
     return QApplicationPrivate::wheel_scroll_lines;
 }
+#endif
 
 void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
 {
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 756cf92..ad64a91 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -828,6 +828,7 @@ extern "C" {
         deltaZ = qBound(-120, int([theEvent deltaZ] * 10000), 120);
     }
 
+#ifndef QT_NO_WHEELEVENT
     if (deltaX != 0) {
         QWheelEvent qwe(qlocal, qglobal, deltaX, buttons, keyMods, Qt::Horizontal);
         qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
@@ -868,6 +869,8 @@ extern "C" {
             wheelOK = qwe2.isAccepted();
         }
     }
+#endif //QT_NO_WHEELEVENT
+
     if (!wheelOK) {
         return [super scrollWheel:theEvent];
     }
diff --git a/src/gui/util/qsystemtrayicon_p.h b/src/gui/util/qsystemtrayicon_p.h
index b881f68..e8bf197 100644
--- a/src/gui/util/qsystemtrayicon_p.h
+++ b/src/gui/util/qsystemtrayicon_p.h
@@ -164,7 +164,9 @@ protected:
     bool x11Event(XEvent *event);
     void mousePressEvent(QMouseEvent *event);
     void mouseDoubleClickEvent(QMouseEvent *event);
+#ifndef QT_NO_WHEELEVENT
     void wheelEvent(QWheelEvent *event);
+#endif
     bool event(QEvent *e);
 
 private:
diff --git a/src/gui/util/qsystemtrayicon_x11.cpp b/src/gui/util/qsystemtrayicon_x11.cpp
index a645050..82b4325 100644
--- a/src/gui/util/qsystemtrayicon_x11.cpp
+++ b/src/gui/util/qsystemtrayicon_x11.cpp
@@ -308,10 +308,12 @@ void QSystemTrayIconSys::mouseDoubleClickEvent(QMouseEvent *ev)
         emit q->activated(QSystemTrayIcon::DoubleClick);
 }
 
+#ifndef QT_NO_WHEELEVENT
 void QSystemTrayIconSys::wheelEvent(QWheelEvent *e)
 {
     QApplication::sendEvent(q, e);
 }
+#endif
 
 bool QSystemTrayIconSys::event(QEvent *e)
 {
diff --git a/src/gui/widgets/qabstractslider.cpp b/src/gui/widgets/qabstractslider.cpp
index 73c17db..4bd7b5a 100644
--- a/src/gui/widgets/qabstractslider.cpp
+++ b/src/gui/widgets/qabstractslider.cpp
@@ -705,7 +705,11 @@ bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::Keyb
         // Calculate how many lines to scroll. Depending on what delta is (and 
         // offset), we might end up with a fraction (e.g. scroll 1.3 lines). We can
         // only scroll whole lines, so we keep the reminder until next event.
-        qreal stepsToScrollF = offset * QApplication::wheelScrollLines() * effectiveSingleStep();
+        qreal stepsToScrollF =
+#ifndef QT_NO_WHEELEVENT
+                QApplication::wheelScrollLines() *
+#endif
+                offset * effectiveSingleStep();
         // Check if wheel changed direction since last event:
         if (offset_accumulated != 0 && (offset / offset_accumulated) < 0)
             offset_accumulated = 0;
diff --git a/src/gui/widgets/qabstractspinbox.h b/src/gui/widgets/qabstractspinbox.h
index 059943a..6c062c0 100644
--- a/src/gui/widgets/qabstractspinbox.h
+++ b/src/gui/widgets/qabstractspinbox.h
@@ -137,7 +137,9 @@ protected:
     void resizeEvent(QResizeEvent *event);
     void keyPressEvent(QKeyEvent *event);
     void keyReleaseEvent(QKeyEvent *event);
+#ifndef QT_NO_WHEELEVENT
     void wheelEvent(QWheelEvent *event);
+#endif
     void focusInEvent(QFocusEvent *event);
     void focusOutEvent(QFocusEvent *event);
     void contextMenuEvent(QContextMenuEvent *event);
diff --git a/src/gui/widgets/qcombobox.h b/src/gui/widgets/qcombobox.h
index f332d31..9b19a66 100644
--- a/src/gui/widgets/qcombobox.h
+++ b/src/gui/widgets/qcombobox.h
@@ -245,7 +245,9 @@ protected:
     void mouseReleaseEvent(QMouseEvent *e);
     void keyPressEvent(QKeyEvent *e);
     void keyReleaseEvent(QKeyEvent *e);
+#ifndef QT_NO_WHEELEVENT
     void wheelEvent(QWheelEvent *e);
+#endif
     void contextMenuEvent(QContextMenuEvent *e);
     void inputMethodEvent(QInputMethodEvent *);
     QVariant inputMethodQuery(Qt::InputMethodQuery) const;
diff --git a/src/gui/widgets/qmenu.h b/src/gui/widgets/qmenu.h
index 5a6a5c7..47dff2b 100644
--- a/src/gui/widgets/qmenu.h
+++ b/src/gui/widgets/qmenu.h
@@ -162,7 +162,9 @@ protected:
     void mouseReleaseEvent(QMouseEvent *);
     void mousePressEvent(QMouseEvent *);
     void mouseMoveEvent(QMouseEvent *);
+#ifndef QT_NO_WHEELEVENT
     void wheelEvent(QWheelEvent *);
+#endif
     void enterEvent(QEvent *);
     void leaveEvent(QEvent *);
     void hideEvent(QHideEvent *);
diff --git a/src/gui/widgets/qscrollbar.cpp b/src/gui/widgets/qscrollbar.cpp
index 3eed3a9..4eff260 100644
--- a/src/gui/widgets/qscrollbar.cpp
+++ b/src/gui/widgets/qscrollbar.cpp
@@ -521,6 +521,7 @@ bool QScrollBar::event(QEvent *event)
     if (const QHoverEvent *he = static_cast<const QHoverEvent *>(event))
         d_func()->updateHoverControl(he->pos());
         break;
+#ifndef QT_NO_WHEELEVENT
     case QEvent::Wheel: {
         // override wheel event without adding virtual function override
         QWheelEvent *ev = static_cast<QWheelEvent *>(event);
@@ -537,6 +538,7 @@ bool QScrollBar::event(QEvent *event)
             event->accept();
         return true;
     }
+#endif
     default:
         break;
     }
-- 
cgit v0.12


From 620dd47c3b790b99f76793f4b4e6f22e3984558e Mon Sep 17 00:00:00 2001
From: Prasanth Ullattil <prasanth.ullattil@nokia.com>
Date: Wed, 10 Feb 2010 17:26:24 +0100
Subject: Blinking cursors are 2 pixels wide on Mac OS X/Cocoa.

Blinking cursors drawn in positions other than zero, can become 2 pixel
wide. This is caused by a rendering bug in the paint engine used by
Cocoa. If a fillRect() is called in a nox pixel boundary this engine
draws them 2 pixels wide instead of one. So make sure this is always on
a pixel boundary.

Task-number: QTBUG-8100
Reviewed-by: Trond
---
 src/gui/text/qtextlayout.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 26c7c1e..af91603 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1331,7 +1331,7 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition
     QTextLine l(line, d);
     const QScriptLine &sl = d->lines[line];
 
-    const qreal x = position.x() + l.cursorToX(cursorPosition);
+    qreal x = position.x() + l.cursorToX(cursorPosition);
 
     int itm = d->findItem(cursorPosition - 1);
     QFixed base = sl.base();
@@ -1350,6 +1350,10 @@ void QTextLayout::drawCursor(QPainter *p, const QPointF &pos, int cursorPosition
                               && (p->transform().type() > QTransform::TxTranslate);
     if (toggleAntialiasing)
         p->setRenderHint(QPainter::Antialiasing);
+#if defined(QT_MAC_USE_COCOA)
+    // Always draw the cursor aligned to pixel boundary.
+    x = qRound(x);
+#endif
     p->fillRect(QRectF(x, y, qreal(width), (base + descent + 1).toReal()), p->pen().brush());
     if (toggleAntialiasing)
         p->setRenderHint(QPainter::Antialiasing, false);
-- 
cgit v0.12


From 1407f3c1815addf6b9cac7503d38b670bbeab895 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Wed, 10 Feb 2010 17:39:59 +0100
Subject: Fix the WebKit build

It's PLATFORM(SYMBIAN) in 4.x, not OS() like in the trunk

Reviewed-by: Trust me
---
 src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
index 502312c..bafb85b 100644
--- a/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
+++ b/src/3rdparty/webkit/JavaScriptCore/runtime/JSValue.cpp
@@ -174,7 +174,7 @@ uint32_t toUInt32SlowCase(double d, bool& ok)
 
 NEVER_INLINE double nonInlineNaN()
 {
-#if OS(SYMBIAN)
+#if PLATFORM(SYMBIAN)
     return nanval();
 #else
     return std::numeric_limits<double>::quiet_NaN();
-- 
cgit v0.12


From 24239b56ab563a30facde3a5217536e7276f9bb8 Mon Sep 17 00:00:00 2001
From: Anders Bakken <anders.bakken@nokia.com>
Date: Mon, 14 Dec 2009 10:23:39 -0800
Subject: Export a function to get dfb-surface from a pixmap

This function is only exported when DirectFB is built as part of
libQtGui.

Reviewed-by: Jervey Kong <jervey.kong@nokia.com>
---
 src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
index f27440e..ba50329 100644
--- a/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
+++ b/src/plugins/gfxdrivers/directfb/qdirectfbpixmap.cpp
@@ -593,6 +593,17 @@ void QDirectFBPixmapData::invalidate()
     imageFormat = QImage::Format_Invalid;
 }
 
+#ifndef QT_DIRECTFB_PLUGIN
+Q_GUI_EXPORT IDirectFBSurface *qt_directfb_surface_for_pixmap(const QPixmap &pixmap)
+{
+    const QPixmapData *data = pixmap.pixmapData();
+    if (!data || data->classId() != QPixmapData::DirectFBClass)
+        return 0;
+    const QDirectFBPixmapData *dfbData = static_cast<const QDirectFBPixmapData*>(data);
+    return dfbData->directFBSurface();
+}
+#endif
+
 QT_END_NAMESPACE
 
 #endif // QT_NO_QWS_DIRECTFB
-- 
cgit v0.12


From f627b87822f92aaf060271ab16e64088df1be32e Mon Sep 17 00:00:00 2001
From: Iain <qt-info@nokia.com>
Date: Wed, 10 Feb 2010 23:27:17 +0100
Subject: Update Symbian DEF files

Reserve ordinal numbers in the WINSCW DEF file for EGL exports from QtGui
(now added, but marked as ABSENT)

Update OpenVG DEF files for EABI and WINSCW

Update QtGui DEF file for WINSCW with 2 non-EGL-related exports

Reviewed-by: TrustMe
---
 src/s60installs/bwins/QtGuiu.def    | 53 +++++++++++++++++++++++++++++++++++++
 src/s60installs/bwins/QtOpenVGu.def | 29 ++++++++++++++++++--
 src/s60installs/eabi/QtOpenVGu.def  | 23 ++++++++++++++++
 3 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index be7a6a0..4f30cb5 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -12548,4 +12548,57 @@ EXPORTS
 	?timerEvent@QS60Style@@MAEXPAVQTimerEvent@@@Z @ 12547 NONAME ; void QS60Style::timerEvent(class QTimerEvent *)
 	?updateAncestorFlags@QGraphicsItemPrivate@@QAEXXZ @ 12548 NONAME ; void QGraphicsItemPrivate::updateAncestorFlags(void)
 	?updateChildWithGraphicsEffectFlagRecursively@QGraphicsItemPrivate@@QAEXXZ @ 12549 NONAME ; void QGraphicsItemPrivate::updateChildWithGraphicsEffectFlagRecursively(void)
+	?isOpacityNull@QGraphicsItemPrivate@@SA_NM@Z @ 12550 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(float)
+	?isOpacityNull@QGraphicsItemPrivate@@QBE_NXZ @ 12551 NONAME ; bool QGraphicsItemPrivate::isOpacityNull(void) const
+	?api@QEglContext@@QBE?AW4API@QEgl@@XZ @ 12552 NONAME ABSENT ; enum QEgl::API QEglContext::api(void) const
+	?chooseConfig@QEglContext@@QAE_NABVQEglProperties@@W4PixelFormatMatch@QEgl@@@Z @ 12553 NONAME ABSENT ; bool QEglContext::chooseConfig(class QEglProperties const &, enum QEgl::PixelFormatMatch)
+	?destroySurface@QEglContext@@QAEXH@Z @ 12554 NONAME ABSENT ; void QEglContext::destroySurface(int)
+	?lazyDoneCurrent@QEglContext@@QAE_NXZ @ 12555 NONAME ABSENT ; bool QEglContext::lazyDoneCurrent(void)
+	?waitNative@QEglContext@@QAEXXZ @ 12556 NONAME ABSENT ; void QEglContext::waitNative(void)
+	?context@QEglContext@@QBEHXZ @ 12557 NONAME ABSENT ; int QEglContext::context(void) const
+	?configAttrib@QEglContext@@QBE_NHPAH@Z @ 12558 NONAME ABSENT ; bool QEglContext::configAttrib(int, int *) const
+	??0QEglProperties@@QAE@ABV0@@Z @ 12559 NONAME ABSENT ; QEglProperties::QEglProperties(class QEglProperties const &)
+	?config@QEglContext@@QBEHXZ @ 12560 NONAME ABSENT ; int QEglContext::config(void) const
+	?openDisplay@QEglContext@@QAE_NPAVQPaintDevice@@@Z @ 12561 NONAME ABSENT ; bool QEglContext::openDisplay(class QPaintDevice *)
+	?error@QEglContext@@SAHXZ @ 12562 NONAME ABSENT ; int QEglContext::error(void)
+	?swapBuffers@QEglContext@@QAE_NH@Z @ 12563 NONAME ABSENT ; bool QEglContext::swapBuffers(int)
+	?setApi@QEglContext@@QAEXW4API@QEgl@@@Z @ 12564 NONAME ABSENT ; void QEglContext::setApi(enum QEgl::API)
+	?makeCurrent@QEglContext@@QAE_NH@Z @ 12565 NONAME ABSENT ; bool QEglContext::makeCurrent(int)
+	?createSurface@QEglContext@@QAEHPAVQPaintDevice@@PBVQEglProperties@@@Z @ 12566 NONAME ABSENT ; int QEglContext::createSurface(class QPaintDevice *, class QEglProperties const *)
+	?dumpAllConfigs@QEglContext@@QAEXXZ @ 12567 NONAME ABSENT ; void QEglContext::dumpAllConfigs(void)
+	?reduceConfiguration@QEglProperties@@QAE_NXZ @ 12568 NONAME ABSENT ; bool QEglProperties::reduceConfiguration(void)
+	?removeValue@QEglProperties@@QAE_NH@Z @ 12569 NONAME ABSENT ; bool QEglProperties::removeValue(int)
+	?toString@QEglProperties@@QBE?AVQString@@XZ @ 12570 NONAME ABSENT ; class QString QEglProperties::toString(void) const
+	?dumpAllConfigs@QEglProperties@@SAXXZ @ 12571 NONAME ABSENT ; void QEglProperties::dumpAllConfigs(void)
+	?defaultDisplay@QEglContext@@SAHPAVQPaintDevice@@@Z @ 12572 NONAME ABSENT ; int QEglContext::defaultDisplay(class QPaintDevice *)
+	?configProperties@QEglContext@@QBE?AVQEglProperties@@H@Z @ 12573 NONAME ABSENT ; class QEglProperties QEglContext::configProperties(int) const
+	?properties@QEglProperties@@QBEPBHXZ @ 12574 NONAME ABSENT ; int const * QEglProperties::properties(void) const
+	??0QEglContext@@QAE@XZ @ 12575 NONAME ABSENT ; QEglContext::QEglContext(void)
+	??1QEglContext@@QAE@XZ @ 12576 NONAME ABSENT ; QEglContext::~QEglContext(void)
+	?isValid@QEglContext@@QBE_NXZ @ 12577 NONAME ABSENT ; bool QEglContext::isValid(void) const
+	?value@QEglProperties@@QBEHH@Z @ 12578 NONAME ABSENT ; int QEglProperties::value(int) const
+	?clearError@QEglContext@@SAXXZ @ 12579 NONAME ABSENT ; void QEglContext::clearError(void)
+	??0QEglProperties@@QAE@H@Z @ 12580 NONAME ABSENT ; QEglProperties::QEglProperties(int)
+	?setValue@QEglProperties@@QAEXHH@Z @ 12581 NONAME ABSENT ; void QEglProperties::setValue(int, int)
+	?setPaintDeviceFormat@QEglProperties@@QAEXPAVQPaintDevice@@@Z @ 12582 NONAME ABSENT ; void QEglProperties::setPaintDeviceFormat(class QPaintDevice *)
+	?destroy@QEglContext@@QAEXXZ @ 12583 NONAME ABSENT ; void QEglContext::destroy(void)
+	?setRenderableType@QEglProperties@@QAEXW4API@QEgl@@@Z @ 12584 NONAME ABSENT ; void QEglProperties::setRenderableType(enum QEgl::API)
+	?setContext@QEglContext@@QAEXH@Z @ 12585 NONAME ABSENT ; void QEglContext::setContext(int)
+	?waitClient@QEglContext@@QAEXXZ @ 12586 NONAME ABSENT ; void QEglContext::waitClient(void)
+	?isEmpty@QEglProperties@@QBE_NXZ @ 12587 NONAME ABSENT ; bool QEglProperties::isEmpty(void) const
+	?getDisplay@QEglContext@@CAHPAVQPaintDevice@@@Z @ 12588 NONAME ABSENT ; int QEglContext::getDisplay(class QPaintDevice *)
+	?isSharing@QEglContext@@QBE_NXZ @ 12589 NONAME ABSENT ; bool QEglContext::isSharing(void) const
+	?isCurrent@QEglContext@@QBE_NXZ @ 12590 NONAME ABSENT ; bool QEglContext::isCurrent(void) const
+	??0QEglProperties@@QAE@XZ @ 12591 NONAME ABSENT ; QEglProperties::QEglProperties(void)
+	?extensions@QEglContext@@SA?AVQString@@XZ @ 12592 NONAME ABSENT ; class QString QEglContext::extensions(void)
+	?setCurrentContext@QEglContext@@CAXW4API@QEgl@@PAV1@@Z @ 12593 NONAME ABSENT ; void QEglContext::setCurrentContext(enum QEgl::API, class QEglContext *)
+	??1QEglProperties@@QAE@XZ @ 12594 NONAME ABSENT ; QEglProperties::~QEglProperties(void)
+	?createContext@QEglContext@@QAE_NPAV1@PBVQEglProperties@@@Z @ 12595 NONAME ABSENT ; bool QEglContext::createContext(class QEglContext *, class QEglProperties const *)
+	?setConfig@QEglContext@@QAEXH@Z @ 12596 NONAME ABSENT ; void QEglContext::setConfig(int)
+	?hasExtension@QEglContext@@SA_NPBD@Z @ 12597 NONAME ABSENT ; bool QEglContext::hasExtension(char const *)
+	?doneCurrent@QEglContext@@QAE_NXZ @ 12598 NONAME ABSENT ; bool QEglContext::doneCurrent(void)
+	?display@QEglContext@@QBEHXZ @ 12599 NONAME ABSENT ; int QEglContext::display(void) const
+	?setPixelFormat@QEglProperties@@QAEXW4Format@QImage@@@Z @ 12600 NONAME ABSENT ; void QEglProperties::setPixelFormat(enum QImage::Format)
+	?currentContext@QEglContext@@CAPAV1@W4API@QEgl@@@Z @ 12601 NONAME ABSENT ; class QEglContext * QEglContext::currentContext(enum QEgl::API)
+	?errorString@QEglContext@@SA?AVQString@@H@Z @ 12602 NONAME ABSENT ; class QString QEglContext::errorString(int)
 
diff --git a/src/s60installs/bwins/QtOpenVGu.def b/src/s60installs/bwins/QtOpenVGu.def
index 88e724f..26ee862 100644
--- a/src/s60installs/bwins/QtOpenVGu.def
+++ b/src/s60installs/bwins/QtOpenVGu.def
@@ -48,7 +48,7 @@ EXPORTS
 	?paintEngine@QVGWindowSurface@@UBEPAVQPaintEngine@@XZ @ 47 NONAME ; class QPaintEngine * QVGWindowSurface::paintEngine(void) const
 	??0QVGPainterState@@QAE@XZ @ 48 NONAME ; QVGPainterState::QVGPainterState(void)
 	?d_func@QVGPaintEngine@@ABEPBVQVGPaintEnginePrivate@@XZ @ 49 NONAME ; class QVGPaintEnginePrivate const * QVGPaintEngine::d_func(void) const
-	?qt_vg_create_context@@YAPAVQEglContext@@PAVQPaintDevice@@@Z @ 50 NONAME ; class QEglContext * qt_vg_create_context(class QPaintDevice *)
+	?qt_vg_create_context@@YAPAVQEglContext@@PAVQPaintDevice@@@Z @ 50 NONAME ABSENT ; class QEglContext * qt_vg_create_context(class QPaintDevice *)
 	?clip@QVGPaintEngine@@UAEXABVQRegion@@W4ClipOperation@Qt@@@Z @ 51 NONAME ; void QVGPaintEngine::clip(class QRegion const &, enum Qt::ClipOperation)
 	?endNativePainting@QVGPaintEngine@@UAEXXZ @ 52 NONAME ; void QVGPaintEngine::endNativePainting(void)
 	?brushChanged@QVGPaintEngine@@UAEXXZ @ 53 NONAME ; void QVGPaintEngine::brushChanged(void)
@@ -78,7 +78,7 @@ EXPORTS
 	?beginPaint@QVGEGLWindowSurfaceVGImage@@UAEXPAVQWidget@@@Z @ 77 NONAME ; void QVGEGLWindowSurfaceVGImage::beginPaint(class QWidget *)
 	?createState@QVGPaintEngine@@UBEPAVQPainterState@@PAV2@@Z @ 78 NONAME ; class QPainterState * QVGPaintEngine::createState(class QPainterState *) const
 	?buffer@QVGPixmapData@@UAEPAVQImage@@XZ @ 79 NONAME ; class QImage * QVGPixmapData::buffer(void)
-	?qt_vg_destroy_context@@YAXPAVQEglContext@@@Z @ 80 NONAME ; void qt_vg_destroy_context(class QEglContext *)
+	?qt_vg_destroy_context@@YAXPAVQEglContext@@@Z @ 80 NONAME ABSENT ; void qt_vg_destroy_context(class QEglContext *)
 	?clip@QVGPaintEngine@@UAEXABVQVectorPath@@W4ClipOperation@Qt@@@Z @ 81 NONAME ; void QVGPaintEngine::clip(class QVectorPath const &, enum Qt::ClipOperation)
 	?drawPolygon@QVGPaintEngine@@UAEXPBVQPoint@@HW4PolygonDrawMode@QPaintEngine@@@Z @ 82 NONAME ; void QVGPaintEngine::drawPolygon(class QPoint const *, int, enum QPaintEngine::PolygonDrawMode)
 	?fromImage@QVGPixmapData@@UAEXABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 83 NONAME ; void QVGPixmapData::fromImage(class QImage const &, class QFlags<enum Qt::ImageConversionFlag>)
@@ -139,4 +139,29 @@ EXPORTS
 	??_EQVGPaintEngine@@UAE@I@Z @ 138 NONAME ; QVGPaintEngine::~QVGPaintEngine(unsigned int)
 	?clip@QVGPaintEngine@@UAEXABVQPainterPath@@W4ClipOperation@Qt@@@Z @ 139 NONAME ; void QVGPaintEngine::clip(class QPainterPath const &, enum Qt::ClipOperation)
 	?vgPrivate@QVGPaintEngine@@QAEPAVQVGPaintEnginePrivate@@XZ @ 140 NONAME ; class QVGPaintEnginePrivate * QVGPaintEngine::vgPrivate(void)
+	?removeFromLRU@QVGImagePool@@IAEXPAVQVGPixmapData@@@Z @ 141 NONAME ; void QVGImagePool::removeFromLRU(class QVGPixmapData *)
+	?releaseImage@QVGImagePool@@UAEXPAVQVGPixmapData@@K@Z @ 142 NONAME ; void QVGImagePool::releaseImage(class QVGPixmapData *, unsigned long)
+	?d_func@QVGImagePool@@AAEPAVQVGImagePoolPrivate@@XZ @ 143 NONAME ; class QVGImagePoolPrivate * QVGImagePool::d_func(void)
+	?detachImageFromPool@QVGPixmapData@@UAEXXZ @ 144 NONAME ; void QVGPixmapData::detachImageFromPool(void)
+	?createImageForPixmap@QVGImagePool@@UAEKW4VGImageFormat@@JJKPAVQVGPixmapData@@@Z @ 145 NONAME ; unsigned long QVGImagePool::createImageForPixmap(enum VGImageFormat, long, long, unsigned long, class QVGPixmapData *)
+	?destroyImageAndContext@QVGPixmapData@@IAEXXZ @ 146 NONAME ; void QVGPixmapData::destroyImageAndContext(void)
+	?moveToHeadOfLRU@QVGImagePool@@IAEXPAVQVGPixmapData@@@Z @ 147 NONAME ; void QVGImagePool::moveToHeadOfLRU(class QVGPixmapData *)
+	?instance@QVGImagePool@@SAPAV1@XZ @ 148 NONAME ; class QVGImagePool * QVGImagePool::instance(void)
+	?useImage@QVGImagePool@@UAEXPAVQVGPixmapData@@@Z @ 149 NONAME ; void QVGImagePool::useImage(class QVGPixmapData *)
+	??1QVGImagePool@@UAE@XZ @ 150 NONAME ; QVGImagePool::~QVGImagePool(void)
+	?destroyImages@QVGPixmapData@@IAEXXZ @ 151 NONAME ; void QVGPixmapData::destroyImages(void)
+	?reclaimSpace@QVGImagePool@@UAE_NW4VGImageFormat@@JJPAVQVGPixmapData@@@Z @ 152 NONAME ; bool QVGImagePool::reclaimSpace(enum VGImageFormat, long, long, class QVGPixmapData *)
+	?detachImage@QVGImagePool@@UAEXPAVQVGPixmapData@@@Z @ 153 NONAME ; void QVGImagePool::detachImage(class QVGPixmapData *)
+	?createPermanentImage@QVGImagePool@@UAEKW4VGImageFormat@@JJK@Z @ 154 NONAME ; unsigned long QVGImagePool::createPermanentImage(enum VGImageFormat, long, long, unsigned long)
+	?d_func@QVGImagePool@@ABEPBVQVGImagePoolPrivate@@XZ @ 155 NONAME ; class QVGImagePoolPrivate const * QVGImagePool::d_func(void) const
+	?createTemporaryImage@QVGImagePool@@UAEKW4VGImageFormat@@JJKPAVQVGPixmapData@@@Z @ 156 NONAME ; unsigned long QVGImagePool::createTemporaryImage(enum VGImageFormat, long, long, unsigned long, class QVGPixmapData *)
+	??_EQVGImagePool@@UAE@I@Z @ 157 NONAME ; QVGImagePool::~QVGImagePool(unsigned int)
+	?hibernate@QVGImagePool@@UAEXXZ @ 158 NONAME ; void QVGImagePool::hibernate(void)
+	?qt_vg_destroy_context@@YAXPAVQEglContext@@H@Z @ 159 NONAME ; void qt_vg_destroy_context(class QEglContext *, int)
+	??0QVGImagePool@@QAE@XZ @ 160 NONAME ; QVGImagePool::QVGImagePool(void)
+	?setImagePool@QVGImagePool@@SAXPAV1@@Z @ 161 NONAME ; void QVGImagePool::setImagePool(class QVGImagePool *)
+	?pixmapLRU@QVGImagePool@@IAEPAVQVGPixmapData@@XZ @ 162 NONAME ; class QVGPixmapData * QVGImagePool::pixmapLRU(void)
+	?qt_vg_create_context@@YAPAVQEglContext@@PAVQPaintDevice@@H@Z @ 163 NONAME ; class QEglContext * qt_vg_create_context(class QPaintDevice *, int)
+	?reclaimImages@QVGPixmapData@@UAEXXZ @ 164 NONAME ; void QVGPixmapData::reclaimImages(void)
+	?hibernate@QVGPixmapData@@UAEXXZ @ 165 NONAME ; void QVGPixmapData::hibernate(void)
 
diff --git a/src/s60installs/eabi/QtOpenVGu.def b/src/s60installs/eabi/QtOpenVGu.def
index 7526632..eb4caef 100644
--- a/src/s60installs/eabi/QtOpenVGu.def
+++ b/src/s60installs/eabi/QtOpenVGu.def
@@ -173,4 +173,27 @@ EXPORTS
 	_Z21qt_vg_destroy_contextP11QEglContexti @ 172 NONAME
 	_ZN13QVGPixmapData22destroyImageAndContextEv @ 173 NONAME
 	_ZN13QVGPixmapData9hibernateEv @ 174 NONAME
+	_ZN12QVGImagePool11detachImageEP13QVGPixmapData @ 175 NONAME
+	_ZN12QVGImagePool12reclaimSpaceE13VGImageFormatllP13QVGPixmapData @ 176 NONAME
+	_ZN12QVGImagePool12releaseImageEP13QVGPixmapDatam @ 177 NONAME
+	_ZN12QVGImagePool12setImagePoolEPS_ @ 178 NONAME
+	_ZN12QVGImagePool13removeFromLRUEP13QVGPixmapData @ 179 NONAME
+	_ZN12QVGImagePool15moveToHeadOfLRUEP13QVGPixmapData @ 180 NONAME
+	_ZN12QVGImagePool20createImageForPixmapE13VGImageFormatllmP13QVGPixmapData @ 181 NONAME
+	_ZN12QVGImagePool20createPermanentImageE13VGImageFormatllm @ 182 NONAME
+	_ZN12QVGImagePool20createTemporaryImageE13VGImageFormatllmP13QVGPixmapData @ 183 NONAME
+	_ZN12QVGImagePool8instanceEv @ 184 NONAME
+	_ZN12QVGImagePool8useImageEP13QVGPixmapData @ 185 NONAME
+	_ZN12QVGImagePool9hibernateEv @ 186 NONAME
+	_ZN12QVGImagePool9pixmapLRUEv @ 187 NONAME
+	_ZN12QVGImagePoolC1Ev @ 188 NONAME
+	_ZN12QVGImagePoolC2Ev @ 189 NONAME
+	_ZN12QVGImagePoolD0Ev @ 190 NONAME
+	_ZN12QVGImagePoolD1Ev @ 191 NONAME
+	_ZN12QVGImagePoolD2Ev @ 192 NONAME
+	_ZN13QVGPixmapData13destroyImagesEv @ 193 NONAME
+	_ZN13QVGPixmapData13reclaimImagesEv @ 194 NONAME
+	_ZN13QVGPixmapData19detachImageFromPoolEv @ 195 NONAME
+	_ZTI12QVGImagePool @ 196 NONAME
+	_ZTV12QVGImagePool @ 197 NONAME
 
-- 
cgit v0.12


From 84ef315a9ff6014056d7b6313cf9b1f8bdf06cdc Mon Sep 17 00:00:00 2001
From: Bill King <bill.king@nokia.com>
Date: Thu, 11 Feb 2010 10:29:13 +1000
Subject: Revert "(ODBC) Use wchar_t instead of assuming 2 bytes."

This reverts commit 4935ec52fc07d4aaa7ae594cfe9986e25ca62dcb.
---
 src/sql/drivers/odbc/qsql_odbc.cpp | 37 ++++++++++---------------------------
 1 file changed, 10 insertions(+), 27 deletions(-)

diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index 4d3663e..2049a76 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -144,7 +144,6 @@ public:
 
     QSqlRecord rInf;
     QVector<QVariant> fieldCache;
-    QVector<wchar_t *> paramCache;
     int fieldCacheIdx;
     int disconnectCount;
     bool hasSQLFetchScroll;
@@ -203,7 +202,7 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode
                 *nativeCode = nativeCode_;
             QString tmpstore;
 #ifdef UNICODE
-            tmpstore = QString::fromWCharArray((const wchar_t*)description_, msgLen);
+            tmpstore = QString((const QChar*)description_.data(), msgLen);
 #else
             tmpstore = QString::fromLocal8Bit((const char*)description_.data(), msgLen);
 #endif
@@ -333,7 +332,7 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
     } else {
         colSize++; // make sure there is room for more than the 0 termination
         if (unicode) {
-            colSize *= sizeof(wchar_t); // a tiny bit faster, since it saves a SQLGetData() call
+            colSize *= 2; // a tiny bit faster, since it saves a SQLGetData() call
         }
     }
     QVarLengthArray<char> buf(colSize);
@@ -354,9 +353,9 @@ static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool uni
             // contain the number of bytes returned - it contains the
             // total number of bytes that CAN be fetched
             // colSize-1: remove 0 termination when there is more data to fetch
-            int rSize = (r == SQL_SUCCESS_WITH_INFO) ? (unicode ? colSize-sizeof(wchar_t) : colSize-1) : lengthIndicator;
+            int rSize = (r == SQL_SUCCESS_WITH_INFO) ? (unicode ? colSize-2 : colSize-1) : lengthIndicator;
             if (unicode) {
-                fieldVal += QString::fromWCharArray((wchar_t*)buf.constData(), rSize / sizeof(wchar_t));
+                fieldVal += QString((const QChar*) buf.constData(), rSize / 2);
             } else {
                 fieldVal += QString::fromAscii(buf.constData(), rSize);
             }
@@ -552,7 +551,7 @@ static QSqlField qMakeFieldInfo(const QODBCPrivate* p, int i )
     }
 
 #ifdef UNICODE
-    QString qColName = QString::fromWCharArray((const wchar_t*)colName, colNameLen);
+    QString qColName((const QChar*)colName, colNameLen);
 #else
     QString qColName = QString::fromLocal8Bit((const char*)colName);
 #endif
@@ -1271,12 +1270,9 @@ bool QODBCResult::exec()
 
     // bind parameters - only positional binding allowed
     QVector<QVariant>& values = boundValues();
-    QVector<wchar_t *> wcharstorage;
-
     int i;
     SQLRETURN r;
     for (i = 0; i < values.count(); ++i) {
-        wcharstorage.append(NULL);
         if (bindValueType(i) & QSql::Out)
             values[i].detach();
         const QVariant &val = values.at(i);
@@ -1439,14 +1435,13 @@ bool QODBCResult::exec()
 #ifndef Q_ODBC_VERSION_2
                 if (d->unicode) {
                     QString str = val.toString();
-                    int strSize = str.length() * sizeof(wchar_t);
+                    str.utf16();
                     if (*ind != SQL_NULL_DATA)
-                        *ind = strSize;
+                        *ind = str.length() * sizeof(QChar);
+                    int strSize = str.length() * sizeof(QChar);
 
                     if (bindValueType(i) & QSql::Out) {
-                        wchar_t *temp=new wchar_t[str.capacity()*sizeof(wchar_t)];
-                        str.toWCharArray(temp);
-                        QByteArray ba((char*)temp, str.capacity() * sizeof(wchar_t));
+                        QByteArray ba((char*)str.constData(), str.capacity() * sizeof(QChar));
                         r = SQLBindParameter(d->hStmt,
                                             i + 1,
                                             qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],
@@ -1458,13 +1453,9 @@ bool QODBCResult::exec()
                                             ba.size(),
                                             ind);
                         tmpStorage.append(ba);
-                        wcharstorage.replace(i,temp);
                         break;
                     }
 
-                    wchar_t *temp=new wchar_t[(1+str.length())*sizeof(wchar_t)];
-                    str.toWCharArray(temp);
-                    temp[str.length()]=0;
                     r = SQLBindParameter(d->hStmt,
                                           i + 1,
                                           qParamType[(QFlag)(bindValueType(i)) & QSql::InOut],
@@ -1472,10 +1463,9 @@ bool QODBCResult::exec()
                                           strSize > 254 ? SQL_WLONGVARCHAR : SQL_WVARCHAR,
                                           strSize,
                                           0,
-                                          (void *)temp,
+                                          (void *)str.constData(),
                                           strSize,
                                           ind);
-                    wcharstorage.replace(i,temp);
                     break;
                 }
                 else
@@ -1525,13 +1515,6 @@ bool QODBCResult::exec()
         }
     }
     r = SQLExecute(d->hStmt);
-
-    for(int i=0;i<wcharstorage.size();i++)
-    {
-        if(wcharstorage.at(i))
-            delete [](wcharstorage.at(i));
-    }
-
     if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
         qWarning() << "QODBCResult::exec: Unable to execute statement:" << qODBCWarn(d);
         setLastError(qMakeError(QCoreApplication::translate("QODBCResult",
-- 
cgit v0.12


From e4344f9e2150e807bd8fb2c4405172869719b0db Mon Sep 17 00:00:00 2001
From: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
Date: Thu, 11 Feb 2010 10:10:54 +0100
Subject: now really fix the message editor for dark backgrounds

of course, the palette was also set to explicitly white ...

also remove the now obsolete transbox image.

Task-number: QTBUG-7778
---
 tools/linguist/linguist/images/transbox.png | Bin 782 -> 0 bytes
 tools/linguist/linguist/linguist.qrc        |   3 +--
 tools/linguist/linguist/messageeditor.cpp   |   8 +-------
 3 files changed, 2 insertions(+), 9 deletions(-)
 delete mode 100644 tools/linguist/linguist/images/transbox.png

diff --git a/tools/linguist/linguist/images/transbox.png b/tools/linguist/linguist/images/transbox.png
deleted file mode 100644
index 2d7219b..0000000
Binary files a/tools/linguist/linguist/images/transbox.png and /dev/null differ
diff --git a/tools/linguist/linguist/linguist.qrc b/tools/linguist/linguist/linguist.qrc
index a43f0ce..b70b9cd 100644
--- a/tools/linguist/linguist/linguist.qrc
+++ b/tools/linguist/linguist/linguist.qrc
@@ -1,5 +1,5 @@
 <RCC>
-    <qresource prefix="/" >
+    <qresource prefix="/">
         <file>images/appicon.png</file>
         <file>images/mac/accelerator.png</file>
         <file>images/mac/book.png</file>
@@ -28,7 +28,6 @@
         <file>images/s_check_on.png</file>
         <file>images/s_check_warning.png</file>
         <file>images/splash.png</file>
-        <file>images/transbox.png</file>
         <file>images/up.png</file>
         <file>images/down.png</file>
         <file>images/editdelete.png</file>
diff --git a/tools/linguist/linguist/messageeditor.cpp b/tools/linguist/linguist/messageeditor.cpp
index b6c1688..3848723 100644
--- a/tools/linguist/linguist/messageeditor.cpp
+++ b/tools/linguist/linguist/messageeditor.cpp
@@ -98,14 +98,8 @@ MessageEditor::MessageEditor(MultiDataModel *dataModel, QMainWindow *parent)
 {
     setObjectName(QLatin1String("scroll area"));
 
-    // Use white explicitly as the background color for the editor page.
     QPalette p;
-    p.setColor(QPalette::Active,   QPalette::Base,   Qt::white);
-    p.setColor(QPalette::Inactive, QPalette::Base,   Qt::white);
-    p.setColor(QPalette::Disabled, QPalette::Base,   Qt::white);
-    p.setColor(QPalette::Active,   QPalette::Window, Qt::white);
-    p.setColor(QPalette::Inactive, QPalette::Window, Qt::white);
-    p.setColor(QPalette::Disabled, QPalette::Window, Qt::white);
+    p.setBrush(QPalette::Window, p.brush(QPalette::Active, QPalette::Base));
     setPalette(p);
 
     setupEditorPage();
-- 
cgit v0.12


From 8a8e6d8f0b5368710174726a1c9c2379541899c4 Mon Sep 17 00:00:00 2001
From: Harald Fernengel <harald.fernengel@nokia.com>
Date: Thu, 11 Feb 2010 10:31:40 +0100
Subject: We need to export qBadAlloc() on all platforms

This supports the (documented) case when mixing Qt built without
exception support with code that was built against Qt with exception
support.

Reviewed-by: Robert Griebl
---
 src/corelib/global/qglobal.cpp | 2 --
 src/corelib/global/qglobal.h   | 3 ---
 2 files changed, 5 deletions(-)

diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index f48c1b3..c8f836a 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -1994,7 +1994,6 @@ void qt_check_pointer(const char *n, int l)
     qWarning("In file %s, line %d: Out of memory", n, l);
 }
 
-#ifndef QT_NO_EXCEPTIONS
 /* \internal
    Allows you to throw an exception without including <new>
    Called internally from Q_CHECK_PTR on certain OS combinations
@@ -2003,7 +2002,6 @@ void qBadAlloc()
 {
     QT_THROW(std::bad_alloc());
 }
-#endif
 
 /*
   The Q_ASSERT macro calls this function when the test fails.
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index abdafc3..f51849b 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -1674,10 +1674,7 @@ Q_CORE_EXPORT void qt_assert_x(const char *where, const char *what, const char *
 #endif
 
 Q_CORE_EXPORT void qt_check_pointer(const char *, int);
-
-#ifndef QT_NO_EXCEPTIONS
 Q_CORE_EXPORT void qBadAlloc();
-#endif
 
 #ifdef QT_NO_EXCEPTIONS
 #  if defined(QT_NO_DEBUG)
-- 
cgit v0.12


From eab121a9023eee10b49813161867011dc9fb9689 Mon Sep 17 00:00:00 2001
From: Peter Hartmann <peter.hartmann@nokia.com>
Date: Thu, 11 Feb 2010 10:58:05 +0100
Subject: QXmlSchema: fix crash in schema parser
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

previously, annotations were only supposed to appear within elements of
the form <element name="..."> ; However, they can also appear in
elements of the form <element ref="foo:bar">

Patch-by: Tobias König <tokoe@kde.org>
---
 src/xmlpatterns/schema/qxsdschemaparser.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/xmlpatterns/schema/qxsdschemaparser.cpp b/src/xmlpatterns/schema/qxsdschemaparser.cpp
index 6d878e8..6ed28af 100644
--- a/src/xmlpatterns/schema/qxsdschemaparser.cpp
+++ b/src/xmlpatterns/schema/qxsdschemaparser.cpp
@@ -4832,7 +4832,7 @@ XsdTerm::Ptr XsdSchemaParser::parseLocalElement(const XsdParticle::Ptr &particle
 
             if (isSchemaTag(XsdSchemaToken::Annotation, token, namespaceToken)) {
                 const XsdAnnotation::Ptr annotation = parseAnnotation();
-                element->addAnnotation(annotation);
+                term->addAnnotation(annotation);
             } else if (isSchemaTag(XsdSchemaToken::SimpleType, token, namespaceToken)) {
                 if (hasRefAttribute) {
                     error(QtXmlPatterns::tr("%1 element with %2 child element must not have a %3 attribute.")
-- 
cgit v0.12


From 232defa5d084386a9cdeb229cefee0a4a09bca85 Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Thu, 11 Feb 2010 13:21:57 +0100
Subject: QNAM HTTP: Set channel to IdleState at better place

The readyRead() from the expand() function called from allDone()
had a new request triggered for that channel even if it is not really
finished yet. Move the assignment to IdleState inside
allDone to avoid this error.

Reviewed-by: Andreas Kling
Reviewed-by: Peter Hartmann
---
 src/network/access/qhttpnetworkconnectionchannel.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 5bd972c..64969b0 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -286,7 +286,6 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
         if (!socket->bytesAvailable()) {
             if (reply && reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingDataState) {
                 reply->d_func()->state = QHttpNetworkReplyPrivate::AllDoneState;
-                this->state = QHttpNetworkConnectionChannel::IdleState;
                 allDone();
             } else {
                 // try to reconnect/resend before sending an error.
@@ -347,7 +346,6 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
                     emit reply->headerChanged();
                 if (!replyPrivate->expectContent()) {
                     replyPrivate->state = QHttpNetworkReplyPrivate::AllDoneState;
-                    this->state = QHttpNetworkConnectionChannel::IdleState;
                     allDone();
                     return;
                 }
@@ -424,7 +422,6 @@ void QHttpNetworkConnectionChannel::_q_receiveReply()
             // everything done, fall through
             }
       case QHttpNetworkReplyPrivate::AllDoneState:
-            this->state = QHttpNetworkConnectionChannel::IdleState;
             allDone();
             break;
         default:
@@ -570,6 +567,9 @@ void QHttpNetworkConnectionChannel::allDone()
     // in case of failures, each channel will attempt two reconnects before emitting error.
     reconnectAttempts = 2;
 
+    // now the channel can be seen as free/idle again, all signal emissions for the reply have been done
+    this->state = QHttpNetworkConnectionChannel::IdleState;
+
     detectPipeliningSupport();
 
     // move next from pipeline to current request
-- 
cgit v0.12


From 439626ffafae7d0480e66a6795df647fd32bbc64 Mon Sep 17 00:00:00 2001
From: Markus Goetz <Markus.Goetz@nokia.com>
Date: Thu, 11 Feb 2010 13:47:19 +0100
Subject: QNAM HTTP: Optimize detectPipeliningSupport()

Do cheap checks first.

Reviewed-by: TrustMe
---
 src/network/access/qhttpnetworkconnectionchannel.cpp | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 64969b0..b0e632a 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -610,19 +610,19 @@ void QHttpNetworkConnectionChannel::allDone()
 void QHttpNetworkConnectionChannel::detectPipeliningSupport()
 {
     // detect HTTP Pipelining support
-    QByteArray serverHeaderField = reply->headerField("Server");
+    QByteArray serverHeaderField;
     if (
-            // check for broken servers in server reply header
-            // this is adapted from http://mxr.mozilla.org/firefox/ident?i=SupportsPipelining
-            (!serverHeaderField.contains("Microsoft-IIS/4."))
-            && (!serverHeaderField.contains("Microsoft-IIS/5."))
-            && (!serverHeaderField.contains("Netscape-Enterprise/3."))
             // check for HTTP/1.1
-            && (reply->d_func()->majorVersion == 1 && reply->d_func()->minorVersion == 1)
+            (reply->d_func()->majorVersion == 1 && reply->d_func()->minorVersion == 1)
             // check for not having connection close
             && (!reply->d_func()->isConnectionCloseEnabled())
             // check if it is still connected
             && (socket->state() == QAbstractSocket::ConnectedState)
+            // check for broken servers in server reply header
+            // this is adapted from http://mxr.mozilla.org/firefox/ident?i=SupportsPipelining
+            && (serverHeaderField = reply->headerField("Server"), !serverHeaderField.contains("Microsoft-IIS/4."))
+            && (!serverHeaderField.contains("Microsoft-IIS/5."))
+            && (!serverHeaderField.contains("Netscape-Enterprise/3."))
             ) {
         pipeliningSupported = QHttpNetworkConnectionChannel::PipeliningProbablySupported;
     } else {
-- 
cgit v0.12


From 86d724590212825ba6db87da75117911880a30a8 Mon Sep 17 00:00:00 2001
From: Simon Hausmann <simon.hausmann@nokia.com>
Date: Thu, 11 Feb 2010 14:51:47 +0100
Subject: Revert WebCore.pro part of 2761e6f57ecd00c3435dbb8a6cf5f40653195d5d
 to build QtWebKit with THUMB again

This restores the library size and memory consumption.

Reviewed-by: Janne Koskinen
Reviewed-by: Iain
---
 src/3rdparty/webkit/WebCore/WebCore.pro | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro
index 7b0366d..c9b622a 100644
--- a/src/3rdparty/webkit/WebCore/WebCore.pro
+++ b/src/3rdparty/webkit/WebCore/WebCore.pro
@@ -26,9 +26,7 @@ symbian: {
 
     # RO text (code) section in qtwebkit.dll exceeds allocated space for gcce udeb target.
     # Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000.
-    MMP_RULES += "LINKEROPTION  armcc --rw-base 0xE00000"
-    MMP_RULES += ALWAYS_BUILD_AS_ARM
-    QMAKE_CXXFLAGS.ARMCC += -OTime -O3
+    QMAKE_LFLAGS.ARMCC += --rw-base 0xE00000
 }
 
 include($$PWD/../WebKit.pri)
-- 
cgit v0.12


From 898a85964830ac17e44675b75c6584866bcf767a Mon Sep 17 00:00:00 2001
From: Miikka Heikkinen <miikka.heikkinen@digia.com>
Date: Thu, 11 Feb 2010 16:37:24 +0200
Subject: Fixed the perl download link and description in docs

Old link was defunct as the version it pointed is no longer available.

Task-number: QTBUG-8134
Reviewed-by: TrustMe
---
 doc/src/getting-started/installation.qdoc | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/doc/src/getting-started/installation.qdoc b/doc/src/getting-started/installation.qdoc
index abdfcd2..561cc07 100644
--- a/doc/src/getting-started/installation.qdoc
+++ b/doc/src/getting-started/installation.qdoc
@@ -1023,9 +1023,11 @@ If you are using pre-built binaries, follow the instructions given in the
               See \l{http://pepper.troll.no/s60prereleases/patches/}{here} for instructions how to check your
               compiler version and how to patch it, if needed.
            \endlist
-        \o \l{http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.638-MSWin32-x86.msi}{ActivePerl v5.6.1 build 638}
+        \o \l{http://downloads.activestate.com/ActivePerl/releases}{ActivePerl 5.6.1 build 638 or higher}
            \list
-           \o \bold{Note:} According to Symbian, version 5.6.1 build 638 is mandatory. Using later versions may result in unexplained errors.
+           \o \bold{Note:} According to Symbian, version 5.6.1 build 638 is mandatory for building Symbian applications,
+              but that version is no longer available from ActiveState. However, Qt for Symbian has been successfully
+              compiled using both 5.8.x and 5.10.x versions.
            \endlist
         \o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/S60SDK/}{S60 Platform SDK 3rd Edition FP1 or higher}
            \list
-- 
cgit v0.12


From 70c3a4e3104da45ffb86b36dc2f4df7ee86e3b54 Mon Sep 17 00:00:00 2001
From: Volker Hilsheimer <volker.hilsheimer@nokia.com>
Date: Fri, 12 Feb 2010 10:18:36 +0100
Subject: Doc: remove \preliminary tag from public multimedia classes

---
 src/multimedia/video/qabstractvideobuffer.cpp  | 1 -
 src/multimedia/video/qabstractvideosurface.cpp | 1 -
 src/multimedia/video/qvideoframe.cpp           | 1 -
 src/multimedia/video/qvideosurfaceformat.cpp   | 1 -
 4 files changed, 4 deletions(-)

diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp
index 22b36f2..465a1e7 100644
--- a/src/multimedia/video/qabstractvideobuffer.cpp
+++ b/src/multimedia/video/qabstractvideobuffer.cpp
@@ -48,7 +48,6 @@ QT_BEGIN_NAMESPACE
 /*!
     \class QAbstractVideoBuffer
     \brief The QAbstractVideoBuffer class is an abstraction for video data.
-    \preliminary
     \since 4.6
 
     The QVideoFrame class makes use of a QAbstractVideoBuffer internally to reference a buffer of
diff --git a/src/multimedia/video/qabstractvideosurface.cpp b/src/multimedia/video/qabstractvideosurface.cpp
index 3f6bc08..3dabb6b 100644
--- a/src/multimedia/video/qabstractvideosurface.cpp
+++ b/src/multimedia/video/qabstractvideosurface.cpp
@@ -46,7 +46,6 @@ QT_BEGIN_NAMESPACE
 /*!
     \class QAbstractVideoSurface
     \brief The QAbstractVideoSurface class is a base class for video presentation surfaces.
-    \preliminary
     \since 4.6
 
     The QAbstractVideoSurface class defines the standard interface that video producers use to
diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp
index f10ce97..2d66d9e 100644
--- a/src/multimedia/video/qvideoframe.cpp
+++ b/src/multimedia/video/qvideoframe.cpp
@@ -102,7 +102,6 @@ private:
 /*!
     \class QVideoFrame
     \brief The QVideoFrame class provides a representation of a frame of video data.
-    \preliminary
     \since 4.6
 
     A QVideoFrame encapsulates the data of a video frame, and information about the frame.
diff --git a/src/multimedia/video/qvideosurfaceformat.cpp b/src/multimedia/video/qvideosurfaceformat.cpp
index 6b16e6a..1fc13a6 100644
--- a/src/multimedia/video/qvideosurfaceformat.cpp
+++ b/src/multimedia/video/qvideosurfaceformat.cpp
@@ -136,7 +136,6 @@ public:
     \class QVideoSurfaceFormat
     \brief The QVideoSurfaceFormat class specifies the stream format of a video presentation
     surface.
-    \preliminary
     \since 4.6
 
     A video surface presents a stream of video frames.  The surface's format describes the type of
-- 
cgit v0.12


From 826066dbe5f298ec0515d21fa182d15ee3762f37 Mon Sep 17 00:00:00 2001
From: Martin Smith <msmith@trolltech.com>
Date: Fri, 12 Feb 2010 10:50:57 +0100
Subject: doc:	Fixed several typos.

Task: QTBUG-7997
---
 doc/src/development/qmake-manual.qdoc        | 8 ++++----
 doc/src/development/qtestlib.qdoc            | 4 ++--
 doc/src/examples/googlesuggest.qdoc          | 2 +-
 doc/src/porting/porting4.qdoc                | 6 +++---
 doc/src/porting/qt4-network.qdoc             | 2 +-
 doc/src/scripting/scripting.qdoc             | 2 +-
 doc/src/snippets/code/doc_src_porting4.qdoc  | 2 +-
 doc/src/widgets-and-layouts/styles.qdoc      | 2 +-
 doc/src/widgets-and-layouts/stylesheet.qdoc  | 2 +-
 src/corelib/global/qnamespace.qdoc           | 6 +++---
 src/gui/graphicsview/qgraphicsitem.cpp       | 2 +-
 src/network/access/qnetworkaccessmanager.cpp | 2 +-
 12 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 49e1e71..78dfefa 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -858,7 +858,7 @@
     libraries are linked in the "Frameworks & Libraries" phase in the
     XCode build system.
 
-    Furthermore, The selected "Active Build Configuration" is stored
+    Furthermore, the selected "Active Build Configuration" is stored
     in a .pbxuser file, which is generated by xcode on first load, not
     created by qmake.
 
@@ -979,7 +979,7 @@
     If \c UID2 is not specified, it defaults to the same value as \c UID3.
     If \c UID3 is not specified, qmake will automatically generate a \c UID3
     suitable for development and debugging. This value should be manually
-    specified for applications that are to be released. In order to optain
+    specified for applications that are to be released. In order to obtain
     an official UID, please contact Nokia. Both \c SID and \c VID default to empty values.
 
     For more information about unique identifiers and their meaning for
@@ -3504,7 +3504,7 @@ For example:
     \target Properties
     \section1 Properties
 
-    \c qmake has a system of persistant information, this allows you to
+    \c qmake has a system of persistent information, this allows you to
     \c set a variable in qmake once, and each time qmake is invoked this
     value can be queried. Use the following to set a property in qmake:
 
@@ -3682,7 +3682,7 @@ For example:
     the newly introduced libraries in the \c LIBS variable, and find their
     dependent .prl files, continuing until all libraries have been resolved.
     At this point, the Makefile is created as usual, and the libraries are
-    linked explicitlyy against the application.
+    linked explicitly against the application.
 
     The internals of the .prl file are left closed so they can easily
     change later. They are not designed to be changed by hand, should only
diff --git a/doc/src/development/qtestlib.qdoc b/doc/src/development/qtestlib.qdoc
index 0835ff1..4b9c657 100644
--- a/doc/src/development/qtestlib.qdoc
+++ b/doc/src/development/qtestlib.qdoc
@@ -237,14 +237,14 @@
     
     The code insde the QBENCHMARK macro will be measured, and possibly also repeated
     several times in order to get an accurate measurement. This depends on the selected
-    measurement back-end. Several back-ends are available an can be selected on the
+    measurement back-end. Several back-ends are available. They can be selected on the
     command line:
     
     \target testlib-benchmarking-measurement
 
     \table
     \header \o Name
-         \o Commmand-line Arguemnt
+         \o Commmand-line Argument
          \o Availability
     \row \o Walltime
          \o (default)
diff --git a/doc/src/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc
index cd6c6b1..f2bdb4f 100644
--- a/doc/src/examples/googlesuggest.qdoc
+++ b/doc/src/examples/googlesuggest.qdoc
@@ -111,7 +111,7 @@
     event processing.
 
     Key event handling is implemented so that Enter and Return execute the
-    selected link, while the Escape key hides the popup. Sine we want to be
+    selected link, while the Escape key hides the popup. Since we want to be
     able to navigate the list of suggestions using the different navigation
     keys on the keyboard we let Qt continue regular event processing for those
     by returning false from the eventFilter reimplementation.
diff --git a/doc/src/porting/porting4.qdoc b/doc/src/porting/porting4.qdoc
index d494b0c..68e6119 100644
--- a/doc/src/porting/porting4.qdoc
+++ b/doc/src/porting/porting4.qdoc
@@ -3201,8 +3201,8 @@
 
     The \c QShared class has been obsoleted by the more powerful
     QSharedData and QSharedDataPointer as a means of creating custom
-    implicitly shared classes. It has been renamed Q3Shared moved to
-    the Qt3Support library.
+    implicitly shared classes. It has been renamed Q3Shared and moved
+    to the Qt3Support library.
 
     An easy way of porting to Qt 4 is to include this class into your
     project and to use it instead of \c QShared:
@@ -3226,7 +3226,7 @@
     \section1 QSimpleRichText
 
     QSimpleRichText has been obsoleted by QTextDocument. It has
-    bene renamed Q3SimpleRichText and moved to the Qt3Support
+    been renamed Q3SimpleRichText and moved to the Qt3Support
     library.
 
     Previously, you would do the following with Q3SimpleRichText:
diff --git a/doc/src/porting/qt4-network.qdoc b/doc/src/porting/qt4-network.qdoc
index 91c1c4e..60e6dbb 100644
--- a/doc/src/porting/qt4-network.qdoc
+++ b/doc/src/porting/qt4-network.qdoc
@@ -199,7 +199,7 @@
     level QNetworkProtocol and QUrlOperator abstraction has been
     eliminated. These classes attempted the impossible (unify FTP and
     HTTP under one roof), and unsurprisingly failed at that. Qt 4
-    still provides QFtp, and it also proveds the QNetworkAccessManager.
+    still provides QFtp, and it also provides the QNetworkAccessManager.
 
     The QSocket class in Qt 3 has been renamed QTcpSocket. The new
     class is reentrant and supports blocking. It's also easier to
diff --git a/doc/src/scripting/scripting.qdoc b/doc/src/scripting/scripting.qdoc
index edee52a..2c22989 100644
--- a/doc/src/scripting/scripting.qdoc
+++ b/doc/src/scripting/scripting.qdoc
@@ -1007,7 +1007,7 @@
   Because of the presence of the built-in \c arguments object,
   implementing functions that take a variable number of arguments
   is simple. In fact, as we have seen, in the technical sense \e{all}
-  Qt Script functions can be seen as variable-argument functions).
+  Qt Script functions can be seen as variable-argument functions.
   As an example, consider a concat() function that takes an arbitrary
   number of arguments, converts the arguments to their string
   representation and concatenates the results; for example,
diff --git a/doc/src/snippets/code/doc_src_porting4.qdoc b/doc/src/snippets/code/doc_src_porting4.qdoc
index 4d24ba3..2f76591 100644
--- a/doc/src/snippets/code/doc_src_porting4.qdoc
+++ b/doc/src/snippets/code/doc_src_porting4.qdoc
@@ -452,7 +452,7 @@ QSimpleRichText richText(text, font);
 // Set the width of the paragraph to w
 richText.setWidth(w);
 
-// Or set a resonable default size
+// Or set a reasonable default size
 richText.adjustSize();
 
 // Query for its used size
diff --git a/doc/src/widgets-and-layouts/styles.qdoc b/doc/src/widgets-and-layouts/styles.qdoc
index b7f7322..9a28715 100644
--- a/doc/src/widgets-and-layouts/styles.qdoc
+++ b/doc/src/widgets-and-layouts/styles.qdoc
@@ -125,7 +125,7 @@
     necessary for drawing. Thanks to QStyleOption, it is possible to make
     QStyle draw widgets without linking in any code for the widget. This
     makes it possible to use \l{QStyle}'s draw functions on any paint
-    device. Ie you can draw a combobox on any widget, not just on a
+    device, i.e., you can draw a combobox on any widget, not just on a
     QComboBox.
 
     The widget is passed as the last argument in case the style needs
diff --git a/doc/src/widgets-and-layouts/stylesheet.qdoc b/doc/src/widgets-and-layouts/stylesheet.qdoc
index ebe67df..5f42f28 100644
--- a/doc/src/widgets-and-layouts/stylesheet.qdoc
+++ b/doc/src/widgets-and-layouts/stylesheet.qdoc
@@ -3822,7 +3822,7 @@
     The tear indicator and the scroll buttons can be further customized as follows:
     \snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 148
 
-    Sine Qt 4.6 the close button can be customized as follow:
+    Since Qt 4.6 the close button can be customized as follow:
     \snippet doc/src/snippets/code/doc_src_stylesheet.qdoc 159
 
     \section2 Customizing QTableView
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 6627c76..392ece3 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -157,7 +157,7 @@
 
     \value AA_MacDontSwapCtrlAndMeta On Mac OS X by default, Qt swaps the
            Control and Meta (Command) keys (i.e., whenever Control is pressed, Qt
-           sends Meta and whenever Meta is pressed Control is sent. When this
+           sends Meta, and whenever Meta is pressed Control is sent). When this
            attribute is true, Qt will not do the flip. QKeySequence::StandardShortcuts
            will also flip accordingly (i.e., QKeySequence::Copy will be
            Command+C on the keyboard regardless of the value set, though what is output for
@@ -493,7 +493,7 @@
     \omitvalue WordBreak
     \omitvalue TextForceLeftToRight
     \omitvalue TextForceRightToLeft
-    \omitvalue TextLongestVariant Always use the longest variant when computing the size of a multi-variant string
+    \omitvalue TextLongestVariant Always use the longest variant when computing the size of a multi-variant string.
 
     You can use as many modifier flags as you want, except that
     Qt::TextSingleLine and Qt::TextWordWrap cannot be combined.
@@ -2115,7 +2115,7 @@
            On some platforms this implies Qt::WindowSystemMenuHint for it to work.
 
     \value MacWindowToolBarButtonHint On Mac OS X adds a tool bar button (i.e.,
-           the oblong button that is on the top right of windows that have toolbars.
+           the oblong button that is on the top right of windows that have toolbars).
 
     \value BypassGraphicsProxyWidget Prevents the window and its children from
            automatically embedding themselves into a QGraphicsProxyWidget if the
diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp
index 39c41c4..3cdf8ce 100644
--- a/src/gui/graphicsview/qgraphicsitem.cpp
+++ b/src/gui/graphicsview/qgraphicsitem.cpp
@@ -319,7 +319,7 @@
     QGraphicsItem::keyPressEvent() and QGraphicsItem::keyReleaseEvent().
 
     \value ItemClipsToShape The item clips to its own shape. The item cannot
-    draw or receive mouse, tablet, drag and drop or hover events outside ts
+    draw or receive mouse, tablet, drag and drop or hover events outside its
     shape. It is disabled by default. This behavior is enforced by
     QGraphicsView::drawItems() or QGraphicsScene::drawItems(). This flag was
     introduced in Qt 4.3.
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index e16aedc..0b32533 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -549,7 +549,7 @@ void QNetworkAccessManager::setCookieJar(QNetworkCookieJar *cookieJar)
 
 /*!
     Posts a request to obtain the network headers for \a request
-    and returns a new QNetworkReply object which will contain such headers
+    and returns a new QNetworkReply object which will contain such headers.
 
     The function is named after the HTTP request associated (HEAD).
 */
-- 
cgit v0.12


From 40bc32430551202ba519c4f0a95a341ea4547fb5 Mon Sep 17 00:00:00 2001
From: Janne Anttila <janne.anttila@digia.com>
Date: Fri, 12 Feb 2010 13:12:37 +0200
Subject: Fix to S60 softkeys when no active Qt window or native widget is
 shown.

Softkeys need to be updated also when Qt activewindow is set to NULL,
this is needed that usecase where last Qt widget is closed works
correctly. I.e. closed widget softkeys has to be removed, and replaced
by default "Exit" softkey. Earlier only window activation or widget
focusIn event caused softkey update.

In addition IsDisplayingMenuOrDialog does not work correctly under all
circumstances. Sometimes when menu is being launched the Qt gets
focusChanged event before the menu is actually shown, but menu CBA is
already created. This is fixed by checking that we update CBA only when
AppUi CB is the current one. This assumption works as long as Qt uses
only the CBA created by S60 application framwork and does not create
other CEikButtonGroupContainer instances.

Task-number: QTBUG-6115
Reviewed-by: Sami Merila
---
 src/gui/kernel/qsoftkeymanager_s60.cpp | 16 +++++++---------
 src/gui/kernel/qsoftkeymanager_s60_p.h |  1 -
 src/gui/kernel/qwidget.cpp             |  2 +-
 3 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/src/gui/kernel/qsoftkeymanager_s60.cpp b/src/gui/kernel/qsoftkeymanager_s60.cpp
index af84a8f..8ac1e31 100644
--- a/src/gui/kernel/qsoftkeymanager_s60.cpp
+++ b/src/gui/kernel/qsoftkeymanager_s60.cpp
@@ -66,17 +66,18 @@ QSoftKeyManagerPrivateS60::QSoftKeyManagerPrivateS60()
     cachedCbaIconSize[1] = QSize(0,0);
     cachedCbaIconSize[2] = QSize(0,0);
     cachedCbaIconSize[3] = QSize(0,0);
-    skipNextUpdate = false;
 }
 
 bool QSoftKeyManagerPrivateS60::skipCbaUpdate()
 {
-    // lets not update softkeys if
+    // Lets not update softkeys if
     // 1. We don't have application panes, i.e. cba
-    // 2. S60 native dialog or menu is shown
-    if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) ||
-        CCoeEnv::Static()->AppUi()->IsDisplayingMenuOrDialog() || skipNextUpdate) {
-        skipNextUpdate = false;
+    // 2. Our CBA is not active, i.e. S60 native dialog or menu with custom CBA is shown
+    // Note: Cannot use IsDisplayingMenuOrDialog since CBA update can be triggered before
+    // menu/dialog CBA is actually displayed i.e. it is being costructed.
+    CEikButtonGroupContainer *appUiCba = S60->buttonGroupContainer();
+    CEikButtonGroupContainer *currentCba = CEikButtonGroupContainer::Current();
+    if (QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) || appUiCba != currentCba) {
         return true;
     }
     return false;
@@ -384,9 +385,6 @@ bool QSoftKeyManagerPrivateS60::handleCommand(int command)
             }
             qt_symbian_next_menu_from_action(actionContainer);
             QT_TRAP_THROWING(S60->menuBar()->TryDisplayMenuBarL());
-            // TODO: hack remove, it can happen that IsDisplayingMenuOrDialog return false
-            // in updateSoftKeys_sys, and we will override menu CBA with our own
-            skipNextUpdate = true;
         } else {
             Q_ASSERT(action->softKeyRole() != QAction::NoSoftKey);
             QWidget *actionParent = action->parentWidget();
diff --git a/src/gui/kernel/qsoftkeymanager_s60_p.h b/src/gui/kernel/qsoftkeymanager_s60_p.h
index f8bd6d9..823a2db 100644
--- a/src/gui/kernel/qsoftkeymanager_s60_p.h
+++ b/src/gui/kernel/qsoftkeymanager_s60_p.h
@@ -98,7 +98,6 @@ private:
 private:
     QHash<int, QAction*> realSoftKeyActions;
     QSize cachedCbaIconSize[4];
-    bool skipNextUpdate;
 };
 
 
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 2a19d23..850e961 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -8271,7 +8271,7 @@ bool QWidget::event(QEvent *event)
         }
 
 #ifdef QT_SOFTKEYS_ENABLED
-        if (isWindow() && isActiveWindow())
+        if (isWindow())
             QSoftKeyManager::updateSoftKeys();
 #endif
 
-- 
cgit v0.12


From 4d1be3f07428651f3e366e4c09f26cff3b52d91f Mon Sep 17 00:00:00 2001
From: Shane Kearns <shane.kearns@accenture.com>
Date: Fri, 12 Feb 2010 13:59:37 +0100
Subject: Add make stub_sis target, and add webkit stub to qt.iby

qmake - add targets to wrapper make file
make stub_sis

createpackage - use -s or --stub to run makesis with the -s argument
also copies the file to the right place in epoc32\data\system\installs

qt.iby - add qt_stub.sis and qt_webkit_stub.sis

Task-number: QTBUG-6570
Reviewed-by: Miikka Heikkinen
---
 bin/createpackage.pl                        | 90 +++++++++++++++++------------
 doc/src/platforms/symbian-introduction.qdoc |  2 +
 qmake/generators/symbian/symmake.cpp        | 34 +++++++++--
 src/s60installs/qt.iby                      |  3 +-
 4 files changed, 86 insertions(+), 43 deletions(-)

diff --git a/bin/createpackage.pl b/bin/createpackage.pl
index 6d4614e..7f803fd 100755
--- a/bin/createpackage.pl
+++ b/bin/createpackage.pl
@@ -54,6 +54,8 @@ use Getopt::Long;
 use File::Basename;
 # Use File::Spec services mainly rel2abs
 use File::Spec;
+# Use File::Path - to make stub sis target directory
+use File::Path;
 # use CWD abs_bath, which is exported only on request
 use Cwd 'abs_path';
 
@@ -111,11 +113,13 @@ my $install = "";
 my $preprocessonly = "";
 my $certfile = "";
 my $preserveUnsigned = "";
+my $stub = "";
 
 unless (GetOptions('i|install' => \$install,
                    'p|preprocess' => \$preprocessonly,
                    'c|certfile=s' => \$certfile,
-                   'u|unsigned' => \$preserveUnsigned,)){
+                   'u|unsigned' => \$preserveUnsigned,
+                   's|stub' => \$stub,)){
     Usage();
 }
 
@@ -153,6 +157,7 @@ my $sisoutputbasename = lc($pkgoutputbasename);
 $sisoutputbasename =~ s/_$targetplatform//g;
 my $unsigned_sis_name = $sisoutputbasename."_unsigned.sis";
 my $signed_sis_name = $sisoutputbasename.".sis";
+my $stub_sis_name = $sisoutputbasename."_stub.sis";
 
 # Store some utility variables
 my $scriptpath = dirname(__FILE__);
@@ -256,48 +261,57 @@ if ($preprocessonly) {
     exit;
 }
 
-# Create SIS.
-system ("makesis $pkgoutput $unsigned_sis_name");
-
-# Sign SIS with certificate info given as an argument.
-system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphrase");
-
-# Check if creating signed SIS Succeeded
-stat($signed_sis_name);
-if( -e _ ) {
-    my $targetInsert = "";
-    if ($targetplatform ne "-") {
-        $targetInsert = "for $targetplatform ";
-    }
-    print ("\nSuccessfully created $signed_sis_name ${targetInsert}using certificate: $certtext!\n");
+if($stub) {
+    if(!($ENV{EPOCROOT})) { die("EPOCROOT must be set to create stub sis files"); }
+    my $systeminstall = "$ENV{EPOCROOT}epoc32/data/z/system/install";
+    mkpath($systeminstall);
+    my $stub_sis_name = $systeminstall."/".$stub_sis_name;
+    # Create stub SIS.
+    system ("makesis -s $pkgoutput $stub_sis_name");
+} else {
+    # Create SIS.
+    system ("makesis $pkgoutput $unsigned_sis_name");
+    print("\n");
+
+    # Sign SIS with certificate info given as an argument.
+    system ("signsis $unsigned_sis_name $signed_sis_name $certificate $key $passphrase");
+
+    # Check if creating signed SIS Succeeded
+    stat($signed_sis_name);
+    if( -e _ ) {
+        my $targetInsert = "";
+        if ($targetplatform ne "-") {
+            $targetInsert = "for $targetplatform ";
+        }
+        print ("Successfully created $signed_sis_name ${targetInsert}using certificate: $certtext!\n");
 
-    # Sign with additional certificates & keys
-    for my $row ( @certificates ) {
-        # Get certificate absolute file names, relative paths are relative to certfilepath
-        my $abscert = File::Spec->rel2abs( $row->[0], $certfilepath);
-        my $abskey = File::Spec->rel2abs( $row->[1], $certfilepath);
+        # Sign with additional certificates & keys
+        for my $row ( @certificates ) {
+            # Get certificate absolute file names, relative paths are relative to certfilepath
+            my $abscert = File::Spec->rel2abs( $row->[0], $certfilepath);
+            my $abskey = File::Spec->rel2abs( $row->[1], $certfilepath);
 
-        system ("signsis $signed_sis_name $signed_sis_name $abscert $abskey $row->[2]");
-        print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
-    }
+            system ("signsis $signed_sis_name $signed_sis_name $abscert $abskey $row->[2]");
+            print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
+        }
 
-    # remove temporary pkg and unsigned sis
-    if (!$preservePkgOutput) {
-        unlink $pkgoutput;
-    }
-    if (!$preserveUnsigned) {
-        unlink $unsigned_sis_name;
-    }
+        # remove temporary pkg and unsigned sis
+        if (!$preservePkgOutput) {
+            unlink $pkgoutput;
+        }
+        if (!$preserveUnsigned) {
+            unlink $unsigned_sis_name;
+        }
 
-    # Install the sis if requested
-    if ($install) {
-        print ("\nInstalling $signed_sis_name...\n");
-        system ("$signed_sis_name");
+        # Install the sis if requested
+        if ($install) {
+            print ("\nInstalling $signed_sis_name...\n");
+            system ("$signed_sis_name");
+        }
+    } else {
+        # Lets leave the generated PKG for problem solving purposes
+        print ("\nSIS creation failed!\n");
     }
-} else {
-    # Lets leave the generated PKG for problem solving purposes
-    print ("\nSIS creation failed!\n");
 }
 
-
 #end of file
diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc
index 5cebee3..591d6f1 100644
--- a/doc/src/platforms/symbian-introduction.qdoc
+++ b/doc/src/platforms/symbian-introduction.qdoc
@@ -132,6 +132,8 @@
                                 Smart installer will attempt to download
                                 missing dependencies in addition to
                                 just installing the application.
+    \row \o \c stub_sis      \o Create a stub sis to allow upgradability of projects
+                                that are deployed in ROM
     \endtable
 
     The following lines perform a debug build for the emulator
diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp
index 3ee3b3a..61988d3 100644
--- a/qmake/generators/symbian/symmake.cpp
+++ b/qmake/generators/symbian/symmake.cpp
@@ -88,8 +88,10 @@
 
 #define SIS_TARGET "sis"
 #define INSTALLER_SIS_TARGET "installer_sis"
+#define ROM_STUB_SIS_TARGET "stub_sis"
 #define OK_SIS_TARGET "ok_sis"
 #define OK_INSTALLER_SIS_TARGET "ok_installer_sis"
+#define OK_ROM_STUB_SIS_TARGET "ok_stub_sis"
 #define FAIL_SIS_NOPKG_TARGET "fail_sis_nopkg"
 #define FAIL_SIS_NOCACHE_TARGET "fail_sis_nocache"
 
@@ -1883,7 +1885,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
     t << endl;
 
     t << SIS_TARGET ":" << endl;
-    QString siscommand = QString("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
+    QString siscommand = QString::fromLatin1("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
                                   "$(MAKE) -s -f $(MAKEFILE) %4," \
                                   "$(if $(QT_SIS_TARGET),$(MAKE) -s -f $(MAKEFILE) %4," \
                                   "$(MAKE) -s -f $(MAKEFILE) %5))," \
@@ -1899,7 +1901,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
 
     t << OK_SIS_TARGET ":" << endl;
 
-    QString pkgcommand = QString("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
+    QString pkgcommand = QString::fromLatin1("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
                                  "$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
                           .arg(fixedTarget)
                           .arg("pkg");
@@ -1912,8 +1914,32 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
     t << sisName << ":" << endl;
     t << "\t$(MAKE) -s -f $(MAKEFILE) " SIS_TARGET << endl << endl;
 
+    t << ROM_STUB_SIS_TARGET ":" << endl;
+    QString stubsiscommand = QString::fromLatin1("\t$(if $(wildcard %1_template.%2),$(if $(wildcard %3)," \
+                                  "$(MAKE) -s -f $(MAKEFILE) %4," \
+                                  "$(if $(QT_SIS_TARGET),$(MAKE) -s -f $(MAKEFILE) %4," \
+                                  "$(MAKE) -s -f $(MAKEFILE) %5))," \
+                                  "$(MAKE) -s -f $(MAKEFILE) %6)")
+                          .arg(fixedTarget)
+                          .arg("pkg")
+                          .arg(MAKE_CACHE_NAME)
+                          .arg(OK_ROM_STUB_SIS_TARGET)
+                          .arg(FAIL_SIS_NOCACHE_TARGET)
+                          .arg(FAIL_SIS_NOPKG_TARGET);
+    t << stubsiscommand << endl;
+    t << endl;
+
+    t << OK_ROM_STUB_SIS_TARGET ":" << endl;
+
+    QString stubpkgcommand = QString::fromLatin1("\tcreatepackage.bat -s $(QT_SIS_OPTIONS) %1_template.%2 $(QT_SIS_TARGET) " \
+                                 "$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
+                          .arg(fixedTarget)
+                          .arg("pkg");
+    t << stubpkgcommand << endl;
+    t << endl;
+
     t << INSTALLER_SIS_TARGET ": " << sisName << endl;
-    siscommand = QString("\t$(if $(wildcard %1_installer.%2)," \
+    siscommand = QString::fromLatin1("\t$(if $(wildcard %1_installer.%2)," \
                                   "$(MAKE) -s -f $(MAKEFILE) %3," \
                                   "$(MAKE) -s -f $(MAKEFILE) %4)")
                           .arg(fixedTarget)
@@ -1925,7 +1951,7 @@ void SymbianMakefileGenerator::writeSisTargets(QTextStream &t)
 
     t << OK_INSTALLER_SIS_TARGET ": " << endl;
 
-    pkgcommand = QString("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_installer.%2 - " \
+    pkgcommand = QString::fromLatin1("\tcreatepackage.bat $(QT_SIS_OPTIONS) %1_installer.%2 - " \
                          "$(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE)")
                   .arg(fixedTarget)
                   .arg("pkg");
diff --git a/src/s60installs/qt.iby b/src/s60installs/qt.iby
index bdd668c..a6a96ec 100644
--- a/src/s60installs/qt.iby
+++ b/src/s60installs/qt.iby
@@ -113,6 +113,7 @@ data=\epoc32\data\z\resource\qt\plugins\phonon_backend\phonon_mmf.qtplugin resou
 data=\epoc32\data\z\resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin      resource\qt\plugins\graphicssystems\qvggraphicssystem.qtplugin
 
 // Stub sis file
-data=ZSYSTEM\install\qt.sis    System\Install\qt.sis
+data=ZSYSTEM\install\qt_stub.sis    System\Install\qt_stub.sis
+data=ZSYSTEM\install\qtwebkit_stub.sis    System\Install\qtwebkit_stub.sis
 
 #endif // __QT_IBY__
-- 
cgit v0.12


From 995afbfc2ca81960ca840f50b2a837938a4f1d52 Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Sun, 14 Feb 2010 12:16:00 +0200
Subject: Change a name of a variable to be more descriptive

Currently when calculating a button content size, QS60Style has a
variable called buttonWidth, which actually is the width of the
content, not the button itself. Change this to buttonContentWidth.

Reviewed-by: TrustMe
---
 src/gui/styles/qs60style.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 9025e5b..14e9b95 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -2559,11 +2559,11 @@ QRect QS60Style::subControlRect(ComplexControl control, const QStyleOptionComple
         if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(option)) {
             const int frameThickness = spinbox->frame ? pixelMetric(PM_SpinBoxFrameWidth, spinbox, widget) : 0;
             const int buttonMargin = spinbox->frame ? 2 : 0;
-            const int buttonWidth = QS60StylePrivate::pixelMetric(PM_ButtonIconSize) + 2 * buttonMargin;
+            const int buttonContentWidth = QS60StylePrivate::pixelMetric(PM_ButtonIconSize) + 2 * buttonMargin;
             QSize buttonSize;
             buttonSize.setHeight(qMax(8, spinbox->rect.height() - frameThickness));
             //width should at least be equal to height
-            buttonSize.setWidth(qMax(buttonSize.height(), buttonWidth));
+            buttonSize.setWidth(qMax(buttonSize.height(), buttonContentWidth));
             buttonSize = buttonSize.expandedTo(QApplication::globalStrut());
 
             const int y = frameThickness + spinbox->rect.y();
-- 
cgit v0.12


From 35f993eaa233f4729118eb796554b0ccce85b67e Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 08:46:25 +0200
Subject: Remove scrollbar context menu from QS60Style

Currently style does not forbid scrollbar context menu, so by default
long pressing over the scrollbar widget shows the context menu. This is
not according to 'S60-style', so from now on the stylehint
SH_ScrollBar_ContextMenu returns false.

Task-number: QTBUG-8194
Reviewed-by: Alessandro Portale
---
 src/gui/styles/qs60style.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 14e9b95..7372c3c 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -2481,6 +2481,9 @@ int QS60Style::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
         case SH_FormLayoutWrapPolicy:
             retValue = QFormLayout::WrapLongRows;
             break;
+        case SH_ScrollBar_ContextMenu:
+            retValue = false;
+            break;
         default:
             retValue = QCommonStyle::styleHint(sh, opt, widget, hret);
             break;
-- 
cgit v0.12


From b92b103d1b88760ff5b05163865593be6e937b07 Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 08:55:42 +0200
Subject: QS60Style draws drop area as a black rect

When Drag-n-Dropping elements in itemviews QS60Style draws drop area
as a black rect. Change this so that native graphics are used instead.
This change only affects touch-devices as non-touch 3.x devices
do not have the native graphics defined. In 3.x non-touch devices,
style still uses QCommonStyle to draw the DropArea.

Task-number: QTBUG-8193
Reviewed-by: Alessandro Portale
---
 src/gui/styles/qs60style.cpp     | 11 +++++++++--
 src/gui/styles/qs60style_p.h     |  2 ++
 src/gui/styles/qs60style_s60.cpp |  1 +
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 7372c3c..8f253cd 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -289,6 +289,9 @@ void QS60StylePrivate::drawSkinElement(SkinElements element, QPainter *painter,
     case SE_Editor:
         drawFrame(SF_FrameLineEdit, painter, rect, flags | SF_PointNorth);
         break;
+    case SE_DropArea:
+        drawPart(QS60StyleEnums::SP_QgnGrafOrgBgGrid, painter, rect, flags | SF_PointNorth);
+        break;
     default:
         break;
     }
@@ -2302,7 +2305,12 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
         break;
     case PE_PanelScrollAreaCorner:
         break;
-
+    case PE_IndicatorItemViewItemDrop:
+        if (QS60StylePrivate::isTouchSupported())
+            QS60StylePrivate::drawSkinElement(QS60StylePrivate::SE_DropArea, painter, option->rect, flags);
+        else
+            commonStyleDraws = true;
+        break;
         // todo: items are below with #ifdefs "just in case". in final version, remove all non-required cases
     case PE_FrameLineEdit:
     case PE_IndicatorDockWidgetResizeHandle:
@@ -2323,7 +2331,6 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
 #endif //QT_NO_TOOLBAR
 #ifndef QT_NO_COLUMNVIEW
     case PE_IndicatorColumnViewArrow:
-    case PE_IndicatorItemViewItemDrop:
 #endif //QT_NO_COLUMNVIEW
     case PE_FrameTabBarBase: // since tabs are in S60 always in navipane, let's use common style for tab base in Qt.
     default:
diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index eae2291..0119398 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -131,6 +131,7 @@ public:
         SP_QgnGrafBarFrameSideL,
         SP_QgnGrafBarFrameSideR,
         SP_QgnGrafBarProgress,
+        SP_QgnGrafOrgBgGrid
         SP_QgnGrafScrollArrowDown,
         SP_QgnGrafScrollArrowLeft,
         SP_QgnGrafScrollArrowRight,
@@ -428,6 +429,7 @@ public:
         SE_ScrollBarHandlePressedVertical,
         SE_ButtonInactive,
         SE_Editor,
+        SE_DropArea
     };
 
     enum SkinFrameElements {
diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index 872bc2b..e9b2da8 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -178,6 +178,7 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
     /* SP_QgnGrafBarFrameSideL */          {KAknsIIDQgnGrafBarFrameSideL,          EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarFrameSideR */          {KAknsIIDQgnGrafBarFrameSideR,          EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarProgress */            {KAknsIIDQgnGrafBarProgress,            EDrawIcon,   ES60_All,    -1,-1},
+    /* SP_QgnGrafOrgBgGrid */              {KAknsIIDQgnGrafOrgBgGrid,              EDrawIcon,   ES60_All,    -1,-1},   
     /* SP_QgnGrafScrollArrowDown */        {KAknsIIDQgnGrafScrollArrowDown,     EDrawGulIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafScrollArrowLeft */        {KAknsIIDQgnGrafScrollArrowLeft,     EDrawGulIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafScrollArrowRight */       {KAknsIIDQgnGrafScrollArrowRight,    EDrawGulIcon,   ES60_All,    -1,-1},
-- 
cgit v0.12


From a4fdbdca6d55fa9e569a446c0f161a72205a0a4e Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 08:58:54 +0200
Subject: Scroll bar handle/groove ends are squeezed (in nHD resolution)

QS60Style uses non-square area for scrollbar end graphics areas. It
then tries to scale the areas to make them look like native graphics
(and keeps the width-height ratio), thus squeezing them.

Change style so that scrollbar end areas are squares, just like in
native graphics they are.

Task-number: QTBUG-7996
Reviewed-by: Alessandro Portale
---
 src/gui/styles/qs60style.cpp | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index 8f253cd..dd1489f 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -847,15 +847,18 @@ QSize QS60StylePrivate::partSize(QS60StyleEnums::SkinParts part, SkinElementFlag
             result.setWidth(pixelMetric(PM_Custom_FrameCornerWidth));
             break;
 
-        case QS60StyleEnums::SP_QsnCpScrollHandleBottomPressed:
         case QS60StyleEnums::SP_QsnCpScrollHandleTopPressed:
-        case QS60StyleEnums::SP_QsnCpScrollHandleMiddlePressed:
         case QS60StyleEnums::SP_QsnCpScrollBgBottom:
-        case QS60StyleEnums::SP_QsnCpScrollBgMiddle:
         case QS60StyleEnums::SP_QsnCpScrollBgTop:
         case QS60StyleEnums::SP_QsnCpScrollHandleBottom:
-        case QS60StyleEnums::SP_QsnCpScrollHandleMiddle:
         case QS60StyleEnums::SP_QsnCpScrollHandleTop:
+        case QS60StyleEnums::SP_QsnCpScrollHandleBottomPressed:
+            result.setHeight(pixelMetric(QStyle::PM_ScrollBarExtent));
+            result.setWidth(pixelMetric(QStyle::PM_ScrollBarExtent));
+            break;
+        case QS60StyleEnums::SP_QsnCpScrollHandleMiddlePressed:
+        case QS60StyleEnums::SP_QsnCpScrollBgMiddle:
+        case QS60StyleEnums::SP_QsnCpScrollHandleMiddle:
             result.setHeight(pixelMetric(QStyle::PM_ScrollBarExtent));
             result.setWidth(pixelMetric(QStyle::PM_ScrollBarSliderMin));
             break;
-- 
cgit v0.12


From 12bbcde642ed81c574b8f8d7af1d15885e998582 Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 09:11:09 +0200
Subject: Compilation error fix: missing comma in enum list in QS60Style

Fix for QTBUG-8193 introduced a new enum value into s60style.
Unfortunately, the comma after the value didn't make it into the fix
itself. Adding the comma to allow compilation of style.

Task-number: QTBUG-8193
Reviewed-by: TrustMe
---
 src/gui/styles/qs60style_p.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gui/styles/qs60style_p.h b/src/gui/styles/qs60style_p.h
index 0119398..ea30b81 100644
--- a/src/gui/styles/qs60style_p.h
+++ b/src/gui/styles/qs60style_p.h
@@ -131,7 +131,7 @@ public:
         SP_QgnGrafBarFrameSideL,
         SP_QgnGrafBarFrameSideR,
         SP_QgnGrafBarProgress,
-        SP_QgnGrafOrgBgGrid
+        SP_QgnGrafOrgBgGrid,
         SP_QgnGrafScrollArrowDown,
         SP_QgnGrafScrollArrowLeft,
         SP_QgnGrafScrollArrowRight,
-- 
cgit v0.12


From 6e88bdd8012b54549a22e22da4c35215bbc67917 Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 09:13:38 +0200
Subject: QS60Style: Branch indicator in tree view is misplaced

Fix for QTBUG-7258 make itemview margins larger. This broke the
treeviews visually, as indicators are not shown in correct places.
Now, indocators are placed correctly for treeviews as well.

Task-number: QTBUG-7995
Reviewed-by: Alessandro Portale
---
 src/gui/styles/qs60style.cpp | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp
index dd1489f..ea7399f 100644
--- a/src/gui/styles/qs60style.cpp
+++ b/src/gui/styles/qs60style.cpp
@@ -2277,14 +2277,16 @@ void QS60Style::drawPrimitive(PrimitiveElement element, const QStyleOption *opti
                 QS60StyleEnums::SkinParts skinPart =
                         (option->state & State_Open) ? QS60StyleEnums::SP_QgnIndiHlColSuper : QS60StyleEnums::SP_QgnIndiHlExpSuper;
                 int minDimension = qMin(option->rect.width(), option->rect.height());
-                const int resizeValue = minDimension >> 1;
-                minDimension += resizeValue; // Adjust the icon bigger because of empty space in svg icon.
                 QRect iconRect(option->rect.topLeft(), QSize(minDimension, minDimension));
-                int verticalMagic(0);
-                // magic values for positioning svg icon.
-                if (option->rect.width() <= option->rect.height())
-                    verticalMagic = 3;
-                iconRect.translate(3, verticalMagic - resizeValue);
+				const int magicTweak = 3;
+                int resizeValue = minDimension >> 1;
+                if (!QS60StylePrivate::isTouchSupported()) {
+                    minDimension += resizeValue; // Adjust the icon bigger because of empty space in svg icon.
+                    iconRect.setSize(QSize(minDimension, minDimension));
+                    const int verticalMagic = (option->rect.width() <= option->rect.height()) ? magicTweak : 0;
+                    resizeValue = verticalMagic - resizeValue;
+                }
+                iconRect.translate(magicTweak, resizeValue);
                 QS60StylePrivate::drawSkinPart(skinPart, painter, iconRect, flags);
             }
         }
-- 
cgit v0.12


From 60db3752fbbf6453ae935798d149986fb64e0507 Mon Sep 17 00:00:00 2001
From: Sami Merila <sami.merila@nokia.com>
Date: Mon, 15 Feb 2010 11:45:02 +0200
Subject: Build break fix for QS60Style.

Very recent change for QS60Style breaks compilation of the style for
3.1. This is due to that style refers to a skin item ID that is not
existing on 3.1 environment. Fixed by referring to the skin ID with
its internal values.

Task-number: QTBUG-8193
Reviewed-by: TrustMe
---
 src/gui/styles/qs60style_s60.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp
index e9b2da8..d57b187 100644
--- a/src/gui/styles/qs60style_s60.cpp
+++ b/src/gui/styles/qs60style_s60.cpp
@@ -178,7 +178,8 @@ const partMapEntry QS60StyleModeSpecifics::m_partMap[] = {
     /* SP_QgnGrafBarFrameSideL */          {KAknsIIDQgnGrafBarFrameSideL,          EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarFrameSideR */          {KAknsIIDQgnGrafBarFrameSideR,          EDrawIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafBarProgress */            {KAknsIIDQgnGrafBarProgress,            EDrawIcon,   ES60_All,    -1,-1},
-    /* SP_QgnGrafOrgBgGrid */              {KAknsIIDQgnGrafOrgBgGrid,              EDrawIcon,   ES60_All,    -1,-1},   
+    // No drop area for 3.x non-touch devices
+    /* SP_QgnGrafOrgBgGrid */              {KAknsIIDNone,                          EDrawIcon,   ES60_3_X,    EAknsMajorGeneric ,0x1eba}, //KAknsIIDQgnGrafOrgBgGrid   
     /* SP_QgnGrafScrollArrowDown */        {KAknsIIDQgnGrafScrollArrowDown,     EDrawGulIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafScrollArrowLeft */        {KAknsIIDQgnGrafScrollArrowLeft,     EDrawGulIcon,   ES60_All,    -1,-1},
     /* SP_QgnGrafScrollArrowRight */       {KAknsIIDQgnGrafScrollArrowRight,    EDrawGulIcon,   ES60_All,    -1,-1},
-- 
cgit v0.12


From e024cc10a97b9518b2dd577175feb66258d7ac05 Mon Sep 17 00:00:00 2001
From: axis <qt-info@nokia.com>
Date: Mon, 15 Feb 2010 17:04:03 +0100
Subject: Fixed missing repaints on S60 3.1.

The bug happened when a paint event came in from Symbian, but the
painted area was bigger than the exposed rect being passed in by
Symbian. In these cases we would lose updates to the area outside.

Fixed by calling Draw() once more if we detect that we painted a
larger area to the backing store.

It is still a mystery why this worked on 5.0 though... :-P

AutoTest: QWidget passed
RevBy:    Jason Barron
Task:     QTBUG-8200
---
 src/gui/painting/qwindowsurface_s60.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp
index 6cbf3d9..028ec48 100644
--- a/src/gui/painting/qwindowsurface_s60.cpp
+++ b/src/gui/painting/qwindowsurface_s60.cpp
@@ -149,11 +149,19 @@ void QS60WindowSurface::flush(QWidget *widget, const QRegion &region, const QPoi
     Q_ASSERT(window);
     QTLWExtra *topExtra = window->d_func()->maybeTopData();
     Q_ASSERT(topExtra);
+    QRect qr = region.boundingRect();
     if (!topExtra->inExpose) {
         topExtra->inExpose = true; // Prevent DrawNow() from calling syncBackingStore() again
-        TRect tr = qt_QRect2TRect(region.boundingRect());
+        TRect tr = qt_QRect2TRect(qr);
         widget->winId()->DrawNow(tr);
         topExtra->inExpose = false;
+    } else {
+        // This handles the case when syncBackingStore updates content outside of the
+        // original drawing rectangle. This might happen if there are pending update()
+        // events at the same time as we get a Draw() from Symbian.
+        QRect drawRect = qt_TRect2QRect(widget->winId()->DrawableWindow()->GetDrawRect());
+        if (!drawRect.contains(qr))
+            widget->winId()->DrawDeferred();
     }
 }
 
-- 
cgit v0.12