From bff683416c73329eb91bdb0bc282f4022c9fec7e Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Fri, 8 Jul 2016 14:41:49 +0200 Subject: QDateTimeEditPrivate:: only ask for fieldInfo() if section index is real On construction, currentSectionIndex has the fake value FirstSectionIndex, which upsets fieldInfo(), leading to a qWarning(). Make interpret(), when deciding whether to delegate to base or handle the value itself, treat fake index value as an invalid state. Task-number: QTBUG-54654 Change-Id: I6d0f71874839abfafcbfaaa0018362288f32a3cd Reviewed-by: Andy Shaw --- src/widgets/widgets/qdatetimeedit.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 96a37197e9..98b0489dfc 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -2344,7 +2344,9 @@ void QDateTimeEditPrivate::interpret(EmitPolicy ep) const QValidator::State state = q->validate(tmp, pos); if (state != QValidator::Acceptable && correctionMode == QAbstractSpinBox::CorrectToPreviousValue - && (state == QValidator::Invalid || !(fieldInfo(currentSectionIndex) & AllowPartial))) { + && (state == QValidator::Invalid + || currentSectionIndex < 0 + || !(fieldInfo(currentSectionIndex) & AllowPartial))) { setValue(value, ep); updateTimeSpec(); } else { -- cgit v1.2.3 From 8356caea45cfd24bb11ab673f16f6761768e6811 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 10 Oct 2016 14:20:43 +0200 Subject: Fix QPixelFormat::typeInterpretation() for Format_RGB888 RGB888 is byte oriented like the RGBA8888 formats. Task-number: QTBUG-56250 Change-Id: Idbd496e4913e5d168decdd41557e28a71574a85b Reviewed-by: Laszlo Agocs --- src/gui/image/qimage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 17d3c02e36..856ba64204 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -5008,7 +5008,7 @@ static Q_CONSTEXPR QPixelFormat pixelformats[] = { /*ALPHA USAGE*/ QPixelFormat::IgnoresAlpha, /*ALPHA POSITION*/ QPixelFormat::AtBeginning, /*PREMULTIPLIED*/ QPixelFormat::NotPremultiplied, - /*INTERPRETATION*/ QPixelFormat::UnsignedInteger, + /*INTERPRETATION*/ QPixelFormat::UnsignedByte, /*BYTE ORDER*/ QPixelFormat::CurrentSystemEndian), //QImage::Format_RGB444: QPixelFormat(QPixelFormat::RGB, -- cgit v1.2.3 From 940ea856f0b5796b43d1053bc7549d50f9afd31c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 6 Oct 2016 18:58:23 +0200 Subject: QtSql: compile with GCC 7 GCC 7 warns about implicit fall-throughs now. Fix by adding the missing comments. Change-Id: I7383f47e690b6334ef69c9df745c2205247ca7d0 Reviewed-by: Thiago Macieira Reviewed-by: Mark Brand --- src/sql/kernel/qsqldriver.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index adaeb8c846..7ff89cd5dc 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -654,6 +654,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const break; } } + // fall through default: r = field.value().toString(); break; -- cgit v1.2.3 From 6d6074e04fa55a0e42c7d8970f6db1cc3913a26e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 9 Oct 2016 19:29:25 +0200 Subject: Plug leaks in tst_QXmlSimpleReader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The QXmlInputSource objects were allocated on the heap, but never deleted. Fix by allocating them on the stack instead. Change-Id: Ifd8bd41d778c0634b7a426bbd22a367dfce511c9 Reviewed-by: David Faure Reviewed-by: Jędrzej Nowacki --- tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp index dc5d776f6d..5fe693dd14 100644 --- a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp +++ b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp @@ -765,22 +765,22 @@ void tst_QXmlSimpleReader::dtdRecursionLimit() QVERIFY(file.open(QIODevice::ReadOnly)); QXmlSimpleReader xmlReader; { - QXmlInputSource *source = new QXmlInputSource(&file); + QXmlInputSource source(&file); TestHandler handler; xmlReader.setDeclHandler(&handler); xmlReader.setErrorHandler(&handler); - QVERIFY(!xmlReader.parse(source)); + QVERIFY(!xmlReader.parse(&source)); } file.close(); file.setFileName("xmldocs/1-levels-nested-dtd.xml"); QVERIFY(file.open(QIODevice::ReadOnly)); { - QXmlInputSource *source = new QXmlInputSource(&file); + QXmlInputSource source(&file); TestHandler handler; xmlReader.setDeclHandler(&handler); xmlReader.setErrorHandler(&handler); - QVERIFY(!xmlReader.parse(source)); + QVERIFY(!xmlReader.parse(&source)); // The error wasn't because of the recursion limit being reached, // it was because the document is not valid. QVERIFY(handler.recursionCount < 2); @@ -790,11 +790,11 @@ void tst_QXmlSimpleReader::dtdRecursionLimit() file.setFileName("xmldocs/internal-entity-polynomial-attribute.xml"); QVERIFY(file.open(QIODevice::ReadOnly)); { - QXmlInputSource *source = new QXmlInputSource(&file); + QXmlInputSource source(&file); TestHandler handler; xmlReader.setDeclHandler(&handler); xmlReader.setErrorHandler(&handler); - QVERIFY(!xmlReader.parse(source)); + QVERIFY(!xmlReader.parse(&source)); QCOMPARE(handler.recursionCount, 2); } } -- cgit v1.2.3 From 4e13abb9ebea4fda4af47124983b8600b5bf6a76 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 5 Oct 2016 15:45:24 +0200 Subject: Doc: Mention context menu related API in QWidget overview Change-Id: I357e3468694cc7e2af2f5e8d6dd28c16d2772192 Reviewed-by: Leena Miettinen --- src/widgets/kernel/qwidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index b2973349e5..a2920a6a8b 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -809,6 +809,10 @@ void QWidget::setAutoFillBackground(bool enabled) parentWidget(), window(), setParent(), winId(), find(), metric(). + \row \li Context menu \li + contextMenuPolicy, contextMenuEvent(), + customContextMenuRequested(), actions() + \row \li Interactive help \li setToolTip(), setWhatsThis() -- cgit v1.2.3 From f6498fd6776b08b6bd33395e3f716b6d5d79a8b8 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 30 Sep 2016 22:21:37 +0200 Subject: Plug more than 4k leaks in tst_QGraphicsView The vast majority is due to leaking styles in a data-driven test with almost 100 rows (scrollBarRanges()). Fix by creating the style into a QScopedPointer. The remaining ~500 leaks were due to leaked QGraphicsScenes. They had no parent, and QGraphicsView::addScene() does not adopt them. Fix those by passing the resp. view as their (QObject) parent. Change-Id: I4316798019114ea3d7504d72cd83d534a21149c0 Reviewed-by: Allan Sandfeld Jensen --- .../graphicsview/qgraphicsview/tst_qgraphicsview.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp index f5083795c7..da2606c160 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp @@ -2938,6 +2938,9 @@ void tst_QGraphicsView::scrollBarRanges() if (useStyledPanel && style == QStringLiteral("Macintosh") && platformName == QStringLiteral("cocoa")) QSKIP("Insignificant on OSX"); + + QScopedPointer stylePtr; + QGraphicsScene scene; QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing); @@ -2945,9 +2948,10 @@ void tst_QGraphicsView::scrollBarRanges() view.setFrameStyle(useStyledPanel ? QFrame::StyledPanel : QFrame::NoFrame); if (style == QString("motif")) - view.setStyle(new FauxMotifStyle); + stylePtr.reset(new FauxMotifStyle); else - view.setStyle(QStyleFactory::create(style)); + stylePtr.reset(QStyleFactory::create(style)); + view.setStyle(stylePtr.data()); view.setStyleSheet(" "); // enables style propagation ;-) int adjust = 0; @@ -3514,7 +3518,7 @@ void tst_QGraphicsView::task245469_itemsAtPointWithClip() static QGraphicsView *createSimpleViewAndScene() { QGraphicsView *view = new QGraphicsView; - QGraphicsScene *scene = new QGraphicsScene; + QGraphicsScene *scene = new QGraphicsScene(view); view->setScene(scene); view->setBackgroundBrush(Qt::blue); @@ -3642,7 +3646,7 @@ void tst_QGraphicsView::moveItemWhileScrolling() MoveItemScrollView() { setWindowFlags(Qt::X11BypassWindowManagerHint); - setScene(new QGraphicsScene(0, 0, 1000, 1000)); + setScene(new QGraphicsScene(0, 0, 1000, 1000, this)); rect = scene()->addRect(0, 0, 10, 10); rect->setPos(50, 50); rect->setPen(QPen(Qt::black, 0)); @@ -3708,7 +3712,7 @@ void tst_QGraphicsView::centerOnDirtyItem() toplevel.setWindowFlags(view.windowFlags() | Qt::WindowStaysOnTopHint); view.resize(200, 200); - QGraphicsScene *scene = new QGraphicsScene; + QGraphicsScene *scene = new QGraphicsScene(&view); view.setScene(scene); view.setSceneRect(-1000, -1000, 2000, 2000); -- cgit v1.2.3 From 9ad4157530e86a1bac7ab8ca50ba3ee9f839f536 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 10 Oct 2016 11:30:51 +0200 Subject: Fix gradient race condition / read-after-free A gradient table may be deallocated while in use because we don't keep track of references. To fix it we now reference count the cache entries. Task-number: QTBUG-14614 Change-Id: I772ebf565ccf41d476811ca9a51b721f10de8aeb Reviewed-by: Marc Mutz --- src/gui/painting/qdrawhelper_p.h | 2 ++ src/gui/painting/qpaintengine_raster.cpp | 51 ++++++++++++++++---------------- 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index d636eabe3f..1c6cd5db8a 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -329,6 +329,8 @@ struct QSpanData QGradientData gradient; QTextureData texture; }; + QExplicitlySharedDataPointer cachedGradient; + void init(QRasterBuffer *rb, const QRasterPaintEngine *pe); void setup(const QBrush &brush, int alpha, QPainter::CompositionMode compositionMode); diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 278d7bb99e..f87b052df2 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -4137,7 +4137,8 @@ void QRasterBuffer::flushToARGBImage(QImage *target) const class QGradientCache { - struct CacheInfo +public: + struct CacheInfo : public QSharedData { inline CacheInfo(QGradientStops s, int op, QGradient::InterpolationMode mode) : stops(qMove(s)), opacity(op), interpolationMode(mode) {} @@ -4148,12 +4149,9 @@ class QGradientCache QGradient::InterpolationMode interpolationMode; }; - typedef QMultiHash QGradientColorTableHash; - -public: - typedef QPair ColorBufferPair; + typedef QMultiHash > QGradientColorTableHash; - inline ColorBufferPair getBuffer(const QGradient &gradient, int opacity) { + inline QExplicitlySharedDataPointer getBuffer(const QGradient &gradient, int opacity) { quint64 hash_val = 0; const QGradientStops stops = gradient.stops(); @@ -4167,10 +4165,9 @@ public: return addCacheElement(hash_val, gradient, opacity); else { do { - const CacheInfo &cache_info = it.value(); - if (cache_info.stops == stops && cache_info.opacity == opacity && cache_info.interpolationMode == gradient.interpolationMode()) - return qMakePair(reinterpret_cast(cache_info.buffer32), - reinterpret_cast(cache_info.buffer64)); + const QExplicitlySharedDataPointer &cache_info = it.value(); + if (cache_info->stops == stops && cache_info->opacity == opacity && cache_info->interpolationMode == gradient.interpolationMode()) + return cache_info; ++it; } while (it != cache.constEnd() && it.key() == hash_val); // an exact match for these stops and opacity was not found, create new cache @@ -4184,18 +4181,16 @@ protected: inline void generateGradientColorTable(const QGradient& g, QRgba64 *colorTable, int size, int opacity) const; - ColorBufferPair addCacheElement(quint64 hash_val, const QGradient &gradient, int opacity) { + QExplicitlySharedDataPointer addCacheElement(quint64 hash_val, const QGradient &gradient, int opacity) { if (cache.size() == maxCacheSize()) { // may remove more than 1, but OK cache.erase(cache.begin() + (qrand() % maxCacheSize())); } - CacheInfo cache_entry(gradient.stops(), opacity, gradient.interpolationMode()); - generateGradientColorTable(gradient, cache_entry.buffer64, paletteSize(), opacity); + QExplicitlySharedDataPointer cache_entry(new CacheInfo (gradient.stops(), opacity, gradient.interpolationMode())); + generateGradientColorTable(gradient, cache_entry->buffer64, paletteSize(), opacity); for (int i = 0; i < GRADIENT_STOPTABLE_SIZE; ++i) - cache_entry.buffer32[i] = cache_entry.buffer64[i].toArgb32(); - CacheInfo &cache_value = cache.insert(hash_val, cache_entry).value(); - return qMakePair(reinterpret_cast(cache_value.buffer32), - reinterpret_cast(cache_value.buffer64)); + cache_entry->buffer32[i] = cache_entry->buffer64[i].toArgb32(); + return cache.insert(hash_val, cache_entry).value(); } QGradientColorTableHash cache; @@ -4414,6 +4409,7 @@ Q_GUI_EXPORT extern QImage qt_imageForBrush(int brushStyle, bool invert); void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode compositionMode) { Qt::BrushStyle brushStyle = qbrush_style(brush); + cachedGradient.reset(); switch (brushStyle) { case Qt::SolidPattern: { type = Solid; @@ -4430,9 +4426,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode const QLinearGradient *g = static_cast(brush.gradient()); gradient.alphaColor = !brush.isOpaque() || alpha != 256; - QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha); - gradient.colorTable64 = colorBuffers.second; - gradient.colorTable32 = colorBuffers.first; + QExplicitlySharedDataPointer cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha); + cachedGradient = cacheInfo; + gradient.colorTable32 = cacheInfo->buffer32; + gradient.colorTable64 = cacheInfo->buffer64; gradient.spread = g->spread(); @@ -4451,9 +4448,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode const QRadialGradient *g = static_cast(brush.gradient()); gradient.alphaColor = !brush.isOpaque() || alpha != 256; - QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha); - gradient.colorTable64 = colorBuffers.second; - gradient.colorTable32 = colorBuffers.first; + QExplicitlySharedDataPointer cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha); + cachedGradient = cacheInfo; + gradient.colorTable32 = cacheInfo->buffer32; + gradient.colorTable64 = cacheInfo->buffer64; gradient.spread = g->spread(); @@ -4476,9 +4474,10 @@ void QSpanData::setup(const QBrush &brush, int alpha, QPainter::CompositionMode const QConicalGradient *g = static_cast(brush.gradient()); gradient.alphaColor = !brush.isOpaque() || alpha != 256; - QGradientCache::ColorBufferPair colorBuffers = qt_gradient_cache()->getBuffer(*g, alpha); - gradient.colorTable64 = colorBuffers.second; - gradient.colorTable32 = colorBuffers.first; + QExplicitlySharedDataPointer cacheInfo = qt_gradient_cache()->getBuffer(*g, alpha); + cachedGradient = cacheInfo; + gradient.colorTable32 = cacheInfo->buffer32; + gradient.colorTable64 = cacheInfo->buffer64; gradient.spread = QGradient::RepeatSpread; -- cgit v1.2.3 From dafa7cc7b5bc35f06f63a78b8f29a7d71fc93f5d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 10 Oct 2016 20:34:54 +0200 Subject: QFileDialog: add missing break statements in switch in labelText() It is of course wrong to potentially return the text of the Cancel button if the text of the Accept role button was asked for. Found independently by GCC 7 and Coverity. Coverity-Id: 11150 Change-Id: Ie30f7875daee16a78eeff4b314ce17cbd7cd3aa8 Reviewed-by: Edward Welbourne --- src/widgets/dialogs/qfiledialog.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 3aa9052917..61f5f7b0d2 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -2042,10 +2042,12 @@ QString QFileDialog::labelText(DialogLabel label) const button = d->qFileDialogUi->buttonBox->button(QDialogButtonBox::Save); if (button) return button->text(); + break; case Reject: button = d->qFileDialogUi->buttonBox->button(QDialogButtonBox::Cancel); if (button) return button->text(); + break; } return QString(); } -- cgit v1.2.3 From eec2d5e68af7b65342e4e5a95e47481a483be67e Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sat, 8 Oct 2016 00:48:02 +0200 Subject: QCalendarWidget: fix a missing break statement GCC 7 warns about implicit fall-throughs, and here it looks like a break was indeed missing. It surely isn't catastrophic that the other update code is executed, too, but it's also useless. Turns out Coverity knew it all along... Coverity-Id: 11162 Change-Id: I88fc0174a66ec337b2d93c006e70be8d5f3bbc33 Reviewed-by: Edward Welbourne --- src/widgets/widgets/qcalendarwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 89cde851e5..3823b9c10f 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -2994,6 +2994,7 @@ bool QCalendarWidget::event(QEvent *event) switch (event->type()) { case QEvent::LayoutDirectionChange: d->updateButtonIcons(); + break; case QEvent::LocaleChange: d->m_model->setFirstColumnDay(locale().firstDayOfWeek()); d->cachedSizeHint = QSize(); -- cgit v1.2.3 From 2ecd95bbe907cc9199773bb7930f781058735e1c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 10 Oct 2016 20:47:40 +0200 Subject: QCalendarWidget: fix misleading if-else cascade in QCalendarDayValidator::text() By the time we hit the last else, its if condition is trivially true, so don't check it (but leave it as a comment). Consequently, remove the trailing (dead) return of a default- constructed QString. Coverity-Id: 62766 Change-Id: I47e1a49f40e6ec95d29c5052c78bfadb63af3b84 Reviewed-by: Edward Welbourne --- src/widgets/widgets/qcalendarwidget.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 3823b9c10f..7895dc04d9 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -205,10 +205,9 @@ QString QCalendarDayValidator::text(const QDate &date, int repeat) const return formatNumber(date.day(), 2); } else if (repeat == 3) { return m_locale.dayName(date.dayOfWeek(), QLocale::ShortFormat); - } else if (repeat >= 4) { + } else /* repeat >= 4 */ { return m_locale.dayName(date.dayOfWeek(), QLocale::LongFormat); } - return QString(); } ////////////////////////////////// -- cgit v1.2.3 From 1ab521e7f46ad4e3c925d4eececdf3a2ff8b493b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 11 Oct 2016 00:56:59 +0200 Subject: QFusionStyle: add missing break in switch in drawControl() The old code fell through into from the CE_RubberBand case into the CE_SizeGrip case if the cast of the the QStyleOption to a QStyleOptionRubberBand failed. Quite obviously, the drawing of a rubber band was requested by the caller, drawing a size grip instead must be considered a bug, regardless of any additional guards employed by the size grip case. So, fix by removing the conditional return in the success case and adding an unconditional break. The function ends after the switch, and all other cases also break instead of return, so consider the switch from return to break a contribution to the internal consistency of the function. Discovered independently by GCC 7 and Coverity. Coverity-Id: 11182 Change-Id: I2158f03b9eb018b952716ffa5e615c7b3cc49132 Reviewed-by: Friedemann Kleint Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/widgets/styles/qfusionstyle.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index e9e1f349c5..dcc99496e3 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -1077,8 +1077,8 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio painter->setPen(innerLine); painter->drawRoundedRect(option->rect.adjusted(1, 1, -2, -2), 1, 1); painter->restore(); - return; } + break; case CE_SizeGrip: painter->save(); { -- cgit v1.2.3 From c34c8a564ef029144db6d2be256de7e46f91199a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 10 Oct 2016 21:43:05 +0200 Subject: QComboBox: add missing break in switch in keyPressEvent() If the Key_Space case falls through, it does because !d->lineEdit, which makes the following case dead code, because it is guarded by the same condition. Fix by adding the break, which ensures that if those two cases ever diverge, the code stays working by intention, not chance. Independently discovered by GCC 7 and Coverity. Coverity-Id: 11157 Change-Id: Id14114b4157549d0f6fa036e8aa2bf0fa5a863cf Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/widgets/widgets/qcombobox.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 181671c493..450c27d573 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3160,6 +3160,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) showPopup(); return; } + break; case Qt::Key_Enter: case Qt::Key_Return: case Qt::Key_Escape: -- cgit v1.2.3 From afe5bcdbd1dbf8c8a229d75d16b614f5e645d32f Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 27 Sep 2016 11:25:10 +0200 Subject: tst_QWidget: Fix UB (invalid member access) in EnterTestMainDialog::eventFilter() Found by UBSan: tst_qwidget.cpp:10207:29: runtime error: member access within address 0x6060000e8880 which does not point to an object of type 'EnterTestModalDialog' 0x6060000e8880: note: object is of type 'QWidget' eb 00 80 45 10 4b 32 ab 11 2b 00 00 80 df 08 00 60 61 00 00 c0 4c 32 ab 11 2b 00 00 00 00 be be ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'QWidget' #0 0x6ca13f in EnterTestMainDialog::eventFilter(QObject*, QEvent*) tst_qwidget.cpp:10207 #1 0x2b11b8bc90c3 in QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) qcoreapplication.cpp:1081 #2 0x2b11a3c49b4a in QApplicationPrivate::notify_helper(QObject*, QEvent*) qapplication.cpp:3716 #3 0x2b11a3c8ec72 in QApplication::notify(QObject*, QEvent*) qapplication.cpp:3704 #4 0x2b11b8bccd0f in QCoreApplication::notifyInternal2(QObject*, QEvent*) qcoreapplication.cpp:988 #5 0x2b11aea5c34d in QCoreApplication::sendEvent(QObject*, QEvent*) qcoreapplication.h:231 #6 0x2b11aea5c34d in QGuiApplicationPrivate::_q_updateFocusObject(QObject*) qguiapplication.cpp:3690 #7 0x2b11aea61360 in QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) .moc/moc_qguiapplication.cpp:177 #8 0x2b11b8d1dc86 in QMetaObject::activate(QObject*, int, int, void**) qobject.cpp:3787 #9 0x2b11aea784a3 in QWindow::focusObjectChanged(QObject*) .moc/moc_qwindow.cpp:760 #10 0x2b11a3fb24f2 in QWidget::clearFocus() qwidget.cpp:6705 #11 0x2b11a3fc87b1 in QWidget::~QWidget() qwidget.cpp:1608 #12 0x2b11a526688c in QDialog::~QDialog() qdialog.cpp:352 #13 0x6c43e2 in EnterTestModalDialog::~EnterTestModalDialog() tst_qwidget.cpp:10160 #14 0x6c43e2 in EnterTestModalDialog::~EnterTestModalDialog() tst_qwidget.cpp:10160 #15 0x492be3 in EnterTestMainDialog::buttonPressed() tst_qwidget.cpp:10188 #16 0x492be3 in EnterTestMainDialog::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) .moc/tst_qwidget.moc:2056 #17 0x2b11b8d1dc86 in QMetaObject::activate(QObject*, int, int, void**) qobject.cpp:3787 #18 0x2b11a45cb833 in QAbstractButton::clicked(bool) .moc/moc_qabstractbutton.cpp:307 #19 0x2b11a45cd54b in QAbstractButtonPrivate::emitClicked() qabstractbutton.cpp:411 #20 0x2b11a45df73a in QAbstractButtonPrivate::click() qabstractbutton.cpp:404 [...] #41 0x6bb2cf in tst_QWidget::taskQTBUG_27643_enterEvents() tst_qwidget.cpp:10249 [...] Fix by checking the event type first, and accessing modal->button only if it's QEvent::Enter. Change-Id: I2c7df3a1f43ecbfe14741b5861729078a91a32d6 Reviewed-by: Friedemann Kleint --- tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp index e00e575c36..cc1aaa7d51 100644 --- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp +++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp @@ -10430,14 +10430,13 @@ public slots: bool eventFilter(QObject *o, QEvent *e) { - if (modal && modal->button && o == modal->button) { - switch (e->type()) { - case QEvent::Enter: + switch (e->type()) { + case QEvent::Enter: + if (modal && modal->button && o == modal->button) enters++; - break; - default: - break; - } + break; + default: + break; } return QDialog::eventFilter(o, e); } -- cgit v1.2.3 From eade394e993bb190bb71152ea0bd805beade6f59 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 6 Oct 2016 18:58:23 +0200 Subject: QtDBus: compile with GCC 7 GCC 7 warns about implicit fall-throughs now. Fix by adding the missing comments. Change-Id: I629fb3aced9296c81496f19f6ff78c7a5a12e991 Reviewed-by: Thiago Macieira --- src/dbus/qdbusabstractinterface.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp index d63a317612..d12a7d127e 100644 --- a/src/dbus/qdbusabstractinterface.cpp +++ b/src/dbus/qdbusabstractinterface.cpp @@ -755,18 +755,25 @@ QDBusMessage QDBusAbstractInterface::call(QDBus::CallMode mode, const QString &m switch (count) { case 8: argList.prepend(arg8); + // fall through case 7: argList.prepend(arg7); + // fall through case 6: argList.prepend(arg6); + // fall through case 5: argList.prepend(arg5); + // fall through case 4: argList.prepend(arg4); + // fall through case 3: argList.prepend(arg3); + // fall through case 2: argList.prepend(arg2); + // fall through case 1: argList.prepend(arg1); } @@ -813,18 +820,25 @@ QDBusPendingCall QDBusAbstractInterface::asyncCall(const QString &method, const switch (count) { case 8: argList.prepend(arg8); + // fall through case 7: argList.prepend(arg7); + // fall through case 6: argList.prepend(arg6); + // fall through case 5: argList.prepend(arg5); + // fall through case 4: argList.prepend(arg4); + // fall through case 3: argList.prepend(arg3); + // fall through case 2: argList.prepend(arg2); + // fall through case 1: argList.prepend(arg1); } -- cgit v1.2.3 From 0c8b5b9a0446fdd881bbceddbbe2afc9ec9f1a0b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 6 Oct 2016 18:58:23 +0200 Subject: QtOpenGl: compile with GCC 7 GCC 7 warns about implicit fall-throughs now. Fix by adding the missing comments. Change-Id: I081d4db07c7f2b30ee6344a166aaec34ac639ee5 Reviewed-by: Edward Welbourne Reviewed-by: Sean Harmer --- src/opengl/qgl.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index 652a498930..071c8d63cb 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -1287,14 +1287,19 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co switch (versionString[2].toLatin1()) { case '5': versionFlags |= QGLFormat::OpenGL_Version_1_5; + // fall through case '4': versionFlags |= QGLFormat::OpenGL_Version_1_4; + // fall through case '3': versionFlags |= QGLFormat::OpenGL_Version_1_3; + // fall through case '2': versionFlags |= QGLFormat::OpenGL_Version_1_2; + // fall through case '1': versionFlags |= QGLFormat::OpenGL_Version_1_1; + // fall through default: break; } @@ -1319,10 +1324,13 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co switch (versionString[2].toLatin1()) { case '3': versionFlags |= QGLFormat::OpenGL_Version_3_3; + // fall through case '2': versionFlags |= QGLFormat::OpenGL_Version_3_2; + // fall through case '1': versionFlags |= QGLFormat::OpenGL_Version_3_1; + // fall through case '0': break; default: @@ -1347,10 +1355,13 @@ QGLFormat::OpenGLVersionFlags Q_AUTOTEST_EXPORT qOpenGLVersionFlagsFromString(co switch (versionString[2].toLatin1()) { case '3': versionFlags |= QGLFormat::OpenGL_Version_4_3; + // fall through case '2': versionFlags |= QGLFormat::OpenGL_Version_4_2; + // fall through case '1': versionFlags |= QGLFormat::OpenGL_Version_4_1; + // fall through case '0': break; default: -- cgit v1.2.3 From 77372e0b66393c1f9673e41418683c96a361dfe4 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 6 Oct 2016 18:58:23 +0200 Subject: harfbuzz: compile with GCC 7 GCC 7 warns about implicit fall-throughs now. Fix by adding the missing comment. Didn't send a patch to upstream, because upstream harfbuzz-old hasn't seen a commit in four years, and this code is no longer in harfbuzz-ng. Change-Id: Ic97efbe01edd37738dcdf43528e82511197d7fb2 Reviewed-by: Konstantin Ritt --- src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp index f7a4195308..c234f19918 100644 --- a/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp +++ b/src/3rdparty/harfbuzz/src/harfbuzz-shaper.cpp @@ -156,12 +156,14 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast) // ### wrong in rtl context! case HB_Combining_BelowLeft: p.y += offset; + // fall through case HB_Combining_BelowLeftAttached: p.x += attachmentRect.x - markMetrics.x; p.y += (attachmentRect.y + attachmentRect.height) - markMetrics.y; break; case HB_Combining_Below: p.y += offset; + // fall through case HB_Combining_BelowAttached: p.x += attachmentRect.x - markMetrics.x; p.y += (attachmentRect.y + attachmentRect.height) - markMetrics.y; @@ -170,28 +172,33 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast) break; case HB_Combining_BelowRight: p.y += offset; + // fall through case HB_Combining_BelowRightAttached: p.x += attachmentRect.x + attachmentRect.width - markMetrics.width - markMetrics.x; p.y += attachmentRect.y + attachmentRect.height - markMetrics.y; break; case HB_Combining_Left: p.x -= offset; + // fall through case HB_Combining_LeftAttached: break; case HB_Combining_Right: p.x += offset; + // fall through case HB_Combining_RightAttached: break; case HB_Combining_DoubleAbove: // ### wrong in RTL context! case HB_Combining_AboveLeft: p.y -= offset; + // fall through case HB_Combining_AboveLeftAttached: p.x += attachmentRect.x - markMetrics.x; p.y += attachmentRect.y - markMetrics.y - markMetrics.height; break; case HB_Combining_Above: p.y -= offset; + // fall through case HB_Combining_AboveAttached: p.x += attachmentRect.x - markMetrics.x; p.y += attachmentRect.y - markMetrics.y - markMetrics.height; @@ -200,6 +207,7 @@ static inline void positionCluster(HB_ShaperItem *item, int gfrom, int glast) break; case HB_Combining_AboveRight: p.y -= offset; + // fall through case HB_Combining_AboveRightAttached: p.x += attachmentRect.x + attachmentRect.width - markMetrics.x - markMetrics.width; p.y += attachmentRect.y - markMetrics.y - markMetrics.height; -- cgit v1.2.3 From 00304a3d57b9ba33b6a253b8736cf7e15aeac5c3 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 12 Oct 2016 09:50:42 +0200 Subject: Blacklist tst_MacNativeEvents::testMouseEnter It is already blacklisted for 10.8 and 10.9, and is now failing on 10.11 blocking integration. Change-Id: I71b8119ab32ec64096bfc53d5e521714ad4ae11b Reviewed-by: Lars Knoll --- tests/auto/other/macnativeevents/BLACKLIST | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/auto/other/macnativeevents/BLACKLIST b/tests/auto/other/macnativeevents/BLACKLIST index 4129868022..3e68ba0cf0 100644 --- a/tests/auto/other/macnativeevents/BLACKLIST +++ b/tests/auto/other/macnativeevents/BLACKLIST @@ -2,8 +2,7 @@ [testDragWindow] osx [testMouseEnter] -osx-10.9 -osx-10.8 +osx [testChildDialogInFrontOfModalParent] osx [testChildWindowInFrontOfStaysOnTopParentWindow] -- cgit v1.2.3 From de48fd192b7973c4849ec79bce4cd491b5e8550f Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 10 Oct 2016 21:02:16 +0200 Subject: QToolBarAreaLayoutInfo: add missing break statements in switch in distance() A fall-through here is logically non-sensical, because of symmetry (or lack thereof). Thus, a break must have been intended. Add it. While we're at it, also replace the default case label with the non-functional enum value QInternal::DockCount, so that -Wswitch can warn us if ever there should be a new DockPosition. Found independently by both GCC 7 and Coverity. Coverity-Id: 11145 Coverity-Id: 11146 Coverity-Id: 11147 Change-Id: I6bb31c1517e40f0cb06ceaee5aeb6fa78b84a523 Reviewed-by: Edward Welbourne --- src/widgets/widgets/qtoolbararealayout.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp index 16b1115dd6..f42c1f0ed9 100644 --- a/src/widgets/widgets/qtoolbararealayout.cpp +++ b/src/widgets/widgets/qtoolbararealayout.cpp @@ -598,16 +598,21 @@ int QToolBarAreaLayoutInfo::distance(const QPoint &pos) const case QInternal::LeftDock: if (pos.y() < rect.bottom()) return pos.x() - rect.right(); + break; case QInternal::RightDock: if (pos.y() < rect.bottom()) return rect.left() - pos.x(); + break; case QInternal::TopDock: if (pos.x() < rect.right()) return pos.y() - rect.bottom(); + break; case QInternal::BottomDock: if (pos.x() < rect.right()) return rect.top() - pos.y(); - default: + break; + + case QInternal::DockCount: break; } return -1; -- cgit v1.2.3 From f4fff02cbb1f9399f407c15a27741c6cd1a17133 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Mon, 10 Oct 2016 16:09:32 +0200 Subject: QXcbShmImage: don't use shmget()'s return unless it succeeds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When shmget() failed, we didn't set m_shm_info.shmid (not even to the -1 failure id) but did pass it (i.e. uninitialized noise) to shmat(), among other related functions. Guard against this; handle failure gracefully. Task-number: QTBUG-56419 Change-Id: Ie823c36c2ede03af6cb5d94ce7b4b5cd543c1008 Reviewed-by: Timur Pocheptsov Reviewed-by: Błażej Szczygieł Reviewed-by: Shawn Rutledge Reviewed-by: Joni Poikelin Reviewed-by: Laszlo Agocs --- src/plugins/platforms/xcb/qxcbbackingstore.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp index 3b04c59e28..0b76830d8e 100644 --- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp +++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp @@ -150,12 +150,13 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *screen, const QSize &size, uint depth, QI return; int id = shmget(IPC_PRIVATE, segmentSize, IPC_CREAT | 0600); - if (id == -1) + if (id == -1) { qWarning("QXcbShmImage: shmget() failed (%d: %s) for size %d (%dx%d)", errno, strerror(errno), segmentSize, size.width(), size.height()); - else - m_shm_info.shmid = id; - m_shm_info.shmaddr = m_xcb_image->data = (quint8 *)shmat (m_shm_info.shmid, 0, 0); + } else { + m_shm_info.shmaddr = m_xcb_image->data = (quint8 *)shmat(id, 0, 0); + } + m_shm_info.shmid = id; m_shm_info.shmseg = xcb_generate_id(xcb_connection()); const xcb_query_extension_reply_t *shm_reply = xcb_get_extension_data(xcb_connection(), &xcb_shm_id); @@ -166,9 +167,10 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *screen, const QSize &size, uint depth, QI if (!shm_present || error || id == -1) { free(error); - shmdt(m_shm_info.shmaddr); - shmctl(m_shm_info.shmid, IPC_RMID, 0); - + if (id != -1) { + shmdt(m_shm_info.shmaddr); + shmctl(m_shm_info.shmid, IPC_RMID, 0); + } m_shm_info.shmaddr = 0; m_xcb_image->data = (uint8_t *)malloc(segmentSize); -- cgit v1.2.3 From f12006e64405de72ac09f364ef25ee9701c9b755 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Thu, 6 Oct 2016 17:49:52 +0200 Subject: Don't resize windows that aren't attached to a platform window QWindows that aren't created, and therefore don't have a platform window attached, should not be treated as "normal" windows. The expectation, in our code, is that these windows won't get their geometry updated by the platform plugin, and that the geometry is only changed by the owner. In QQuickWidget's case this was causing the scene to be rendered incorrectly. Task-number: QTBUG-50973 Change-Id: Iea62dfb7fa90cbe450a662c5792c7c4f49c991fd Reviewed-by: Laszlo Agocs --- src/gui/kernel/qplatformscreen.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gui/kernel/qplatformscreen.cpp b/src/gui/kernel/qplatformscreen.cpp index 8e9767d69e..3ec7a4cf3f 100644 --- a/src/gui/kernel/qplatformscreen.cpp +++ b/src/gui/kernel/qplatformscreen.cpp @@ -335,6 +335,10 @@ void QPlatformScreen::resizeMaximizedWindows() for (int i = 0; i < windows.size(); ++i) { QWindow *w = windows.at(i); + // Skip non-platform windows, e.g., offscreen windows. + if (!w->handle()) + continue; + if (platformScreenForWindow(w) != this) continue; -- cgit v1.2.3 From dde86ebb9b020811a731a180c4f4d98f3b60728b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Thu, 6 Oct 2016 18:34:10 +0200 Subject: Android: Don't update offscreen windows Offscreen windows should not be handle by the platform plugin. Task-number: QTBUG-50973 Change-Id: I719a24b9bbcaad460d78fdc4095e86d615357cd2 Reviewed-by: Laszlo Agocs --- src/plugins/platforms/android/androidjnimain.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/android/androidjnimain.cpp b/src/plugins/platforms/android/androidjnimain.cpp index fe2401f561..69c590940f 100644 --- a/src/plugins/platforms/android/androidjnimain.cpp +++ b/src/plugins/platforms/android/androidjnimain.cpp @@ -621,7 +621,12 @@ static void updateWindow(JNIEnv */*env*/, jobject /*thiz*/) if (QGuiApplication::instance() != nullptr) { foreach (QWindow *w, QGuiApplication::topLevelWindows()) { - QRect availableGeometry = w->screen()->availableGeometry(); + + // Skip non-platform windows, e.g., offscreen windows. + if (!w->handle()) + continue; + + QRect availableGeometry = w->screen()->availableGeometry(); if (w->geometry().width() > 0 && w->geometry().height() > 0 && availableGeometry.width() > 0 && availableGeometry.height() > 0) QWindowSystemInterface::handleExposeEvent(w, QRegion(QRect(QPoint(), w->geometry().size()))); } -- cgit v1.2.3 From cc62c3002231d74cbee8cb0105adf6372d37e7d9 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 12 Oct 2016 14:13:36 +0300 Subject: Android: Ministro updates - bump minimum required Qt version - use market://details instead which opens Ministro's page directly Change-Id: I3d879503625fe29e7b23149402217337fee6a863 Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../java/src/org/qtproject/qt5/android/bindings/QtActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java index 9fc903af8e..faa5765709 100644 --- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java +++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java @@ -101,7 +101,7 @@ public class QtActivity extends Activity private final static int MINISTRO_INSTALL_REQUEST_CODE = 0xf3ee; // request code used to know when Ministro instalation is finished private static final int MINISTRO_API_LEVEL = 5; // Ministro api level (check IMinistro.aidl file) private static final int NECESSITAS_API_LEVEL = 2; // Necessitas api level used by platform plugin - private static final int QT_VERSION = 0x050100; // This app requires at least Qt version 5.1.0 + private static final int QT_VERSION = 0x050600; // This app requires at least Qt version 5.6.0 private static final String ERROR_CODE_KEY = "error.code"; private static final String ERROR_MESSAGE_KEY = "error.message"; @@ -333,7 +333,7 @@ public class QtActivity extends Activity @Override public void onClick(DialogInterface dialogInterface, int i) { try { - Uri uri = Uri.parse("market://search?q=pname:org.kde.necessitas.ministro"); + Uri uri = Uri.parse("market://details?id=org.kde.necessitas.ministro"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivityForResult(intent, MINISTRO_INSTALL_REQUEST_CODE); } catch (Exception e) { -- cgit v1.2.3 From e732e432ab3b6741917cafa93117b8a9a04d6387 Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Mon, 10 Oct 2016 01:13:23 +0300 Subject: Remove unused static member QIconLoaderEngineEntry::count It was introduced in Qt 4 by the commit 13a31fe82845f8b1f4d86919080d3b2a87c4d061 and was unused even there. Change-Id: I5f3861918ea1f443f7e13439fafa067f2b28a91a Reviewed-by: Marc Mutz --- src/gui/image/qiconloader_p.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h index ccf0a9d438..4d31a5d898 100644 --- a/src/gui/image/qiconloader_p.h +++ b/src/gui/image/qiconloader_p.h @@ -89,7 +89,6 @@ public: QIcon::State state) = 0; QString filename; QIconDirInfo dir; - static int count; }; struct ScalableEntry : public QIconLoaderEngineEntry -- cgit v1.2.3 From f3ce959de6c682bdb7e71f7b82742f28a5be1e9c Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 5 Oct 2016 15:45:55 +0200 Subject: Fix illegal memory access on simple image rotates Clip the transformed and rounded sourceClip to the source rectangle, so we don't try to rotate pixels outside the source. Task-number: QTBUG-56252 Change-Id: Ib9cb80f9856724118867aea37ead0b02a6c71495 Reviewed-by: Shawn Rutledge Reviewed-by: Gunnar Sletta --- src/gui/painting/qpaintengine_raster.cpp | 2 ++ tests/auto/gui/painting/qpainter/tst_qpainter.cpp | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index f87b052df2..83370be33f 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -2273,6 +2273,8 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe = QRectF(sr.x() + clippedTargetRect.x() - r.x(), sr.y() + clippedTargetRect.y() - r.y(), clippedTargetRect.width(), clippedTargetRect.height()).toRect(); + clippedSourceRect = clippedSourceRect.intersected(img.rect()); + uint dbpl = d->rasterBuffer->bytesPerLine(); uint sbpl = img.bytesPerLine(); diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp index 8c72532122..2c0012497d 100644 --- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp +++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp @@ -307,6 +307,8 @@ private slots: void QTBUG50153_drawImage_assert(); + void QTBUG56252(); + private: void fillData(); void setPenColor(QPainter& p); @@ -5078,6 +5080,23 @@ void tst_QPainter::QTBUG50153_drawImage_assert() } } +void tst_QPainter::QTBUG56252() +{ + QImage sourceImage(1770, 1477, QImage::Format_RGB32); + QImage rotatedImage(1478, 1771, QImage::Format_RGB32); + QTransform transformCenter; + transformCenter.translate(739.0, 885.5); + transformCenter.rotate(270.0); + transformCenter.translate(-885.0, -738.5); + QPainter painter; + painter.begin(&rotatedImage); + painter.setTransform(transformCenter); + painter.drawImage(QPoint(0, 0),sourceImage); + painter.end(); + + // If no crash or illegal memory read, all is fine +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc" -- cgit v1.2.3 From ef416e0faaa83cd122038db397dd24d949c9cafe Mon Sep 17 00:00:00 2001 From: Alexander Volkov Date: Wed, 12 Oct 2016 17:18:18 +0300 Subject: QIconLoaderEngine: add missing Q_DECL_OVERRIDEs Change-Id: I7671b05f2e3c218870dca04f3ed52c231dbe4a9d Reviewed-by: Marc Mutz --- src/gui/image/qiconloader_p.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/gui/image/qiconloader_p.h b/src/gui/image/qiconloader_p.h index 4d31a5d898..57ab60b7a5 100644 --- a/src/gui/image/qiconloader_p.h +++ b/src/gui/image/qiconloader_p.h @@ -117,18 +117,18 @@ public: QIconLoaderEngine(const QString& iconName = QString()); ~QIconLoaderEngine(); - void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state); - QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); - QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); - QIconEngine *clone() const; - bool read(QDataStream &in); - bool write(QDataStream &out) const; + void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; + QIconEngine *clone() const Q_DECL_OVERRIDE; + bool read(QDataStream &in) Q_DECL_OVERRIDE; + bool write(QDataStream &out) const Q_DECL_OVERRIDE; private: - QString key() const; + QString key() const Q_DECL_OVERRIDE; bool hasIcon() const; void ensureLoaded(); - void virtual_hook(int id, void *data); + void virtual_hook(int id, void *data) Q_DECL_OVERRIDE; QIconLoaderEngineEntry *entryForSize(const QSize &size); QIconLoaderEngine(const QIconLoaderEngine &other); QThemeIconInfo m_info; -- cgit v1.2.3 From b9a32351c8582ede87b6c63967f5c832c0622645 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 8 Sep 2016 13:54:44 -0700 Subject: findclasslist.pl: namespaces can be exported too You can place the export macros in the namespace declarations on ELF systems and that will apply to all declarations inside that scope. If a namespace is exported like that, then we should mark it for versioning too. Note that the exporting doesn't happen for declarations in other scopes of the same namespace, even though the findclasslist.pl script will mark everything in that namespace. This should not be a problem. Task-number: QTBUG-55897 Change-Id: I371f5b01e24a4d56b304fffd147274778b980ad2 Reviewed-by: Dmitry Shachnev Reviewed-by: Oswald Buddenhagen Reviewed-by: Frederik Gladhorn --- mkspecs/features/data/unix/findclasslist.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkspecs/features/data/unix/findclasslist.pl b/mkspecs/features/data/unix/findclasslist.pl index fb4357d0d4..b74b8b6a58 100644 --- a/mkspecs/features/data/unix/findclasslist.pl +++ b/mkspecs/features/data/unix/findclasslist.pl @@ -55,7 +55,7 @@ while () { my $comment = " /* $1 */"; while (my $line = ) { # Match a struct or class declaration, but not a forward declaration - $line =~ /^(?:struct|class) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next; + $line =~ /^(?:struct|class|namespace) (?:Q_.*_EXPORT)? (\w+)(?!;)/ or next; print $comment if $comment; printf " *%d%s*;\n", length $1, $1; $comment = 0; -- cgit v1.2.3 From 8796c69480a6e5e331d19edf24d4dabb180bc4d2 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 10 Oct 2016 03:55:35 +0200 Subject: QNetworkSession: make sure that "interface" isn't #defined Depending on #include order isn't a good idea. Change-Id: Ief935e1fcc5d40ecb510fffd147c08dffe6cba2d Reviewed-by: Edward Welbourne --- src/network/bearer/qnetworksession.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp index 6f83fd25ca..1b939bab01 100644 --- a/src/network/bearer/qnetworksession.cpp +++ b/src/network/bearer/qnetworksession.cpp @@ -42,6 +42,11 @@ #include "qnetworkconfigmanager_p.h" +// for QNetworkSession::interface +#ifdef interface +# undef interface +#endif + #ifndef QT_NO_BEARERMANAGEMENT QT_BEGIN_NAMESPACE -- cgit v1.2.3 From d023b300b26a9db3cf4dbbe31c1cc5726fe277d7 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 1 Sep 2016 13:29:46 +0200 Subject: Document that am/pm in QDateTime::toString are locale-specific Change-Id: I28382b25ac94cbfbad4acff1308ddd8baf5ca693 Task-number: QTBUG-55632 Reviewed-by: Edward Welbourne --- src/corelib/tools/qdatetime.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 6b09b4107c..3e29b55666 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1623,9 +1623,11 @@ QString QTime::toString(Qt::DateFormat format) const \row \li z \li the milliseconds without leading zeroes (0 to 999) \row \li zzz \li the milliseconds with leading zeroes (000 to 999) \row \li AP or A - \li use AM/PM display. \e A/AP will be replaced by either "AM" or "PM". + \li use AM/PM display. \e A/AP will be replaced by either + QLocale::amText() or QLocale::pmText(). \row \li ap or a - \li use am/pm display. \e a/ap will be replaced by either "am" or "pm". + \li use am/pm display. \e a/ap will be replaced by a lower-case version of + QLocale::amText() or QLocale::pmText(). \row \li t \li the timezone (for example "CEST") \endtable @@ -1634,7 +1636,8 @@ QString QTime::toString(Qt::DateFormat format) const expression. Two consecutive single quotes ("''") are replaced by a singlequote in the output. Formats without separators (e.g. "HHmm") are currently not supported. - Example format strings (assuming that the QTime is 14:13:09.042) + Example format strings (assuming that the QTime is 14:13:09.042 and the system + locale is \c{en_US}) \table \header \li Format \li Result -- cgit v1.2.3 From 51767affb380eea5961637f07a2e881b93b6fea5 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 11 Feb 2016 16:28:57 +0100 Subject: Show warning when setting new default QSurfaceFormat If a global shared context is created, and afterwards a new default QSurfaceFormat with a different version or profile is set, it can lead to issues with context sharing. The documentation for QSurfaceFormat::setDefaultFormat mentions this. It would be helpful to actually show a warning in case it happens. Change-Id: I71f7ce95496e1ecbfc6a0c7d7bed146ef8dc351e Reviewed-by: Laszlo Agocs --- src/gui/kernel/qsurfaceformat.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp index d078336d73..18fde5716b 100644 --- a/src/gui/kernel/qsurfaceformat.cpp +++ b/src/gui/kernel/qsurfaceformat.cpp @@ -35,6 +35,7 @@ #include #include +#include #ifdef major #undef major @@ -758,6 +759,11 @@ Q_GLOBAL_STATIC(QSurfaceFormat, qt_default_surface_format) */ void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format) { + QOpenGLContext *globalContext = QOpenGLContext::globalShareContext(); + if (globalContext && globalContext->isValid()) { + qWarning("Warning: Setting a new default format with a different version or profile after " + "the global shared context is created may cause issues with context sharing."); + } *qt_default_surface_format() = format; } -- cgit v1.2.3 From cd1d11414021288729cd85a32a7a1160756aeeab Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Fri, 30 Sep 2016 18:36:15 +0200 Subject: Unset qgl_current_fbo when the default FBO is bound Previously when a new QOpenGLFramebufferObject was bound, the QOpenGLContextPrivate::qgl_current_fbo member was also updated to point to this new object. But if a user called QOpenGLFramebufferObject::bindDefault(), qgl_current_fbo was not unset, meaning that if the FBO object would be deleted at some point, qgl_current_fbo would be a dangling pointer. This patch makes sure to clear the value of qgl_current_fbo when bindDefault() is called. It is cleared, and not set to point to another object because the default platform OpenGL FBO is not backed by a QOpenGLFramebufferObject. Task-number: QTBUG-56296 Change-Id: I68b53d8b446660accdf5841df3d168ee2f133a90 Reviewed-by: Simon Hausmann Reviewed-by: Laszlo Agocs --- src/gui/opengl/qopenglframebufferobject.cpp | 1 + tests/auto/gui/qopengl/tst_qopengl.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp index 56e04c09d8..b1b580f85b 100644 --- a/src/gui/opengl/qopenglframebufferobject.cpp +++ b/src/gui/opengl/qopenglframebufferobject.cpp @@ -1490,6 +1490,7 @@ bool QOpenGLFramebufferObject::bindDefault() if (ctx) { ctx->functions()->glBindFramebuffer(GL_FRAMEBUFFER, ctx->defaultFramebufferObject()); QOpenGLContextPrivate::get(ctx)->qgl_current_fbo_invalid = true; + QOpenGLContextPrivate::get(ctx)->qgl_current_fbo = Q_NULLPTR; } #ifdef QT_DEBUG else diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp index e2ad502a52..00b5da92a8 100644 --- a/tests/auto/gui/qopengl/tst_qopengl.cpp +++ b/tests/auto/gui/qopengl/tst_qopengl.cpp @@ -114,6 +114,7 @@ private slots: void vaoCreate(); void bufferCreate(); void bufferMapRange(); + void defaultQGLCurrentBuffer(); }; struct SharedResourceTracker @@ -1525,6 +1526,33 @@ void tst_QOpenGL::bufferMapRange() ctx->doneCurrent(); } +void tst_QOpenGL::defaultQGLCurrentBuffer() +{ + QScopedPointer surface(createSurface(QSurface::Window)); + QScopedPointer ctx(new QOpenGLContext); + ctx->create(); + ctx->makeCurrent(surface.data()); + + // Bind default FBO on the current context, and record what's the current QGL FBO. It should + // be Q_NULLPTR because the default platform OpenGL FBO is not backed by a + // QOpenGLFramebufferObject. + QOpenGLFramebufferObject::bindDefault(); + QOpenGLFramebufferObject *defaultQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo; + + // Create new FBO, bind it, and see that the QGL FBO points to the newly created FBO. + QScopedPointer obj(new QOpenGLFramebufferObject(128, 128)); + obj->bind(); + QOpenGLFramebufferObject *customQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo; + QVERIFY(defaultQFBO != customQFBO); + + // Bind the default FBO, and check that the QGL FBO points to the original FBO object. + QOpenGLFramebufferObject::bindDefault(); + QOpenGLFramebufferObject *finalQFBO = QOpenGLContextPrivate::get(ctx.data())->qgl_current_fbo; + QCOMPARE(defaultQFBO, finalQFBO); + + ctx->doneCurrent(); +} + void tst_QOpenGL::nullTextureInitializtion() { QScopedPointer surface(createSurface(QSurface::Window)); -- cgit v1.2.3 From 23c7816f44cfe02e1e056ab4bb40e618992a0e2b Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Wed, 5 Oct 2016 14:27:16 +0200 Subject: Doc: add notes about validator and completer in QComboBox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When setting the editable property to false, we delete the internal QLineEdit used by QComboBox. Add comments that this results in the loss of validator and completer. Task-number: QTBUG-56035 Change-Id: Ife04ac2b9bb3f32fae5328f1ec73b1d5d769d52c Reviewed-by: Topi Reiniö Reviewed-by: Nico Vertriest --- src/widgets/widgets/qcombobox.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 450c27d573..0ef76b95f0 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -1678,6 +1678,9 @@ void QComboBox::setIconSize(const QSize &size) By default, this property is \c false. The effect of editing depends on the insert policy. + \note When disabling the \a editable state, the validator and + completer are removed. + \sa InsertPolicy */ bool QComboBox::isEditable() const @@ -1829,6 +1832,8 @@ QLineEdit *QComboBox::lineEdit() const \fn void QComboBox::setValidator(const QValidator *validator) Sets the \a validator to use instead of the current validator. + + \note The validator is removed when the editable property becomes \c false. */ void QComboBox::setValidator(const QValidator *v) @@ -1862,6 +1867,8 @@ const QValidator *QComboBox::validator() const By default, for an editable combo box, a QCompleter that performs case insensitive inline completion is automatically created. + + \note The completer is removed when the \a editable property becomes \c false. */ void QComboBox::setCompleter(QCompleter *c) { -- cgit v1.2.3 From 7740f5e98b2f3ab5d9c1f512d1a89e9e1b64434d Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 13 Oct 2016 13:04:33 +0200 Subject: QMimeXMLProvider: add missing out-of-line destructor Fixes build with the latest GCC 7. Change-Id: I4900a256ed1c6cb177d7f94d54e5b07c06ddad08 Task-number: QTBUG-56514 Reviewed-by: Marc Mutz --- src/corelib/mimetypes/qmimeprovider.cpp | 4 ++++ src/corelib/mimetypes/qmimeprovider_p.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index fbd14e2d5d..aa8d8c9b08 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -706,6 +706,10 @@ QMimeXMLProvider::QMimeXMLProvider(QMimeDatabasePrivate *db) initResources(); } +QMimeXMLProvider::~QMimeXMLProvider() +{ +} + bool QMimeXMLProvider::isValid() { return true; diff --git a/src/corelib/mimetypes/qmimeprovider_p.h b/src/corelib/mimetypes/qmimeprovider_p.h index c0517d69a4..8eba71eddd 100644 --- a/src/corelib/mimetypes/qmimeprovider_p.h +++ b/src/corelib/mimetypes/qmimeprovider_p.h @@ -132,6 +132,7 @@ class QMimeXMLProvider : public QMimeProviderBase { public: QMimeXMLProvider(QMimeDatabasePrivate *db); + ~QMimeXMLProvider(); virtual bool isValid() Q_DECL_OVERRIDE; virtual QMimeType mimeTypeForName(const QString &name) Q_DECL_OVERRIDE; -- cgit v1.2.3 From adbafab4ef921b2336511a21cb4300eafa1f4cad Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 8 Sep 2016 12:33:41 +0200 Subject: Specify timeout is in milliseconds Change-Id: I465b343b6fe64c8d1ce17e34be5f864e8556d374 Reviewed-by: Edward Welbourne --- src/testlib/qtestcase.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp index 876c573196..80aeff7bd1 100644 --- a/src/testlib/qtestcase.cpp +++ b/src/testlib/qtestcase.cpp @@ -244,7 +244,7 @@ static void stackTrace() \relates QTest The QTRY_VERIFY_WITH_TIMEOUT() macro is similar to QVERIFY(), but checks the \a condition - repeatedly, until either the condition becomes true or the \a timeout is + repeatedly, until either the condition becomes true or the \a timeout (in milliseconds) is reached. Between each evaluation, events will be processed. If the timeout is reached, a failure is recorded in the test log and the test won't be executed further. @@ -276,7 +276,7 @@ static void stackTrace() The QTRY_VERIFY2_WITH_TIMEOUT macro is similar to QTRY_VERIFY_WITH_TIMEOUT() except that it outputs a verbose \a message when \a condition is still false - after the specified \a timeout. The \a message is a plain C string. + after the specified \a timeout (in milliseconds). The \a message is a plain C string. Example: \code @@ -316,7 +316,7 @@ static void stackTrace() The QTRY_COMPARE_WITH_TIMEOUT() macro is similar to QCOMPARE(), but performs the comparison of the \a actual and \a expected values repeatedly, until either the two values - are equal or the \a timeout is reached. Between each comparison, events + are equal or the \a timeout (in milliseconds) is reached. Between each comparison, events will be processed. If the timeout is reached, a failure is recorded in the test log and the test won't be executed further. -- cgit v1.2.3 From b884fc00f4cb4b1ebe307374433b90448d413cf4 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 10 Oct 2016 13:57:33 +0200 Subject: configure.exe: Detect MSVC version with environment variable CL cleared The variable may contain the option /nologo, suppressing the output. Change-Id: I63eedde10aa7264cf56807a0844cadf6293a1d8c Task-number: QTBUG-56388 Reviewed-by: Laszlo Agocs Reviewed-by: Oswald Buddenhagen --- tools/configure/environment.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index 10cf5ace2a..562c5db7a7 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -176,6 +176,7 @@ QString Environment::msvcVersion() const QString command = QFile::decodeName(qgetenv("ComSpec")) + QLatin1String(" /c ") + QLatin1String(compilerInfo(CC_MSVC2015)->executable) + QLatin1String(" /? 2>&1"); + SetEnvironmentVariable(L"CL", NULL); // May contain /nologo, which suppresses the version. QString version = execute(command, &returnValue); if (returnValue != 0) { cout << "Could not get cl version" << returnValue << qPrintable(version) << '\n';; -- cgit v1.2.3 From 3189313f226f550892a8bd4993ed52b44abea13a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 11 Oct 2016 09:59:03 +0200 Subject: Doc: Fix typo in QtStyledItemDelegate::paint() docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-56399 Change-Id: Iaace0ed05098ab6d880b06a40d8e13aa9288c5ec Reviewed-by: Topi Reiniö Reviewed-by: Frederik Gladhorn --- src/widgets/itemviews/qstyleditemdelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp index 483cfbdc36..7de3ca4b0c 100644 --- a/src/widgets/itemviews/qstyleditemdelegate.cpp +++ b/src/widgets/itemviews/qstyleditemdelegate.cpp @@ -360,7 +360,7 @@ void QStyledItemDelegate::initStyleOption(QStyleOptionViewItem *option, if it is enabled or selected. After painting, you should ensure that the painter is returned to - its the state it was supplied in when this function was called. + the state it was supplied in when this function was called. For example, it may be useful to call QPainter::save() before painting and QPainter::restore() afterwards. -- cgit v1.2.3 From 6851cf52afe188e94344ce22074af97e054f5896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Br=C3=BCning?= Date: Wed, 5 Oct 2016 16:34:38 +0200 Subject: Match MSVC version strings in other languages than English 5971b88ecd08a81720c3556029cecd35b0cf2cb5 introduced a regular expression to parse the Visual C++ compiler version that failed to match non-English output (e.g. German), which is produced by default on many systems. Task-number: QTBUG-56388 Change-Id: Id0408ce31e827e7aa087d8e3dd83024cf09dac23 Reviewed-by: Qt CI Bot Reviewed-by: Oswald Buddenhagen --- tools/configure/environment.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index 562c5db7a7..60616f35e7 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -182,7 +182,7 @@ QString Environment::msvcVersion() cout << "Could not get cl version" << returnValue << qPrintable(version) << '\n';; version.clear(); } else { - QRegExp versionRegexp(QStringLiteral("^.*Compiler Version ([0-9.]+) for.*$")); + QRegExp versionRegexp(QStringLiteral("^.*\\b(\\d{2,2}\\.\\d{2,2}\\.\\d{5,5})\\b.*$")); Q_ASSERT(versionRegexp.isValid()); if (versionRegexp.exactMatch(version)) { version = versionRegexp.cap(1); -- cgit v1.2.3 From 59985b3c291f769cfc24cf361367757fce229397 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 7 Oct 2016 20:16:58 +0200 Subject: fix xcodebuilds without -sdk iphonesimulator the order of the arguments passed to addExclusiveBuilds() determines the name of the CONFIG flag which actually enables the mode. that is historically fixed to iphonesimulator_and_iphoneos and we cannot just change the order. to get around this, add a new "overload" of the function which allows specifying the flag independently from the order of the builds, and make use of it in ios' resolve_config.prf. amends d2b4a789c. Change-Id: Ia3fabea0c0c30beae680b57e75bdcdf35ef6503d Reviewed-by: Jake Petroules --- mkspecs/features/exclusive_builds.prf | 18 +++++++++++------- mkspecs/macx-ios-clang/features/resolve_config.prf | 4 ++-- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/mkspecs/features/exclusive_builds.prf b/mkspecs/features/exclusive_builds.prf index 5d06198ae4..f40cc99172 100644 --- a/mkspecs/features/exclusive_builds.prf +++ b/mkspecs/features/exclusive_builds.prf @@ -1,12 +1,9 @@ -defineTest(addExclusiveBuilds) { - lessThan(ARGC, 2): \ - error("addExclusiveBuilds() requires at least two arguments") - - !$$join(ARGS, _and_):!fix_output_dirs: \ +defineTest(addExclusiveBuildsProper) { + !$$1:!fix_output_dirs: \ return(true) - for(build, ARGS) { + for(build, 2) { isEmpty($${build}.name) { $${build}.name = $$title($$build) export($${build}.name) @@ -20,7 +17,7 @@ defineTest(addExclusiveBuilds) { export($${build}.dir_affix) } - $${build}.exclusive = $$ARGS + $${build}.exclusive = $$2 export($${build}.exclusive) QMAKE_EXCLUSIVE_BUILDS += $$build @@ -33,6 +30,13 @@ defineTest(addExclusiveBuilds) { return(true) } +defineTest(addExclusiveBuilds) { + lessThan(ARGC, 2): \ + error("addExclusiveBuilds() requires at least two arguments") + + addExclusiveBuildsProper($$join(ARGS, _and_), $$ARGS) +} + # Default directories to process QMAKE_DIR_REPLACE = OBJECTS_DIR MOC_DIR RCC_DIR PRECOMPILED_DIR QGLTF_DIR DESTDIR QMAKE_DIR_REPLACE_SANE += QGLTF_DIR diff --git a/mkspecs/macx-ios-clang/features/resolve_config.prf b/mkspecs/macx-ios-clang/features/resolve_config.prf index 64db2252cb..904296aea6 100644 --- a/mkspecs/macx-ios-clang/features/resolve_config.prf +++ b/mkspecs/macx-ios-clang/features/resolve_config.prf @@ -29,9 +29,9 @@ macx-xcode { # Switch the order to make sure that the first Makefile target is the right one !contains(QT_CONFIG, simulator_and_device):contains(QMAKE_MAC_SDK, ^iphonesimulator.*): \ - addExclusiveBuilds(iphonesimulator, iphoneos) + addExclusiveBuildsProper(iphonesimulator_and_iphoneos, iphonesimulator iphoneos) else: \ - addExclusiveBuilds(iphoneos, iphonesimulator) + addExclusiveBuildsProper(iphonesimulator_and_iphoneos, iphoneos iphonesimulator) } equals(TEMPLATE, subdirs) { -- cgit v1.2.3 From e9110b162cad1c07341fa3ed424484a58f9c642a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 14 Oct 2016 16:44:47 +0200 Subject: iOS: Report correct physical DPI for iPhone 7 Plus Task-number: QTBUG-56509 Change-Id: Ibae94262c2a4c917aeca00cb1a1c28e5ae60f0c4 Reviewed-by: Jake Petroules --- src/plugins/platforms/ios/qiosscreen.mm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 4018a02f8d..7d1c01f36b 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -201,8 +201,8 @@ QIOSScreen::QIOSScreen(UIScreen *screen) else m_depth = 24; - if (deviceIdentifier.contains(QRegularExpression("^iPhone(7,1|8,2)$"))) { - // iPhone 6 Plus or iPhone 6S Plus + if (deviceIdentifier.contains(QRegularExpression("^iPhone(7,1|8,2|9,2|9,4)$"))) { + // iPhone Plus models m_physicalDpi = 401; } else if (deviceIdentifier.contains(QRegularExpression("^iPad(1,1|2,[1-4]|3,[1-6]|4,[1-3]|5,[3-4]|6,[7-8])$"))) { // All iPads except the iPad Mini series -- cgit v1.2.3 From b00565bc2803bb783e8f2b0d02becfa73323e283 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 15 Jun 2016 14:07:33 +0200 Subject: iOS: check if qApp is still valid before accessing it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the application quits, the iOS plugin can be told to delete after qApp has been set to null. So we need to add a check for this, to avoid error messages. Change-Id: I687e0b26e0c54fdd5a8539fe0f31b2e756ea92d8 Reviewed-by: Tor Arne Vestbø Reviewed-by: Jake Petroules --- src/plugins/platforms/ios/qiostextinputoverlay.mm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/ios/qiostextinputoverlay.mm b/src/plugins/platforms/ios/qiostextinputoverlay.mm index d930965bde..54c2e98d71 100644 --- a/src/plugins/platforms/ios/qiostextinputoverlay.mm +++ b/src/plugins/platforms/ios/qiostextinputoverlay.mm @@ -994,7 +994,8 @@ QIOSTextInputOverlay::QIOSTextInputOverlay() QIOSTextInputOverlay::~QIOSTextInputOverlay() { - disconnect(qApp, 0, this, 0); + if (qApp) + disconnect(qApp, 0, this, 0); } void QIOSTextInputOverlay::updateFocusObject() -- cgit v1.2.3 From d71bb504a635b51a85f3ccd919e0d77f869e50a8 Mon Sep 17 00:00:00 2001 From: hjk Date: Sun, 16 Oct 2016 13:26:30 +0200 Subject: Fix QtGui compilation without OpenGL Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6def516 Reviewed-by: Laszlo Agocs --- src/gui/kernel/qsurfaceformat.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp index 18fde5716b..109ba8e610 100644 --- a/src/gui/kernel/qsurfaceformat.cpp +++ b/src/gui/kernel/qsurfaceformat.cpp @@ -759,11 +759,13 @@ Q_GLOBAL_STATIC(QSurfaceFormat, qt_default_surface_format) */ void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format) { +#ifndef QT_NO_OPENGL QOpenGLContext *globalContext = QOpenGLContext::globalShareContext(); if (globalContext && globalContext->isValid()) { qWarning("Warning: Setting a new default format with a different version or profile after " "the global shared context is created may cause issues with context sharing."); } +#endif *qt_default_surface_format() = format; } -- cgit v1.2.3 From 9a3073a98d43faeb39827bba36040831215b04f0 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 10 Oct 2016 17:51:33 +0200 Subject: don't strip off plugin subtypes this code is meant to strip off the file name if provided (as the accessibility plugin in qtdeclarative does), but clearly overshot the mark by stripping the subtypes (as needed by qtmultimedia, and soon qtbase as well). use a stricter regexp which matches only names with an extension, which is a Good Enough (TM) approximation. Change-Id: I63afe9c7b1b0ebf4da530dcf558e9c84ae3c85ec Reviewed-by: Jake Petroules --- mkspecs/features/qt_module_pris.prf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf index 4dd9e25f9f..95b4b586a8 100644 --- a/mkspecs/features/qt_module_pris.prf +++ b/mkspecs/features/qt_module_pris.prf @@ -70,7 +70,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri else: \ module_config = !isEmpty(MODULE_PLUGIN_TYPES): \ - module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /.*$, )" + module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /[^.]+\\.[^.]+$, )" else: \ module_plugtypes = !isEmpty(MODULE_MASTER_HEADER): \ -- cgit v1.2.3 From d715667b206768677c18cd575ccd4f60c41a1091 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 10 Oct 2016 17:59:19 +0200 Subject: normalize name of plugin default linkage overrides QTPLUGIN. is better used with valid variable names, which is not the case when the plugin type contains slashes (plugin subtypes) or dashes (just so). normalize these chars to underscores. Change-Id: Icc93d952b93fef342e2fc93f20e9c5dd010dd734 Reviewed-by: Jake Petroules --- mkspecs/features/qt.prf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index 965b6cefc3..ddf99da303 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -290,7 +290,8 @@ contains(TEMPLATE, .*app) { autoplugs = for (qtmod, qt_module_deps) { for (ptype, QT.$${qtmod}.plugin_types) { - isEmpty(QTPLUGIN.$$ptype) { + nptype = $$replace(ptype, [-/], _) + isEmpty(QTPLUGIN.$$nptype) { for (plug, QT_PLUGINS) { equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) { for (dep, QT_PLUGIN.$${plug}.EXTENDS) { @@ -303,7 +304,7 @@ contains(TEMPLATE, .*app) { } } } else { - plug = $$eval(QTPLUGIN.$$ptype) + plug = $$eval(QTPLUGIN.$$nptype) !equals(plug, -): \ autoplugs += $$plug } -- cgit v1.2.3 From 4ebe8cefde2ee70753d710b4355d24e237d93366 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 10 Oct 2016 19:41:40 +0200 Subject: make also configure tests not see %LIB% and %INCLUDE% under mingw amends 03ae6ad8e. Change-Id: I1adfb8d5de59b26e37bd35c5e8e4410d084d8d93 Reviewed-by: Jake Petroules --- config.tests/.qmake.conf | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/config.tests/.qmake.conf b/config.tests/.qmake.conf index 71e6817656..e8f6f09e9d 100644 --- a/config.tests/.qmake.conf +++ b/config.tests/.qmake.conf @@ -1,6 +1 @@ -mingw { - TMPPATH = $$(INCLUDE) - QMAKE_INCDIR_POST += $$split(TMPPATH, $$QMAKE_DIRLIST_SEP) - TMPPATH = $$(LIB) - QMAKE_LIBDIR_POST += $$split(TMPPATH, $$QMAKE_DIRLIST_SEP) -} +# This file exists only to detach the tests from the surroundings. -- cgit v1.2.3 From 983d9e0c1a93a8f4350fa5c7f1ec4809e15e0d6e Mon Sep 17 00:00:00 2001 From: hjk Date: Sun, 16 Oct 2016 12:35:44 +0200 Subject: Fix DBus compilation Don't use C++11 nullptr in 5.6. Change-Id: I57e9595b2e1cede995eed09878bf02ee30482659 Reviewed-by: Marc Mutz Reviewed-by: Alberto Mardegan --- src/dbus/qdbusserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp index 39d08b4e63..0833134bb3 100644 --- a/src/dbus/qdbusserver.cpp +++ b/src/dbus/qdbusserver.cpp @@ -105,7 +105,7 @@ QDBusServer::~QDBusServer() } d->serverConnectionNames.clear(); } - d->serverObject = nullptr; + d->serverObject = Q_NULLPTR; d->ref.store(0); d->deleteLater(); } -- cgit v1.2.3 From cbb2ba23e203374132e4b134b1c8f1a3626d2378 Mon Sep 17 00:00:00 2001 From: Frederik Schwarzer Date: Mon, 17 Oct 2016 18:56:20 +0200 Subject: Qt 5.7 requires C++11 so this hint is not needed anymore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I7e267c69ccf3835e4d69b4c612f1baaf40d8be39 Reviewed-by: Frederik Gladhorn Reviewed-by: Topi Reiniö --- src/corelib/doc/src/containers.qdoc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/corelib/doc/src/containers.qdoc b/src/corelib/doc/src/containers.qdoc index 0b98397a68..a1c32bb007 100644 --- a/src/corelib/doc/src/containers.qdoc +++ b/src/corelib/doc/src/containers.qdoc @@ -158,11 +158,8 @@ \endtable Containers can be nested. For example, it is perfectly possible - to use a QMap >, where the key type is - QString and the value type QList. The only pitfall is that - you must insert a space between the closing angle brackets (>); - otherwise the C++ compiler will misinterpret the two >'s as a - right-shift operator (>>) and report a syntax error. + to use a QMap>, where the key type is + QString and the value type QList. The containers are defined in individual header files with the same name as the container (e.g., \c ). For -- cgit v1.2.3 From ed5d04fcfc4e00ce92b04d442e1e69cebb01bc9c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 14 Oct 2016 10:40:56 +0200 Subject: QOrderedMutexLocker: fix UB (pointer comparison with <) in static relock() Comparing pointers that do not point into the same array using operator< is UB. You need to use std::less<>. The QOrderedMutexLocker ctor already used std::less to compare pointers, but the static relock() function was not fixed. Amends 50073521649e3818d87920751ab95acd2c2dfd15. Change-Id: I584d382391dd5a2af75020a4e77f3e42ee5d5708 Reviewed-by: Giuseppe D'Angelo --- src/corelib/thread/qorderedmutexlocker_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h index 54887342e7..6402be92bf 100644 --- a/src/corelib/thread/qorderedmutexlocker_p.h +++ b/src/corelib/thread/qorderedmutexlocker_p.h @@ -93,7 +93,7 @@ public: // mtx1 is already locked, mtx2 not... do we need to unlock and relock? if (mtx1 == mtx2) return false; - if (mtx1 < mtx2) { + if (std::less()(mtx1, mtx2)) { mtx2->lock(); return true; } -- cgit v1.2.3 From 158231e073eb2f94e7a6dfbf071dc2f34283321a Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Fri, 15 Jul 2016 15:47:29 +0200 Subject: QCommonStyle::standardIcon: Add 64x64 Qt logo pixmap for SP_TitleBarMenuButton MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For SP_TitleBarMenuButton, the style defaulted to standardPixmap() would return a 16x16 XPM encoded pixmap from qcommonstylepixmaps_p.h. This resulted in a too-small menu icon when displaying QMdiSubWindow with the default icon set on a High DPI screen with Qt::AA_DisableHighDpiScaling set. Add a larger icon from resources. Change-Id: If88c606a31ee9499f520089365f685ec75e0ddad Reviewed-by: Morten Johan Sørvig --- src/widgets/styles/qcommonstyle.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 6bf9d20b47..6d83dea4ab 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -5194,6 +5194,8 @@ static QPixmap cachedPixmapFromXPM(const char * const *xpm) return result; } +static inline QPixmap titleBarMenuCachedPixmapFromXPM() { return cachedPixmapFromXPM(qt_menu_xpm); } + #ifndef QT_NO_IMAGEFORMAT_PNG static inline QString clearText16IconPath() { @@ -5538,7 +5540,7 @@ QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *opti #ifndef QT_NO_IMAGEFORMAT_XPM switch (sp) { case SP_TitleBarMenuButton: - return cachedPixmapFromXPM(qt_menu_xpm); + return titleBarMenuCachedPixmapFromXPM(); case SP_TitleBarShadeButton: return cachedPixmapFromXPM(qt_shade_xpm); case SP_TitleBarUnshadeButton: @@ -6080,6 +6082,12 @@ QIcon QCommonStyle::standardIcon(StandardPixmap standardIcon, const QStyleOption case SP_MediaVolumeMuted: icon.addFile(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png"), QSize(16, 16)); break; + case SP_TitleBarMenuButton: +# ifndef QT_NO_IMAGEFORMAT_XPM + icon.addPixmap(titleBarMenuCachedPixmapFromXPM()); +# endif + icon.addFile(QLatin1String(":/qt-project.org/qmessagebox/images/qtlogo-64.png")); + break; #endif // QT_NO_IMAGEFORMAT_PNG default: icon.addPixmap(proxy()->standardPixmap(standardIcon, option, widget)); -- cgit v1.2.3 From 4cb614c7abdaa2c5e2d0a75201d51aae01e6f8c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Mon, 3 Oct 2016 18:41:30 +0200 Subject: Apple OS: Handle QSetting strings with embedded zero-bytes Saving strings with embedded zero-bytes (\0) as CFStrings would sometimes fail, and only write the part of the string leading up to the first zero-byte, instead of all the way to the final zero-terminator. This bug was revealed by the code-path that falls back to storing e.g. QTime as strings, via the helper method QSettingsPrivate::variantToString(). We now use the same approach as on platforms such as Windows and WinRT, where the string produced by variantToString() is checked for null-bytes, and if so, stored using a binary representation instead of as a string. For our case that means we fall back to CFData when detecting the null-byte. To separate strings from regular byte arrays, new logic has been added to variantToString() that wraps the null-byte strings in @String(). That way we can implement a fast-path when converting back from CFData, that doesn't go via the slow and lossy conversion via UTF8, and the resulting QVariant will be of type QVariant::ByteArray. The reason for using UTF-8 as the binary representation of the string is that in the case of storing a QByteArray("@foo") we need to still be able to convert it back to the same byte array, which doesn't work if the on-disk format is UTF-16. Task-number: QTBUG-56124 Change-Id: Iab2f71cf96cf3225de48dc5e71870d74b6dde1e8 Cherry-picked: 764f5bf48cc87f4c72550b853ab93b815454cd48 Reviewed-by: Thiago Macieira --- src/corelib/io/qsettings.cpp | 6 ++- src/corelib/io/qsettings_mac.cpp | 20 ++++++++- src/corelib/io/qsettings_win.cpp | 13 +----- src/corelib/io/qsettings_winrt.cpp | 4 +- tests/auto/corelib/io/qsettings/tst_qsettings.cpp | 50 ++++++++++++++++++++++- 5 files changed, 76 insertions(+), 17 deletions(-) diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 9e0e6c2769..d1ae14490c 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -413,7 +413,9 @@ QString QSettingsPrivate::variantToString(const QVariant &v) case QVariant::Double: case QVariant::KeySequence: { result = v.toString(); - if (result.startsWith(QLatin1Char('@'))) + if (result.contains(QChar::Null)) + result = QLatin1String("@String(") + result + QLatin1Char(')'); + else if (result.startsWith(QLatin1Char('@'))) result.prepend(QLatin1Char('@')); break; } @@ -489,6 +491,8 @@ QVariant QSettingsPrivate::stringToVariant(const QString &s) if (s.endsWith(QLatin1Char(')'))) { if (s.startsWith(QLatin1String("@ByteArray("))) { return QVariant(s.midRef(11, s.size() - 12).toLatin1()); + } else if (s.startsWith(QLatin1String("@String("))) { + return QVariant(s.midRef(8, s.size() - 9).toString()); } else if (s.startsWith(QLatin1String("@Variant(")) || s.startsWith(QLatin1String("@DateTime("))) { #ifndef QT_NO_DATASTREAM diff --git a/src/corelib/io/qsettings_mac.cpp b/src/corelib/io/qsettings_mac.cpp index e0b317b4c2..0b039f73dc 100644 --- a/src/corelib/io/qsettings_mac.cpp +++ b/src/corelib/io/qsettings_mac.cpp @@ -208,7 +208,14 @@ static QCFType macValue(const QVariant &value) case QVariant::String: string_case: default: - result = QCFString::toCFStringRef(QSettingsPrivate::variantToString(value)); + QString string = QSettingsPrivate::variantToString(value); + if (string.contains(QChar::Null)) { + QByteArray ba = string.toUtf8(); + result = CFDataCreate(kCFAllocatorDefault, reinterpret_cast(ba.data()), + CFIndex(ba.size())); + } else { + result = QCFString::toCFStringRef(string); + } } return result; } @@ -261,8 +268,17 @@ static QVariant qtValue(CFPropertyListRef cfvalue) return (bool)CFBooleanGetValue(static_cast(cfvalue)); } else if (typeId == CFDataGetTypeID()) { CFDataRef cfdata = static_cast(cfvalue); - return QByteArray(reinterpret_cast(CFDataGetBytePtr(cfdata)), + QByteArray byteArray = QByteArray(reinterpret_cast(CFDataGetBytePtr(cfdata)), CFDataGetLength(cfdata)); + + // Fast-path for QByteArray, so that we don't have to go + // though the expensive and lossy conversion via UTF-8. + if (!byteArray.startsWith('@')) + return byteArray; + + const QString str = QString::fromUtf8(byteArray.constData(), byteArray.size()); + return QSettingsPrivate::stringToVariant(str); + } else if (typeId == CFDictionaryGetTypeID()) { CFDictionaryRef cfdict = static_cast(cfvalue); CFTypeID arrayTypeId = CFArrayGetTypeID(); diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp index da0c4c3c14..f6ad182c37 100644 --- a/src/corelib/io/qsettings_win.cpp +++ b/src/corelib/io/qsettings_win.cpp @@ -649,15 +649,6 @@ void QWinSettingsPrivate::remove(const QString &uKey) } } -static bool stringContainsNullChar(const QString &s) -{ - for (int i = 0; i < s.length(); ++i) { - if (s.at(i).unicode() == 0) - return true; - } - return false; -} - void QWinSettingsPrivate::set(const QString &uKey, const QVariant &value) { if (writeHandle() == 0) { @@ -686,7 +677,7 @@ void QWinSettingsPrivate::set(const QString &uKey, const QVariant &value) QStringList l = variantListToStringList(value.toList()); QStringList::const_iterator it = l.constBegin(); for (; it != l.constEnd(); ++it) { - if ((*it).length() == 0 || stringContainsNullChar(*it)) { + if ((*it).length() == 0 || it->contains(QChar::Null)) { type = REG_BINARY; break; } @@ -730,7 +721,7 @@ void QWinSettingsPrivate::set(const QString &uKey, const QVariant &value) // If the string does not contain '\0', we can use REG_SZ, the native registry // string type. Otherwise we use REG_BINARY. QString s = variantToString(value); - type = stringContainsNullChar(s) ? REG_BINARY : REG_SZ; + type = s.contains(QChar::Null) ? REG_BINARY : REG_SZ; if (type == REG_BINARY) { regValueBuff = QByteArray((const char*)s.utf16(), s.length() * 2); } else { diff --git a/src/corelib/io/qsettings_winrt.cpp b/src/corelib/io/qsettings_winrt.cpp index 85ef64cbd4..5ab1133ef3 100644 --- a/src/corelib/io/qsettings_winrt.cpp +++ b/src/corelib/io/qsettings_winrt.cpp @@ -396,7 +396,7 @@ void QWinRTSettingsPrivate::set(const QString &uKey, const QVariant &value) QStringList::const_iterator it = l.constBegin(); bool containsNull = false; for (; it != l.constEnd(); ++it) { - if ((*it).length() == 0 || it->indexOf(QChar::Null) != -1) { + if ((*it).length() == 0 || it->contains(QChar::Null)) { // We can only store as binary containsNull = true; break; @@ -439,7 +439,7 @@ void QWinRTSettingsPrivate::set(const QString &uKey, const QVariant &value) break; default: { const QString s = variantToString(value); - if (s.indexOf(QChar::Null) != -1) { + if (s.contains(QChar::Null)) { hr = valueStatics->CreateUInt8Array(s.length() * 2, (BYTE*) s.utf16(), &val); } else { HStringReference ref((const wchar_t*)s.utf16(), s.size()); diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp index 19155cc3ad..f489b9b1d3 100644 --- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp +++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp @@ -162,6 +162,8 @@ private slots: void testByteArray(); void iniCodec(); void bom(); + void embeddedZeroByte_data(); + void embeddedZeroByte(); private: void cleanupTestFiles(); @@ -655,7 +657,6 @@ void tst_QSettings::testByteArray_data() #ifndef QT_NO_COMPRESS QTest::newRow("compressed") << qCompress(bytes); #endif - QTest::newRow("with \\0") << bytes + '\0' + bytes; } void tst_QSettings::testByteArray() @@ -706,6 +707,53 @@ void tst_QSettings::bom() QVERIFY(allkeys.contains("section2/foo2")); } +void tst_QSettings::embeddedZeroByte_data() +{ + QTest::addColumn("value"); + + QByteArray bytes("hello\0world", 11); + + QTest::newRow("bytearray\\0") << QVariant(bytes); + QTest::newRow("string\\0") << QVariant(QString::fromLatin1(bytes.data(), bytes.size())); + + bytes = QByteArray("@String("); + + QTest::newRow("@bytearray") << QVariant(bytes); + QTest::newRow("@string") << QVariant(QString(bytes)); + + bytes = QByteArray("@String(\0test", 13); + + QTest::newRow("@bytearray\\0") << QVariant(bytes); + QTest::newRow("@string\\0") << QVariant(QString::fromLatin1(bytes.data(), bytes.size())); +} + +void tst_QSettings::embeddedZeroByte() +{ + QFETCH(QVariant, value); + { + QSettings settings("QtProject", "tst_qsettings"); + settings.setValue(QTest::currentDataTag(), value); + } + { + QSettings settings("QtProject", "tst_qsettings"); + QVariant outValue = settings.value(QTest::currentDataTag()); + + switch (value.type()) { + case QVariant::ByteArray: + QCOMPARE(outValue.toByteArray(), value.toByteArray()); + break; + case QVariant::String: + QCOMPARE(outValue.toString(), value.toString()); + break; + default: + Q_UNREACHABLE(); + } + + if (value.toByteArray().contains(QChar::Null)) + QVERIFY(outValue.toByteArray().contains(QChar::Null)); + } +} + void tst_QSettings::testErrorHandling_data() { QTest::addColumn("filePerms"); // -1 means file should not exist -- cgit v1.2.3 From 4a4368df5663729a34761c394a6f02b72071e89c Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Tue, 18 Oct 2016 13:17:53 +0300 Subject: QAndroidPlatformTheme: wrap char* in QL1S to avoid warnings Change-Id: Idcc70038051b03366aa447f3a4c48912d3f911d5 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/plugins/platforms/android/qandroidplatformtheme.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp index 9350a15721..801bb78436 100644 --- a/src/plugins/platforms/android/qandroidplatformtheme.cpp +++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp @@ -458,9 +458,9 @@ QVariant QAndroidPlatformTheme::themeHint(ThemeHint hint) const case StyleNames: if (qEnvironmentVariableIntValue("QT_USE_ANDROID_NATIVE_STYLE") && m_androidStyleData) { - return QStringList("android"); + return QStringList(QLatin1String("android")); } - return QStringList("fusion"); + return QStringList(QLatin1String("fusion")); case MouseDoubleClickDistance: { -- cgit v1.2.3 From a9835dfe5553545b532be9930364f71fba70c037 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Tue, 18 Oct 2016 18:15:48 +0300 Subject: QJsonDocument: fix repetition of 'document' in doc Change-Id: I8909336274b2c72e526d63fe9e21368550de6678 Reviewed-by: Thiago Macieira --- src/corelib/json/qjsondocument.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/corelib/json/qjsondocument.cpp b/src/corelib/json/qjsondocument.cpp index 7af7e4080c..1916730d6d 100644 --- a/src/corelib/json/qjsondocument.cpp +++ b/src/corelib/json/qjsondocument.cpp @@ -254,8 +254,7 @@ QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidati Creates a QJsonDocument from the QVariant \a variant. If the \a variant contains any other type than a QVariantMap, - QVariantList or QStringList, the returned document - document is invalid. + QVariantList or QStringList, the returned document is invalid. \sa toVariant() */ -- cgit v1.2.3 From 683c9bc4a8e656b2251871b9d8c9952e58681a52 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Tue, 18 Oct 2016 19:12:55 +0200 Subject: Windows: Fix regression in QFSFileEnginePrivate::nativeWrite() Change 0696566b1e19c8178e00c0d14f185935e17d9e8b caused the block size to be incorrect for data > 32MB. Since bytesToWrite changes within the do...while loop, then the block size can potentially change too each time. So it needs to be recalculated each time rather than just once. Task-number: QTBUG-56616 Change-Id: I9880d0985f2d0242c30e67230be7271eb806db95 Reviewed-by: Oliver Wolff Reviewed-by: Friedemann Kleint --- src/corelib/io/qfsfileengine_win.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp index 391fbcc519..4fe561d0cb 100644 --- a/src/corelib/io/qfsfileengine_win.cpp +++ b/src/corelib/io/qfsfileengine_win.cpp @@ -427,11 +427,11 @@ qint64 QFSFileEnginePrivate::nativeWrite(const char *data, qint64 len) // Writing on Windows fails with ERROR_NO_SYSTEM_RESOURCES when // the chunks are too large, so we limit the block size to 32MB. - const DWORD blockSize = DWORD(qMin(bytesToWrite, qint64(32 * 1024 * 1024))); qint64 totalWritten = 0; do { + const DWORD currentBlockSize = DWORD(qMin(bytesToWrite, qint64(32 * 1024 * 1024))); DWORD bytesWritten; - if (!WriteFile(fileHandle, data + totalWritten, blockSize, &bytesWritten, NULL)) { + if (!WriteFile(fileHandle, data + totalWritten, currentBlockSize, &bytesWritten, NULL)) { if (totalWritten == 0) { // Note: Only return error if the first WriteFile failed. q->setError(QFile::WriteError, qt_error_string()); -- cgit v1.2.3 From 8249f490ff82ee2a223d2c64661cfcb1c24bdeb4 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Mon, 17 Oct 2016 14:05:10 +0200 Subject: Document QClipboard::mimeData can be null The current wording (reference) seems like it's always a pointer to valid stuff Change-Id: I2a9f8bde7d2ba672e4e664ff731a3272a6deaaaa Reviewed-by: Edward Welbourne --- src/gui/kernel/qclipboard.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp index 1aac3d6021..325ba7d787 100644 --- a/src/gui/kernel/qclipboard.cpp +++ b/src/gui/kernel/qclipboard.cpp @@ -419,8 +419,9 @@ void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode) /*! \fn QMimeData *QClipboard::mimeData(Mode mode) const - Returns a reference to a QMimeData representation of the current - clipboard data. + Returns a pointer to a QMimeData representation of the current + clipboard data (can be NULL if the given \a mode is not + supported by the platform). The \a mode argument is used to control which part of the system clipboard is used. If \a mode is QClipboard::Clipboard, the -- cgit v1.2.3 From 46078f33745659ec1770cb4a58f8e02b5a9f670b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 14 Oct 2016 10:37:57 +0200 Subject: QOrderedMutexLocker: unlock in reverse order of locking This is an improvement for the following reasons: - Should mutex locking allocate any kind of resource, unlocking in reverse order will free those resources in inverse order, which helps typical allocators. - If the lock pair is contended, by unlocking in the same order as locking, we were allowing the waiting thread to wake up to take the first lock just to find that the second lock is still held by someone else. The order of unlocking has no influence on the correct- ness of the algorithm. Change-Id: Id16b0342aef325c14a7bd8836d3a75db68ef2588 Reviewed-by: David Faure --- src/corelib/thread/qorderedmutexlocker_p.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h index 6402be92bf..65c41d4f21 100644 --- a/src/corelib/thread/qorderedmutexlocker_p.h +++ b/src/corelib/thread/qorderedmutexlocker_p.h @@ -82,8 +82,8 @@ public: void unlock() { if (locked) { - if (mtx1) mtx1->unlock(); if (mtx2) mtx2->unlock(); + if (mtx1) mtx1->unlock(); locked = false; } } -- cgit v1.2.3 From ee22c6505a1f7cf52a862b1bd9219511db893417 Mon Sep 17 00:00:00 2001 From: Clinton Stimpson Date: Tue, 30 Aug 2016 07:52:17 -0600 Subject: xcb: fix passing of focus from child to its top level QWindow With the client message _NET_ACTIVE_WINDOW, not all window managers will pass focus from a child window to its root window, Detect this child-to-root case, and use xcb_set_input_focus() instead. Task-number: QTBUG-39362 Change-Id: Ib32193018e3b725b323f87d7306c9ae9493d78a7 Reviewed-by: Shawn Rutledge Reviewed-by: Edward Welbourne Reviewed-by: Frederik Gladhorn --- src/plugins/platforms/xcb/qxcbwindow.cpp | 3 ++- tests/auto/gui/kernel/qwindow/tst_qwindow.cpp | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp index 5f402b6eca..25a8b41195 100644 --- a/src/plugins/platforms/xcb/qxcbwindow.cpp +++ b/src/plugins/platforms/xcb/qxcbwindow.cpp @@ -1698,9 +1698,11 @@ void QXcbWindow::requestActivateWindow() m_deferredActivation = false; updateNetWmUserTime(connection()->time()); + QWindow *focusWindow = QGuiApplication::focusWindow(); if (window()->isTopLevel() && !(window()->flags() & Qt::X11BypassWindowManagerHint) + && (!focusWindow || !window()->isAncestorOf(focusWindow)) && connection()->wmSupport()->isSupportedByWM(atom(QXcbAtom::_NET_ACTIVE_WINDOW))) { xcb_client_message_event_t event; @@ -1711,7 +1713,6 @@ void QXcbWindow::requestActivateWindow() event.type = atom(QXcbAtom::_NET_ACTIVE_WINDOW); event.data.data32[0] = 1; event.data.data32[1] = connection()->time(); - QWindow *focusWindow = QGuiApplication::focusWindow(); event.data.data32[2] = focusWindow ? focusWindow->winId() : XCB_NONE; event.data.data32[3] = 0; event.data.data32[4] = 0; diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp index 0cce5a072c..d904d48376 100644 --- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp +++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp @@ -601,6 +601,24 @@ void tst_QWindow::isActive() // child has focus QVERIFY(window.isActive()); + // test focus back to parent and then back to child (QTBUG-39362) + // also verify the cumulative FocusOut and FocusIn counts + // activate parent + window.requestActivate(); + QTRY_COMPARE(QGuiApplication::focusWindow(), &window); + QVERIFY(window.isActive()); + QCoreApplication::processEvents(); + QTRY_COMPARE(child.received(QEvent::FocusOut), 1); + QTRY_COMPARE(window.received(QEvent::FocusIn), 2); + + // activate child again + child.requestActivate(); + QTRY_COMPARE(QGuiApplication::focusWindow(), &child); + QVERIFY(child.isActive()); + QCoreApplication::processEvents(); + QTRY_COMPARE(window.received(QEvent::FocusOut), 2); + QTRY_COMPARE(child.received(QEvent::FocusIn), 2); + Window dialog; dialog.setTransientParent(&window); dialog.setGeometry(QRect(m_availableTopLeft + QPoint(110, 100), m_testWindowSize)); @@ -625,7 +643,7 @@ void tst_QWindow::isActive() QTRY_COMPARE(QGuiApplication::focusWindow(), &window); QCoreApplication::processEvents(); QTRY_COMPARE(dialog.received(QEvent::FocusOut), 1); - QTRY_COMPARE(window.received(QEvent::FocusIn), 2); + QTRY_COMPARE(window.received(QEvent::FocusIn), 3); QVERIFY(window.isActive()); -- cgit v1.2.3 From 6cfdfad7d41a7e452fa53495d9843c5d67e74946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Martins?= Date: Mon, 17 Oct 2016 23:16:15 +0100 Subject: Don't crash while parsing malformed CSS Task-Id: QTBUG-53919 Change-Id: I31a0e218e4e41ee217f8f87164f115450d69d42c Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/gui/text/qcssparser.cpp | 9 +++++++-- tests/auto/gui/text/qcssparser/tst_qcssparser.cpp | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp index 65b468ece4..e96aecdf68 100644 --- a/src/gui/text/qcssparser.cpp +++ b/src/gui/text/qcssparser.cpp @@ -739,8 +739,9 @@ static ColorData parseColorValue(QCss::Value v) QVector colorDigits; if (!p.parseExpr(&colorDigits)) return ColorData(); + const int tokenCount = colorDigits.count(); - for (int i = 0; i < qMin(colorDigits.count(), 7); i += 2) { + for (int i = 0; i < qMin(tokenCount, 7); i += 2) { if (colorDigits.at(i).type == Value::Percentage) { colorDigits[i].variant = colorDigits.at(i).variant.toReal() * (255. / 100.); colorDigits[i].type = Value::Number; @@ -749,11 +750,15 @@ static ColorData parseColorValue(QCss::Value v) } } + + if (tokenCount < 5) + return ColorData(); + int v1 = colorDigits.at(0).variant.toInt(); int v2 = colorDigits.at(2).variant.toInt(); int v3 = colorDigits.at(4).variant.toInt(); int alpha = 255; - if (colorDigits.count() >= 7) { + if (tokenCount >= 7) { int alphaValue = colorDigits.at(6).variant.toInt(); if (rgba && alphaValue <= 1) alpha = colorDigits.at(6).variant.toReal() * 255.; diff --git a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp index b1beb0ffd0..d283f7d9cc 100644 --- a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp +++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp @@ -847,6 +847,7 @@ void tst_QCssParser::colorValue_data() QTest::newRow("hsla") << "color: hsva(10, 20, 30, 40)" << QColor::fromHsv(10, 20, 30, 40); QTest::newRow("invalid1") << "color: rgb(why, does, it, always, rain, on, me)" << QColor(); QTest::newRow("invalid2") << "color: rgba(i, meant, norway)" << QColor(); + QTest::newRow("invalid3") << "color: rgb(21)" << QColor(); QTest::newRow("role") << "color: palette(base)" << qApp->palette().color(QPalette::Base); QTest::newRow("role2") << "color: palette( window-text ) " << qApp->palette().color(QPalette::WindowText); QTest::newRow("transparent") << "color: transparent" << QColor(Qt::transparent); -- cgit v1.2.3 From b38145a11d03c3e3fe8baf37800a017359283861 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 12 Oct 2016 09:03:39 +0200 Subject: PDF: Handle monochrome images correctly When an image is considered to be monochrome then it should not be making the white part of the image transparent, the colors should be kept as is. Task-number: QTBUG-56489 Change-Id: I3621ca7be2a0ebe6852363f860c0b3de28d28a31 Reviewed-by: Allan Sandfeld Jensen Reviewed-by: Lars Knoll --- src/gui/painting/qpdf.cpp | 13 +++++++++---- src/gui/painting/qpdf_p.h | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 0df5fd8b8a..77304fb87b 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -1919,7 +1919,7 @@ int QPdfEnginePrivate::writeCompressed(const char *src, int len) } int QPdfEnginePrivate::writeImage(const QByteArray &data, int width, int height, int depth, - int maskObject, int softMaskObject, bool dct) + int maskObject, int softMaskObject, bool dct, bool isMono) { int image = addXrefEntry(-1); xprintf("<<\n" @@ -1929,8 +1929,13 @@ int QPdfEnginePrivate::writeImage(const QByteArray &data, int width, int height, "/Height %d\n", width, height); if (depth == 1) { - xprintf("/ImageMask true\n" - "/Decode [1 0]\n"); + if (!isMono) { + xprintf("/ImageMask true\n" + "/Decode [1 0]\n"); + } else { + xprintf("/BitsPerComponent 1\n" + "/ColorSpace /DeviceGray\n"); + } } else { xprintf("/BitsPerComponent 8\n" "/ColorSpace %s\n", (depth == 32) ? "/DeviceRGB" : "/DeviceGray"); @@ -2445,7 +2450,7 @@ int QPdfEnginePrivate::addImage(const QImage &img, bool *bitmap, qint64 serial_n memcpy(rawdata, image.constScanLine(y), bytesPerLine); rawdata += bytesPerLine; } - object = writeImage(data, w, h, d, 0, 0); + object = writeImage(data, w, h, d, 0, 0, false, is_monochrome(img.colorTable())); } else { QByteArray softMaskData; bool dct = false; diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h index de30744ca2..ab7a218d89 100644 --- a/src/gui/painting/qpdf_p.h +++ b/src/gui/painting/qpdf_p.h @@ -289,7 +289,7 @@ private: int streampos; int writeImage(const QByteArray &data, int width, int height, int depth, - int maskObject, int softMaskObject, bool dct = false); + int maskObject, int softMaskObject, bool dct = false, bool isMono = false); void writePage(); int addXrefEntry(int object, bool printostr = true); -- cgit v1.2.3 From cd081ca96a5387abe36f46a347363e07edcdcd67 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 19 Sep 2016 12:13:33 +0200 Subject: macOS: Only show menu and allow dragging on proxy when a file path is set If there is no file path set then it should not be possible to see a menu or to drag from a proxy icon in the titlebar. Task-number: QTBUG-56082 Change-Id: Ib8305bcab5717bc8cb7ddabbb079f152debbdded Reviewed-by: Jake Petroules --- src/plugins/platforms/cocoa/qcocoawindow.h | 1 + src/plugins/platforms/cocoa/qcocoawindow.mm | 2 ++ src/plugins/platforms/cocoa/qnswindowdelegate.h | 3 ++- src/plugins/platforms/cocoa/qnswindowdelegate.mm | 15 +++++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 9fcb221d37..9cf6328281 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -346,6 +346,7 @@ public: // for QNSView // This object is tracked by QCocoaWindowPointer, // preventing the use of dangling pointers. QObject sentinel; + bool m_hasWindowFilePath; }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index c0d5904367..977a5ae657 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -379,6 +379,7 @@ QCocoaWindow::QCocoaWindow(QWindow *tlw) , m_topContentBorderThickness(0) , m_bottomContentBorderThickness(0) , m_normalGeometry(QRect(0,0,-1,-1)) + , m_hasWindowFilePath(false) { #ifdef QT_COCOA_ENABLE_WINDOW_DEBUG qDebug() << "QCocoaWindow::QCocoaWindow" << this; @@ -941,6 +942,7 @@ void QCocoaWindow::setWindowFilePath(const QString &filePath) QFileInfo fi(filePath); [m_nsWindow setRepresentedFilename: fi.exists() ? QCFString::toNSString(filePath) : @""]; + m_hasWindowFilePath = fi.exists(); } void QCocoaWindow::setWindowIcon(const QIcon &icon) diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h index b8d344aa0e..a5f3dca68c 100644 --- a/src/plugins/platforms/cocoa/qnswindowdelegate.h +++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h @@ -51,7 +51,8 @@ - (void)windowWillMove:(NSNotification *)notification; - (BOOL)windowShouldClose:(NSNotification *)notification; - (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame; - +- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu; +- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard; @end QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSWindowDelegate); diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm index 015274cac7..a26f381ddb 100644 --- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm +++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm @@ -109,4 +109,19 @@ return YES; } +- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu +{ + Q_UNUSED(window); + Q_UNUSED(menu); + return m_cocoaWindow && m_cocoaWindow->m_hasWindowFilePath; +} + +- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard +{ + Q_UNUSED(window); + Q_UNUSED(event); + Q_UNUSED(dragImageLocation); + Q_UNUSED(pasteboard); + return m_cocoaWindow && m_cocoaWindow->m_hasWindowFilePath; +} @end -- cgit v1.2.3 From 2c0033983bc53e906eab3f4b2fae836ff8472713 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 3 Aug 2016 14:06:32 +0200 Subject: macOS: Don't override the set tab text color with white Originally on macOS it would override any tab text color with white for the active tab as it would set it directly on the option palette inside the style code. This would cause it to ignore any changes done by the user in a changed option, via setTabTextColor or in a proxy style. Therefore the setting of the color should be done when the style option is initialized and only if the tab text color has not been set by the user. This has the added effect of making it easier to change the color for tabs via a stylesheet since it will not be overridden in the style but setup correctly in the option instead. Change-Id: Ic338e96470112cba71d422bce79e664df0cb188a Reviewed-by: Jake Petroules --- src/widgets/styles/qmacstyle_mac.mm | 4 ---- src/widgets/widgets/qtabbar.cpp | 7 ++++++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 8f724df857..46918a2d5f 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -4286,10 +4286,6 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter bool verticalTabs = ttd == kThemeTabWest || ttd == kThemeTabEast; bool selected = (myTab.state & QStyle::State_Selected); - if (selected && !myTab.documentMode - && (!usingYosemiteOrLater || myTab.state & State_Active)) - myTab.palette.setColor(QPalette::WindowText, Qt::white); - // Check to see if we use have the same as the system font // (QComboMenuItem is internal and should never be seen by the // outside world, unless they read the source, in which case, it's diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index 2a163c18b5..b5ec91f59c 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -170,7 +170,12 @@ void QTabBarPrivate::initBasicStyleOption(QStyleOptionTab *option, int tabIndex) if (tab.textColor.isValid()) option->palette.setColor(q->foregroundRole(), tab.textColor); - +#ifdef Q_OS_MACOS + else if (isCurrent && !documentMode + && (QSysInfo::MacintoshVersion < QSysInfo::MV_10_10 || q->isActiveWindow())) { + option->palette.setColor(QPalette::WindowText, Qt::white); + } +#endif option->icon = tab.icon; option->iconSize = q->iconSize(); // Will get the default value then. -- cgit v1.2.3 From 0e61323c87490ea3991f7b6211034285ce5a932f Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Thu, 13 Oct 2016 13:59:44 +0200 Subject: winrt: Added timeout for cancellation of socket read operation As the function runs on the XAML thread it can make the app unresponsive/wait forever on a socket close. Thus we should not wait forever but have a timeout. If the timeout is hit the socket is not closed properly but hard reset. Change-Id: I82e9425c0f8195e3465027fdc2417a93f1c1ad91 Reviewed-by: Maurice Kalinowski --- src/network/socket/qnativesocketengine_winrt.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index 58f0668854..b6a739d1b8 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -492,10 +492,12 @@ void QNativeSocketEngine::close() ComPtr action; hr = socket3->CancelIOAsync(&action); Q_ASSERT_SUCCEEDED(hr); - hr = QWinRTFunctions::await(action); + hr = QWinRTFunctions::await(action, QWinRTFunctions::YieldThread, 5000); // If there is no pending IO (no read established before) the function will fail with // "function was called at an unexpected time" which is fine. - if (hr != E_ILLEGAL_METHOD_CALL) + // Timeout is fine as well. The result will be the socket being hard reset instead of + // being closed gracefully + if (hr != E_ILLEGAL_METHOD_CALL && hr != ERROR_TIMEOUT) Q_ASSERT_SUCCEEDED(hr); return S_OK; }); -- cgit v1.2.3 From 0cccc23478432240f44cabfd853e60ff8c84c692 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Sun, 9 Oct 2016 18:08:14 +0200 Subject: QNetworkReplyHttpImpl: Fix UB (member call) in destruction sequence Found by UBSan: qnetworkreplyhttpimpl.cpp:457:29: runtime error: member call on address 0x602000009cf0 which does not point to an object of type 'QNetworkReplyHttpImpl' 0x602000009cf0: note: object is of type 'QObject' 1e 00 80 18 20 e0 bb 12 54 7f 00 00 00 f2 00 00 70 61 00 00 02 00 00 00 ff ff ff 06 08 00 00 00 ^~~~~~~~~~~~~~~~~~~~~~~ vptr for 'QObject' #0 0x7f541461b71b in QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate() qnetworkreplyhttpimpl.cpp:457 #1 0x7f541461b7f0 in QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate() qnetworkreplyhttpimpl.cpp:458 #2 0x7f540f26df1a in QScopedPointerDeleter::cleanup(QObjectData*) qscopedpointer.h:54 #3 0x7f540f26df1a in QScopedPointer >::~QScopedPointer() qscopedpointer.h:101 #4 0x7f540f26df1a in QObject::~QObject() qobject.cpp:940 #5 0x7f540e915f6e in QIODevice::~QIODevice() qiodevice.cpp:416 #6 0x7f5414599bae in QNetworkReply::~QNetworkReply() qnetworkreply.cpp:444 #7 0x7f54145e6f5e in QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl() qnetworkreplyhttpimpl.cpp:239 #8 0x7f54145e6f5e in QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl() qnetworkreplyhttpimpl.cpp:242 #9 0x7f54144b3539 in void qDeleteAll::const_iterator>(QList::const_iterator, QList::const_iterator) qalgorithms.h:317 #10 0x7f54144b3539 in void qDeleteAll >(QList const&) qalgorithms.h:325 #11 0x7f54144b3539 in QNetworkAccessManager::~QNetworkAccessManager() qnetworkaccessmanager.cpp:496 Fix by moving the emission of the QNetworkReplyHttpImpl::abortHttpRequest() signal from ~Private, when the public object is merely a QObject anymore, to ~QNetworkReplyHttpImpl(), when the public class is still itself. Change-Id: Ifb3b19f6d180452bdf3fc26f54629ef780a5d9d9 Reviewed-by: Timur Pocheptsov --- src/network/access/qnetworkreplyhttpimpl.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp index 94235a48dd..fe8277ba92 100644 --- a/src/network/access/qnetworkreplyhttpimpl.cpp +++ b/src/network/access/qnetworkreplyhttpimpl.cpp @@ -238,7 +238,8 @@ QNetworkReplyHttpImpl::QNetworkReplyHttpImpl(QNetworkAccessManager* const manage QNetworkReplyHttpImpl::~QNetworkReplyHttpImpl() { - // Most work is done in private destructor + // This will do nothing if the request was already finished or aborted + emit abortHttpRequest(); } void QNetworkReplyHttpImpl::close() @@ -452,9 +453,6 @@ QNetworkReplyHttpImplPrivate::QNetworkReplyHttpImplPrivate() QNetworkReplyHttpImplPrivate::~QNetworkReplyHttpImplPrivate() { - Q_Q(QNetworkReplyHttpImpl); - // This will do nothing if the request was already finished or aborted - emit q->abortHttpRequest(); } /* -- cgit v1.2.3 From b6df7257501b54521c25587c3c5e600b2c9393d1 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 20 Oct 2016 18:31:10 +0200 Subject: Fix UB (ininited pointer read) in qt_egl_device_integration() The m_integration member of DeviceIntegration, a naked pointer, was checked for nullptr in the DeviceIntegration ctor, but never set to nullptr. Fix by init'ing it to nullptr in the ctor-init-list. Coverity-Id: 172056 Change-Id: Ia1dc9b67b9d16a991bba82338eedb19de68f91d8 Reviewed-by: Thiago Macieira --- src/plugins/platforms/eglfs/qeglfshooks.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/platforms/eglfs/qeglfshooks.cpp b/src/plugins/platforms/eglfs/qeglfshooks.cpp index cf016d1b01..638960d998 100644 --- a/src/plugins/platforms/eglfs/qeglfshooks.cpp +++ b/src/plugins/platforms/eglfs/qeglfshooks.cpp @@ -61,6 +61,7 @@ private: Q_GLOBAL_STATIC(DeviceIntegration, deviceIntegration) DeviceIntegration::DeviceIntegration() + : m_integration(Q_NULLPTR) { QStringList pluginKeys = QEGLDeviceIntegrationFactory::keys(); if (!pluginKeys.isEmpty()) { -- cgit v1.2.3 From 294c870bedadc7823d61bc8df6fd37323589f0a2 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 20 Oct 2016 23:00:08 +0200 Subject: QImage: cache colortable size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coverity threw an error that in the else branch, the expression colorTableRGB16[tableSize - 1] accesses uninit'ed data. The working theory is that it fails to perform the implication isEmpty() → size() == 0 This patch, therefore, checks for size() == 0 instead of isEmpty(), which is hardly less readable and might help Coverity understand the code better. Then again, Coverity might not understand that the tableSize can never be negative. If that's the case, another patch will be needed, but let's try the simpler solution first. Coverity-Id: 11420 Change-Id: Ibfe2a798c55af95c8001fa909aa94a6c5bc7c647 Reviewed-by: Allan Sandfeld Jensen --- src/gui/image/qimage_conversions.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/image/qimage_conversions.cpp b/src/gui/image/qimage_conversions.cpp index 7b8d88ba72..c25b4cf5c3 100644 --- a/src/gui/image/qimage_conversions.cpp +++ b/src/gui/image/qimage_conversions.cpp @@ -905,12 +905,12 @@ static bool convert_indexed8_to_RGB16_inplace(QImageData *data, Qt::ImageConvers const int dest_pad = (dst_bytes_per_line >> 1) - width; quint16 colorTableRGB16[256]; - if (data->colortable.isEmpty()) { + const int tableSize = data->colortable.size(); + if (tableSize == 0) { for (int i = 0; i < 256; ++i) colorTableRGB16[i] = qConvertRgb32To16(qRgb(i, i, i)); } else { // 1) convert the existing colors to RGB16 - const int tableSize = data->colortable.size(); for (int i = 0; i < tableSize; ++i) colorTableRGB16[i] = qConvertRgb32To16(data->colortable.at(i)); data->colortable = QVector(); -- cgit v1.2.3 From 557abfc3275f74d3dd537d7bca86e15860d072e9 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 20 Oct 2016 08:50:42 +0200 Subject: QUrl effective TLDs: update table There are more than 1000 new entries since the table has been generated the last time. The autotest needs to be tweaked because the rules for the .mz domains have changed; use the .ck domain instead. Change-Id: Ife692afd46ac41a66604e966e5e8cb57c7aa649c Reviewed-by: Thiago Macieira --- src/corelib/io/qurltlds_p.h | 24175 ++++++++++--------- src/corelib/io/qurltlds_p.h.INFO | 4 +- .../qnetworkcookiejar/tst_qnetworkcookiejar.cpp | 14 +- 3 files changed, 12870 insertions(+), 11323 deletions(-) diff --git a/src/corelib/io/qurltlds_p.h b/src/corelib/io/qurltlds_p.h index 69d0701faa..c823104b84 100644 --- a/src/corelib/io/qurltlds_p.h +++ b/src/corelib/io/qurltlds_p.h @@ -58,11678 +58,13225 @@ QT_BEGIN_NAMESPACE // this file should be updated before each release -> // for instructions see the program at // util/corelib/qurl-generateTLDs -static const quint16 tldCount = 7150; + +static const quint16 tldCount = 8101; static const quint32 tldIndices[] = { 0, -40, -40, -49, -49, -49, -71, -95, -95, -110, -123, -123, -151, -189, -189, -189, -189, -189, -189, -189, -189, -189, -202, -202, -202, -208, -219, -219, -219, -219, -219, -238, -249, -278, -294, -301, -312, -312, -317, -317, -317, -323, -330, -406, -406, -467, -467, -500, -500, -500, -512, -533, -533, -533, -533, -533, -542, -574, -580, -620, -620, -633, -645, -645, -659, -659, -659, -685, -685, -703, +15, +43, +55, +60, +70, +80, +101, +101, +154, +169, +169, +169, +184, +184, +195, +217, +217, +235, +255, +276, +296, +296, +314, +345, +350, +350, +358, +384, +400, +424, +424, +431, +452, +472, +508, +508, +508, +508, +525, +558, +581, +581, +594, +608, +608, +628, +628, +652, +680, +680, 703, -721, -721, -721, -737, -744, -744, -756, +722, +722, +760, 768, -774, -774, -774, -784, -784, -802, -841, -882, -882, -882, -882, -905, -924, -935, -950, -960, -960, -972, -983, -983, -983, -990, -997, -1017, -1037, -1045, -1045, -1045, -1063, -1069, -1085, -1085, -1085, -1085, -1085, -1085, -1085, -1136, -1145, -1183, -1183, -1225, -1225, -1241, -1241, -1259, -1282, -1305, -1305, -1358, -1358, -1370, -1370, -1383, -1383, -1430, -1430, -1430, -1457, -1466, -1472, -1472, -1472, -1472, -1486, -1518, -1564, -1593, -1614, -1661, -1675, -1675, -1691, -1719, -1730, -1750, -1750, -1755, -1759, -1773, -1797, -1823, -1841, -1848, +768, +788, +788, +814, +847, +847, +865, +895, +895, +930, +930, +936, +964, +991, +1025, +1042, +1061, +1061, +1082, +1098, +1098, +1098, +1111, +1135, +1141, +1141, +1141, +1160, +1192, +1192, +1192, +1192, +1192, +1192, +1207, +1207, +1214, +1219, +1219, +1219, +1242, +1255, +1255, +1255, +1272, +1291, +1291, +1291, +1309, +1334, +1372, +1376, +1376, +1385, +1419, +1419, +1419, +1427, +1442, +1442, +1450, +1450, +1469, +1508, +1533, +1533, +1574, +1582, +1582, +1592, +1625, +1643, +1643, +1653, +1653, +1664, +1664, +1687, +1687, +1731, +1742, +1760, +1760, +1760, +1775, +1788, +1815, +1815, +1815, +1815, +1827, +1842, +1850, +1850, +1874, +1874, +1887, 1887, -1894, -1911, -1918, -1923, -1929, -1966, -1966, -1973, -1973, -1973, -1990, -2041, -2059, -2075, -2093, -2093, -2093, -2127, -2136, -2152, -2159, -2178, -2201, +1887, +1917, +1931, +1962, +1962, +1962, +2002, +2017, +2073, +2073, +2103, +2103, +2120, +2160, +2168, +2168, +2176, +2193, +2199, +2199, +2205, 2212, -2219, -2219, -2219, -2233, -2240, -2247, -2247, -2273, -2298, +2212, +2226, +2226, +2226, +2226, +2261, +2282, 2298, -2305, -2330, -2377, -2410, -2461, -2468, -2511, -2511, -2524, -2524, -2530, -2547, -2560, -2576, -2583, -2599, -2599, -2599, -2599, -2599, -2628, -2671, -2692, -2697, -2726, -2726, -2756, -2756, -2775, -2775, -2787, -2814, -2814, -2839, -2853, -2869, -2901, -2949, -2949, -2972, -2972, -2979, -2997, -3003, -3014, -3014, -3014, -3014, -3014, -3014, -3043, -3043, -3070, -3070, +2316, +2316, +2316, +2316, +2316, +2373, +2373, +2390, +2390, +2397, +2412, +2428, +2435, +2435, +2443, +2443, +2451, +2458, +2504, +2504, +2510, +2510, +2510, +2517, +2544, +2555, +2573, +2612, +2627, +2627, +2650, +2657, +2664, +2674, +2691, +2698, +2706, +2713, +2713, +2729, +2743, +2750, +2781, +2781, +2796, +2796, +2809, +2816, +2836, +2866, +2887, +2894, +2943, +2950, +2950, +2950, +2950, +2970, +2970, +3002, +3002, +3015, +3022, +3032, +3059, +3069, +3084, 3091, 3091, -3097, -3108, -3108, -3108, +3098, +3098, +3107, 3125, -3182, -3232, -3283, -3283, -3292, -3312, -3319, -3359, -3379, -3406, -3433, -3441, -3448, -3459, -3466, -3466, -3466, -3466, -3466, -3473, -3491, -3498, -3524, -3524, -3568, -3605, -3605, -3618, -3618, -3618, -3632, -3632, -3632, -3632, -3645, -3645, -3652, -3662, -3662, -3701, -3708, +3132, +3140, +3172, +3189, +3205, +3218, +3224, +3231, +3255, +3261, +3261, +3261, +3261, +3279, +3285, +3296, +3310, +3317, +3317, +3333, +3352, +3362, +3362, +3362, +3362, +3404, +3404, +3404, +3404, +3404, +3404, +3415, +3428, +3428, +3483, +3503, +3503, +3530, +3555, +3562, +3562, +3578, +3593, +3600, +3622, +3629, +3644, +3663, +3663, +3685, +3685, +3685, +3685, 3713, -3729, -3742, -3767, -3799, -3799, -3806, -3806, -3824, -3824, -3839, -3839, -3854, -3876, -3883, -3883, -3890, -3896, -3939, -3939, -3953, -3953, -3953, -3953, -3988, +3730, +3757, +3775, +3775, +3775, +3800, +3815, +3815, +3815, +3815, +3815, +3900, +3900, +3950, +3950, +3959, +3959, +3959, +3974, 4005, -4019, -4039, -4039, -4058, -4069, -4094, -4101, -4139, -4146, -4174, -4206, -4221, -4221, -4237, -4237, -4254, -4270, -4277, -4301, -4301, -4301, -4301, -4327, -4327, -4334, -4341, -4361, -4361, -4368, -4391, -4403, -4403, -4416, -4416, -4423, -4448, -4448, -4448, -4500, -4534, -4543, -4543, -4562, -4569, -4576, -4613, -4632, -4639, -4646, -4670, -4670, -4670, -4677, -4695, -4695, -4695, -4702, -4720, -4734, -4734, -4734, -4734, -4741, -4741, -4741, -4748, -4748, -4762, -4785, -4792, -4823, -4823, -4861, -4886, -4886, -4886, -4922, -4922, -4932, -4939, -4939, -4939, -4946, -4953, -4953, -4977, -4977, -4977, -4984, -5009, -5028, -5080, -5080, -5080, -5080, -5110, -5117, -5132, -5143, -5167, -5184, -5184, -5184, -5209, -5209, -5230, -5230, -5238, -5260, -5289, -5289, -5298, -5315, -5315, -5315, +4070, +4141, +4141, +4160, +4177, +4177, +4207, +4235, +4263, +4274, +4280, +4280, +4290, +4321, +4338, +4381, +4396, +4402, +4446, +4461, +4461, +4461, +4485, +4496, +4512, +4528, +4580, +4580, +4624, +4650, +4650, +4650, +4672, +4714, +4714, +4721, +4728, +4751, +4769, +4769, +4769, +4783, +4783, +4783, +4807, +4814, +4821, +4821, +4839, +4892, +4908, +4908, +4908, +4915, +4952, +4952, +4959, +4966, +4973, +4973, +4980, +4999, +5032, +5039, +5057, +5095, +5112, +5127, +5127, +5144, +5151, +5172, +5172, +5186, +5200, +5215, +5236, +5263, +5294, +5294, +5294, +5310, +5310, +5320, +5320, +5350, 5350, -5356, -5356, -5356, -5356, 5370, 5392, -5413, -5430, -5437, -5471, -5502, -5514, -5514, -5534, -5552, -5559, -5559, -5616, -5651, -5657, -5657, -5657, -5674, -5681, -5681, -5681, -5702, -5709, -5745, -5764, -5776, -5776, -5812, -5827, -5849, -5875, -5892, -5913, -5913, -5920, -5935, -5980, -5987, -6024, -6024, -6041, -6058, +5392, +5419, +5419, +5419, +5426, +5426, +5426, +5433, +5449, +5449, +5455, +5468, +5481, +5487, +5487, +5521, +5581, +5581, +5604, +5604, +5617, +5624, +5631, +5631, +5666, +5666, +5692, +5705, +5719, +5726, +5746, +5761, +5777, +5789, +5795, +5802, +5815, +5833, +5839, +5846, +5846, +5846, +5868, +5868, +5887, +5899, +5910, +5927, +5937, +5937, +5974, +5996, +6019, +6019, +6027, +6027, +6033, +6066, 6066, -6103, -6103, -6103, -6127, -6127, -6137, -6157, -6223, -6248, -6297, -6297, -6297, -6325, -6332, -6355, -6355, -6382, -6408, -6423, -6423, -6423, -6440, -6452, -6462, -6482, -6482, -6482, -6500, -6500, -6518, -6518, -6518, -6526, -6535, -6535, -6542, +6088, +6095, +6109, +6123, +6130, +6130, +6168, +6176, +6176, +6176, +6176, +6183, +6183, +6190, +6207, +6235, +6254, +6254, +6266, +6293, +6293, +6308, +6329, +6341, +6360, +6367, +6407, +6413, +6431, +6460, +6467, +6467, +6488, +6510, +6510, +6538, 6560, -6570, -6585, -6604, -6604, -6604, -6604, -6617, -6626, -6626, -6626, -6654, -6654, -6680, -6695, -6695, -6695, -6706, -6706, -6736, -6736, -6766, -6766, -6766, -6766, -6766, -6775, -6775, -6775, -6786, -6825, -6825, -6834, -6854, -6854, -6854, -6897, -6915, -6915, -6960, -7002, +6575, +6589, +6589, +6589, +6589, +6606, +6606, +6614, +6629, +6629, +6635, +6647, +6667, +6696, +6696, +6703, +6712, +6712, +6752, +6759, +6759, +6791, +6815, +6815, +6822, +6859, +6859, +6875, +6900, +6906, +6913, +6942, +6981, +6996, +6996, +7015, +7015, 7015, -7077, -7155, -7207, -7222, -7250, -7284, -7284, -7297, -7334, -7357, -7357, -7373, -7373, -7373, -7398, -7411, -7424, -7458, -7470, -7508, -7508, -7531, -7538, -7554, +7022, +7044, +7044, +7062, +7062, +7062, +7089, +7102, +7102, +7150, +7159, +7186, +7194, +7204, +7204, +7226, +7256, +7264, +7277, +7302, +7316, +7316, +7351, +7387, +7410, +7410, +7410, +7421, +7463, +7463, +7463, +7463, +7463, +7499, +7521, +7521, +7550, 7566, -7580, -7612, -7612, -7612, -7619, -7629, -7636, -7648, -7682, -7682, -7701, -7712, -7712, -7712, -7719, -7719, -7746, -7746, -7746, -7770, -7770, -7770, -7770, -7770, -7795, -7847, -7847, -7847, -7868, -7868, -7877, -7893, -7910, -7942, -7976, -7976, -8015, -8020, -8031, -8031, -8040, -8040, -8059, -8071, -8092, -8123, -8136, -8136, -8136, -8141, -8141, -8141, -8148, -8148, -8193, -8193, -8210, -8230, -8247, -8247, -8264, -8296, -8317, -8332, -8332, -8332, -8364, -8392, -8403, -8421, -8421, -8441, -8441, -8441, -8441, -8441, -8460, -8474, -8487, -8508, -8508, -8508, -8526, -8540, -8540, -8540, -8540, -8572, -8596, -8641, -8641, -8641, -8686, -8686, -8686, -8695, -8695, -8714, -8735, -8744, -8775, -8780, +7600, +7627, +7627, +7627, +7641, +7652, +7665, +7677, +7677, +7677, +7693, +7709, +7709, +7725, +7725, +7757, +7757, +7811, +7817, +7874, +7886, +7905, +7905, +7905, +7905, +7929, +7929, +7958, +7972, +7988, +7988, +7988, +8007, +8038, +8078, +8078, +8084, +8084, +8111, +8111, +8111, +8118, +8118, +8118, +8118, +8118, +8118, +8128, +8147, +8159, +8166, +8166, +8191, +8191, +8229, +8229, +8229, +8229, +8229, +8251, +8258, +8258, +8258, +8258, +8258, +8263, +8263, +8272, +8290, +8301, +8301, +8333, +8333, +8350, +8357, +8408, +8408, +8408, +8425, +8469, +8469, +8504, +8545, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8552, +8575, +8608, +8608, +8608, +8634, +8652, +8652, +8673, +8673, +8673, +8673, +8688, +8688, +8717, +8717, +8762, +8762, +8762, +8779, 8802, -8802, -8802, -8802, -8835, -8842, -8894, -8894, -8908, -8908, -8908, -8942, -8967, -8967, -9008, -9008, -9023, -9035, -9035, -9035, -9052, -9079, -9087, -9087, -9127, -9139, -9139, -9173, -9173, -9199, -9208, -9235, -9235, -9249, -9249, -9259, -9259, -9267, -9285, -9300, -9300, -9322, -9337, -9342, -9342, -9348, -9407, -9418, -9434, -9434, -9455, -9455, -9455, -9469, -9489, -9489, -9527, -9527, -9527, -9568, -9568, -9568, -9578, -9603, -9610, -9610, -9610, -9621, -9621, -9625, -9641, -9649, -9649, -9649, -9667, -9667, -9667, -9680, -9709, -9709, -9739, -9739, -9766, -9775, -9783, -9790, -9810, -9810, -9828, -9828, -9853, -9867, -9867, -9867, -9867, -9884, -9884, -9900, -9900, -9936, -9954, -9954, -9977, -9987, -9987, -9994, -9994, -10009, -10009, -10009, -10029, -10047, -10047, -10062, -10076, -10076, -10100, -10106, -10106, -10113, -10129, -10143, -10166, -10166, -10198, -10208, -10208, -10229, -10251, -10251, -10275, -10275, -10281, -10314, -10333, -10333, -10333, -10357, -10357, -10378, -10386, -10398, -10420, -10443, -10461, -10480, -10488, -10498, -10498, -10498, -10498, -10528, -10528, -10534, -10534, -10534, -10534, -10534, -10534, -10534, -10558, -10579, -10595, -10595, -10595, -10595, -10611, -10611, +8812, +8844, +8844, +8850, +8862, +8887, +8893, +8928, +8946, +8978, +9010, +9010, +9010, +9010, +9041, +9047, +9047, +9047, +9054, +9054, +9054, +9054, +9054, +9061, +9061, +9098, +9117, +9129, +9162, +9179, +9179, +9185, +9221, +9221, +9244, +9258, +9288, +9295, +9307, +9307, +9307, +9314, +9356, +9356, +9372, +9372, +9403, +9425, +9430, +9430, +9447, +9447, +9454, +9496, +9528, +9535, +9543, +9570, +9577, +9577, +9619, +9619, +9626, +9640, +9647, +9672, +9687, +9694, +9705, +9770, +9820, +9827, +9843, +9861, +9874, +9886, +9893, +9916, +9931, +9931, +9941, +9968, +10012, +10030, +10045, +10045, +10052, +10068, +10104, +10104, +10111, +10111, +10126, +10136, +10144, +10144, +10151, +10157, +10164, +10176, +10197, +10197, +10197, +10222, +10222, +10222, +10245, +10276, +10292, +10298, +10318, +10318, +10346, +10353, +10353, +10360, +10360, +10371, +10395, +10395, +10405, +10413, +10413, +10413, +10440, +10440, +10448, +10481, +10481, +10481, +10495, +10495, +10495, +10509, +10516, +10525, +10543, +10550, +10550, +10594, +10594, 10634, -10659, -10659, -10659, -10659, -10659, -10659, -10698, -10716, -10741, -10749, -10768, -10801, -10813, -10842, -10842, -10860, -10860, -10879, -10917, -10939, -10958, -10964, -10964, -10986, -10994, -11000, -11005, -11005, -11005, -11021, -11031, -11031, -11031, -11050, -11077, -11077, -11091, -11091, -11110, -11110, -11120, -11139, -11187, -11187, -11187, -11187, +10634, +10641, +10641, +10648, +10648, +10648, +10660, +10687, +10718, +10718, +10746, +10785, +10794, +10812, +10820, +10832, +10849, +10863, +10863, +10870, +10887, +10897, +10897, +10897, +10944, +10970, +10970, +10970, +11003, +11019, +11074, +11074, +11081, +11081, +11111, +11131, +11150, +11164, 11187, -11219, -11249, -11260, -11283, -11299, -11330, -11330, -11330, -11330, -11340, -11340, -11340, -11340, -11346, -11391, -11391, -11397, -11397, -11397, -11408, -11408, -11431, -11452, -11452, +11207, +11228, +11243, +11243, +11243, +11243, +11258, +11273, +11279, +11310, +11310, +11310, +11322, +11361, +11361, +11389, +11417, +11430, +11436, +11436, +11436, +11453, +11461, +11475, +11482, 11489, -11505, -11526, -11526, -11526, -11526, -11543, -11563, -11580, -11599, -11599, -11599, -11599, -11636, -11636, -11636, +11528, +11545, +11575, +11616, +11632, +11668, +11668, 11675, -11675, -11675, -11675, -11695, -11695, -11695, -11703, -11712, -11725, -11734, -11743, -11771, -11812, -11838, +11689, +11696, +11714, +11714, +11714, +11714, +11714, +11714, +11721, +11721, +11739, +11739, +11758, +11799, +11817, +11824, +11824, +11831, 11848, 11870, +11870, 11888, -11903, -11903, -11910, -11938, -11938, -11938, -11956, -11956, -11986, -11986, -11994, -12007, -12017, -12017, -12053, -12066, -12066, -12066, -12066, -12066, -12066, -12076, -12088, -12099, -12099, -12117, -12117, -12127, -12146, -12146, -12146, -12165, -12165, -12165, +11888, +11895, +11902, +11927, +11934, +11941, +11971, +12005, +12012, +12069, +12087, +12087, +12106, +12126, +12126, +12140, +12140, +12140, +12147, +12153, 12165, -12172, -12176, -12176, -12176, -12191, -12191, -12201, -12217, -12217, -12241, -12241, -12241, -12255, -12255, -12269, -12269, -12310, -12310, -12333, -12351, -12366, -12366, -12377, -12412, -12435, -12453, -12453, -12453, -12457, -12489, -12489, -12489, -12501, -12523, -12523, -12547, -12569, -12628, -12628, -12628, -12628, -12628, -12638, -12687, -12705, -12705, -12715, -12732, -12732, -12750, -12750, -12750, -12750, -12750, -12750, -12763, -12763, -12772, -12772, -12827, -12863, -12870, -12880, -12886, -12902, -12916, -12944, -12944, +12186, +12194, +12199, +12207, +12207, +12207, +12213, +12229, +12236, +12243, +12243, +12243, +12250, +12259, +12270, +12270, +12277, +12284, +12284, +12291, +12300, +12309, +12345, +12373, +12385, +12385, +12404, +12404, +12424, +12431, +12475, +12494, +12494, +12494, +12494, +12515, +12522, +12532, +12540, +12578, +12597, +12636, +12636, +12636, +12636, +12636, +12651, +12651, +12693, +12693, +12711, +12720, +12720, +12720, +12720, +12739, +12766, +12787, +12794, +12794, +12826, +12833, +12862, +12869, +12890, +12890, +12910, +12917, +12934, +12934, +12949, 12956, 12956, -12977, -12983, -12993, -13011, -13022, -13059, -13066, -13066, -13113, -13113, -13120, -13120, -13132, -13143, -13154, -13154, -13154, -13160, -13160, -13164, -13164, -13164, -13203, -13222, -13222, -13244, -13250, -13267, -13272, -13301, -13319, -13319, -13319, -13319, -13319, -13338, -13350, -13350, -13350, -13355, -13362, -13362, -13374, -13396, -13408, -13408, -13408, -13433, -13454, -13454, -13454, -13511, -13522, -13541, -13550, -13550, -13563, -13580, -13585, -13585, -13585, -13585, -13585, -13598, -13628, -13634, -13634, -13654, -13679, -13684, -13693, -13723, -13740, -13740, -13747, -13791, +12963, +12989, +12997, +13021, +13021, +13021, +13028, +13028, +13035, +13054, +13070, +13077, +13107, +13119, +13119, +13126, +13140, +13163, +13163, +13216, +13228, +13251, +13275, +13329, +13329, +13386, +13404, +13410, +13410, +13416, +13429, +13445, +13445, +13445, +13473, +13480, +13480, +13487, +13487, +13500, +13555, +13568, +13574, +13607, +13627, +13627, +13644, +13658, +13665, +13685, +13691, +13691, +13691, +13706, +13719, +13726, +13738, +13776, +13795, +13795, 13805, -13805, -13834, -13868, -13893, -13910, -13920, +13813, +13813, +13813, +13813, +13827, +13827, +13833, +13833, +13840, +13892, +13901, 13920, -13940, -13940, -13960, -13977, -13977, -13988, -13988, -13999, -13999, -13999, -13999, -14025, -14025, -14025, -14044, -14059, -14059, -14059, -14096, +13933, +13966, +13966, +13966, +13998, +14033, +14046, +14060, +14060, +14075, +14075, +14075, 14112, -14143, -14156, -14156, -14169, -14173, -14193, -14193, -14193, -14197, -14197, -14197, -14222, -14222, -14231, -14231, +14129, +14129, +14129, +14129, +14129, +14129, +14139, +14167, +14167, +14211, +14220, +14220, 14231, 14231, -14251, -14251, -14251, -14256, -14260, -14287, -14287, -14309, -14309, -14309, -14309, -14361, -14361, -14380, -14380, -14396, -14440, -14448, -14448, -14448, -14461, -14486, -14486, -14486, -14500, -14500, -14500, -14500, -14500, -14500, -14525, -14531, -14538, -14556, -14578, -14578, -14601, -14601, -14601, -14601, -14615, -14615, -14615, -14626, -14626, -14637, -14654, -14688, -14688, -14719, -14735, -14744, -14749, -14749, -14749, -14749, -14749, -14786, -14808, -14808, -14822, -14867, -14882, -14887, -14899, -14899, +14248, +14248, +14266, +14288, +14307, +14352, +14397, +14404, +14404, +14423, +14455, +14480, +14480, +14509, +14509, +14535, +14541, +14541, +14541, +14541, +14541, +14554, +14554, +14561, +14600, +14618, +14618, +14618, +14618, +14634, +14649, +14649, +14649, +14662, +14662, +14667, +14686, +14720, +14753, +14774, +14806, +14806, +14826, +14826, +14848, +14848, +14848, +14866, +14879, +14879, +14879, +14879, +14879, +14888, 14906, -14916, -14958, -14958, -14958, -14968, -15000, -15031, -15051, -15056, -15060, -15079, -15079, -15096, -15116, -15133, -15133, -15133, -15133, -15133, -15145, -15145, -15182, -15209, -15218, -15218, -15239, -15282, -15282, -15282, -15282, -15304, -15318, -15338, -15364, -15383, -15402, -15426, -15480, -15491, -15491, -15491, -15507, -15530, -15543, -15543, -15543, -15571, -15571, -15571, -15578, -15595, -15612, -15621, -15621, -15621, -15634, -15662, -15662, -15666, +14929, +14949, +14949, +14981, +14996, +15019, +15019, +15037, +15070, +15092, +15092, +15092, +15113, +15128, +15128, +15163, +15163, +15187, +15223, +15223, +15223, +15241, +15241, +15241, +15278, +15299, +15309, +15331, +15331, +15331, +15342, +15342, +15342, +15352, +15352, +15368, +15368, +15374, +15386, +15386, +15386, +15386, +15386, +15392, +15421, +15434, +15434, +15434, +15434, +15472, +15489, +15489, +15500, +15500, +15506, +15539, +15560, +15560, +15560, +15560, +15582, +15587, +15602, +15610, +15624, +15650, +15656, +15672, 15681, -15705, -15705, -15705, 15711, 15711, -15716, -15716, -15716, -15728, -15728, -15758, -15782, -15791, -15791, -15801, -15823, -15833, -15851, -15871, -15871, -15889, -15897, -15897, -15914, -15914, -15926, -15947, -15968, -15974, -15974, -15998, -16015, -16028, -16052, -16063, -16063, -16069, -16075, -16087, -16087, -16093, -16131, -16131, -16142, -16142, -16153, +15711, +15711, +15711, +15718, +15730, +15752, +15752, +15759, +15759, +15772, +15778, +15788, +15788, +15798, +15807, +15807, +15829, +15829, +15829, +15843, +15843, +15843, +15888, +15931, +15980, +15993, +16020, +16025, +16056, +16074, +16081, +16146, +16146, 16173, -16205, -16205, -16205, -16228, -16251, -16251, -16251, -16291, -16291, -16298, -16312, -16327, -16327, -16336, -16346, -16346, -16366, -16391, -16406, -16406, -16406, -16449, -16449, -16449, -16473, +16197, +16210, +16210, +16210, +16225, +16265, +16280, +16290, +16308, +16321, +16321, +16321, +16321, +16332, +16341, +16353, +16389, +16389, +16399, +16427, +16439, +16450, 16473, -16491, -16501, -16510, -16510, -16510, -16510, -16516, -16516, -16535, -16535, -16552, -16573, -16588, -16588, -16588, -16597, -16635, -16700, -16738, -16743, -16743, -16754, -16765, -16765, -16774, -16783, -16783, -16783, -16783, -16812, -16812, -16827, -16833, -16833, -16874, -16906, +16505, +16505, +16518, +16554, +16554, +16554, +16565, +16577, +16595, +16614, +16622, +16622, +16622, +16654, +16654, +16685, +16697, +16697, +16697, +16697, +16719, +16719, +16752, +16766, +16798, +16798, +16798, +16820, +16828, +16847, +16847, +16854, +16860, +16870, +16877, +16877, +16901, 16919, -16928, -16942, -16955, -16982, -17004, -17020, -17020, -17020, -17020, -17020, -17028, -17041, -17053, -17053, -17058, -17072, -17072, -17092, -17138, -17138, -17155, -17155, -17155, -17155, -17168, -17168, -17182, -17205, -17214, -17214, -17214, -17220, -17238, -17238, -17245, -17291, -17313, -17313, -17322, -17361, -17398, -17435, -17435, -17450, -17450, -17450, -17486, -17493, -17493, -17493, -17497, -17497, -17497, -17497, -17497, -17497, -17497, -17527, -17531, -17551, -17551, -17568, -17586, -17603, -17603, -17603, -17616, -17622, -17622, -17622, -17622, -17647, -17677, -17717, -17727, -17749, -17781, -17813, -17813, -17830, -17879, -17879, -17906, -17932, -17932, -17932, -17932, -17932, +16952, +16972, +16972, +16986, +16986, +17029, +17055, +17067, +17080, +17099, +17124, +17124, +17124, +17124, +17144, +17151, +17158, +17163, +17163, +17178, +17195, +17195, +17210, +17244, +17244, +17244, +17262, +17272, +17290, +17308, +17308, +17321, +17321, +17333, +17351, +17364, +17364, +17379, +17406, +17406, +17424, +17443, +17500, +17500, +17507, +17520, +17538, +17545, +17560, +17597, +17597, +17597, +17597, +17608, +17641, +17652, +17673, +17673, +17689, +17689, +17707, +17732, +17748, +17748, +17790, +17790, +17790, +17820, +17820, +17820, +17820, +17820, +17836, +17855, +17866, +17866, +17866, +17904, 17947, -17981, -17988, -18011, -18011, -18011, -18011, -18011, -18011, -18011, -18019, -18026, -18026, -18039, -18039, -18039, -18039, -18047, -18079, -18079, -18084, -18125, -18138, -18138, -18138, -18138, -18147, -18147, -18147, -18147, -18147, -18147, -18163, -18182, -18182, -18193, -18193, -18193, -18204, -18204, -18204, -18204, -18204, -18204, -18213, -18235, -18257, -18283, -18283, -18304, -18334, -18352, -18367, -18367, -18367, -18387, -18396, -18403, -18403, -18413, -18413, -18444, -18444, -18468, -18478, -18499, -18506, -18517, -18526, -18526, -18544, -18563, -18563, -18563, -18563, -18579, -18603, -18603, -18621, +17958, +17979, +17993, +18009, +18021, +18021, +18033, +18033, +18043, +18067, +18103, +18140, +18150, +18164, +18188, +18188, +18196, +18211, +18236, +18236, +18255, +18255, +18255, +18255, +18255, +18255, +18285, +18300, +18300, +18324, +18333, +18360, +18388, +18425, +18443, +18457, +18466, +18466, +18466, +18482, +18482, +18482, +18515, +18538, +18538, +18555, +18565, +18631, +18631, +18631, +18631, 18631, 18631, 18631, 18631, -18638, -18638, -18638, -18638, -18662, -18703, -18703, -18703, -18703, -18715, -18723, -18741, -18759, -18798, -18814, -18834, -18853, -18853, -18871, -18881, -18935, -18935, -18962, -18962, -18962, -18962, -18978, -18987, -18987, -18987, -19014, -19027, -19037, -19060, -19060, -19060, -19060, -19109, -19134, -19149, -19170, -19170, -19188, -19195, -19211, +18644, +18644, +18669, +18669, +18686, +18686, +18706, +18718, +18751, +18769, +18776, +18783, +18783, +18783, +18783, +18783, +18783, +18803, +18836, +18845, +18845, +18856, +18856, +18864, +18864, +18878, +18878, +18878, +18878, +18885, +18891, +18901, +18926, +18926, +18937, +18961, +18981, +18981, +18981, +18981, +18988, +19002, +19028, +19078, +19078, +19078, +19098, +19104, +19151, +19151, +19158, +19182, +19198, +19198, +19198, +19213, 19233, -19248, -19257, -19275, -19278, -19323, -19326, -19366, -19378, -19378, -19381, -19381, -19394, -19414, -19417, -19420, -19433, -19456, -19462, -19468, -19494, -19497, -19503, -19539, -19561, -19567, -19570, -19576, -19576, -19576, -19599, -19599, -19633, -19633, -19643, -19651, -19662, -19695, -19711, -19740, -19758, -19783, -19789, -19792, -19802, -19825, -19838, -19841, -19870, -19900, -19900, -19930, -19930, -19974, -20013, -20052, -20059, -20079, -20085, -20101, -20113, -20126, -20129, -20169, -20180, +19233, +19233, +19243, +19243, +19300, +19350, +19350, +19368, +19368, +19393, +19423, +19434, +19434, +19451, +19466, +19477, +19477, +19498, +19498, +19519, +19543, +19550, +19550, +19557, +19557, +19557, +19557, +19590, +19590, +19595, +19595, +19595, +19626, +19626, +19636, +19678, +19678, +19697, +19703, +19703, +19703, +19722, +19735, +19761, +19782, +19782, +19782, +19782, +19808, +19808, +19814, +19814, +19814, +19830, +19830, +19830, +19830, +19840, +19840, +19852, +19875, +19894, +19894, +19894, +19915, +19915, +19922, +19922, +19922, +19953, +19968, +19984, +19997, +20012, +20028, +20068, +20099, +20099, +20117, +20148, +20148, +20155, +20155, +20165, +20195, 20220, 20220, -20230, -20264, -20264, -20289, -20296, -20299, -20299, -20299, -20308, -20308, -20358, -20374, -20374, -20388, -20396, -20402, -20402, -20428, -20468, -20493, -20493, +20250, +20250, +20275, +20287, +20287, +20321, +20321, +20321, +20355, +20370, +20395, +20410, +20432, +20435, +20463, +20466, +20466, +20479, +20499, +20499, +20502, 20517, -20524, -20534, -20551, -20593, -20608, -20611, -20611, -20618, -20632, -20635, -20657, -20657, -20677, -20704, -20707, -20734, -20751, -20754, -20774, -20794, -20813, -20816, -20819, -20830, -20839, -20842, -20855, -20865, -20868, -20868, -20868, -20881, -20888, -20891, -20891, -20933, -20933, -20936, -20939, -20939, -20963, -20963, -20998, -21005, -21063, -21111, -21118, -21118, -21141, -21147, -21164, -21164, -21171, -21209, -21230, -21253, -21273, -21283, -21300, -21332, -21347, -21379, -21386, -21397, -21404, -21412, -21419, -21419, -21419, -21434, -21434, -21451, -21494, -21501, -21508, -21526, +20554, +20613, +20613, +20658, +20672, +20716, +20741, +20769, +20772, +20795, +20801, +20836, +20852, +20852, +20873, +20876, +20930, +20949, +20970, +20987, +20990, +21010, +21016, +21016, +21022, +21035, +21038, +21044, +21047, +21062, +21065, +21094, +21114, +21126, +21126, +21145, +21166, +21166, +21173, +21226, +21291, +21313, +21331, +21331, +21337, +21340, +21340, +21359, +21378, +21387, +21421, +21439, +21452, +21460, +21460, +21463, +21485, +21520, +21537, +21537, +21540, +21540, 21540, -21549, -21549, -21565, -21565, -21575, +21540, +21558, +21586, +21586, +21607, 21607, -21625, -21663, -21703, -21713, +21621, +21634, +21654, +21654, +21671, +21671, +21674, +21674, +21674, +21674, +21677, +21683, +21686, +21698, +21716, 21746, -21797, -21811, -21817, -21833, +21764, +21767, +21789, +21813, +21816, +21819, +21822, 21839, -21846, -21865, -21865, -21872, -21943, -21954, -21957, -21995, -22002, -22019, -22026, -22044, -22057, -22060, -22073, -22090, -22103, -22106, -22116, -22126, -22129, +21854, +21873, +21886, +21889, +21902, +21905, +21908, +21947, +21965, +21994, +21994, +22001, +22004, +22020, +22023, +22023, +22034, +22034, +22037, +22059, +22059, +22065, +22065, +22068, +22091, +22130, 22136, -22139, -22163, -22187, -22190, -22203, -22206, -22224, -22249, -22255, -22282, -22293, -22319, -22325, -22349, -22365, -22365, -22386, -22408, -22408, -22408, -22420, -22420, -22420, -22447, -22472, -22493, -22548, -22564, -22581, -22601, -22608, -22611, -22622, -22622, -22625, -22632, -22649, -22675, +22164, +22205, +22205, +22205, +22227, +22235, +22238, +22241, +22263, +22266, +22272, +22317, +22320, +22328, +22344, +22353, +22359, +22368, +22380, +22405, +22427, +22427, +22427, +22441, +22489, +22512, +22531, +22552, +22575, +22591, +22591, +22629, +22629, +22658, +22677, 22691, -22698, -22720, -22736, -22739, -22742, -22756, -22785, -22811, -22864, -22881, -22921, -22924, -22950, -22950, +22691, +22721, +22721, +22730, +22733, +22741, +22757, +22760, +22775, +22788, +22795, +22804, +22809, +22809, +22847, +22894, +22916, 22966, -22969, -22986, -23024, -23043, -23063, -23063, -23079, -23113, -23124, +22966, +22993, +23007, +23044, +23066, +23100, +23110, 23124, 23135, -23175, -23175, -23190, -23190, -23224, -23238, -23245, -23252, -23259, -23274, -23283, -23310, -23310, -23310, -23310, -23310, -23310, -23336, -23349, -23359, -23359, -23380, -23421, -23447, -23457, -23471, -23471, -23484, -23516, -23551, -23569, -23572, -23575, -23599, -23609, -23612, -23635, -23651, -23680, -23690, +23156, +23159, +23182, +23185, +23188, +23188, +23201, +23204, +23219, +23222, +23232, +23241, +23253, +23276, +23306, +23323, +23329, +23341, +23367, +23383, +23386, +23402, +23416, +23452, +23459, +23478, +23481, +23481, +23488, +23504, +23518, +23518, +23521, +23540, +23561, +23570, +23570, +23573, +23587, +23620, +23633, +23659, +23671, +23671, +23681, +23681, +23687, +23694, 23714, -23753, -23777, -23789, -23849, -23859, -23872, -23882, -23892, -23911, -23931, -23934, -23937, -23960, -23970, -23982, -23998, -24016, -24053, -24066, -24090, +23767, +23767, +23770, +23786, +23823, +23826, +23845, +23856, +23876, +23876, +23876, +23896, +23923, +23944, +23955, +23979, +23990, +23993, +24000, +24003, +24021, +24021, +24021, +24021, +24029, +24035, +24035, +24035, +24035, +24046, +24046, +24049, +24077, 24097, -24100, -24110, -24146, -24165, -24179, +24106, +24150, +24150, +24150, +24169, +24186, 24186, -24193, -24196, -24240, -24253, -24270, -24280, -24312, -24329, -24329, -24342, -24345, -24354, -24354, +24216, +24226, +24229, +24232, +24248, +24271, +24286, +24301, +24307, +24332, 24370, -24373, +24391, 24394, -24394, -24405, -24430, -24440, -24462, -24465, -24488, -24502, -24502, -24526, -24533, -24542, -24542, -24559, -24578, -24585, -24617, -24617, -24634, -24648, -24664, -24690, -24690, -24690, -24715, -24715, -24732, -24757, -24764, +24406, +24409, +24412, +24415, +24425, +24425, +24428, +24438, +24444, +24447, +24481, +24505, +24547, +24556, +24562, +24565, +24568, +24594, +24614, +24632, +24632, +24635, +24676, +24705, +24738, +24765, +24773, 24779, -24786, -24786, -24786, -24793, -24830, -24852, -24872, -24872, -24890, -24903, -24903, -24910, -24914, -24921, -24939, -24946, -24977, -24986, -25008, -25022, -25022, -25032, -25035, -25047, -25047, -25073, +24810, +24842, +24881, +24896, +24904, +24919, +24919, +24944, +24944, +24947, +24969, +24994, +25013, +25028, +25034, +25037, +25037, +25060, +25063, +25063, +25063, +25075, +25078, +25078, 25084, -25111, -25111, -25137, -25137, +25084, +25116, +25116, +25116, 25137, -25142, -25142, -25149, -25156, -25163, -25177, -25184, -25197, -25197, -25235, -25261, -25267, -25313, -25333, -25362, -25362, +25140, +25183, +25183, +25214, +25214, +25214, +25214, +25272, +25288, +25315, +25315, +25325, +25351, +25394, 25409, 25409, 25409, -25409, -25427, -25427, -25447, -25447, -25477, -25483, -25490, -25504, -25529, -25536, -25543, -25550, -25573, -25580, -25593, -25612, -25619, -25637, -25651, -25651, -25682, -25703, -25712, -25712, -25712, -25719, -25725, -25725, -25725, -25745, -25763, -25783, -25789, -25809, -25809, -25823, -25829, -25829, -25835, -25847, -25847, -25867, -25886, -25886, -25914, -25914, -25914, -25914, -25914, -25920, -25920, -25927, -25927, -25953, -25961, -25961, -25973, -25994, -25994, -26009, -26009, -26015, -26015, -26015, -26037, -26053, -26089, +25417, +25433, +25433, +25463, +25463, +25463, +25463, +25508, +25508, +25508, +25517, +25541, +25586, +25604, +25622, +25634, +25634, +25644, +25677, +25688, +25723, +25723, +25735, +25750, +25750, +25750, +25785, +25785, +25803, +25830, +25850, +25850, +25850, +25863, +25863, +25913, +25921, +25921, +25930, +25950, +25974, +25974, +25999, +25999, +26023, +26048, +26092, 26098, -26104, -26113, -26118, -26133, -26133, -26133, -26146, -26155, -26155, -26185, -26185, -26202, -26246, -26246, -26246, -26261, -26298, -26298, -26298, -26298, -26316, -26331, -26358, -26367, -26411, -26411, -26411, -26444, -26451, -26458, -26464, -26464, -26464, -26464, -26482, -26482, -26482, -26512, -26512, -26512, -26555, -26555, -26555, -26555, -26587, -26587, -26587, -26587, -26610, -26610, -26620, -26639, -26657, -26673, -26688, -26688, -26723, -26740, -26749, -26765, -26807, -26807, -26877, -26904, -26904, -26945, -26962, -26962, -26982, -26992, -27013, -27030, -27060, -27065, -27104, +26109, +26122, +26190, +26201, +26207, +26216, +26234, +26234, +26248, +26248, +26269, +26269, +26275, +26291, +26346, +26365, +26365, +26365, +26414, +26432, +26438, +26438, +26438, +26438, +26438, +26459, +26469, +26469, +26509, +26532, +26581, +26608, +26615, +26615, +26615, +26615, +26615, +26615, +26615, +26615, +26615, +26645, +26666, +26694, +26694, +26694, +26694, +26694, +26694, +26714, +26714, +26730, +26743, +26796, +26796, +26824, +26844, +26872, +26872, +26878, +26887, +26892, +26912, +26931, +26931, +26949, +26949, +26949, +26949, +26949, +26958, +26994, +27010, +27031, +27053, +27071, +27110, 27110, -27119, -27125, -27125, -27125, +27139, +27139, +27139, +27139, +27139, +27139, +27139, +27144, 27150, -27166, -27166, -27185, -27185, -27207, +27150, +27165, +27184, +27184, +27184, +27202, +27214, +27230, +27246, 27246, -27265, -27265, -27286, -27294, -27311, -27331, -27331, -27331, -27331, -27331, -27353, -27353, -27360, -27378, -27402, -27419, -27431, -27431, -27431, -27437, -27506, -27514, -27514, -27514, -27514, -27514, -27514, -27530, -27542, -27550, -27550, -27550, -27550, -27550, -27550, -27585, -27603, -27603, -27635, -27635, -27635, -27642, -27650, -27686, -27686, -27686, -27697, -27717, -27723, -27766, -27808, -27815, -27831, -27831, -27831, -27850, -27866, -27866, -27866, -27866, -27871, -27871, -27877, -27899, -27923, -27948, -27955, -27955, -27964, -27990, -27999, -28015, -28023, -28027, -28052, -28052, -28052, -28059, -28059, -28096, -28096, -28112, -28112, -28124, -28124, -28180, -28180, -28203, -28203, -28212, -28212, -28244, -28279, -28286, -28298, -28298, -28317, -28340, -28340, -28340, -28385, -28406, -28438, -28445, -28462, -28462, -28462, -28462, -28462, -28462, -28488, -28504, -28520, -28558, -28558, -28558, -28563, -28578, -28578, -28578, -28584, -28584, -28584, -28584, -28584, -28600, -28600, -28600, -28600, -28606, -28611, -28611, -28631, -28631, -28655, -28655, -28664, -28664, -28668, -28672, -28672, -28672, -28672, -28700, -28708, -28708, -28730, -28746, -28758, -28758, -28776, +27255, +27255, +27266, +27266, +27266, +27279, +27279, +27279, +27288, +27296, +27358, +27367, +27367, +27367, +27367, +27367, +27367, +27367, +27395, +27427, +27427, +27451, +27451, +27462, +27462, +27462, +27497, +27508, +27512, +27512, +27538, +27538, +27564, +27564, +27587, +27611, +27626, +27626, +27648, +27648, +27667, +27667, +27691, +27706, +27720, +27734, +27764, +27791, +27791, +27823, +27847, +27847, +27847, +27857, +27863, +27874, +27878, +27878, +27878, +27884, +27891, +27891, +27907, +27929, +27935, +27935, +27935, +27942, +27966, +27966, +27966, +27993, +27993, +27993, +27993, +28009, +28020, +28020, +28020, +28025, +28045, +28066, +28087, +28104, +28117, +28148, +28158, +28167, +28208, +28225, +28254, +28305, +28305, +28310, +28319, +28319, +28319, +28328, +28328, +28359, +28405, +28409, +28409, +28409, +28409, +28440, +28440, +28440, +28440, +28486, +28486, +28486, +28501, +28530, +28530, +28546, +28546, +28569, +28569, +28587, +28650, +28650, +28650, +28650, +28673, +28686, +28686, +28697, +28697, +28732, +28737, +28737, +28749, +28760, +28760, +28772, +28779, 28794, -28801, -28801, -28801, -28811, -28811, -28827, -28834, -28860, -28872, -28887, -28917, -28930, +28841, +28841, +28865, +28865, +28865, +28897, +28920, +28920, +28927, +28934, 28965, -28983, -28983, -29018, -29038, -29051, -29051, -29082, -29082, -29136, -29152, -29172, -29182, -29198, -29198, -29205, -29205, -29219, -29219, -29219, +29022, +29022, +29047, +29065, +29083, +29089, +29125, +29125, +29125, +29125, +29130, +29186, +29186, +29194, +29247, +29257, +29257, 29285, -29299, -29305, -29323, -29323, -29332, -29355, -29390, -29396, -29447, -29447, +29285, +29285, +29368, +29375, +29402, +29409, +29414, +29421, +29428, +29434, 29447, -29460, -29460, -29472, -29472, -29484, -29484, -29484, -29484, -29502, -29502, -29529, -29538, -29538, +29464, +29473, +29494, +29509, +29509, +29521, +29521, +29533, 29538, -29538, -29577, -29589, -29589, -29605, -29624, -29624, -29624, -29624, -29624, -29624, -29632, -29641, -29641, -29650, -29695, -29702, -29702, -29714, +29544, +29561, +29571, +29578, +29578, +29578, +29588, +29598, +29609, +29609, +29616, +29634, +29640, +29651, +29651, +29663, +29679, +29694, +29694, +29694, +29694, +29727, 29727, 29737, -29737, -29737, -29788, -29802, -29825, -29825, -29825, -29832, -29859, -29876, -29894, -29894, -29904, -29904, -29904, -29904, -29904, -29919, -29929, -29940, -29940, -29947, -29967, -29991, -29991, -29991, -29998, -30006, -30006, -30006, -30026, +29746, +29752, +29759, +29778, +29778, +29778, +29784, +29784, +29792, +29792, +29792, +29792, +29826, +29843, +29854, +29877, +29903, +29903, +29903, +29903, +29903, +29903, +29910, +29910, +29910, +29910, +29933, +29961, +29979, +30013, +30013, +30024, +30028, +30028, 30042, 30042, -30059, -30067, -30067, -30090, -30096, -30115, -30133, -30133, -30138, -30144, -30152, -30152, -30164, -30164, -30164, -30164, -30164, -30178, +30042, +30048, +30062, +30062, +30080, +30086, +30093, +30113, +30113, +30130, +30130, +30130, +30130, 30178, -30211, -30215, -30255, -30259, -30267, -30277, -30283, -30289, -30289, -30307, -30327, -30334, -30334, -30334, -30353, -30359, -30375, -30387, -30387, -30387, -30413, -30413, -30422, -30422, -30422, -30459, -30477, -30492, +30183, +30183, +30183, +30204, +30208, +30217, +30238, +30250, +30250, +30250, +30270, +30276, +30282, +30298, +30336, +30336, +30370, +30415, +30415, +30415, +30415, +30415, +30419, +30423, +30423, +30436, +30436, +30436, +30436, +30436, +30436, +30475, +30475, 30519, -30519, -30567, -30567, -30575, -30581, -30618, -30618, -30618, -30618, -30635, -30657, -30665, -30665, -30685, -30695, -30717, -30738, -30757, -30757, -30780, -30786, -30786, -30796, -30834, -30834, -30834, -30838, -30864, -30894, -30913, -30913, -30913, -30935, -30935, -30935, -30965, -30965, -30993, -31002, -31002, -31002, -31014, -31014, -31040, -31065, -31075, -31075, -31109, -31121, -31121, -31121, +30536, +30536, +30536, +30542, +30542, +30562, +30602, +30608, +30617, +30641, +30701, +30701, +30701, +30730, +30730, +30730, +30743, +30751, +30765, +30779, +30807, +30814, +30814, +30814, +30850, +30850, +30850, +30850, +30879, +30886, +30893, +30893, +30907, +30923, +30930, +30930, +30930, +30930, +30940, +31010, +31023, +31023, +31032, +31032, +31032, +31032, +31049, +31049, +31059, +31059, +31071, +31090, +31113, +31120, 31136, -31164, -31164, -31164, -31179, -31189, -31189, -31189, -31189, -31189, -31202, -31202, -31202, -31202, -31219, -31219, -31225, -31243, -31259, -31259, -31282, -31282, -31282, +31162, +31168, +31235, +31249, +31249, +31254, +31260, +31260, +31290, 31290, -31298, -31313, -31330, -31338, -31338, -31338, -31338, -31338, -31338, -31338, -31338, -31353, -31353, -31353, -31382, -31390, -31429, -31437, -31447, -31447, +31299, +31311, +31348, +31348, +31357, +31357, +31380, +31430, +31469, 31475, -31499, -31499, -31521, -31562, -31562, -31562, -31595, -31614, -31631, -31683, -31707, -31735, -31735, -31762, -31776, -31817, -31828, -31828, -31838, -31852, -31870, -31870, -31870, -31870, -31879, -31879, -31879, -31879, -31895, -31895, -31895, -31925, -31925, -31925, -31925, -31944, -31944, -31944, -31944, -31968, -31968, -31985, -32000, -32021, -32032, -32054, -32065, -32065, -32076, -32099, -32099, -32118, -32126, -32152, -32152, -32152, -32169, -32169, +31493, +31531, +31542, +31563, +31579, +31625, +31636, +31651, +31661, +31684, +31688, +31698, +31698, +31704, +31730, +31785, +31798, +31798, +31798, +31798, +31808, +31808, +31808, +31808, +31822, +31840, +31840, +31854, +31874, +31874, +31885, +31896, +31896, +31903, +31903, +31942, +31942, +31942, +31946, +31951, +31972, +31999, +31999, +32016, +32030, +32030, +32030, +32037, +32037, +32067, +32105, +32105, +32148, +32170, 32176, -32235, -32240, -32240, -32257, -32257, -32257, -32288, -32288, -32288, -32301, -32301, -32301, -32301, -32331, -32331, -32331, -32331, -32331, -32331, -32359, -32359, -32424, -32440, -32440, -32468, -32468, +32188, +32188, +32188, +32188, +32208, +32234, +32234, +32251, +32295, +32295, +32295, +32295, +32295, +32295, +32295, +32295, +32308, +32308, +32323, +32336, +32336, +32341, +32367, +32411, +32411, +32429, +32461, +32461, +32461, +32467, +32478, 32488, -32488, -32509, -32536, -32558, -32573, -32573, -32577, -32597, -32597, -32609, -32620, -32634, -32640, -32640, -32668, -32679, -32679, -32687, -32718, -32718, -32718, -32718, -32718, -32738, -32745, -32760, -32784, -32848, +32525, +32563, +32586, +32598, +32598, +32598, +32613, +32629, +32629, +32660, +32676, +32708, +32720, +32736, +32743, +32743, +32752, +32752, +32762, +32766, +32778, +32778, +32797, +32801, +32813, +32820, +32820, +32838, 32862, -32894, -32901, -32901, -32901, -32908, -32908, -32915, -32915, -32919, -32961, -32993, -33005, -33005, -33037, -33044, -33044, -33051, -33090, -33097, -33097, -33116, -33123, -33123, -33130, -33138, -33142, -33168, -33186, -33193, -33193, +32868, +32881, +32881, +32892, +32906, +32920, +32920, +32920, +32942, +32942, +32942, +32955, +32970, +32970, +32979, +32979, +32983, +32990, +33013, +33045, +33057, +33067, +33073, +33099, +33099, +33099, +33099, +33103, +33103, +33141, +33141, +33173, +33190, +33190, +33190, +33190, +33212, 33216, -33223, -33223, -33240, -33268, -33272, -33272, -33304, -33311, -33343, -33343, -33343, -33362, -33362, -33372, -33389, -33389, -33396, -33396, -33404, -33404, -33420, -33420, +33234, +33234, +33245, +33245, +33263, +33263, +33263, +33271, +33312, +33337, +33359, +33398, 33427, -33435, -33456, +33432, 33456, -33467, -33536, -33543, -33547, -33554, -33576, -33583, -33606, -33606, -33613, -33629, -33657, -33664, -33664, -33664, -33690, -33699, -33699, -33730, -33750, -33762, -33783, -33826, -33844, -33844, -33868, -33868, -33903, -33911, -33911, -33927, -33945, +33460, +33490, +33500, +33500, +33508, +33508, +33508, +33508, +33508, +33532, +33570, +33593, +33597, +33597, +33597, +33597, +33597, +33601, +33638, +33638, +33638, +33638, +33638, +33660, +33693, +33729, +33739, +33787, +33787, +33787, +33798, +33798, +33808, +33808, +33808, +33808, +33840, +33840, +33840, +33854, +33854, +33854, +33884, +33884, +33884, +33914, +33955, +33961, +33965, +33974, +33974, +33974, 33990, -34010, -34025, -34025, -34032, -34051, -34075, -34095, -34129, -34129, +33998, +34006, +34030, +34030, +34030, +34064, +34074, +34094, +34108, +34108, 34129, -34129, -34129, -34136, -34149, -34173, -34173, -34186, -34199, -34206, -34218, -34218, -34227, -34227, -34227, -34227, -34234, -34234, -34234, -34241, -34268, -34275, +34174, +34198, +34225, +34246, +34261, +34277, +34277, +34281, +34305, +34305, 34305, -34326, -34360, -34367, -34386, -34397, -34407, -34407, -34407, -34407, -34407, -34461, -34468, -34496, -34496, -34505, -34512, -34566, -34594, -34594, -34601, -34606, -34634, -34634, -34634, -34634, -34634, -34634, -34634, -34653, -34660, -34660, -34666, -34686, -34696, -34703, -34720, -34720, -34727, +34305, +34305, +34305, +34338, +34355, +34355, +34355, +34355, +34380, +34380, +34395, +34422, +34443, +34443, +34448, +34448, +34459, +34472, +34488, +34495, +34504, +34515, +34515, +34533, +34533, +34533, +34563, +34622, +34622, +34639, +34656, +34706, 34744, -34751, -34758, -34773, -34794, -34801, -34808, -34808, -34828, -34835, -34852, -34859, -34876, -34876, +34752, +34752, +34767, +34788, +34793, +34793, +34793, +34793, +34793, +34793, +34837, +34837, +34837, 34885, -34893, -34905, -34934, -34941, -34988, -34988, -34988, -35033, -35033, -35033, -35040, -35058, -35065, +34908, +34908, +34926, +34933, +34953, +34963, +34963, +34963, +34990, +34990, +35013, +35013, +35017, +35017, +35024, +35024, +35041, +35041, +35059, +35059, +35059, +35073, 35073, -35093, -35119, -35137, -35144, -35171, -35199, +35073, +35084, +35108, +35120, +35130, +35184, +35184, +35184, +35191, 35206, -35213, -35253, -35266, -35273, -35273, -35312, -35329, -35336, -35365, -35381, -35399, -35413, -35420, -35427, -35427, -35432, -35442, -35448, -35455, -35467, -35517, -35531, -35538, +35216, +35216, +35216, +35226, +35244, +35260, +35260, +35290, +35296, +35296, +35296, +35313, +35334, +35334, +35343, +35382, +35414, +35414, +35447, +35447, +35457, +35457, +35475, +35475, +35484, +35491, +35491, +35503, +35503, +35509, +35529, +35537, +35558, 35558, -35571, -35581, -35606, -35619, -35645, -35659, -35666, -35666, -35681, -35688, -35719, -35729, -35736, -35743, -35761, -35769, -35828, -35835, -35859, -35859, -35866, -35866, -35866, -35873, -35921, -35950, +35567, +35567, +35585, +35595, +35610, +35624, +35654, +35654, +35661, +35661, +35680, +35696, +35701, +35701, +35726, +35752, +35768, +35768, +35838, +35870, +35870, +35894, +35894, +35894, +35905, +35922, 35965, -35976, -35976, -35983, -36007, -36014, -36021, -36021, -36021, -36021, -36021, -36038, -36038, -36038, -36053, -36067, -36082, -36082, -36082, -36119, -36155, -36171, -36171, -36171, -36184, -36199, -36206, -36206, -36220, -36234, -36242, -36272, -36282, -36296, -36296, -36314, -36321, -36352, -36359, -36383, -36391, -36412, -36419, -36419, -36434, -36442, -36449, -36462, -36469, -36476, -36492, -36492, -36512, -36512, -36567, -36567, -36588, -36588, -36588, -36608, -36650, -36660, -36670, -36687, -36694, -36701, -36714, -36725, -36732, -36762, -36777, -36804, -36804, -36838, -36855, -36855, -36903, -36922, -36943, -36943, -36949, -36949, -36969, +35984, +35989, +36011, +36025, +36040, +36057, +36057, +36057, +36074, +36086, +36096, +36108, +36140, +36163, +36191, +36216, +36248, +36248, +36275, +36284, +36284, +36298, +36298, +36328, +36335, +36344, +36348, +36406, +36413, +36433, +36457, +36470, +36470, +36478, +36485, +36485, +36485, +36523, +36541, +36550, +36550, +36550, +36550, +36550, +36565, +36565, +36565, +36569, +36569, +36576, +36576, +36576, +36595, +36595, +36610, +36620, +36620, +36639, +36639, +36639, +36653, +36653, +36682, +36722, +36722, +36722, +36722, +36722, +36728, +36745, +36745, +36759, +36759, +36759, +36759, +36768, +36785, +36803, +36834, +36834, +36834, +36865, +36887, +36887, +36887, +36907, +36926, +36967, 36977, -36977, -36993, -36993, -37000, -37023, -37023, -37030, -37121, -37137, -37137, -37153, -37176, -37183, -37192, +36981, +36981, +37005, +37005, +37054, +37086, +37096, +37103, +37116, +37116, +37116, +37143, +37143, +37149, +37149, +37181, +37181, +37181, +37205, +37209, 37209, -37217, -37248, -37248, -37248, -37266, +37236, +37259, +37259, 37286, -37292, -37292, -37300, -37339, -37339, -37355, -37362, -37379, -37387, -37403, -37403, -37403, -37432, -37432, -37450, -37450, -37466, -37481, -37481, -37481, -37500, +37302, +37302, +37319, +37336, +37348, +37361, +37361, +37361, +37361, +37361, +37371, +37371, +37382, +37396, +37396, +37396, +37420, +37433, +37449, +37449, +37449, +37449, +37471, +37471, +37499, +37519, +37519, 37540, -37540, -37540, -37552, -37569, -37594, -37594, -37609, -37628, -37628, -37661, -37677, -37677, -37677, -37717, -37717, -37717, -37723, -37754, -37754, -37799, -37799, -37810, -37810, -37825, -37825, -37825, -37825, -37845, -37867, -37867, -37877, -37892, -37909, -37909, -37919, -37919, -37938, -37959, -37967, -37972, -37992, -37992, -38026, +37550, +37555, +37555, +37572, +37576, +37576, +37576, +37583, +37583, +37599, +37615, +37615, +37634, +37634, +37647, +37672, +37672, +37690, +37705, +37710, +37728, +37728, +37728, +37728, +37745, +37755, +37755, +37761, +37771, +37771, +37788, +37813, +37813, +37832, +37832, +37832, +37832, +37856, +37856, +37872, +37872, +37872, +37872, +37872, +37872, +37872, +37902, +37913, +37913, +37925, +37943, +37952, +37952, +37952, +37982, +38011, +38011, +38011, +38011, +38019, +38019, +38019, +38019, +38019, 38035, -38061, -38061, -38072, -38083, -38083, -38099, -38123, -38146, -38146, -38158, -38158, -38182, -38234, -38255, -38255, -38310, -38331, -38331, -38346, -38346, -38346, -38353, -38353, -38353, -38378, -38378, -38388, -38408, -38428, -38428, -38428, -38428, -38445, -38453, -38460, -38460, -38460, -38493, -38503, -38525, -38525, -38532, -38532, -38546, -38546, -38569, -38599, -38618, -38618, -38618, -38643, -38643, -38643, -38691, -38699, -38717, +38035, +38057, +38057, +38068, +38080, +38091, +38110, +38128, +38149, +38164, +38189, +38199, +38199, +38199, +38207, +38207, +38224, +38224, +38235, +38251, +38251, +38251, +38251, +38251, +38260, +38260, +38260, +38260, +38260, +38279, +38279, +38290, +38290, +38297, +38345, +38351, +38351, +38389, +38398, +38402, +38402, +38450, +38450, +38466, +38490, +38490, +38494, +38517, +38544, +38544, +38557, +38568, +38574, +38574, +38574, +38574, +38574, +38574, +38595, +38616, +38642, +38672, +38672, +38672, +38672, +38672, +38686, +38693, 38717, -38729, -38729, -38733, -38760, -38760, -38773, -38801, -38817, -38824, +38735, +38751, +38751, +38758, +38794, +38808, +38829, 38836, 38843, -38843, -38843, -38870, -38880, -38880, -38887, -38900, -38907, -38919, -38919, -38919, -38949, -38967, -38984, -38984, -38984, -38989, -38989, -39029, -39036, -39054, -39080, -39086, -39103, -39110, -39130, -39130, -39130, -39154, -39154, -39176, -39176, -39213, -39213, -39213, -39225, -39230, -39249, -39264, -39264, -39264, -39284, -39284, -39293, -39293, -39311, -39311, -39311, -39320, +38858, +38883, +38893, +38915, +38915, +38915, +38922, +38933, +38940, +38940, +38950, +38957, +38991, +39009, +39009, +39014, +39021, +39021, +39028, +39042, +39048, +39055, +39077, +39102, +39116, +39129, +39136, +39155, +39155, +39161, +39179, +39205, +39219, +39239, +39283, +39283, +39304, 39339, -39345, -39355, -39369, -39388, -39399, -39399, -39399, -39418, -39418, -39433, -39451, -39451, -39458, -39476, -39481, -39519, -39519, -39519, -39519, -39529, -39567, -39609, -39624, -39637, -39637, -39644, -39644, -39651, -39679, -39679, -39679, -39697, -39709, -39751, -39751, -39777, -39791, -39817, -39817, -39835, -39835, -39844, -39844, -39851, -39874, -39878, -39878, -39888, -39905, -39905, -39928, -39928, +39365, +39387, +39413, +39413, +39413, +39430, +39437, +39437, +39450, +39462, +39469, +39484, +39502, +39509, +39509, +39548, +39548, +39548, +39560, +39573, +39582, +39582, +39582, +39596, +39616, +39639, +39639, +39646, +39668, +39677, +39694, +39705, +39721, +39731, +39731, +39750, +39750, +39760, +39760, +39769, +39796, +39796, +39815, +39822, +39847, +39867, +39881, +39881, +39900, +39907, +39907, +39920, +39934, +39945, 39945, 39952, -39978, -39978, -39985, -40029, -40043, -40043, -40043, -40053, -40066, -40094, -40106, -40129, -40129, -40151, -40151, -40151, -40158, -40182, -40199, -40232, -40232, -40232, -40281, -40288, -40302, -40302, -40302, -40302, -40317, -40317, -40324, -40324, -40356, -40356, -40369, -40384, -40392, -40392, -40392, -40413, -40413, -40455, -40462, -40469, -40483, +39952, +39952, +39961, +39989, +40030, +40045, +40058, +40085, +40101, +40138, +40178, +40188, +40210, +40221, +40228, +40228, +40241, +40248, +40279, +40292, +40292, +40301, +40308, +40322, +40322, +40329, +40336, +40352, +40359, +40366, +40373, +40380, +40380, +40435, +40435, +40435, +40473, 40483, 40483, -40511, -40511, -40524, -40524, -40528, -40546, -40546, -40568, -40575, -40582, -40610, -40629, -40656, -40656, -40656, -40679, -40679, -40679, -40693, -40713, -40732, -40754, -40795, -40795, -40809, -40816, -40823, -40851, -40889, -40908, -40956, -40970, -41026, -41040, -41056, -41063, -41070, -41077, -41100, -41108, -41141, -41148, -41181, -41197, -41220, -41241, -41275, -41291, -41307, -41307, -41327, -41334, -41355, -41369, -41394, -41401, -41414, -41430, -41444, -41494, +40488, +40488, +40488, +40513, +40537, +40537, +40564, +40569, +40612, +40637, +40637, +40651, +40651, +40658, +40665, +40665, +40672, +40686, +40717, +40741, +40766, +40789, +40815, +40830, +40830, +40840, +40840, +40840, +40840, +40860, +40886, +40893, +40933, +40933, +40946, +40968, +41002, +41017, +41024, +41057, +41080, +41087, +41094, +41137, +41150, +41157, +41157, +41164, +41171, +41177, +41184, +41198, +41198, +41198, +41216, +41240, +41251, +41293, +41300, +41330, +41346, +41383, +41405, +41405, +41417, +41448, +41466, +41466, +41466, +41466, +41473, +41485, 41513, -41513, -41520, -41529, -41575, -41589, -41612, +41528, +41537, +41564, +41564, +41594, +41627, +41627, +41627, 41634, 41634, +41639, +41639, 41652, -41652, -41664, -41696, -41703, -41750, -41772, -41772, -41793, -41819, -41826, -41848, -41855, -41872, -41884, -41892, -41892, -41947, -41947, -41947, -41971, -41971, -41971, -41971, -41977, -41977, -41984, -42033, -42051, -42051, +41671, +41680, +41690, +41690, +41690, +41690, +41712, +41712, +41722, +41746, +41778, +41784, +41816, +41825, +41825, +41832, +41856, +41868, +41916, +41922, +41935, +41944, +41956, +41970, +41982, +41982, +41982, +41989, +41996, +42018, +42018, +42018, +42025, +42032, +42040, +42040, +42047, +42047, +42055, +42055, 42066, -42066, -42066, -42066, -42087, -42102, -42127, -42134, -42134, -42155, -42167, -42186, -42186, -42186, -42193, -42215, -42224, -42242, -42249, -42262, -42286, -42303, -42316, -42340, -42360, -42392, -42392, -42399, -42406, -42433, -42449, -42449, -42459, -42485, -42513, -42530, -42537, -42537, -42544, -42576, -42576, -42583, -42583, -42590, -42599, -42628, -42649, -42649, -42656, -42697, -42704, +42086, +42086, +42086, +42103, +42103, +42122, +42129, +42136, +42157, +42164, +42179, +42179, +42212, +42226, +42233, +42240, +42240, +42247, +42274, +42308, +42315, +42343, +42343, +42385, +42408, +42415, +42415, +42415, +42415, +42436, +42443, +42450, +42450, +42457, +42464, +42471, +42484, +42508, +42529, +42548, +42548, +42596, +42596, +42596, +42603, +42624, +42645, +42661, +42684, +42684, +42694, +42694, +42701, +42701, +42720, 42720, -42739, -42739, -42815, -42815, -42834, -42834, -42870, -42892, -42899, -42899, -42919, -42939, -42969, -42969, -42979, -42979, -42979, -42990, -43030, -43030, -43052, -43052, -43074, -43102, -43102, -43102, -43130, -43147, -43154, +42754, +42776, +42795, +42795, +42808, +42808, +42846, +42855, +42864, +42882, +42888, +42909, +42909, +42929, +42964, +42985, +43001, +43017, +43043, +43050, +43050, +43060, +43073, +43091, +43111, +43134, 43172, -43179, -43199, -43211, -43215, -43222, -43222, +43172, +43172, +43204, +43250, +43250, 43257, -43284, -43302, -43352, -43368, -43368, -43368, -43381, -43393, -43423, -43444, -43487, -43494, -43523, -43547, -43567, -43595, -43612, -43612, -43619, -43619, -43640, -43646, -43664, -43697, -43717, -43724, -43724, -43744, -43767, -43776, -43781, -43801, -43801, -43808, -43808, -43815, -43822, -43836, -43850, -43869, +43286, +43325, +43345, +43362, +43362, +43362, +43362, +43362, +43430, +43430, +43430, +43437, +43437, +43455, +43455, +43464, +43464, +43471, +43471, +43471, +43471, +43484, +43484, +43490, +43490, +43513, +43526, +43546, +43546, +43553, +43571, +43584, +43584, +43631, +43642, +43642, +43642, +43682, +43702, +43702, +43722, +43729, +43729, +43756, +43783, +43783, +43795, +43814, +43818, +43824, +43854, +43854, +43861, +43861, +43868, 43888, -43895, -43911, -43943, -43963, -43963, -43998, -43998, -44033, -44033, -44047, -44064, -44077, -44077, -44101, -44112, -44112, -44112, -44130, -44130, -44130, -44155, -44166, -44166, -44166, -44184, -44184, -44268, -44268, -44291, -44317, -44326, -44353, -44353, -44392, -44408, -44444, -44444, -44444, -44444, -44444, -44451, -44483, +43888, +43893, +43900, +43917, +43939, +43939, +43939, +43946, +43980, +43980, +43996, +44024, +44030, +44036, +44036, +44043, +44043, +44055, +44071, +44087, +44087, +44097, +44097, +44097, +44110, +44158, +44164, +44171, +44208, +44208, +44235, +44241, +44241, +44241, +44241, +44241, +44251, +44251, +44275, +44275, +44300, +44307, +44307, +44314, +44321, +44332, +44377, +44400, +44426, +44432, +44446, +44446, +44476, +44476, +44486, +44486, +44486, +44486, 44502, -44525, -44525, -44570, -44606, -44606, -44658, -44677, -44677, -44711, -44711, -44711, -44711, -44711, -44742, -44742, -44742, -44749, -44763, -44804, +44512, +44522, +44535, +44550, +44574, +44597, +44605, +44616, +44616, +44622, +44622, +44628, +44636, +44636, +44636, +44643, +44643, +44662, +44669, +44701, +44720, +44720, +44727, +44750, +44754, +44772, +44772, 44804, -44854, -44866, -44866, -44884, -44884, -44894, -44909, -44916, -44916, -44923, -44938, -44958, -44965, -45004, -45016, -45030, -45050, -45060, -45060, -45066, -45073, -45077, -45084, -45105, -45105, -45105, -45105, -45105, -45112, -45112, -45130, -45139, -45159, -45166, -45208, -45223, -45251, +44819, +44835, +44859, +44859, +44883, +44887, +44898, +44910, +44922, +44939, +44939, +44939, +44945, +44945, +44945, +44952, +44952, +44952, +44991, +45023, +45054, +45071, +45071, +45071, +45080, +45102, +45102, +45102, +45128, +45132, +45162, +45175, +45193, +45199, +45199, +45206, +45221, +45228, +45243, 45258, -45275, -45291, +45276, +45280, 45291, 45310, -45323, -45351, -45358, -45368, -45399, -45413, -45437, -45437, -45446, -45473, -45481, -45488, -45488, -45488, -45488, -45501, -45526, -45544, -45589, -45612, -45632, -45632, -45658, -45672, -45715, -45721, -45721, -45727, -45734, -45759, -45810, -45838, -45903, -45915, -45952, -45959, -45978, -45991, -45997, -45997, -45997, -45997, -46020, -46020, -46038, -46070, -46076, -46076, -46076, -46093, -46112, -46135, -46152, -46152, -46182, -46182, -46182, -46182, -46182, -46182, -46182, -46182, -46198, -46222, -46222, -46229, -46229, -46240, -46261, -46273, -46273, -46288, -46288, -46288, -46314, -46314, -46314, -46327, -46327, -46327, -46362, -46377, -46377, -46383, -46383, -46383, +45331, +45338, +45346, +45346, +45383, +45383, +45390, +45416, +45442, +45449, +45477, +45484, +45503, +45503, +45503, +45510, +45547, +45561, +45571, +45578, +45585, +45617, +45617, +45617, +45617, +45676, +45700, +45730, +45745, +45745, +45765, +45796, +45803, +45829, +45833, +45843, +45851, +45886, +45886, +45909, +45916, +45916, +45916, +45923, +45963, +45984, +45984, +46004, +46022, +46052, +46090, +46113, +46119, +46138, +46166, +46166, +46179, +46196, +46224, +46224, +46224, +46224, +46224, +46234, +46234, +46289, +46309, +46328, +46334, +46357, +46369, 46383, -46391, -46391, -46400, -46400, -46400, -46404, -46433, -46450, -46475, -46493, -46515, -46521, -46521, -46521, -46546, -46567, -46567, -46567, +46390, +46398, +46398, +46412, +46443, +46457, +46476, +46476, +46484, +46484, +46484, +46504, +46522, +46522, +46522, +46522, +46538, +46538, +46544, +46544, 46582, 46582, 46582, -46603, -46603, -46603, -46620, -46653, -46653, -46659, -46690, -46700, -46700, -46719, -46736, -46736, -46763, -46763, -46763, -46785, -46785, +46596, +46596, +46613, +46621, +46628, +46643, +46657, +46665, +46699, +46707, +46716, +46720, +46747, +46762, +46762, +46770, 46796, -46811, -46811, -46819, -46819, -46819, -46855, -46855, -46874, -46874, -46893, +46806, +46816, +46827, +46827, +46827, +46844, +46857, +46867, +46881, +46896, +46903, +46903, +46903, 46911, -46931, -46931, -46931, -46941, -46954, -46961, -46967, -46996, -47009, -47009, -47046, -47046, -47046, -47046, -47046, -47074, +46932, +46947, +46964, +46964, +46984, +47006, +47013, +47013, +47013, +47027, +47027, +47069, +47077, +47077, +47077, +47083, 47093, -47100, -47121, -47130, -47168, -47168, -47168, -47168, -47168, -47168, -47209, -47243, -47282, +47093, +47106, +47181, +47195, +47195, +47195, +47237, +47273, 47295, 47295, -47302, -47336, -47346, -47346, -47353, -47353, -47359, -47366, -47373, -47380, -47419, -47434, -47441, -47458, -47486, -47486, -47486, -47493, -47512, -47519, -47519, -47519, -47519, -47536, -47550, -47575, -47601, -47601, -47612, -47619, -47643, -47655, -47655, -47670, -47670, -47683, -47690, -47690, -47727, -47740, -47747, -47755, -47771, -47771, -47806, -47806, -47813, -47819, -47819, -47819, -47826, -47851, -47858, -47865, -47890, -47912, +47301, +47343, +47349, +47369, +47393, +47409, +47414, +47428, +47428, +47454, +47499, +47511, +47529, +47535, +47535, +47535, +47535, +47535, +47547, +47572, +47587, +47587, +47587, +47625, +47625, +47645, +47664, +47664, +47696, +47704, +47731, +47769, +47790, +47799, +47799, +47816, +47816, +47833, +47833, +47833, +47839, +47856, +47877, +47877, 47918, -47939, -47955, -47996, -48029, -48029, -48029, -48050, -48050, -48068, -48092, -48106, -48106, -48117, -48117, -48134, -48134, -48134, -48134, -48134, -48134, -48134, -48134, -48143, -48158, -48192, -48199, -48199, -48206, -48234, -48270, -48277, -48322, -48337, -48337, -48337, -48344, -48351, -48364, -48371, -48371, -48378, -48395, -48402, -48402, -48402, -48412, -48421, -48421, -48445, -48452, +47948, +47956, +47978, +47978, +47991, +47991, +47991, +48008, +48008, +48019, +48031, +48045, +48045, +48045, +48045, +48066, +48066, +48070, +48090, +48119, +48136, +48142, +48149, +48149, +48160, +48160, +48160, +48160, +48172, +48172, +48185, +48196, +48196, +48218, +48218, +48225, +48225, +48225, +48225, +48235, +48249, +48249, +48258, +48258, +48284, +48284, +48308, +48326, +48341, +48370, +48370, +48394, +48429, +48429, +48437, +48442, 48452, 48452, -48482, -48500, -48542, -48542, -48559, -48579, -48611, -48611, -48628, -48651, -48657, -48657, -48676, -48676, -48676, -48676, -48683, -48689, -48722, -48729, -48729, -48736, -48749, -48765, +48456, +48479, +48479, +48485, +48492, +48498, +48498, +48498, +48523, +48560, +48581, +48597, +48597, +48597, +48624, +48624, +48652, +48665, +48705, +48705, +48712, +48726, +48726, +48726, +48760, +48760, +48770, +48770, +48770, +48770, +48770, +48770, +48770, +48770, +48770, +48770, +48779, +48786, +48786, 48786, -48802, -48802, -48802, -48832, -48853, -48869, -48888, -48888, -48895, -48922, -48922, -48922, -48922, -48943, -48943, -48956, -48973, -48973, -48986, -48992, -49006, -49045, -49064, +48797, +48811, +48820, +48820, +48820, +48836, +48836, +48842, +48871, +48894, +48894, +48894, +48894, +48894, +48911, +48935, +48935, +48935, +48968, +48979, +48994, +49007, +49019, +49040, +49051, 49071, -49080, -49116, -49123, -49130, -49137, -49172, -49193, -49193, -49193, -49193, -49210, -49217, -49224, -49261, -49261, -49285, -49310, -49327, -49343, -49350, -49371, -49371, +49079, +49079, +49096, +49106, +49106, +49128, +49138, +49138, +49138, +49150, +49150, +49159, +49219, +49262, +49262, +49300, +49300, +49300, +49331, +49337, +49347, +49347, +49347, +49368, +49368, +49368, +49368, +49368, 49378, -49385, -49392, -49392, -49428, -49448, -49464, -49512, -49542, -49549, -49556, -49562, -49594, -49623, -49630, -49674, -49674, -49699, +49378, +49378, +49387, +49403, +49412, +49412, +49422, +49441, +49474, +49498, +49498, +49498, +49514, +49514, +49524, +49524, +49535, +49535, +49546, +49546, +49551, +49602, +49602, +49609, +49613, +49624, +49624, +49624, +49624, +49641, +49648, +49648, +49648, +49675, +49692, +49692, +49709, +49724, 49739, -49752, -49775, -49775, -49775, -49793, -49803, -49819, -49819, -49819, -49828, -49846, +49770, +49770, +49770, +49770, +49770, +49786, +49825, +49825, +49825, +49834, +49853, +49853, 49860, -49860, -49867, -49888, -49895, -49909, -49941, -49947, -49947, -50014, -50030, -50036, -50036, -50036, -50049, -50071, -50097, -50136, -50143, -50158, -50158, -50165, -50165, -50183, -50196, +49875, +49891, +49914, +49924, +49924, +49939, +49949, +49960, +49970, +49970, +49980, +49994, +50001, +50013, +50039, +50039, +50039, +50065, +50081, +50114, +50142, +50169, +50180, +50180, 50203, 50203, -50210, -50237, -50248, +50220, +50220, +50229, +50236, +50236, 50266, -50280, -50293, -50307, +50275, +50295, 50307, -50307, -50307, -50346, +50340, 50359, -50390, -50412, -50440, -50440, -50440, -50446, -50462, -50462, -50478, -50486, -50486, -50494, -50498, -50552, -50569, -50569, -50569, -50569, -50569, -50569, -50591, -50604, -50604, -50611, -50618, -50642, -50684, -50720, -50720, -50750, -50754, -50754, -50784, -50784, -50817, -50832, -50858, -50874, -50874, -50919, -50955, -50955, -50962, -50962, -50992, -51013, -51013, -51020, -51046, -51056, -51115, -51122, -51152, -51189, -51189, -51196, -51203, -51203, -51217, -51217, -51217, -51265, -51304, -51327, -51347, -51360, -51371, -51386, -51386, -51411, -51452, -51452, -51452, -51459, -51484, -51491, -51491, -51491, -51491, -51510, -51510, +50359, +50374, +50374, +50387, +50387, +50387, +50387, +50387, +50387, +50409, +50414, +50423, +50423, +50449, +50449, +50449, +50459, +50482, +50499, +50499, +50514, +50522, +50522, +50522, +50540, +50558, +50565, +50574, +50574, +50620, +50620, +50620, +50624, +50633, +50633, +50653, +50665, +50673, +50673, +50700, +50700, +50700, +50713, +50713, +50713, +50740, +50748, +50767, +50767, +50767, +50775, +50781, +50789, +50803, +50803, +50803, +50803, +50803, +50810, +50810, +50821, +50827, +50839, +50876, +50893, +50893, +50910, +50942, +50960, +50960, +50984, +50984, +50991, +50991, +51025, +51043, +51058, +51073, +51077, +51077, +51092, +51092, +51113, +51144, +51160, +51172, +51188, +51198, +51198, +51208, +51221, +51231, +51235, +51235, +51255, +51271, +51288, +51288, +51288, +51307, +51307, +51318, +51318, +51318, +51338, +51338, +51349, +51349, +51364, +51375, +51375, +51416, +51416, +51416, +51416, +51416, +51437, +51437, +51457, +51470, +51470, +51470, +51486, +51501, 51521, -51565, -51581, -51588, -51601, -51620, -51620, -51635, -51666, -51683, -51690, -51718, -51718, -51718, -51757, -51779, -51779, -51779, -51779, -51779, -51779, -51809, -51814, -51820, -51842, -51886, -51900, -51900, -51900, -51900, -51900, -51910, -51927, -51927, -51945, -51962, -51968, -51974, -51974, -51980, -51980, -51980, -51980, -52001, -52011, -52011, -52025, -52025, -52025, -52039, -52071, -52096, -52096, -52096, -52096, -52102, -52119, -52119, -52119, -52119, -52125, -52153, -52164, -52164, -52164, -52195, -52207, -52223, -52255, +51531, +51548, +51548, +51558, +51576, +51611, +51611, +51611, +51632, +51670, +51682, +51695, +51717, +51717, +51717, +51717, +51732, +51743, +51743, +51758, +51765, +51765, +51782, +51812, +51812, +51812, +51812, +51828, +51828, +51828, +51845, +51845, +51851, +51851, +51908, +51923, +51923, +51923, +51932, +51953, +51953, +51969, +52002, +52002, +52056, +52072, +52072, +52072, +52092, +52137, +52145, +52145, +52145, +52163, +52183, +52219, +52219, +52227, +52256, +52267, +52267, +52276, 52276, 52276, -52299, -52305, -52305, -52320, -52320, -52359, -52373, -52389, -52389, -52396, -52401, -52401, +52295, +52363, +52375, +52375, +52395, +52395, 52414, 52414, -52420, -52432, -52432, -52432, -52449, -52449, -52456, -52466, -52466, +52414, +52429, +52429, +52429, +52445, +52471, 52471, 52471, -52478, -52478, -52478, -52507, -52507, -52507, -52519, -52537, -52537, -52537, -52537, -52556, -52569, -52569, -52569, -52585, -52594, -52594, -52631, -52652, -52680, -52695, -52710, -52745, -52745, -52745, -52758, -52764, +52471, +52492, +52492, +52510, +52530, +52530, +52530, +52538, +52555, +52555, +52579, +52587, +52587, +52587, +52644, +52644, +52644, +52644, +52644, +52654, +52654, +52667, +52690, +52690, +52702, +52727, +52727, +52755, +52773, +52778, 52778, -52789, -52805, -52805, -52821, -52842, -52855, -52855, -52896, -52896, -52928, -52928, -52941, -52947, -52947, -52960, -52960, -52990, -53004, +52790, +52810, +52826, +52826, +52826, +52826, +52834, +52848, +52848, +52848, +52856, +52875, +52885, +52895, +52895, +52895, +52895, +52908, +52908, +52959, +52963, +52963, +52988, +52993, 53014, -53020, -53020, -53020, -53020, -53034, -53073, -53084, -53084, -53100, -53100, -53100, -53115, -53123, -53148, -53178, -53188, -53202, -53202, -53218, -53218, -53228, -53251, -53256, -53262, -53262, -53262, -53282, -53299, +53014, +53056, +53080, +53111, +53111, +53118, +53118, +53134, +53161, +53161, +53161, +53172, +53172, +53194, +53208, +53208, +53208, +53233, +53233, +53233, +53240, +53240, +53247, +53274, +53296, +53321, +53321, +53338, 53338, -53358, -53358, -53431, -53436, -53436, -53456, -53504, -53504, -53517, -53531, -53574, -53583, -53619, -53631, -53631, -53631, -53631, -53640, -53670, -53670, -53718, -53718, +53355, +53362, +53369, +53376, +53393, +53393, +53393, +53393, +53400, +53412, +53426, +53437, +53460, +53467, +53509, +53509, +53509, +53532, +53532, +53542, +53588, +53593, +53600, +53600, +53615, +53615, +53615, +53630, +53637, +53637, +53653, +53667, +53674, +53674, +53681, +53681, +53681, 53728, -53733, -53749, -53774, -53774, -53811, -53811, +53735, +53740, +53748, +53772, +53783, +53791, +53791, +53791, +53791, +53791, +53804, 53822, -53835, -53842, -53882, +53831, +53861, +53861, +53861, +53879, +53893, +53899, +53899, +53899, 53903, -53919, -53932, -53942, -53942, -53951, -53978, -54001, -54015, -54015, -54015, -54015, -54024, -54024, -54031, -54067, -54081, -54081, -54081, -54086, -54086, -54105, -54132, -54132, -54132, +53903, +53914, +53924, +53924, +53924, +53924, +53946, +53975, +53988, +53988, +54008, +54008, +54016, +54033, +54054, +54094, +54123, 54140, 54140, -54178, -54178, -54178, -54192, -54192, -54209, -54231, -54258, +54147, +54147, +54180, +54180, +54198, +54198, +54217, +54217, +54234, +54241, +54251, 54258, -54280, -54287, -54293, -54308, -54308, -54315, +54300, +54300, +54307, +54307, 54332, 54332, -54346, -54379, -54379, -54421, -54444, -54467, -54481, -54481, -54497, -54529, -54555, -54555, -54597, -54614, -54620, -54635, -54635, -54635, -54652, -54664, -54664, -54724, -54752, -54752, -54762, -54778, -54788, -54788, -54796, -54835, -54848, -54848, -54864, -54914, -54940, -54940, -54945, -54957, -54966, -54966, -54966, -54966, -54988, -54988, -54988, -55008, -55008, -55008, -55014, -55014, -55030, -55044, +54339, +54356, +54370, +54380, +54380, +54380, +54380, +54380, +54380, +54384, +54405, +54438, +54459, +54480, +54480, +54487, +54494, +54528, +54538, +54552, +54552, +54552, +54552, +54568, +54585, +54595, +54624, +54624, +54637, +54644, +54644, +54644, +54644, +54657, +54657, +54677, +54677, +54684, +54684, +54697, +54697, +54712, +54739, +54749, +54773, +54793, +54802, +54827, +54834, +54841, +54841, +54873, +54882, +54901, +54941, +54948, +54963, +54970, +54986, +54986, +55001, +55029, +55035, +55065, 55072, -55072, -55102, -55102, -55102, -55130, -55137, -55137, -55137, -55137, -55137, -55156, -55168, -55168, -55181, -55226, -55226, -55233, -55246, -55246, -55256, -55256, -55261, -55261, -55261, -55282, -55298, -55314, -55321, -55330, -55339, +55089, +55111, +55124, +55143, +55143, +55143, +55150, +55150, +55189, +55196, +55216, +55245, +55252, +55252, +55272, +55272, +55332, 55339, -55350, -55368, -55381, -55401, -55412, -55412, -55412, -55412, -55412, -55430, -55440, -55461, -55461, -55474, -55518, -55537, -55537, -55553, -55571, -55571, -55615, -55622, -55622, -55622, -55634, -55650, -55650, -55685, -55691, -55691, -55691, -55697, -55734, -55734, +55363, +55396, +55410, +55433, +55447, +55454, +55458, +55458, +55487, +55487, +55497, +55497, +55497, +55544, +55544, +55548, +55562, +55568, +55568, +55568, +55568, +55585, +55585, +55585, +55604, +55604, +55619, +55625, +55632, +55632, +55671, +55671, +55684, +55684, +55684, +55709, +55717, +55727, 55734, +55769, 55801, -55813, -55844, -55857, -55863, -55876, -55890, -55924, +55815, +55837, +55848, +55855, +55871, +55885, +55905, +55926, +55926, 55942, -55949, -55970, -55970, -55970, -55970, -55990, -56006, -56006, -56029, -56038, -56050, -56057, -56057, -56073, -56073, -56073, -56073, -56073, -56085, -56085, -56108, -56108, -56108, -56141, -56155, -56168, +55942, +55973, +55973, +55973, +55973, +55979, +56020, +56033, +56033, +56047, +56054, +56072, +56089, +56096, +56103, +56130, +56146, +56146, +56153, 56179, -56186, -56204, -56245, -56257, -56257, -56257, -56274, -56304, -56341, -56341, -56341, -56367, -56405, -56405, -56405, -56405, -56443, -56443, -56463, -56482, -56492, -56522, -56539, -56539, -56539, -56546, -56553, -56586, -56605, -56612, -56631, -56631, -56631, -56649, -56649, -56670, -56684, -56684, -56733, -56769, -56769, -56779, -56807, -56823, -56839, -56870, -56870, -56870, -56870, -56886, -56886, -56886, -56886, -56886, -56908, -56908, -56964, -56964, -56970, -56982, -57001, -57001, -57001, -57010, -57032, -57039, -57039, -57070, -57080, -57088, -57095, -57095, -57112, -57112, -57131, -57141, -57161, -57193, -57193, -57204, -57221, -57221, -57221, -57221, -57221, -57231, -57241, -57271, -57298, -57310, -57321, -57321, -57321, -57336, -57336, -57342, -57349, -57349, -57349, -57349, -57349, -57349, -57366, -57397, -57406, -57437, -57437, -57456, -57511, -57527, -57548, -57564, -57564, -57564, -57586, -57586, -57611, -57627, -57649, -57656, -57708, -57708, -57708, -57708, -57728, -57728, -57747, -57747, -57747, -57756, -57772, -57784, -57784, -57784, -57806, -57854, -57861, -57876, -57882, -57882, -57882, -57890, -57911, -57911, -57911, -57918, -57918, -57936, -57936, -57936, -57936, -57942, -57942, -57942, -57942, -57947, -57947, -57947, -57954, +56183, +56202, +56216, +56226, +56260, +56287, +56300, +56307, +56345, +56359, +56376, +56390, +56410, +56417, +56435, +56442, +56462, +56462, +56480, +56514, +56521, +56521, +56521, +56528, +56558, +56565, +56626, +56646, +56685, +56692, +56718, +56741, +56741, +56768, +56804, +56821, +56821, +56851, +56904, +56911, +56918, +56925, +56940, +56962, +56977, +56984, +56999, +57019, +57019, +57019, +57037, +57049, +57049, +57083, +57083, +57115, +57115, +57152, +57178, +57178, +57209, +57223, +57244, +57244, +57244, +57244, +57273, +57280, +57287, +57287, +57332, +57368, +57368, +57375, +57375, +57375, +57412, +57412, +57418, +57433, +57433, +57452, +57462, +57462, +57469, +57476, +57485, +57499, +57544, +57551, +57551, +57561, +57568, +57577, +57593, +57593, +57606, +57606, +57633, +57633, +57644, +57644, +57659, +57659, +57689, +57710, +57718, +57725, +57725, +57725, +57732, +57732, +57732, +57732, +57745, +57767, +57774, +57809, +57809, +57809, +57829, +57880, +57915, +57927, 57954, -57978, -57978, -58000, -58006, -58013, -58013, -58013, -58027, -58076, -58093, -58093, -58093, -58099, -58099, -58107, -58118, -58158, -58158, -58173, -58181, -58187, -58194, -58194, -58215, -58240, -58240, -58240, -58240, -58256, -58256, -58256, -58263, -58282, -58290, -58290, +58002, +58009, +58009, +58021, +58035, +58042, +58049, +58069, +58084, +58105, +58105, +58122, +58122, +58140, +58177, +58195, +58199, +58220, +58239, +58252, +58252, +58252, +58291, 58312, 58312, -58312, -58317, -58317, -58317, 58333, -58345, -58345, -58361, -58361, -58387, -58414, -58438, +58351, +58398, +58409, +58409, +58409, +58409, +58416, +58446, 58446, -58467, -58467, -58482, -58482, -58512, -58512, -58512, -58520, -58542, -58569, -58598, -58607, -58626, -58647, -58666, -58688, -58688, -58688, -58697, -58703, -58703, -58703, -58703, -58721, -58742, -58794, +58453, +58469, +58476, +58509, +58509, +58509, +58509, +58509, +58529, +58555, +58571, +58587, +58587, +58587, +58587, +58594, +58594, +58628, +58635, +58668, +58668, +58693, +58700, +58707, +58761, +58789, +58789, 58829, -58847, -58866, -58866, -58874, -58880, -58880, -58887, -58887, -58900, -58900, -58900, -58928, +58854, +58854, +58871, +58878, +58886, +58893, +58931, +58938, 58945, -58945, -58963, -58963, -58963, -58985, -58985, -58991, -59011, -59062, -59062, -59062, -59062, -59062, -59062, -59095, -59115, -59138, -59138, -59138, -59155, +58952, +58970, +58984, +59013, +59038, +59045, +59068, +59077, +59077, +59086, +59086, +59086, +59086, +59112, +59151, +59151, 59166, 59166, -59202, -59202, -59202, -59211, -59218, -59224, +59166, +59166, +59166, +59194, 59224, 59224, -59242, -59242, -59268, -59268, -59308, -59314, -59326, -59326, -59340, -59340, -59345, -59368, -59373, -59373, -59412, -59412, -59435, -59435, -59435, -59435, -59455, -59466, +59247, +59247, +59247, +59259, +59283, +59283, +59283, +59283, +59290, +59297, +59330, +59349, +59362, +59374, +59437, +59449, +59459, 59466, -59466, -59481, -59481, -59481, -59481, -59500, -59517, -59517, -59549, -59555, -59555, -59555, -59568, -59595, -59615, -59631, -59631, -59631, -59631, +59488, +59494, +59511, +59537, +59560, +59574, +59598, +59611, +59634, +59634, 59641, 59641, -59654, -59678, -59678, -59694, -59700, -59700, -59700, -59700, -59700, -59714, -59721, +59641, +59641, +59652, +59663, +59663, +59679, +59679, +59685, 59721, -59740, -59749, -59765, -59765, -59784, -59784, +59727, +59727, +59727, +59741, +59760, +59771, +59810, 59822, -59822, -59867, -59878, -59890, -59890, -59925, -59925, -59925, -59925, -59925, -59942, -59942, -59964, -59964, -59964, -59978, -59985, -59997, -60010, -60010, -60055, -60091, -60101, -60101, -60108, -60114, -60139, -60139, -60139, -60156, -60156, -60156, -60163, -60163, -60169, -60175, -60181, -60181, -60181, -60187, -60195, -60215, -60215, -60215, -60215, -60234, -60234, -60234, -60244, -60284, -60290, -60305, -60305, -60317, -60380, -60388, -60388, -60393, -60400, -60400, -60400, -60400, -60407, -60407, -60407, -60407, -60431, -60450, -60460, -60512, -60522, -60532, -60532, -60552, -60560, -60560, -60560, -60594, -60594, -60607, -60615, -60615, -60615, -60628, -60628, -60649, -60655, -60663, -60675, +59831, +59850, +59856, +59880, +59923, +59966, +59973, +59987, +60006, +60041, +60041, +60070, +60103, +60119, +60131, +60136, +60152, +60184, +60191, +60220, +60228, +60253, +60253, +60280, +60303, +60303, +60310, +60345, +60345, +60372, +60395, +60406, +60430, +60454, +60461, +60486, +60497, +60504, +60511, +60528, +60535, +60535, +60535, +60556, +60556, +60563, +60581, +60599, +60599, +60616, +60636, +60636, +60668, +60690, +60690, 60697, -60713, -60731, +60716, +60723, 60747, -60754, -60761, -60761, -60778, -60778, -60778, -60778, -60782, -60793, -60811, -60811, -60848, -60874, -60904, -60904, -60910, +60759, +60771, +60785, +60792, +60792, +60792, +60815, +60829, +60849, +60849, +60849, +60849, +60859, +60870, +60911, 60929, -60944, -60959, -60977, -60984, -60992, -60992, -61013, -61019, -61045, -61045, -61049, -61061, -61061, -61061, -61061, -61069, -61089, -61115, -61138, -61148, -61165, -61182, -61203, -61241, -61295, -61295, -61295, -61295, -61308, -61335, -61335, -61335, -61335, -61358, -61406, -61410, +60929, +60947, +60947, +60947, +60947, +60947, +60947, +60947, +60974, +60974, +60974, +60991, +61014, +61025, +61025, +61025, +61062, +61074, +61074, +61074, +61080, +61096, +61112, +61112, +61136, +61136, +61136, +61147, +61154, +61154, +61176, +61176, +61199, +61209, +61224, +61224, +61231, +61246, +61246, +61246, +61266, +61266, +61273, +61294, +61312, +61312, +61332, +61332, +61354, +61371, +61378, +61378, +61378, 61410, -61418, -61418, -61418, -61418, -61424, -61424, -61424, -61424, -61438, -61452, -61497, -61505, -61505, -61529, -61554, -61575, -61581, -61581, -61615, -61623, +61417, +61433, +61433, +61455, +61489, +61489, +61501, +61501, +61513, +61513, +61547, +61547, +61547, +61558, +61558, +61578, +61584, +61598, +61598, +61598, +61598, +61598, +61598, +61627, +61635, +61635, +61635, 61663, 61663, -61677, -61677, -61686, -61686, -61698, -61698, -61698, -61705, -61705, -61705, -61705, -61714, -61714, -61745, -61755, -61761, -61779, -61807, -61807, -61817, -61817, -61855, -61872, -61872, -61872, -61872, -61872, -61872, -61878, -61905, -61905, -61905, -61905, -61930, -61943, -61943, -61949, +61669, +61687, +61687, +61687, +61706, +61723, +61803, +61803, +61803, +61813, +61823, +61842, +61842, +61870, +61870, +61926, +61926, +61926, +61944, 61970, -61982, -61982, -61982, -61982, -61993, -61993, -62005, -62036, -62036, -62055, -62076, -62076, -62091, +61980, +61980, +61980, +61985, +62001, +62007, +62007, +62035, +62052, +62067, +62081, +62081, +62081, +62081, +62087, +62118, +62118, 62124, -62134, -62134, -62140, -62161, +62142, +62149, +62149, 62181, -62193, -62236, -62243, -62261, -62261, -62297, -62297, -62308, -62317, -62317, -62331, -62356, -62356, -62417, -62452, -62452, -62452, -62467, -62467, -62467, -62477, -62477, -62486, -62486, -62510, -62510, -62518, -62548, -62548, -62567, -62567, -62567, -62580, -62580, -62580, -62586, -62593, -62613, -62613, -62628, -62669, -62697, -62697, -62697, +62209, +62209, +62209, +62209, +62225, +62225, +62225, +62232, +62268, +62286, +62320, +62320, +62320, +62320, +62320, +62320, +62320, +62335, +62335, +62343, +62379, +62425, +62425, +62442, +62442, +62474, +62484, +62530, +62555, +62555, +62582, +62582, +62608, +62608, +62621, +62621, +62631, +62681, +62681, 62697, 62697, -62718, -62718, -62718, -62718, -62718, -62741, -62771, -62797, -62827, -62847, -62847, -62847, -62847, -62901, -62901, -62901, -62901, -62901, -62915, -62915, -62926, -62940, -62940, -62940, -62948, -62954, -62954, -62960, -62975, -62975, +62723, +62753, +62774, +62774, +62774, +62774, +62774, +62820, +62829, +62829, +62837, +62841, +62841, +62849, +62849, +62857, +62857, +62925, +62931, +62931, +62937, +62966, +62978, 62987, -63007, -63007, -63044, -63044, -63065, -63065, -63081, -63081, -63100, -63120, -63133, -63150, -63150, -63167, -63167, -63187, -63227, -63227, -63227, -63227, -63227, -63227, -63256, -63273, -63277, -63291, -63297, -63297, -63297, -63297, -63315, -63351, -63368, -63397, -63397, -63397, -63397, -63409, -63437, -63437, -63437, -63444, -63444, -63444, -63489, -63522, -63522, -63522, -63538, -63554, -63554, -63554, -63569, -63576, -63576, -63606, -63615, -63626, -63646, -63670, -63670, -63670, -63696, -63710, -63730, -63742, -63757, -63766, -63792, -63807, -63807, -63828, +62993, +63002, +63016, +63052, +63097, +63101, +63123, +63152, +63175, +63202, +63208, +63214, +63214, +63214, +63214, +63231, +63231, +63239, +63286, +63321, +63333, +63333, +63348, +63348, +63348, +63355, +63355, +63359, +63372, +63394, +63394, +63394, +63410, +63410, +63417, +63417, +63417, +63452, +63469, +63501, +63501, +63511, +63520, +63530, +63530, +63530, +63530, +63543, +63558, +63558, +63574, +63574, +63591, +63613, +63625, +63645, +63645, +63663, +63663, +63675, +63687, +63687, +63687, +63687, +63715, +63731, +63737, +63737, +63737, +63741, +63759, +63759, +63759, +63769, +63769, +63769, +63769, +63769, +63794, +63810, +63841, 63849, 63849, -63856, -63876, -63910, +63849, +63849, +63849, +63862, +63862, +63862, +63880, +63886, +63901, +63914, +63928, 63928, -63945, -63961, -63961, -63982, -64042, -64050, -64066, -64071, -64089, -64099, -64099, -64129, -64150, -64150, -64168, -64168, -64168, -64168, -64168, -64214, -64231, +63955, +63962, +63969, +63981, +63981, +63981, +63981, +63981, +63999, +64014, +64014, +64033, +64048, +64048, +64059, +64059, +64059, +64059, +64108, +64108, +64108, +64108, +64117, +64127, +64158, +64158, +64158, +64178, +64190, +64215, 64241, 64241, -64250, -64294, -64294, -64294, -64326, -64355, -64366, -64386, -64386, -64386, -64408, -64408, -64426, -64458, -64458, -64492, -64492, -64498, -64537, -64555, -64573, -64573, -64622, -64642, -64651, -64651, -64659, -64659, -64683, -64683, -64683, -64718, -64718, -64735, -64735, -64741, -64741, -64745, -64745, -64771, -64771, -64771, -64771, -64792, -64800, -64825, -64825, -64825, -64850, -64868, -64868, -64886, -64886, -64897, -64897, -64904, -64909, -64945, -64945, -64965, -64982, -65005, -65005, -65044, -65068, -65082, -65090, -65090, -65113, -65125, -65134, -65151, -65172, -65184, -65211, -65211, -65221, -65277, -65284, -65290, -65290, -65290, +64241, +64241, +64263, +64291, +64295, +64295, +64307, +64307, +64307, +64307, +64307, +64307, +64311, +64352, +64352, +64352, +64368, +64368, +64368, +64412, +64412, +64434, +64443, +64443, +64456, +64456, +64456, +64469, +64514, +64514, +64514, +64514, +64514, +64522, +64522, +64522, +64544, +64578, +64608, +64633, +64644, +64672, +64700, +64716, +64742, +64755, +64755, +64765, +64793, +64846, +64856, +64856, +64879, +64885, +64896, +64896, +64924, +64928, +64928, +64938, +64971, +64971, +64977, +65007, +65019, +65019, +65034, +65073, +65073, +65091, +65091, +65091, +65101, +65101, +65101, +65112, +65146, +65167, +65178, +65178, +65192, +65208, +65227, +65227, +65227, +65227, +65227, +65227, +65227, +65227, +65227, +65271, +65286, 65290, -65301, -65362, -65380, -65380, -65400, -65411, -65437, -65437, -65437, -65450, -65458, -65458, -65458, -65458, -65483, -65483, -65496, +65324, +65348, +65358, +65412, +65412, +65412, +65419, +65423, +65459, +65466, +65489, 65496, -65528, -65542, -65568, -65568, -65578, -65578, -65578, -65610, -65610, -65618, -65641, -65664, -65664, -65664, -65664, -65693, -65693, -65693, -65716, -65743, -65760, -65760, -65760, -65767, -65771, -65781, -65811, -65816, -65836, -65836, -65857, -65868, -65880, -65880, -65880, -65886, -65904, -65904, -65919, -65919, -65947, -65951, -65958, -65962, -65972, -65989, -65989, -65989, -65993, -66011, -66011, +65502, +65512, +65538, +65547, +65551, +65585, +65601, +65601, +65612, +65632, +65651, +65657, +65657, +65669, +65669, +65675, +65679, +65701, +65701, +65730, +65756, +65756, +65770, +65789, +65789, +65789, +65818, +65818, +65851, +65851, +65865, +65869, +65879, +65879, +65911, +65911, +65917, +65917, +65936, +65959, +65965, +65965, +65965, +65965, +65990, +66019, 66036, -66073, -66073, -66079, -66095, -66095, -66124, -66136, -66136, -66154, -66172, -66176, -66176, -66185, -66185, -66185, -66198, -66198, -66236, -66250, -66255, -66277, -66277, -66277, -66291, -66313, -66332, -66352, -66352, -66356, -66378, -66384, -66384, -66399, -66399, -66434, -66444, -66444, -66444, -66486, -66501, -66546, -66556, -66589, -66589, -66589, -66596, -66596, -66607, -66618, -66644, -66672, -66672, -66672, -66686, -66686, -66705, -66705, -66705, -66723, -66733, -66733, -66741, -66764, -66785, -66810, -66810, -66841, -66841, -66841, -66849, -66857, -66857, -66857, -66867, -66885, -66885, +66068, +66076, +66090, +66108, +66130, +66130, +66166, +66184, +66204, +66204, +66217, +66217, +66228, +66228, +66228, +66247, +66247, +66278, +66311, +66316, +66335, +66350, +66368, +66382, +66382, +66382, +66382, +66382, +66382, +66386, +66402, +66408, +66408, +66418, +66422, +66470, +66470, +66491, +66521, +66548, +66548, +66555, +66574, +66581, +66581, +66593, +66593, +66600, +66610, +66636, +66657, +66675, +66675, +66675, +66687, +66721, +66751, +66760, +66781, +66798, +66798, +66811, +66811, +66811, +66819, +66819, +66830, +66830, +66853, +66869, 66893, -66899, -66919, -66927, -66944, -66954, -66954, -66961, -66993, -66993, -67008, -67022, -67064, -67068, -67089, -67089, -67093, -67106, +66893, +66893, +66893, +66900, +66918, +66940, +66950, +66959, +66959, +66965, +67016, +67023, +67047, +67047, +67062, +67069, 67106, -67121, -67121, -67125, 67136, -67145, -67145, -67161, -67161, -67161, -67191, -67191, -67191, -67200, -67200, -67209, -67209, -67209, -67209, -67223, -67223, -67223, -67223, -67223, -67223, -67223, -67237, -67237, -67287, -67287, -67294, -67294, -67294, -67294, -67294, +67167, +67177, +67212, +67230, +67230, +67249, +67279, +67285, 67312, -67338, -67338, -67338, -67354, -67376, -67387, -67392, -67407, -67407, -67432, -67472, -67483, -67526, -67526, +67330, +67351, +67358, +67374, +67394, +67441, +67473, +67513, +67524, +67524, +67545, +67565, +67573, 67584, -67605, -67625, -67633, -67649, -67659, -67659, -67659, -67659, -67675, -67712, -67746, -67764, -67764, -67795, -67795, -67799, -67808, -67808, -67817, -67829, -67829, -67836, -67856, -67874, -67874, -67884, -67907, -67907, -67912, -67912, -67936, -67936, -67951, -67969, -67975, -67984, -67984, -67984, -67984, -67984, -68010, -68010, -68016, -68037, -68044, -68044, -68053, -68072, -68078, -68078, -68078, -68078, -68078, -68078, -68091, -68091, -68091, +67619, +67637, +67637, +67657, +67684, +67684, +67684, +67684, +67684, +67713, +67721, +67733, +67733, +67733, +67739, +67745, +67745, +67750, +67750, +67787, +67787, +67806, +67827, +67837, +67872, +67872, +67872, +67898, +67916, +67922, +67922, +67944, +67953, +67996, +67996, +68023, +68023, +68038, +68038, +68038, +68074, 68100, 68100, -68110, -68117, 68125, 68125, -68125, -68157, +68141, 68157, 68157, -68173, -68173, -68218, -68218, -68248, -68288, -68288, -68288, -68310, -68310, -68343, -68343, -68382, -68402, -68402, -68427, -68450, -68461, -68468, -68493, -68542, -68542, -68573, -68591, -68591, -68591, -68598, -68616, -68634, -68634, -68634, -68634, -68634, -68663, -68682, -68695, -68711, -68733, -68769, -68769, -68804, -68804, -68815, -68821, -68842, -68842, -68868, -68868, -68868, -68868, -68868, -68868, -68868, -68884, -68884, -68884, -68888, -68888, -68888, -68888, -68926, -68926, -68940, -68962, -68962, -68979, -68998, -69014, -69020, -69020, -69039, -69039, -69045, -69073, -69073, -69073, -69073, -69077, -69077, -69077, -69093, -69099, -69099, -69099, -69107, -69138, -69138, -69146, -69146, -69180, -69180, -69213, -69222, -69222, -69245, +68177, +68216, +68221, +68256, +68256, +68262, +68285, +68285, +68301, +68301, +68301, +68312, +68312, +68332, +68332, +68381, +68403, +68409, +68432, +68432, +68445, +68465, +68471, +68471, +68488, +68515, +68515, +68539, +68539, +68552, +68569, +68594, +68594, +68609, +68648, +68704, +68710, +68730, +68737, +68737, +68750, +68760, +68766, +68794, +68794, +68794, +68794, +68794, +68810, +68810, +68825, +68839, +68839, +68860, +68893, +68893, +68893, +68922, +68922, +68922, +68927, +68927, +68927, +68944, +68944, +68944, +68944, +68944, +68944, +68960, +68970, +68985, +69001, +69001, +69007, +69028, +69028, +69042, +69042, +69048, +69076, +69076, +69095, +69124, +69131, +69155, +69162, +69162, +69176, +69184, +69184, +69184, +69184, +69230, 69254, -69276, -69286, -69286, -69286, -69326, -69344, -69378, -69396, -69396, -69408, -69408, -69445, -69445, -69456, -69469, -69469, -69477, +69261, +69267, +69267, +69273, +69292, +69298, +69335, +69356, +69356, +69361, +69367, +69367, +69367, +69367, +69382, +69402, +69421, +69434, +69455, +69467, +69479, 69485, -69513, -69526, -69526, -69536, -69569, -69569, -69614, -69632, +69493, +69505, +69511, +69556, +69586, +69595, +69605, +69605, +69605, +69621, +69634, +69634, +69648, +69648, +69652, +69652, 69658, -69668, -69668, -69693, -69732, -69740, -69756, -69772, -69772, -69779, -69779, -69779, -69779, -69779, -69800, -69815, -69819, -69819, -69846, -69852, -69941, -69962, -69962, -69962, -69962, -69962, -69962, -69962, -69962, -69982, -70001, -70012, -70031, -70038, -70038, -70046, -70069, -70069, -70094, -70128, -70128, -70128, -70128, -70128, -70128, -70128, +69678, +69706, +69717, +69717, +69731, +69731, +69731, +69731, +69752, +69766, +69775, +69807, +69814, +69814, +69855, +69859, +69868, +69868, +69874, +69874, +69874, +69874, +69874, +69883, +69900, +69900, +69917, +69934, +69949, +69969, +69969, +69996, +69996, +70014, +70056, +70075, +70097, 70145, -70177, -70177, -70189, -70189, -70189, -70189, -70189, -70219, -70219, -70219, -70219, -70226, -70226, -70245, -70245, -70245, -70245, -70253, -70253, -70253, -70279, -70279, -70279, -70279, -70279, -70279, -70311, -70349, -70356, -70386, -70386, -70424, -70424, -70466, -70466, -70494, -70523, -70541, -70550, -70568, -70583, -70592, -70592, -70592, -70592, -70631, -70656, -70676, -70676, -70696, -70696, -70703, +70145, +70168, +70182, +70193, +70209, +70209, +70233, +70233, +70240, +70240, +70240, +70247, +70280, +70295, +70295, +70321, +70351, +70357, +70364, +70384, +70397, +70409, +70413, +70413, +70421, +70430, +70446, +70446, +70446, +70461, +70461, +70461, +70478, +70478, +70484, +70490, +70490, +70490, +70504, +70509, +70509, +70522, +70522, +70522, +70532, +70532, +70532, +70539, +70546, +70574, +70604, +70634, +70649, +70649, +70663, +70669, +70669, +70681, +70681, +70681, +70698, +70698, +70710, +70710, +70710, 70710, 70710, -70716, -70730, -70730, -70769, -70769, -70769, -70786, -70804, -70804, -70821, -70832, -70832, -70844, -70844, -70891, -70891, +70710, +70731, +70744, +70761, +70783, +70783, +70783, +70783, +70790, +70790, +70800, +70835, +70835, +70835, +70851, +70851, +70851, +70856, +70856, +70864, +70864, +70864, +70864, +70879, +70879, +70879, +70898, +70904, 70904, -70944, -70951, -70951, -70961, -70961, -70990, -71009, -71025, -71032, -71045, -71045, -71052, -71052, -71052, -71052, -71052, -71063, -71073, -71080, -71080, -71119, -71119, -71119, -71155, -71155, -71155, -71155, -71191, -71207, -71207, -71214, -71214, -71214, -71225, -71242, -71248, -71252, -71274, -71307, +70904, +70910, +70910, +70930, +70930, +70941, +70957, +70978, +70988, +71002, +71006, +71020, +71030, +71035, +71056, +71094, +71116, +71116, +71135, +71135, +71147, +71164, +71175, +71195, +71195, +71239, +71257, +71277, +71277, +71291, +71311, +71311, +71311, 71320, -71356, -71356, -71356, -71374, -71374, -71404, -71428, -71459, -71467, -71478, -71478, -71489, -71495, -71505, -71543, -71543, -71565, -71565, -71578, -71638, -71666, -71673, -71688, -71688, -71688, -71700, -71700, -71730, -71742, -71742, -71742, -71754, -71771, +71324, +71331, +71331, +71331, +71337, +71337, +71349, +71362, +71362, +71362, +71362, +71385, +71400, +71409, +71416, +71416, +71416, +71416, +71434, +71454, +71454, +71466, +71466, +71466, +71466, +71493, +71511, +71511, +71547, +71547, +71581, +71581, +71590, +71590, +71590, +71597, +71613, +71613, +71620, +71641, +71645, +71645, +71659, +71659, +71668, +71675, +71681, +71687, +71687, +71704, +71704, +71704, +71704, +71722, +71722, +71765, 71789, -71836, -71841, -71852, -71852, -71885, -71896, -71913, -71913, -71971, -71991, -71991, -72030, -72054, -72054, -72101, -72130, -72130, -72148, +71789, +71814, +71825, +71838, +71855, +71855, +71861, +71891, +71891, +71907, +71928, +71928, +71936, +71983, +71983, +71993, +71998, +71998, +71998, +72033, +72052, +72077, +72089, +72098, +72137, +72137, +72144, +72144, 72148, -72158, -72158, -72158, -72158, -72158, -72158, -72158, -72167, -72184, -72203, -72209, -72209, -72214, -72228, +72166, +72191, +72221, 72238, -72248, -72248, -72248, -72257, -72289, -72289, -72289, -72289, -72295, -72295, -72295, -72295, -72356, -72369, -72369, -72369, -72377, -72414, -72434, -72441, -72459, -72459, -72470, -72477, -72477, -72477, -72477, -72477, +72293, +72326, +72350, +72350, +72375, +72375, +72387, +72400, +72432, +72432, +72456, +72482, 72482, -72486, -72504, -72504, -72527, -72527, -72548, -72548, -72548, -72558, -72564, -72564, -72581, -72581, -72587, -72587, -72612, -72627, -72633, -72633, -72633, -72644, -72660, -72660, -72681, -72702, -72712, -72712, -72732, -72775, -72775, -72775, -72775, -72775, -72775, -72775, -72830, -72839, -72861, -72877, -72894, -72894, -72894, -72894, -72900, -72900, -72931, -72931, -72931, +72502, +72502, +72506, +72506, +72525, +72578, +72585, +72618, +72618, +72632, +72674, +72674, +72683, +72726, +72743, +72743, +72743, +72753, +72761, +72767, +72798, +72832, +72832, +72872, +72886, +72913, +72913, 72943, +72965, 72980, -72991, -73019, -73034, -73056, -73056, -73073, -73086, -73086, -73086, -73086, -73109, -73129, -73139, -73157, -73167, -73167, -73192, -73192, -73209, -73231, -73231, -73247, -73268, -73288, +73003, +73025, +73025, +73025, +73058, +73104, +73119, +73126, +73146, +73146, +73158, +73170, +73186, +73186, +73205, +73218, +73222, +73234, +73251, +73261, +73261, +73261, +73299, +73299, +73299, +73299, 73303, -73324, -73324, -73324, -73331, -73331, -73331, -73367, -73393, -73398, -73429, -73452, -73463, -73463, -73463, -73492, -73492, -73492, -73492, -73515, -73530, -73553, -73563, -73563, -73576, -73576, -73592, -73611, -73645, -73687, -73700, -73700, -73700, -73716, -73758, -73790, -73790, -73804, -73804, -73822, -73822, -73845, +73322, +73343, +73352, +73352, +73357, +73357, +73374, +73382, +73382, +73396, +73402, +73402, +73414, +73441, +73459, +73459, +73488, +73494, +73508, +73508, +73584, +73610, +73610, +73630, +73647, +73647, +73647, +73665, +73703, +73715, +73715, +73715, +73736, +73750, +73762, +73782, +73796, +73824, +73824, +73838, +73838, +73838, +73850, 73862, 73862, -73875, -73919, -73919, -73938, -73938, -73938, -73968, -73968, -73981, -73992, -73992, -73992, -73992, -73992, -74000, -74000, -74005, -74024, -74058, -74074, -74074, -74096, -74144, -74161, -74161, -74161, -74161, -74161, -74169, -74179, -74191, -74204, -74204, -74214, -74225, -74225, -74238, -74279, -74289, -74296, -74320, -74320, -74325, -74325, -74325, -74378, -74426, -74426, -74426, -74473, -74488, -74498, -74498, -74531, -74531, -74531, +73882, +73882, +73882, +73882, +73897, +73918, +73951, +73951, +73951, +73951, +73963, +73973, +73973, +73973, +73983, +73993, +74021, +74021, +74021, +74021, +74021, +74068, +74091, +74104, +74104, +74104, +74104, +74116, +74147, +74147, +74147, +74147, +74159, +74183, +74197, +74209, +74229, +74243, +74243, +74254, +74254, +74254, +74260, +74267, +74267, +74288, +74333, +74350, +74350, +74360, +74365, +74365, +74381, +74393, +74408, +74414, +74414, +74414, +74414, +74464, +74469, +74486, +74515, +74515, +74515, 74531, +74540, +74562, 74572, -74597, -74597, -74597, -74611, +74572, +74572, +74595, +74595, +74601, 74611, -74631, -74645, +74643, 74663, -74674, -74701, -74701, -74707, -74712, -74712, -74712, -74727, -74737, -74746, -74770, -74790, +74716, +74716, +74732, +74732, +74745, +74745, +74760, +74775, +74775, +74792, +74792, +74792, 74803, -74808, -74843, -74854, -74897, -74901, -74901, -74907, -74945, -74945, -74945, -74958, -74978, -74978, -74998, -74998, -75015, -75015, -75015, -75023, -75023, -75023, -75032, -75077, -75077, -75115, -75127, -75127, -75127, -75160, -75166, -75166, -75172, -75172, -75186, -75224, -75224, -75241, -75241, -75241, -75251, -75251, -75257, -75263, -75278, +74803, +74826, +74865, +74870, +74870, +74870, +74870, +74886, +74886, +74890, +74890, +74926, +74926, +74940, +74940, +74954, +74954, +74964, +74976, +74976, +74976, +75000, +75010, +75019, +75044, +75044, +75050, +75059, +75088, +75088, +75128, +75128, +75141, +75153, +75153, +75153, +75153, +75185, +75209, +75221, +75221, +75221, +75233, +75233, +75237, +75237, +75267, 75291, -75335, -75372, -75382, -75398, -75404, -75423, -75438, -75438, -75444, -75444, -75452, -75452, -75458, -75481, -75481, -75481, -75494, -75504, -75510, -75524, -75540, -75540, -75540, -75546, -75552, -75574, -75574, -75614, -75630, -75646, -75652, -75652, -75652, -75692, -75708, -75708, -75724, -75724, -75724, -75724, -75724, -75724, -75729, -75737, -75754, -75754, -75754, -75772, -75772, -75795, -75795, -75820, -75858, -75858, -75875, -75881, -75890, -75890, +75296, +75308, +75328, +75346, +75357, +75369, +75390, +75390, +75462, +75475, +75475, +75475, +75496, +75523, +75523, +75542, +75562, +75580, +75590, +75604, +75604, +75660, +75678, +75678, +75678, +75678, +75690, +75702, +75728, +75751, +75764, +75792, +75805, +75805, +75805, +75805, +75815, +75824, +75824, +75824, +75824, +75833, +75833, +75833, +75833, +75833, +75841, +75851, +75851, +75851, +75851, +75851, +75863, +75863, +75885, +75885, 75900, -75916, -75916, -75925, -75941, -75941, -75960, -75960, -75960, -75960, -75983, -75983, -75983, -75983, -75993, -75993, -75993, -76007, -76028, -76028, -76056, -76056, -76067, -76067, +75912, +75943, +75943, +75962, +75991, +75991, +76016, +76045, +76052, +76052, +76052, +76052, +76065, +76080, 76080, -76100, -76100, -76107, -76107, -76107, -76107, -76107, -76107, -76107, -76116, -76136, -76136, -76136, -76149, -76177, -76193, -76193, -76199, +76080, +76087, +76087, +76108, +76108, +76108, +76108, +76108, +76118, +76129, +76129, +76129, +76169, +76169, +76188, +76188, +76197, +76206, +76216, +76227, +76227, +76227, +76232, +76253, 76253, +76253, +76259, 76259, -76281, -76299, -76349, -76349, -76357, -76362, -76382, -76399, -76405, -76421, +76274, +76295, +76310, +76310, +76326, +76326, +76326, +76344, +76374, +76406, +76406, +76406, 76437, -76442, -76442, -76457, -76480, -76480, -76497, -76514, -76520, -76525, -76535, -76535, -76597, -76597, -76603, -76625, -76625, +76472, +76486, +76493, +76499, +76509, +76530, +76537, +76558, +76568, +76587, +76587, +76587, +76587, +76587, +76617, +76617, +76617, +76617, +76617, +76617, 76625, +76640, 76659, -76679, -76698, -76698, -76698, -76726, -76757, -76780, -76786, -76792, -76792, -76806, -76826, -76846, -76862, -76871, +76678, +76678, +76678, +76693, +76693, +76702, +76734, +76734, +76734, +76734, +76771, +76794, +76808, +76830, +76830, +76830, +76837, +76837, +76837, +76843, +76843, +76861, +76890, +76898, 76906, -76906, -76921, -76921, -76921, -76921, -76921, -76955, -76955, -76968, -76994, -77032, +76913, +76913, +76927, +76927, +76934, +76943, +76943, +76943, +76943, +76959, +76959, +76969, +76969, +76976, +76976, +77017, +77017, +77048, 77048, -77068, -77068, 77073, -77094, -77094, -77094, -77103, -77120, -77120, -77120, -77136, -77136, -77148, -77166, -77185, -77185, -77191, -77191, -77233, -77252, -77252, -77252, -77252, +77073, +77088, +77118, +77118, +77139, +77153, +77153, +77153, +77153, +77178, +77214, +77214, +77214, +77231, +77249, +77258, +77258, +77265, +77284, +77301, +77301, +77301, 77307, -77318, -77318, -77318, -77318, -77324, -77343, -77357, -77357, -77373, -77383, -77389, -77416, -77427, -77444, -77475, -77514, -77514, -77514, -77520, -77520, -77538, -77563, -77572, -77572, -77572, -77572, -77613, -77613, -77633, -77643, -77651, -77667, -77673, -77690, -77690, -77690, -77705, -77723, -77723, -77723, -77744, -77744, -77763, -77801, -77816, -77838, -77838, +77316, +77316, +77316, +77316, +77322, +77322, +77340, +77340, +77346, +77364, +77364, +77371, +77371, +77371, +77371, +77388, +77394, +77394, +77394, +77409, +77409, +77429, +77459, +77459, +77477, +77491, +77491, +77529, +77529, +77546, +77577, +77599, +77604, +77625, +77625, +77631, +77640, +77662, +77675, +77675, +77675, +77688, +77698, +77708, +77708, +77708, +77715, +77731, +77749, +77749, +77753, +77785, +77785, +77785, +77805, +77818, +77818, +77844, 77844, -77856, 77862, -77877, -77889, -77919, -77935, -77940, -77981, -77986, -78016, -78029, -78029, -78029, -78049, -78049, -78049, -78061, -78061, -78080, -78080, -78080, -78080, -78080, -78080, -78089, -78089, -78101, -78101, -78101, -78101, -78121, -78125, -78155, -78155, -78185, -78185, -78209, -78224, -78254, -78282, -78282, -78296, -78314, -78337, -78342, -78371, -78371, -78383, -78393, -78426, -78440, -78440, -78455, -78477, -78486, -78499, -78499, -78507, -78507, -78578, -78584, -78596, -78617, -78659, -78665, -78665, -78705, -78705, -78741, -78778, -78792, -78805, -78805, -78812, -78831, -78831, -78848, -78866, -78911, -78911, -78916, -78935, -78952, -78964, -78979, -78979, -78985, -79017, -79039, -79039, -79066, -79066, -79085, +77886, +77886, +77904, +77915, +77930, +77945, +77945, +77945, +77945, +77961, +77984, +77997, +78011, +78041, +78041, +78058, +78065, +78065, +78072, +78098, +78113, +78127, +78141, +78153, +78183, +78183, +78202, +78202, +78202, +78202, +78202, +78202, +78202, +78202, +78202, +78202, +78231, +78231, +78231, +78273, +78273, +78283, +78341, +78341, +78341, +78341, +78341, +78363, +78363, +78363, +78396, +78413, +78413, +78424, +78445, +78445, +78472, +78522, +78522, +78522, +78539, +78539, +78543, +78558, +78558, +78588, +78592, +78592, +78609, +78609, +78633, +78633, +78646, +78646, +78646, +78654, +78654, +78694, +78694, +78712, +78721, +78742, +78774, +78774, +78774, +78790, +78810, +78828, +78891, +78891, +78903, +78903, +78903, +78903, +78978, +78978, +78993, +78999, +79016, +79048, +79056, +79056, +79086, 79091, -79091, -79110, -79128, -79147, -79147, -79168, -79168, -79224, -79224, -79242, -79242, -79252, -79252, -79252, -79252, -79271, -79291, -79309, -79327, -79327, -79327, -79346, -79375, -79393, +79119, +79125, +79141, +79141, +79150, +79166, +79212, +79232, +79266, +79266, +79266, +79302, +79319, +79335, +79376, 79400, 79400, -79407, -79407, -79417, -79432, -79432, -79432, -79464, -79476, -79476, -79501, -79511, -79518, -79518, -79539, -79547, +79418, +79418, +79418, +79418, +79455, +79455, +79455, +79474, +79503, +79503, +79515, 79569, 79569, -79600, -79610, -79642, -79676, -79713, -79713, -79736, -79736, -79755, -79755, -79755, +79578, +79589, +79589, +79589, +79601, +79601, +79601, +79601, +79625, +79625, +79625, +79646, +79659, +79659, +79665, +79665, +79665, +79688, +79694, +79704, +79716, +79716, +79737, +79737, +79737, +79744, 79755, -79771, -79801, -79801, -79821, -79837, -79848, -79860, -79860, -79867, -79867, -79867, -79867, -79867, -79906, -79933, -79943, -79977, -79993, -80011, -80042, -80060, -80060, -80082, -80101, -80113, -80119, -80155, -80159, -80174, -80174, -80174, -80174, -80174, -80183, -80202, -80214, +79806, +79833, +79843, +79856, +79870, +79887, +79887, +79917, +79917, +79917, +79925, +79925, +79932, +79932, +79950, +79975, +80002, +80002, +80027, +80044, +80044, +80044, +80044, +80044, +80044, +80044, +80044, +80044, +80055, +80074, +80089, +80089, +80089, +80098, +80118, +80126, +80150, +80150, +80198, +80198, +80207, +80207, 80218, -80247, -80259, -80259, -80295, -80295, -80300, -80342, -80342, -80342, -80359, -80359, -80375, -80375, -80402, -80413, -80446, -80446, -80480, -80485, -80504, -80504, -80525, -80529, +80235, +80246, +80246, +80246, +80255, +80276, +80276, +80280, +80306, +80329, +80350, +80360, +80376, +80376, +80396, +80396, +80396, +80396, +80406, +80406, +80415, +80424, +80437, +80461, +80461, +80476, +80503, +80515, +80515, 80533, -80548, -80553, -80565, -80569, -80569, -80605, -80623, -80623, -80623, -80623, -80643, -80684, -80684, -80695, -80695, -80712, -80730, -80737, -80737, -80776, -80776, -80776, -80776, -80776, -80776, -80795, -80795, -80816, -80867, -80881, -80881, -80881, -80896, -80896, -80913, -80913, -80937, -80937, -80947, -80952, -80952, -80952, -80958, -80992, -80992, -81015, -81048, -81063, -81063, -81082, -81089, -81121, -81121, -81121, -81151, -81196, -81201, -81215, -81215, -81244, -81244, -81244, +80559, +80567, +80567, +80567, +80567, +80595, +80595, +80600, +80618, +80618, +80624, +80624, +80624, +80624, +80661, +80661, +80697, +80697, +80697, +80697, +80697, +80714, +80718, +80718, +80725, +80772, +80786, +80805, +80805, +80833, +80882, +80886, +80907, +80907, +80907, +80955, +80955, +80963, +80986, +80986, +81002, +81002, +81025, +81025, +81043, +81066, +81066, +81076, +81081, +81101, +81117, +81146, +81146, +81162, +81188, +81188, +81195, +81204, +81227, +81227, +81227, +81227, +81264, +81264, 81273, -81273, -81307, -81333, -81338, -81400, -81400, -81400, -81400, -81418, -81418, -81418, -81430, -81455, +81283, +81299, +81311, +81339, +81339, +81350, +81372, +81397, +81425, +81425, +81425, +81425, 81455, -81493, -81499, -81527, -81527, -81539, -81554, +81467, +81467, +81467, +81483, +81497, +81513, +81513, +81513, 81560, -81584, -81584, -81601, -81601, -81601, -81601, -81601, -81601, -81601, -81619, -81631, -81643, -81643, -81643, -81654, -81666, -81716, -81740, -81740, -81757, -81769, -81797, -81797, -81848, -81873, -81873, -81873, -81873, -81885, -81885, -81898, -81911, -81916, -81940, -81940, -81940, -81940, -81956, -81956, -81961, -81977, -81994, -81994, -82025, -82025, +81578, +81595, +81595, +81605, +81605, +81616, +81616, +81623, +81623, +81623, +81632, +81640, +81640, +81640, +81640, +81640, +81640, +81640, +81659, +81676, +81690, +81690, +81690, +81690, +81690, +81690, +81694, +81694, +81709, +81725, +81730, +81730, +81746, +81746, +81765, +81765, +81765, +81801, +81815, +81815, +81826, +81826, +81830, +81830, +81830, +81849, +81863, +81874, +81884, +81884, +81884, +81909, +81953, +81971, +82024, +82024, +82024, +82024, 82031, -82047, -82047, -82086, -82105, -82124, -82124, -82143, -82143, -82143, -82143, -82163, -82163, -82163, -82163, -82163, -82188, -82193, -82207, -82207, -82207, -82234, -82246, -82265, -82314, -82314, -82314, -82323, -82323, -82323, -82323, -82337, -82337, -82343, -82349, -82349, -82375, -82385, -82402, -82402, -82452, -82462, -82462, -82462, -82469, -82481, -82481, -82481, -82540, -82550, -82567, -82576, -82576, -82576, -82585, -82591, -82620, -82634, -82668, +82054, +82068, +82088, +82104, +82132, +82192, +82221, +82221, +82262, +82281, +82287, +82300, +82300, +82300, +82300, +82300, +82300, +82300, +82306, +82306, +82328, +82328, +82338, +82338, +82365, +82365, +82365, +82365, +82365, +82365, +82365, +82372, +82372, +82403, +82403, +82403, +82403, +82403, +82420, +82453, +82453, +82467, +82467, +82467, +82479, +82484, +82493, +82502, +82518, +82559, +82582, +82618, +82618, +82618, +82667, +82667, 82687, -82714, -82724, -82724, -82750, -82750, -82750, -82764, -82777, -82811, -82849, -82849, +82703, +82726, +82726, +82726, +82738, +82799, +82799, +82806, +82827, +82843, +82843, +82848, +82848, +82848, +82848, +82848, 82864, -82877, -82888, -82917, -82917, +82864, +82870, +82878, +82891, +82895, 82917, -82923, -82944, -82958, -82958, -82958, -82958, -82958, -82971, -82985, -82985, -83004, -83004, -83025, +82933, +82960, +82983, +82983, +83005, 83025, -83107, -83126, -83126, -83126, -83126, -83126, -83126, -83126, -83132, -83132, -83147, -83153, -83153, -83153, -83164, -83164, -83176, -83183, -83212, -83233, -83294, -83315, -83336, -83355, -83355, -83355, -83367, -83403, -83430, -83448, -83448, +83058, +83068, +83085, +83090, +83094, +83094, +83094, +83094, +83136, +83169, +83169, +83169, +83169, +83187, +83201, +83201, +83201, +83209, +83225, +83252, +83252, +83275, +83297, +83304, +83304, +83312, +83312, +83316, +83343, +83365, +83370, +83370, +83370, +83390, +83431, +83431, +83436, +83436, 83448, -83448, -83488, -83488, -83488, -83488, -83488, -83488, -83506, -83506, -83506, -83510, -83551, -83567, -83575, -83575, -83591, -83591, -83599, -83681, -83681, -83703, -83703, +83454, +83487, +83504, +83504, +83515, +83519, +83519, +83519, +83529, +83529, +83562, +83562, +83569, +83587, +83592, +83606, +83615, +83615, +83642, +83690, 83709, -83732, -83742, -83742, -83752, -83752, -83805, -83805, -83805, -83845, -83864, -83864, -83875, -83907, -83933, -83950, -83976, -83985, -83992, -83992, -84001, -84040, -84040, -84057, -84070, -84096, -84124, +83714, +83714, +83721, +83721, +83721, +83741, +83741, +83755, +83773, +83797, +83812, +83812, +83827, +83837, +83865, +83865, +83865, +83865, +83865, +83877, +83877, +83877, +83884, +83884, +83905, +83910, +83922, +83922, +83934, +83946, +83946, +83968, +83968, +83988, +83988, +84023, +84023, +84023, +84034, +84034, +84034, +84048, +84061, +84085, +84085, +84085, +84125, +84125, +84125, +84125, +84125, +84134, +84134, +84134, +84155, +84155, +84170, +84179, 84179, -84187, -84232, -84232, -84286, -84308, -84308, -84322, -84322, -84322, -84322, -84338, -84357, -84373, -84373, -84373, -84394, -84394, -84402, -84402, -84402, -84424, -84445, -84466, -84485, -84501, -84501, -84522, -84529, -84547, -84592, -84592, -84621, -84633, -84651, -84651, -84662, -84689, +84179, +84212, +84212, +84224, +84242, +84247, +84256, +84256, +84276, +84303, +84303, +84310, +84310, +84317, +84324, +84324, +84324, +84328, +84328, +84346, +84346, +84353, +84364, +84397, +84407, +84407, +84433, +84433, +84433, +84447, +84447, +84463, +84463, +84463, +84488, +84488, +84499, +84523, +84523, +84523, +84540, +84540, +84540, +84556, +84556, +84556, +84556, +84588, +84619, +84666, +84666, +84666, +84666, 84696, -84704, -84704, -84704}; +84730, +84751, +84756, +84756, +84790, +84800, +84832, +84832, +84837, +84853, +84853, +84879, +84879, +84901, +84907, +84920, +84947, +84965, +84997, +85035, +85045, +85045, +85045, +85045, +85086, +85118, +85135, +85172, +85192, +85192, +85192, +85202, +85202, +85215, +85228, +85241, +85268, +85268, +85268, +85287, +85287, +85287, +85287, +85300, +85300, +85305, +85305, +85305, +85353, +85353, +85353, +85368, +85405, +85405, +85432, +85432, +85438, +85443, +85443, +85452, +85459, +85477, +85477, +85490, +85490, +85519, +85519, +85524, +85542, +85552, +85557, +85557, +85557, +85577, +85622, +85640, +85651, +85658, +85663, +85668, +85668, +85680, +85688, +85695, +85695, +85695, +85731, +85731, +85738, +85742, +85742, +85758, +85758, +85758, +85796, +85796, +85796, +85796, +85818, +85840, +85872, +85872, +85872, +85872, +85893, +85898, +85898, +85898, +85907, +85907, +85914, +85933, +85933, +85955, +85955, +85981, +85981, +85996, +86009, +86009, +86019, +86019, +86019, +86029, +86033, +86033, +86033, +86048, +86053, +86053, +86068, +86068, +86088, +86138, +86153, +86178, +86178, +86199, +86218, +86231, +86231, +86231, +86231, +86231, +86247, +86252, +86252, +86277, +86292, +86313, +86342, +86370, +86378, +86430, +86470, +86504, +86509, +86509, +86527, +86536, +86536, +86544, +86555, +86555, +86555, +86580, +86597, +86597, +86618, +86623, +86633, +86648, +86671, +86671, +86698, +86698, +86698, +86705, +86714, +86727, +86732, +86732, +86754, +86754, +86776, +86776, +86810, +86810, +86810, +86817, +86817, +86849, +86870, +86875, +86896, +86941, +86947, +86952, +86973, +86980, +86980, +87006, +87022, +87030, +87037, +87043, +87051, +87051, +87085, +87085, +87101, +87101, +87123, +87160, +87160, +87173, +87188, +87188, +87207, +87207, +87223, +87241, +87258, +87305, +87312, +87312, +87328, +87328, +87348, +87357, +87357, +87375, +87375, +87375, +87375, +87394, +87394, +87425, +87445, +87453, +87471, +87480, +87480, +87501, +87510, +87528, +87528, +87545, +87545, +87560, +87593, +87600, +87600, +87600, +87600, +87600, +87600, +87676, +87676, +87676, +87689, +87709, +87744, +87744, +87778, +87778, +87819, +87819, +87819, +87835, +87835, +87842, +87853, +87853, +87868, +87880, +87893, +87912, +87912, +87943, +87953, +87953, +87953, +87953, +87958, +87958, +87969, +88010, +88010, +88029, +88029, +88029, +88040, +88040, +88040, +88040, +88055, +88060, +88066, +88072, +88072, +88085, +88085, +88104, +88104, +88132, +88138, +88138, +88138, +88138, +88142, +88161, +88171, +88171, +88180, +88180, +88180, +88180, +88200, +88206, +88206, +88206, +88240, +88266, +88282, +88282, +88301, +88312, +88325, +88343, +88354, +88354, +88385, +88385, +88385, +88401, +88415, +88415, +88424, +88424, +88435, +88458, +88458, +88502, +88514, +88520, +88520, +88536, +88536, +88536, +88558, +88576, +88576, +88576, +88576, +88588, +88612, +88655, +88662, +88672, +88683, +88699, +88707, +88725, +88732, +88772, +88772, +88778, +88807, +88814, +88824, +88824, +88845, +88877, +88877, +88882, +88888, +88921, +88921, +88921, +88927, +88934, +88934, +88958, +88958, +88958, +88988, +89030, +89044, +89044, +89073, +89087, +89117, +89132, +89142, +89142, +89147, +89164, +89171, +89185, +89206, +89206, +89206, +89206, +89206, +89206, +89206, +89227, +89233, +89233, +89259, +89281, +89281, +89281, +89312, +89321, +89328, +89342, +89360, +89360, +89369, +89378, +89378, +89398, +89398, +89417, +89429, +89429, +89442, +89442, +89442, +89442, +89460, +89476, +89476, +89476, +89493, +89551, +89551, +89570, +89583, +89583, +89600, +89609, +89609, +89619, +89636, +89636, +89658, +89681, +89688, +89714, +89733, +89744, +89744, +89753, +89753, +89753, +89766, +89766, +89778, +89778, +89799, +89820, +89832, +89866, +89907, +89907, +89907, +89947, +89947, +89975, +89995, +90004, +90004, +90004, +90015, +90023, +90023, +90040, +90047, +90065, +90065, +90074, +90088, +90088, +90088, +90094, +90109, +90109, +90139, +90139, +90139, +90139, +90145, +90151, +90156, +90156, +90187, +90187, +90198, +90204, +90204, +90204, +90204, +90226, +90238, +90245, +90245, +90250, +90281, +90281, +90281, +90329, +90334, +90349, +90370, +90392, +90392, +90412, +90412, +90437, +90437, +90464, +90470, +90483, +90483, +90495, +90495, +90495, +90495, +90506, +90506, +90506, +90506, +90522, +90529, +90547, +90596, +90614, +90614, +90614, +90614, +90636, +90636, +90636, +90654, +90654, +90654, +90654, +90654, +90661, +90661, +90693, +90713, +90713, +90719, +90744, +90744, +90744, +90756, +90776, +90782, +90782, +90807, +90865, +90865, +90865, +90865, +90865, +90892, +90892, +90892, +90892, +90938, +90974, +90974, +90980, +90980, +90997, +90997, +91011, +91031, +91061, +91074, +91106, +91111, +91123, +91123, +91150, +91159, +91159, +91159, +91190, +91195, +91208, +91208, +91216, +91228, +91228, +91228, +91228, +91238, +91258, +91258, +91258, +91275, +91297, +91335, +91335, +91351, +91382, +91382, +91389, +91389, +91397, +91397, +91425, +91425, +91425, +91425, +91425, +91425, +91440, +91469, +91476, +91476, +91500, +91534, +91553, +91553, +91580, +91587, +91607, +91617, +91639, +91639, +91656, +91671, +91677, +91710, +91710, +91719, +91719, +91743, +91743, +91743, +91743, +91748, +91768, +91781, +91781, +91803, +91826, +91826, +91836, +91856, +91856, +91872, +91872, +91872, +91878, +91878, +91878, +91878, +91878, +91901, +91901, +91915, +91931, +91931, +91931, +91942, +91942, +91952, +91967, +91982, +91982, +92000, +92000, +92000, +92000, +92000, +92023, +92023, +92048, +92070, +92085, +92104, +92104, +92116, +92116, +92150, +92163, +92163, +92179, +92179, +92179, +92193, +92221, +92221, +92228, +92228, +92265, +92289, +92303, +92303, +92303, +92303, +92311, +92311, +92328, +92365, +92365, +92365, +92365, +92365, +92365, +92365, +92365, +92365, +92365, +92401, +92401, +92401, +92401, +92401, +92401, +92420, +92434, +92448, +92498, +92556, +92561, +92561, +92576, +92576, +92576, +92576, +92582, +92599, +92614, +92638, +92654, +92654, +92665, +92665, +92665, +92665, +92665, +92699, +92699, +92718, +92718, +92741, +92746, +92765, +92783, +92783, +92820, +92850, +92850, +92896, +92918, +92955, +92955, +92955, +92955, +92955, +92967, +92967, +92982, +92998, +93004, +93004, +93026, +93026, +93026, +93026, +93032, +93073, +93073, +93079, +93093, +93093, +93105, +93123, +93123, +93145, +93145, +93145, +93145, +93150, +93150, +93179, +93201, +93227, +93245, +93267, +93276, +93276, +93287, +93292, +93292, +93292, +93292, +93292, +93305, +93305, +93319, +93323, +93341, +93349, +93349, +93361, +93361, +93361, +93372, +93389, +93389, +93389, +93432, +93464, +93477, +93477, +93484, +93484, +93484, +93484, +93484, +93503, +93503, +93519, +93519, +93544, +93553, +93553, +93562, +93606, +93621, +93621, +93631, +93654, +93670, +93693, +93699, +93705, +93715, +93734, +93745, +93745, +93745, +93745, +93745, +93761}; static const char *tldData[] = { -"trentinosudtirol.it\0ashikaga.tochigi.jp\0" -"radio.br\0" -"lib.il.us\0photography\0" -"miki.hyogo.jp\0edunet.tn\0" -"aisai.aichi.jp\0" -"isa-geek.org\0" -"educator.aero\0mining.museum\0" -"tsu.mie.jp\0yakumo.shimane.jp\0turek.pl\0" -"*.sch.uk\0ifm\0" -"an.it\0" -"consulting\0" -"tsuyama.okayama.jp\0" -"kommune.no\0" -"hl.cn\0mamurogawa.yamagata.jp\0" -"michigan.museum\0" -"\xe6\x89\x8b\xe6\x9c\xba\0" -"sand\xc3\xb8y.no\0" -"jprs\0" -"ne.jp\0" -"rnd.ru\0" -"ogaki.gifu.jp\0chitose.hokkaido.jp\0chigasaki.kanagawa.jp\0kasukabe.saitama.jp\0" -"kawaguchi.saitama.jp\0takashima.shiga.jp\0chuo.tokyo.jp\0expert\0" -"ueno.gunma.jp\0bifuka.hokkaido.jp\0" -"oster\xc3\xb8y.no\0" -"nishigo.fukushima.jp\0" -"gs.sf.no\0" -"higashichichibu.saitama.jp\0qpon\0" -"ns.ca\0" -"oishida.yamagata.jp\0ne.kr\0kobierzyce.pl\0" -"for-some.biz\0" -"satx.museum\0" -"sydney.museum\0" -"fujishiro.ibaraki.jp\0gift\0" -"akaiwa.okayama.jp\0" -"azumino.nagano.jp\0" -"divtasvuodna.no\0" -"slg.br\0" -"creditunion\0" -"ralingen.no\0" -"trust\0" -"lib.tn.us\0" -"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" -"trentinosud-tirol.it\0unazuki.toyama.jp\0" -"naturhistorisches.museum\0war.museum\0nico\0" -"nedre-eiker.no\0odda.no\0" -"zentsuji.kagawa.jp\0" -"finn\xc3\xb8y.no\0" -"ikeda.osaka.jp\0" -"lerdal.no\0" -"mill.museum\0" -"wolomin.pl\0" -"vrn.ru\0" -"g12.br\0" -"artanddesign.museum\0" -"fujimino.saitama.jp\0" -"arts.co\0" -"shiroishi.saga.jp\0" -"honda\0" -"otaki.nagano.jp\0" -"harvestcelebration.museum\0bremanger.no\0nikolaev.ua\0" -"ilawa.pl\0" -"brandywinevalley.museum\0portal.museum\0" -"indianapolis.museum\0\xc3\xb8vre-eiker.no\0ski.no\0" -"catering\0condos\0" -"vlaanderen.museum\0" -"higashiyamato.tokyo.jp\0" -"alesund.no\0ternopil.ua\0" -"living.museum\0tysvar.no\0norilsk.ru\0osaka\0from-wi.com\0" -"bill.museum\0" -"is-saved.org\0" -"accident-investigation.aero\0palmsprings.museum\0" -"aeroport.fr\0tamba.hyogo.jp\0" -"sorum.no\0" -"ts.it\0" -"nose.osaka.jp\0" -"miners.museum\0ne.pw\0mari.ru\0ing\0" -"saikai.nagasaki.jp\0iheya.okinawa.jp\0miasta.pl\0" -"scientist.aero\0ovre-eiker.no\0" -"hirogawa.wakayama.jp\0" -"gs.oslo.no\0mn.us\0ink\0blogdns.com\0is-a-chef.org\0" -"miyama.mie.jp\0" -"starachowice.pl\0" -"settlement.museum\0k12.nh.us\0" -"sassari.it\0" -"lib.vi.us\0directory\0" -"b.bg\0" -"int\0" -"veg\xc3\xa5rshei.no\0" -"tsurugashima.saitama.jp\0" -"net.ac\0here-for-more.info\0" -"kamijima.ehime.jp\0" -"net.ae\0" -"net.af\0hakodate.hokkaido.jp\0opoczno.pl\0" -"net.ag\0" -"date.hokkaido.jp\0" -"net.ai\0" -"b.br\0" -"te.ua\0" -"net.al\0bl.it\0shichikashuku.miyagi.jp\0" -"net.an\0" -"net.ba\0tyumen.ru\0" -"net.ar\0net.bb\0friuli-v-giulia.it\0yawara.ibaraki.jp\0" -"nl.no\0dnsdojo.com\0" -"monzabrianza.it\0" -"net.au\0granvin.no\0" -"net.bh\0tadotsu.kagawa.jp\0olawa.pl\0" -"airforce\0" -"net.az\0konin.pl\0" -"fin.ec\0" -"shonai.yamagata.jp\0" -"net.bm\0vestre-toten.no\0" -"webhop.net\0" -"net.bo\0" -"net.br\0gen.in\0" -"net.bs\0" -"net.bt\0" -"shinjuku.tokyo.jp\0lincoln\0" -"geology.museum\0lahppi.no\0" -"net.ci\0" -"net.bz\0campidanomedio.it\0" -"gs.st.no\0naustdal.no\0omasvuotna.no\0from-il.com\0" -"aomori.aomori.jp\0tanabe.kyoto.jp\0" -"net.cm\0beeldengeluid.museum\0openair.museum\0tana.no\0" -"net.cn\0" -"net.co\0arboretum.museum\0ivano-frankivsk.ua\0" -"stavropol.ru\0" -"ne.ug\0" -"koganei.tokyo.jp\0" -"net.cu\0hl.no\0" -"ne.tz\0goldpoint\0" -"net.cw\0" -"haga.tochigi.jp\0" -"services.aero\0net.dm\0whoswho\0" -"sodegaura.chiba.jp\0toyoura.hokkaido.jp\0jcb\0" -"net.do\0ne.us\0courses\0" -"best\0" -"baseball.museum\0paleo.museum\0" -"net.ec\0k12.ne.us\0isa-geek.com\0" -"gemological.museum\0" -"i.bg\0net.eg\0" -"toga.toyama.jp\0williamhill\0" -"net.dz\0matsue.shimane.jp\0" -"mytis.ru\0auto\0" -"toho.fukuoka.jp\0" -"saintlouis.museum\0is-a-chef.com\0" -"chikujo.fukuoka.jp\0okagaki.fukuoka.jp\0wegrow.pl\0" -"ogliastra.it\0hs.kr\0ist\0" -"atm.pl\0" -"ballangen.no\0date\0" -"bs.it\0" -"gotdns.com\0" -"pharmacy.museum\0blogsite.org\0" -"natuurwetenschappen.museum\0" -"tysfjord.no\0vagan.no\0" -"gu.us\0" -"vlaanderen\0" -"net.ge\0k12.gu.us\0" -"joso.ibaraki.jp\0shimotsuma.ibaraki.jp\0kawagoe.saitama.jp\0" -"net.gg\0iraq.museum\0holtalen.no\0za.com\0from-or.com\0" -"isehara.kanagawa.jp\0itoman.okinawa.jp\0zgorzelec.pl\0" -"slask.pl\0" -"est-a-la-maison.com\0" -"design\0" -"s3-website-ap-northeast-1.amazonaws.com\0" -"net.gn\0benevento.it\0" -"\xe7\xbb\x84\xe7\xb9\x94.hk\0botanical.museum\0" -"net.gp\0hanawa.fukushima.jp\0" -"arts.ve\0" -"net.gr\0" -"works.aero\0" -"net.gt\0" -"net.gy\0" -"seihi.nagasaki.jp\0" -"net.hk\0" -"koza.wakayama.jp\0hotel.tz\0" -"cq.cn\0net.hn\0va.it\0masuda.shimane.jp\0gen.nz\0" -"britishcolumbia.museum\0orkdal.no\0iwc\0" -"dynalias.org\0" -"net.ht\0net.id\0" -"ono.hyogo.jp\0" -"\xe5\x8f\xb0\xe6\xb9\xbe\0" -"k12.nv.us\0" -"net.im\0newmexico.museum\0chelyabinsk.ru\0" -"net.in\0" -"p.bg\0" -"yasuda.kochi.jp\0" -"net.iq\0cc.na\0" -"net.ir\0hofu.yamaguchi.jp\0" -"net.is\0r\xc3\xb8ros.no\0dyn-o-saur.com\0" -"net.je\0" -"video.hu\0graphics\0" +"sakae.chiba.jp\0" +"equipment.aero\0bjerkreim.no\0" +"gyeonggi.kr\0" +"jeep\0" +"chieti.it\0" +"landrover\0" +"genoa.it\0ugim.gov.pl\0" +"rishirifuji.hokkaido.jp\0tomiya.miyagi.jp\0foodnetwork\0" +"bananarepublic\0" +"kr\xc3\xb8""dsherad.no\0" +"swiftcover\0" +"wtc\0unusualperson.com\0" +"unazuki.toyama.jp\0" +"wtf\0forgot.his.name\0" +"dyndns.org\0ma.leg.br\0" +"cci.fr\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" +"hiroo.hokkaido.jp\0" +"showa.gunma.jp\0yawata.kyoto.jp\0" +"help\0" +"name.vn\0" +"cagliari.it\0game-host.org\0" +"\xe5\x9f\xbc\xe7\x8e\x89.jp\0trust\0" +"dagestan.ru\0pokrovsk.su\0" +"cmw.ru\0" +"tokamachi.niigata.jp\0" +"hirono.fukushima.jp\0" +"forlicesena.it\0tsushima.nagasaki.jp\0" +"sci.eg\0\xe7\xae\x87\xe4\xba\xba.hk\0" +"kawaba.gunma.jp\0ookuwa.nagano.jp\0" +"masuda.shimane.jp\0xbox\0" +"servep2p.com\0" +"portal.museum\0" +"blog.br\0dagestan.su\0" +"fukushima.jp\0newholland\0" +"merseine.nu\0ditchyourip.com\0" +"iraq.museum\0bronnoy.no\0" +"ogasawara.tokyo.jp\0" +"furukawa.miyagi.jp\0takayama.nagano.jp\0" +"name.tj\0" +"mb.ca\0koto.tokyo.jp\0" +"loyalist.museum\0gdansk.pl\0" +"chosei.chiba.jp\0nagawa.nagano.jp\0" +"cheltenham.museum\0" +"casadelamoneda.museum\0name.tr\0" +"d\xc3\xb8nna.no\0name.tt\0futuremailing.at\0" +"al.no\0" +"trentinoa-adige.it\0herad.no\0" +"kizu.kyoto.jp\0\xc3\xa5krehamn.no\0" +"katagami.akita.jp\0\xc3\xb8stre-toten.no\0" +"johana.toyama.jp\0" +"kawasaki.miyagi.jp\0" +"cc.in.us\0dnsdojo.com\0" +"cc.de.us\0\xe6\x89\x8b\xe8\xa1\xa8\0" +"toki.gifu.jp\0" +"georgia.museum\0gs.tr.no\0" +"ri.it\0" +"an.it\0house.museum\0" +"is-a-musician.com\0servehttp.com\0" +"oto.fukuoka.jp\0" +"\xe5\xbe\xae\xe5\x8d\x9a\0" +"mtpc\0" +"nordkapp.no\0boxfuse.io\0" +"shell.museum\0" +"alipay\0mt.eu.org\0" +"\xe6\x9d\xb1\xe4\xba\xac.jp\0softbank\0" +"yashio.saitama.jp\0" +"mutsuzawa.chiba.jp\0nowtv\0" +"ina.ibaraki.jp\0hembygdsforbund.museum\0" +"xin\0" +"loppa.no\0" +"judygarland.museum\0here\0scjohnson\0" +"firm.ht\0" +"suita.osaka.jp\0" +"assn.lk\0" +"saikai.nagasaki.jp\0" +"mo-i-rana.no\0spiegel\0sites.static.land\0" +"skydiving.aero\0homegoods\0" +"hino.tokyo.jp\0phoenix.museum\0kvalsund.no\0" +"firm.in\0" +"k12.ia.us\0" +"heguri.nara.jp\0name.qa\0guru\0lego\0" +"flor\xc3\xb8.no\0name.pr\0" +"\xe9\x95\xb7\xe9\x87\x8e.jp\0" +"palermo.it\0" +"control.aero\0verona.it\0" +"traniandriabarletta.it\0takamori.kumamoto.jp\0" +"skedsmo.no\0" +"kyotamba.kyoto.jp\0" +"itami.hyogo.jp\0" +"clubmed\0star\0" +"ginowan.okinawa.jp\0name.na\0" +"griw.gov.pl\0" +"name.mv\0mormon\0" +"name.ng\0" +"fvg.it\0name.my\0tomsk.ru\0" +"altoadige.it\0" +"school.museum\0gs.jan-mayen.no\0" +"md.ci\0firm.co\0" +"and\xc3\xb8y.no\0mari-el.ru\0lib.az.us\0" +"wanouchi.gifu.jp\0higashiyamato.tokyo.jp\0" +"textile.museum\0" +"kitakami.iwate.jp\0mansions.museum\0randaberg.no\0chrysler\0" +"udm.ru\0cc.ny.us\0is-a-guru.com\0" +"eisenbahn.museum\0" +"eun.eg\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0praxi\0" +"firm.dk\0" +"domains\0" +"parachuting.aero\0" +"mb.it\0" +"ap.it\0" +"travel\0" +"muko.kyoto.jp\0" +"tsukiyono.gunma.jp\0freiburg.museum\0" +"higashiyama.kyoto.jp\0" +"\xe6\x84\x9b\xe7\x9f\xa5.jp\0al.us\0" +"kamagaya.chiba.jp\0" +"ibaraki.ibaraki.jp\0chikuhoku.nagano.jp\0mima.tokushima.jp\0" +"noheji.aomori.jp\0" +"edu.ac\0" +"redirectme.net\0" +"tahara.aichi.jp\0" +"edu.af\0" +"taxi.br\0" +"name.mk\0" +"med.br\0" +"edu.al\0nishitosa.kochi.jp\0stpetersburg.museum\0" +"salon\0" +"edu.ba\0" +"edu.ar\0edu.bb\0gyeongnam.kr\0" +"*.0emm.com\0" +"shimoichi.nara.jp\0" +"civilaviation.aero\0edu.au\0la-spezia.it\0" +"seiyo.ehime.jp\0" +"edu.bh\0is-very-bad.org\0" +"edu.bi\0" +"edu.az\0" +"k12.ct.us\0" +"b.ssl.fastly.net\0" +"edu.bm\0" +"name.jo\0" +"edu.bo\0" +"dyndns-wiki.com\0" +"edu.br\0\xeb\x8b\xb7\xec\xbb\xb4\0" +"edu.bs\0" +"flog.br\0edu.bt\0onjuku.chiba.jp\0" +"otoyo.kochi.jp\0" +"benevento.it\0" +"edu.ci\0" +"in-addr.arpa\0edu.bz\0" +"art.br\0history.museum\0brother\0" +"med.ec\0meteorapp.com\0" +"agr.br\0" +"edu.cn\0med.ee\0naka.hiroshima.jp\0kamimine.saga.jp\0" +"edu.co\0" +"rishiri.hokkaido.jp\0" +"edu.cu\0shinjo.nara.jp\0nesset.no\0" +"edu.cw\0click\0" +"\xe9\xa4\x90\xe5\x8e\x85\0" +"lib.ga.us\0" +"\xd9\x83\xd9\x88\xd9\x85\0is-a-bookkeeper.com\0" +"samara.ru\0" +"ainan.ehime.jp\0" +"edu.dm\0" +"edu.do\0" +"cc.ok.us\0" +"fujisawa.iwate.jp\0" +"edu.ec\0" +"vlog.br\0" +"edu.ee\0hamatonbetsu.hokkaido.jp\0" +"datsun\0my.eu.org\0" +"edu.eg\0football\0" +"art.do\0rm.it\0" +"lt.it\0" +"edu.dz\0" +"ar.it\0juedisches.museum\0" +"e4.cz\0" +"a.prod.fastly.net\0" +"ri.us\0" +"norddal.no\0" +"art.dz\0edu.es\0" +"edu.et\0" +"geisei.kochi.jp\0" +"kasaoka.okayama.jp\0" +"bergen.no\0" +"kujukuri.chiba.jp\0ochi.kochi.jp\0ladbrokes\0" +"foundation\0" +"ven.it\0style\0" +"edu.ge\0okayama.jp\0takahama.aichi.jp\0shimofusa.chiba.jp\0" +"family\0godaddy\0read\0" +"edu.gh\0imakane.hokkaido.jp\0" +"edu.gi\0shioya.tochigi.jp\0" +"\xe1\x83\x92\xe1\x83\x94\0" +"edu.gl\0skjak.no\0" +"med.ht\0gifu.jp\0" +"edu.gn\0" +"culturalcenter.museum\0" +"edu.gp\0" +"is-a-llama.com\0" +"edu.gr\0skanland.no\0" +"edu.gt\0inagi.tokyo.jp\0" +"mobara.chiba.jp\0creditunion\0" +"edu.gy\0community\0" +"osaka.jp\0historisch.museum\0" +"edu.hk\0b\xc3\xa1l\xc3\xa1t.no\0" +"press.aero\0pri.ee\0edu.hn\0" +"sa.au\0ulvik.no\0" +"barreau.bj\0edu.ht\0asaka.saitama.jp\0birkenes.no\0evje-og-hornnes.no\0pomorze.pl\0firm.ve\0" +"siena.it\0nysa.pl\0est-a-la-maison.com\0paris.eu.org\0" +"brussels\0" "withgoogle.com\0" -"operaunite.com\0" -"bz.it\0yamazoe.nara.jp\0" -"vgs.no\0" -"net.jo\0" -"pa.it\0" -"telekommunikation.museum\0cc.mt.us\0cc.nd.us\0" -"brasil.museum\0" -"net.kg\0ullensvang.no\0sebastopol.ua\0" -"toyooka.hyogo.jp\0" -"net.ki\0supply\0" -"higashiomi.shiga.jp\0" -"tottori.tottori.jp\0" -"jfk.museum\0" -"misaki.okayama.jp\0net.kn\0" -"kr.com\0" -"ookuwa.nagano.jp\0koshigaya.saitama.jp\0" -"net.la\0" -"furubira.hokkaido.jp\0net.lb\0" -"net.lc\0historicalsociety.museum\0" -"cesenaforli.it\0" -"kagami.kochi.jp\0" -"gobo.wakayama.jp\0" -"net.ky\0loppa.no\0" -"net.kz\0" -"net.lk\0gs.tr.no\0arts.ro\0" -"castres.museum\0r\xc3\xb8""d\xc3\xb8y.no\0" -"net.ma\0" -"net.lr\0" -"is-a-landscaper.com\0" -"net.me\0" -"imizu.toyama.jp\0net.lv\0" -"birkenes.no\0" -"net.ly\0va.no\0" -"net.mk\0" -"hikimi.shimane.jp\0net.ml\0" -"uri.arpa\0ltd.gi\0net.mo\0depot.museum\0smolensk.ru\0jlc\0" -"showa.gunma.jp\0kawanishi.hyogo.jp\0" -"klepp.no\0" -"net.ms\0honefoss.no\0" -"net.mt\0" -"net.mu\0" -"yazu.tottori.jp\0net.mv\0net.nf\0gen.tr\0" -"w.bg\0net.mw\0net.ng\0" -"net.mx\0" -"net.my\0" -"tos.it\0toya.hokkaido.jp\0" -"sakura\0" -"assedic.fr\0aid.pl\0" -"ltd.hk\0" -"isernia.it\0net.nr\0" -"botany.museum\0" -"aramco\0" -"net.nz\0" -"ostrowwlkp.pl\0" -"hotel.lk\0net.om\0voting\0" -"\xe4\xbc\x81\xe4\xb8\x9a\0" -"virginia.museum\0googlecode.com\0" -"stj\xc3\xb8rdalshalsen.no\0net.pa\0adygeya.ru\0" -"arai.shizuoka.jp\0arts.nf\0" -"americanart.museum\0habmer.no\0net.pe\0" -"lib.pr.us\0" -"net.ph\0" -"net.pk\0" -"net.pl\0" -"morioka.iwate.jp\0net.pn\0" -"net.qa\0" -"kanuma.tochigi.jp\0net.pr\0" -"gjerdrum.no\0net.ps\0" -"inawashiro.fukushima.jp\0yamatotakada.nara.jp\0net.pt\0" -"shimizu.shizuoka.jp\0wielun.pl\0" -"net.py\0" -"asahi.chiba.jp\0" -"os\xc3\xb8yro.no\0" -"kijo.miyazaki.jp\0\xe7\xbd\x91\xe5\x9d\x80\0" -"b.se\0rhcloud.com\0" -"kamikitayama.nara.jp\0jot\0" -"toyotomi.hokkaido.jp\0" -"from.hr\0" -"portlligat.museum\0joy\0" -"saijo.ehime.jp\0fin.tn\0yandex\0" -"other.nf\0" -"bruxelles.museum\0" -"utsunomiya.tochigi.jp\0gyeongbuk.kr\0" -"tools\0" -"ltd.lk\0net.sa\0" -"ikata.ehime.jp\0net.sb\0" -"catering.aero\0net.sc\0" -"health.nz\0net.sd\0" -"net.ru\0" -"tsuno.kochi.jp\0shimane.shimane.jp\0" -"net.rw\0net.sg\0is-very-evil.org\0" -"i.ph\0net.sh\0" -"kosuge.yamanashi.jp\0" -"\xc3\xb8ystre-slidre.no\0" -"net.sl\0" -"info.ht\0maizuru.kyoto.jp\0shinjo.nara.jp\0yorii.saitama.jp\0" -"info.hu\0m\xc3\xa5s\xc3\xb8y.no\0press.se\0net.so\0" -"po.it\0" -"s\xc3\xb8r-varanger.no\0" -"net.st\0" -"hotel.hu\0oppegard.no\0" -"net.th\0" -"nsw.au\0net.sy\0githubusercontent.com\0" -"kanagawa.jp\0net.tj\0" -"roma.museum\0" -"contemporaryart.museum\0net.tm\0va.us\0" -"info.et\0net.tn\0" -"net.to\0land-4-sale.us\0" -"konan.aichi.jp\0\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0" -"net.ua\0k12.vi.us\0" -"alto-adige.it\0net.tr\0" -"net.tt\0" -"dyndns-web.com\0" -"shiwa.iwate.jp\0nagai.yamagata.jp\0stargard.pl\0" -"net.tw\0" -"kasuya.fukuoka.jp\0nagaoka.niigata.jp\0" -"!city.sapporo.jp\0" -"tranoy.no\0net.uk\0" -"pila.pl\0" -"dyndns-home.com\0is-into-cartoons.com\0" -"aizumisato.fukushima.jp\0" -"\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0" -"clock.museum\0net.vc\0" -"kamioka.akita.jp\0fujimi.nagano.jp\0ando.nara.jp\0tochigi.tochigi.jp\0" -"lorenskog.no\0i.se\0net.ve\0" -"vv.it\0kamishihoro.hokkaido.jp\0shiogama.miyagi.jp\0" -"pilots.museum\0net.uy\0net.vi\0" -"net.uz\0" -"is-a-cubicle-slave.com\0" -"cargo.aero\0salzburg.museum\0" -"kitami.hokkaido.jp\0net.vn\0" -"dyroy.no\0pa.us\0" -"nagiso.nagano.jp\0" +"ikawa.akita.jp\0\xc3\xa5mot.no\0credit\0" +"art.ht\0midori.gunma.jp\0kazo.saitama.jp\0komatsushima.tokushima.jp\0" +"edu.in\0pavia.it\0mihara.kochi.jp\0aridagawa.wakayama.jp\0transport.museum\0" +"sodegaura.chiba.jp\0" +"edu.iq\0edunet.tn\0" +"edu.is\0lib.md.us\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" +"edu.it\0kawakita.ishikawa.jp\0" +"go.ci\0\xe7\x9f\xb3\xe5\xb7\x9d.jp\0accountants\0" +"act.edu.au\0" +"xj.cn\0" +"kurgan.ru\0" +"s3-us-gov-west-1.amazonaws.com\0" +"yashiro.hyogo.jp\0" +"sa.cr\0alabama.museum\0pasadena.museum\0ro.im\0" +"gs.svalbard.no\0" +"go.cr\0" +"edu.jo\0ap-northeast-2.compute.amazonaws.com\0" +"sakai.fukui.jp\0" +"ro.it\0miyama.fukuoka.jp\0" +"extraspace\0" +"memorial.museum\0" +"at.it\0nl.eu.org\0" +"edu.kg\0xxx\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0us-west-2.compute.amazonaws.com\0" +"toya.hokkaido.jp\0edu.ki\0suldal.no\0kurgan.su\0" +"enebakk.no\0groks-the.info\0" +"edu.km\0tiffany\0\xe4\xbd\x9b\xe5\xb1\xb1\0" +"edu.kn\0anthropology.museum\0baghdad.museum\0" +"edu.kp\0" +"edu.la\0" +"edu.lb\0med.ly\0\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" +"edu.lc\0kafjord.no\0" +"ueno.gunma.jp\0" +"edu.ky\0vinnytsia.ua\0xyz\0" +"edu.kz\0" +"edu.lk\0" +"misato.saitama.jp\0" +"mus.br\0monza.it\0torahime.shiga.jp\0ichikai.tochigi.jp\0" +"katori.chiba.jp\0" +"edu.lr\0" +"shikama.miyagi.jp\0vestnes.no\0banamex\0" +"edu.me\0" +"edu.lv\0" +"edu.mg\0" +"edu.ly\0" +"orientexpress\0team\0" +"edu.mk\0inder\xc3\xb8y.no\0ru.com\0se.com\0" +"edu.ml\0" +"taiki.hokkaido.jp\0" +"edu.mn\0nyc.museum\0firm.ro\0from-fl.com\0" +"varese.it\0edu.mo\0" +"isumi.chiba.jp\0" +"a.ssl.fastly.net\0" +"edu.ms\0" +"imari.saga.jp\0edu.mt\0" +"edu.mv\0med.om\0" +"edu.mw\0edu.ng\0" +"edu.mx\0amot.no\0" +"lom.it\0edu.my\0edu.ni\0" +"hiji.oita.jp\0edu.mz\0med.pa\0" +"goto.nagasaki.jp\0freebox-os.fr\0" +"yamazoe.nara.jp\0" +"\xe5\xa4\xa9\xe4\xb8\xbb\xe6\x95\x99\0" +"nesoddtangen.no\0edu.nr\0\xe4\xb8\xad\xe4\xbf\xa1\0" +"amakusa.kumamoto.jp\0" +"ryazan.ru\0tech\0med.pl\0" +"arai.shizuoka.jp\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0" +"isa.us\0" +"edu.om\0" +"donostia.museum\0" +"go.id\0" +"edu.pa\0edeka\0" +"construction\0" +"sc.cn\0" +"ha.cn\0shibecha.hokkaido.jp\0edu.pe\0" +"cody.museum\0palace.museum\0edu.pf\0lt.ua\0cc.tx.us\0\xd9\x85\xd8\xb5\xd8\xb1\0reit\0" +"topology.museum\0edu.ph\0" +"serveftp.com\0" +"edu.pk\0" +"edu.pl\0" +"sa.it\0academy.museum\0edu.pn\0rnd.ru\0" +"go.it\0nakatsugawa.gifu.jp\0" +"av.it\0edu.qa\0" +"vet.br\0edu.pr\0" +"edu.ps\0" +"eigersund.no\0edu.pt\0" +"firm.nf\0art.pl\0" +"wv.us\0ng.eu.org\0" +"shacknet.nu\0" +"md.us\0" +"edu.py\0" +"med.sa\0ar.us\0" +"pisa.it\0tr.eu.org\0" +"go.jp\0" +"med.sd\0" +"*.ext.githubcloud.com\0" +"bihoro.hokkaido.jp\0" +"potager.org\0" +"tattoo\0you\0" +"reggio-emilia.it\0" +"mg.leg.br\0" +"kawagoe.saitama.jp\0us-2.evennode.com\0" +"samsclub\0is-saved.org\0" +"shinanomachi.nagano.jp\0" +"club.tw\0" +"go.kr\0" +"artcenter.museum\0komforb.se\0news\0" +"whaling.museum\0edu.sa\0" +"edu.sb\0" +"edu.rs\0edu.sc\0" +"lom.no\0edu.sd\0" +"edu.ru\0" +"info.ht\0sannan.hyogo.jp\0edu.rw\0edu.sg\0" +"info.hu\0" +"edu.sl\0" +"edu.sn\0" +"ambulance.museum\0" +"kanra.gunma.jp\0academy\0next\0" +"kokubunji.tokyo.jp\0" +"nfshost.com\0" +"kushiro.hokkaido.jp\0edu.st\0" +"edu.sv\0toshiba\0" +"info.et\0bd.se\0art.sn\0" +"from-pa.com\0" +"voronezh.ru\0edu.sy\0" +"edu.tj\0" +"kaneyama.yamagata.jp\0meraker.no\0game.tw\0" +"swiss\0" +"gs.oslo.no\0edu.tm\0" +"aoki.nagano.jp\0ikoma.nara.jp\0" +"edu.to\0" +"joyo.kyoto.jp\0edu.ua\0" +"newyork.museum\0edu.tr\0" +"edu.tt\0is-a-hard-worker.com\0" +"samegawa.fukushima.jp\0" +"narvik.no\0rent\0" +"soc.lk\0edu.tw\0" +"lib.ar.us\0webcam\0" +"sola.no\0" +"flekkefjord.no\0" +"gs.cn\0" +"bj.cn\0lv.ua\0" +"ketrzyn.pl\0cc.pa.us\0" +"hitoyoshi.kumamoto.jp\0edu.vc\0" +"edu.ve\0" +"ilawa.pl\0" +"tabayama.yamanashi.jp\0us-1.evennode.com\0" +"edu.uy\0" +"kumejima.okinawa.jp\0from-co.net\0" +"bilbao.museum\0alfaromeo\0" +"edu.vn\0" +"kashima.ibaraki.jp\0agrinet.tn\0expert\0" +"settsu.osaka.jp\0" +"bus.museum\0h\xc3\xb8ylandet.no\0" +"video\0" +"pro.az\0" +"kawanehon.shizuoka.jp\0edu.vu\0" +"info.ec\0firenze.it\0murakami.niigata.jp\0" +"nord-aurdal.no\0" +"yachimata.chiba.jp\0" +"pro.br\0" +"yun\0elb.amazonaws.com\0" +"chrome\0istmein.de\0" +"itano.tokushima.jp\0mycd.eu\0" +"go.pw\0edu.ws\0" +"info.bb\0yamada.iwate.jp\0tawaramoto.nara.jp\0lgbt\0" +"partners\0" +"sc.kr\0balsfjord.no\0info.at\0" +"info.au\0" +"fairwinds\0" +"beskidy.pl\0creditcard\0" +"shingo.aomori.jp\0ouda.nara.jp\0" +"info.az\0" +"servemp3.com\0" +"axis.museum\0lplfinancial\0" +"sor-aurdal.no\0" +"aosta-valley.it\0fujiidera.osaka.jp\0" +"pro.cy\0pescara.it\0hiranai.aomori.jp\0" +"sagamihara.kanagawa.jp\0" +"gjemnes.no\0" +"asakuchi.okayama.jp\0heritage.museum\0weber\0" +"pro.ec\0venezia.it\0oguni.yamagata.jp\0" +"kobayashi.miyazaki.jp\0" +"kagawa.jp\0nango.fukushima.jp\0" +"edu.za\0marriott\0" +"info.co\0bill.museum\0fet.no\0\xe5\x9c\xa8\xe7\xba\xbf\0" +"culture.museum\0nissedal.no\0" +"olawa.pl\0rest\0" +"bajddar.no\0" +"journal.aero\0" +"evenassi.no\0" +"katano.osaka.jp\0" +"penza.ru\0edu.zm\0" +"kosaka.akita.jp\0" +"s3-ap-southeast-2.amazonaws.com\0" +"tome.miyagi.jp\0higashiyodogawa.osaka.jp\0on-the-web.tv\0" +"go.th\0" +"omachi.nagano.jp\0katowice.pl\0lib.hi.us\0isa-hockeynut.com\0" +"ha.no\0go.tj\0" +"verm\xc3\xb6gensberatung\0" +"he.cn\0savannahga.museum\0" +"kashima.kumamoto.jp\0penza.su\0" +"is-a-chef.org\0" +"av.tr\0solar\0zip\0" +"kainan.wakayama.jp\0" +"yamada.fukuoka.jp\0go.ug\0\xe5\xa8\xb1\xe4\xb9\x90\0" +"oseto.nagasaki.jp\0coastaldefence.museum\0" +"go.tz\0" +"kadogawa.miyazaki.jp\0lease\0" +"safety\0" +"mielec.pl\0" +"katashina.gunma.jp\0" "sortland.no\0" -"\xe5\xb1\xb1\xe6\xa2\xa8.jp\0" -"volgograd.ru\0net.vu\0" -"tsunan.niigata.jp\0" -"takata.fukuoka.jp\0" -"info.ec\0" -"istanbul\0" -"rel.ht\0" -"dyndns-server.com\0" -"\xe9\x9d\x92\xe6\xa3\xae.jp\0" -"net.ws\0bauhaus\0" -"forlicesena.it\0kfh\0" -"pv.it\0norton\0" -"cc.ny.us\0" -"info.bb\0hashikami.aomori.jp\0" -"seirou.niigata.jp\0info.at\0" -"info.au\0lib.ee\0" -"selfip.biz\0" -"info.az\0tsukigata.hokkaido.jp\0" -"trani-barletta-andria.it\0loan\0" -"press.ma\0" -"legnica.pl\0" -"lavangen.no\0pors\xc3\xa1\xc5\x8bgu.no\0sk\xc3\xa5nland.no\0" -"orsta.no\0" -"hakusan.ishikawa.jp\0" -"flight.aero\0hemnes.no\0moss.no\0sykkylven.no\0" -"hirara.okinawa.jp\0" -"ukiha.fukuoka.jp\0kyotango.kyoto.jp\0health.vn\0" -"info.co\0bo.nordland.no\0tysv\xc3\xa6r.no\0fhsk.se\0" -"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0" -"air-traffic-control.aero\0design.aero\0meland.no\0chtr.k12.ma.us\0" -"matsumae.hokkaido.jp\0sakuragawa.ibaraki.jp\0nagano.nagano.jp\0motegi.tochigi.jp\0" -"insurance.aero\0automotive.museum\0ullensaker.no\0p.se\0" -"alessandria.it\0" -"journalist.aero\0cody.museum\0" -"bato.tochigi.jp\0misasa.tottori.jp\0" -"polkowice.pl\0" -"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" -"trentino-sued-tirol.it\0" -"asahi.toyama.jp\0" -"sogne.no\0orenburg.ru\0kim\0" -"isa-geek.net\0" -"tatarstan.ru\0" -"kashiwa.chiba.jp\0kamimine.saga.jp\0" -"contractors\0" -"tagajo.miyagi.jp\0fujikawa.shizuoka.jp\0" -"kudamatsu.yamaguchi.jp\0" -"ltd.uk\0" -"nantan.kyoto.jp\0" -"r\xc3\xb8yrvik.no\0" -"is-a-chef.net\0" -"planetarium.museum\0langev\xc3\xa5g.no\0" -"abbott\0" -"club.aero\0" +"qsl.br\0" +"\xe5\xa4\xa7\xe9\x98\xaa.jp\0indiana.museum\0" +"seika.kyoto.jp\0workshop.museum\0gallup\0" +"linz.museum\0financial\0" +"pro.ht\0" +"surf\0" +"konin.pl\0" +"joetsu.niigata.jp\0" +"l\xc3\xa6rdal.no\0" +"shingu.fukuoka.jp\0miyama.mie.jp\0" +"yoita.niigata.jp\0" "ind.br\0" -"from-nv.com\0" -"tokushima.jp\0omaezaki.shizuoka.jp\0" -"hongo.hiroshima.jp\0" -"inderoy.no\0" -"res.in\0" -"\xe5\xb1\xb1\xe5\xbd\xa2.jp\0echizen.fukui.jp\0" -"dr\xc3\xb8""bak.no\0s\xc3\xb8r-fron.no\0" -"teo.br\0yokoze.saitama.jp\0" -"sch.ae\0franziskaner.museum\0undersea.museum\0belau.pw\0" -"kouyama.kagoshima.jp\0" -"zarow.pl\0" -"aviation.museum\0" -"soeda.fukuoka.jp\0" -"skydiving.aero\0teaches-yoga.com\0" -"shinto.gunma.jp\0kure.hiroshima.jp\0" -"yakumo.hokkaido.jp\0minobu.yamanashi.jp\0" -"dclk\0" -"ibaraki.jp\0" -"naklo.pl\0" -"yachimata.chiba.jp\0" -"vanylven.no\0" -"shimodate.ibaraki.jp\0" -"union.aero\0toshiba\0from-ak.com\0" -"kuju.oita.jp\0" -"w.se\0" -"rel.pl\0" -"friuliv-giulia.it\0minamiashigara.kanagawa.jp\0" -"togura.nagano.jp\0" -"!www.ck\0b\xc3\xa1id\xc3\xa1r.no\0" -"miyoshi.aichi.jp\0" -"izumo.shimane.jp\0" -"us-west-1.compute.amazonaws.com\0" -"tsuruoka.yamagata.jp\0" -"finland.museum\0" -"barreau.bj\0tokashiki.okinawa.jp\0" -"television.museum\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0" -"tuscany.it\0" -"sport.hu\0fjell.no\0" -"philadelphia.museum\0" -"hasami.nagasaki.jp\0" -"software.aero\0" -"yufu.oita.jp\0" -"kongsvinger.no\0boots\0" -"chikuma.nagano.jp\0" -"london.museum\0" -"s3-ap-northeast-1.amazonaws.com\0" -"ind.gt\0suzu.ishikawa.jp\0" -"arteducation.museum\0eidsberg.no\0vevelstad.no\0" -"\xe5\xb2\x90\xe9\x98\x9c.jp\0fujisato.akita.jp\0hanyu.saitama.jp\0" -"bod\xc3\xb8.no\0" -"is-a-therapist.com\0" -"yoshikawa.saitama.jp\0" -"r\xc3\xb8st.no\0" -"rishiri.hokkaido.jp\0grajewo.pl\0" -"3.bg\0" -"kosai.shizuoka.jp\0kpn\0" -"chuo.chiba.jp\0susono.shizuoka.jp\0" +"sicily.it\0miyazaki.jp\0kawazu.shizuoka.jp\0\xe5\x95\x86\xe6\xa5\xad.tw\0" +"ic.gov.pl\0za.net\0" +"tondabayashi.osaka.jp\0astronomy.museum\0hgtv\0" +"agrar.hu\0suginami.tokyo.jp\0rentals\0" +"kariya.aichi.jp\0usgarden.museum\0\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0" +"asn.au\0" +"fujinomiya.shizuoka.jp\0" +"isa.kagoshima.jp\0muenster.museum\0" +"mp.br\0mashike.hokkaido.jp\0" +"!city.kawasaki.jp\0" +"townnews-staging.com\0" +"novosibirsk.ru\0" +"kunisaki.oita.jp\0from-sd.com\0" +"ris\xc3\xb8r.no\0sanok.pl\0nikolaev.ua\0is-a-chef.com\0" +"sandnessj\xc3\xb8""en.no\0" +"rikuzentakata.iwate.jp\0" +"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0" +"shinyoshitomi.fukuoka.jp\0\xeb\x8b\xb7\xeb\x84\xb7\0" +"sc.ug\0" +"zhytomyr.ua\0" +"abo.pa\0teva\0cloudns.asia\0" +"sc.tz\0" +"mn.it\0urausu.hokkaido.jp\0ee.eu.org\0" +"nanae.hokkaido.jp\0" +"bl.it\0pilots.museum\0zakopane.pl\0" +"minato.tokyo.jp\0database.museum\0" +"ohkura.yamagata.jp\0jessheim.no\0" +"sc.us\0" +"pro.na\0" +"pro.mv\0" +"psc.br\0tamayu.shimane.jp\0j\xc3\xb8lster.no\0" +"ivano-frankivsk.ua\0" +"motorcycles\0" +"eu.meteorapp.com\0cable-modem.org\0" +"muika.niigata.jp\0" +"sener\0" +"com.ac\0kami.kochi.jp\0leangaviika.no\0" +"oppeg\xc3\xa5rd.no\0uk.eu.org\0" +"com.af\0otsuka\0" +"com.ag\0nakamichi.yamanashi.jp\0" +"ind.gt\0" +"com.ai\0bike\0" +"com.al\0" +"\xe7\xbb\x84\xe7\xbb\x87.hk\0kiyosu.aichi.jp\0karatsu.saga.jp\0" +"nishio.aichi.jp\0" +"com.ba\0inf.br\0sirdal.no\0pro.om\0" +"com.ar\0com.bb\0info.ve\0" +"diet\0" +"com.au\0k12.or.us\0" +"com.aw\0" +"com.bh\0\xe7\xa6\x8f\xe4\xba\x95.jp\0minokamo.gifu.jp\0tver.ru\0" +"com.bi\0from-ky.com\0freeboxos.fr\0" +"com.az\0" +"info.vn\0" +"mining.museum\0vevelstad.no\0" +"com.bm\0" +"com.bo\0family.museum\0shangrila\0int.eu.org\0" "fla.no\0" -"roma.it\0kudoyama.wakayama.jp\0global.prod.fastly.net\0" -"gamo.shiga.jp\0" -"gildesk\xc3\xa5l.no\0cloudcontrolled.com\0" -"ind.in\0futsu.nagasaki.jp\0" -"furudono.fukushima.jp\0kashiwara.osaka.jp\0" -"minoh.osaka.jp\0" -"akrehamn.no\0" -"nosegawa.nara.jp\0" -"baths.museum\0likes-pie.com\0" -"krd\0lat\0" -"seki.gifu.jp\0togakushi.nagano.jp\0ens.tn\0" -"rana.no\0law\0" -"juedisches.museum\0national.museum\0" -"sande.m\xc3\xb8re-og-romsdal.no\0" -"bozen.it\0" -"furniture.museum\0malvik.no\0" -"hjelmeland.no\0" -"loabat.no\0" -"info.ve\0" -"kamagaya.chiba.jp\0" -"betainabox.com\0" -"fosnes.no\0from-tn.com\0" -"sakae.chiba.jp\0" -"sohu\0" -"mb.ca\0" -"wanouchi.gifu.jp\0hidaka.kochi.jp\0torahime.shiga.jp\0info.vn\0" -"mari-el.ru\0" -"tsukumi.oita.jp\0" -"sch.id\0kota.aichi.jp\0" -"snillfjord.no\0" -"akkeshi.hokkaido.jp\0" -"kanegasaki.iwate.jp\0takaoka.toyama.jp\0" -"ostre-toten.no\0novosibirsk.ru\0selfip.com\0" -"molise.it\0" -"barrel-of-knowledge.info\0" -"sch.ir\0" -"fuoisku.no\0" -"lds\0" -"oguchi.aichi.jp\0" -"omsk.ru\0" -"nogata.fukuoka.jp\0" -"sch.jo\0guide\0" -"sunagawa.hokkaido.jp\0info.tn\0" -"turystyka.pl\0a.ssl.fastly.net\0" -"nishiarita.saga.jp\0info.tr\0" -"mortgage\0" +"com.br\0ind.in\0" +"com.bs\0" +"com.bt\0inf.cu\0lavagis.no\0" +"kawai.iwate.jp\0" +"pro.pr\0" +"klodzko.pl\0" +"\xe5\x85\xac\xe5\x8f\xb8.cn\0saigawa.fukuoka.jp\0kawatana.nagasaki.jp\0on-aptible.com\0" +"com.by\0com.ci\0s3-fips-us-gov-west-1.amazonaws.com\0" +"com.bz\0" +"tanabe.kyoto.jp\0" +"sk.ca\0winb.gov.pl\0" +"nb.ca\0com.cm\0" +"com.cn\0fiat\0" +"com.co\0" +"higashiizu.shizuoka.jp\0" +"larsson.museum\0" +"lib.sc.us\0" +"br\xc3\xb8nn\xc3\xb8ysund.no\0lib.nj.us\0" +"com.cu\0\xe5\x85\xac\xe5\x8f\xb8.hk\0hapmir.no\0lib.gu.us\0com.de\0" +"is-a-rockstar.com\0" +"com.cw\0aca.pro\0" +"com.cy\0" +"carraramassa.it\0" +"hi.cn\0oiso.kanagawa.jp\0info.tn\0bing\0" +"com.dm\0" +"com.do\0info.tr\0" +"rad\xc3\xb8y.no\0" "info.tt\0" -"\xe5\x8f\xb0\xe7\x81\xa3\0" -"muroran.hokkaido.jp\0" -"tendo.yamagata.jp\0" -"nanbu.tottori.jp\0info.tz\0" -"go.dyndns.org\0" -"is-very-nice.org\0" -"hammarfeasta.no\0" -"williamsburg.museum\0dyndns-wiki.com\0" -"tagawa.fukuoka.jp\0" -"kurotaki.nara.jp\0xerox\0" -"lib.ma.us\0" -"sch.lk\0" -"arkhangelsk.ru\0" -"trentino-s-tirol.it\0" -"\xc3\xa1lt\xc3\xa1.no\0info.ro\0" -"ab.ca\0askoy.no\0" -"malopolska.pl\0" -"aogaki.hyogo.jp\0info.sd\0" -"km.ua\0" -"sch.ly\0" -"onjuku.chiba.jp\0" -"muncie.museum\0" -"kawaminami.miyazaki.jp\0" -"cn-north-1.compute.amazonaws.cn\0" -"vads\xc3\xb8.no\0" -"ushuaia.museum\0vista\0" -"kaminokawa.tochigi.jp\0" -"olbiatempio.it\0shiga.jp\0" -"sener\0" -"sch.ng\0kddi\0endoftheinternet.org\0" -"ichikai.tochigi.jp\0" -"lund.no\0lib.ga.us\0style\0" -"info.pk\0tsaritsyn.ru\0" -"info.pl\0" -"jevnaker.no\0" -"fst.br\0ainan.ehime.jp\0" -"california.museum\0sony\0" -"oketo.hokkaido.jp\0" -"is-a-bruinsfan.org\0" +"com.ec\0" +"si.it\0" +"com.ee\0" +"verbania.it\0" +"com.eg\0bn.it\0info.tz\0" +"com.dz\0kamigori.hyogo.jp\0" +"yamatsuri.fukushima.jp\0" +"pharmaciens.km\0portland.museum\0" +"michigan.museum\0" +"az.us\0" +"is-a-linux-user.org\0" +"com.es\0couchpotatofries.org\0" +"com.et\0" +"voyage\0" +"finn\xc3\xb8y.no\0" +"kumenan.okayama.jp\0fido\0" +"aomori.jp\0" +"info.ro\0" +"minamiashigara.kanagawa.jp\0" +"info.sd\0" +"com.fr\0kasai.hyogo.jp\0ski.museum\0" +"leg.br\0com.ge\0" +"com.gh\0pro.tt\0" +"com.gi\0" +"targi.pl\0" +"elvendrell.museum\0" +"com.gl\0" +"com.gn\0tingvoll.no\0nationwide\0sakura\0\xe5\x95\x86\xe5\xba\x97\0" +"com.gp\0matsusaka.mie.jp\0asn.lv\0stcgroup\0" +"com.gr\0" +"com.gt\0" +"tonsberg.no\0" +"namie.fukushima.jp\0info.pk\0" +"com.gy\0info.pl\0bounty-full.com\0" +"com.hk\0southcarolina.museum\0" +"media.aero\0bjarkoy.no\0folldal.no\0forex\0" +"vadso.no\0" +"com.hn\0daejeon.kr\0" "info.pr\0" -"nt.edu.au\0" -"carrier.museum\0newport.museum\0" -"promo\0" -"mb.it\0mima.tokushima.jp\0" -"info.na\0jan-mayen.no\0" -"narita.chiba.jp\0" -"info.mv\0info.nf\0" -"fuso.aichi.jp\0gmina.pl\0" -"manx.museum\0\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0" -"show.aero\0moskenes.no\0sch.qa\0lib.nh.us\0" -"fnd.br\0cieszyn.pl\0" -"properties\0ru.com\0se.com\0" -"info.nr\0" -"madrid.museum\0love\0" -"hakone.kanagawa.jp\0kita.osaka.jp\0" -"from-de.com\0" -"siena.it\0tateshina.nagano.jp\0" -"cricket\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0" -"numata.hokkaido.jp\0" -"brussel.museum\0hitra.no\0pyatigorsk.ru\0" -"rifu.miyagi.jp\0ind.tn\0" -"judygarland.museum\0" -"mp.br\0" -"higashitsuno.kochi.jp\0" +"myfritz.net\0" +"okazaki.aichi.jp\0" +"com.hr\0pro.vn\0" +"com.ht\0" +"urbino-pesaro.it\0" +"\xe5\xae\xae\xe5\xb4\x8e.jp\0" +"shijonawate.osaka.jp\0saitama.saitama.jp\0\xe5\x98\x89\xe9\x87\x8c\0" +"magazine.aero\0duckdns.org\0" +"com.im\0choshi.chiba.jp\0mosvik.no\0" +"info.na\0rana.no\0" +"com.io\0mashiki.kumamoto.jp\0lib.nh.us\0azurewebsites.net\0" +"com.iq\0" +"com.is\0info.mv\0info.nf\0career\0" +"schlesisches.museum\0" +"urn.arpa\0uw.gov.pl\0" +"hk.cn\0info.ni\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0theguardian\0" +"odawara.kanagawa.jp\0" +"\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0statebank\0" +"jaguar\0weather\0" +"hole.no\0warman\0" +"com.jo\0info.nr\0" +"vodka\0" +"sande.more-og-romsdal.no\0apple\0" +"kvits\xc3\xb8y.no\0" +"higashihiroshima.hiroshima.jp\0sauda.no\0" +"yoshikawa.saitama.jp\0com.kg\0" +"humanities.museum\0ask\xc3\xb8y.no\0" +"com.ki\0mn.us\0" +"gu.us\0" +"plc.co.im\0com.km\0" "info.la\0" -"fr.it\0" -"zone\0" -"si.it\0elblag.pl\0" -"baikal.ru\0" -"toyotsu.fukuoka.jp\0" -"building.museum\0sorfold.no\0" -"is-a-geek.com\0" -"eidsvoll.no\0sch.sa\0" -"institute\0" -"dazaifu.fukuoka.jp\0" -"chukotka.ru\0rivne.ua\0domains\0from-sd.com\0ro.com\0" -"mihara.kochi.jp\0asahi.nagano.jp\0" -"stockholm.museum\0chernigov.ua\0" -"potenza.it\0" -"pagespeedmobilizer.com\0" -"shoo.okayama.jp\0" -"bible.museum\0sherbrooke.museum\0" -"nesset.no\0" -"chloe\0" -"anpachi.gifu.jp\0aibetsu.hokkaido.jp\0wlocl.pl\0" -"mi.it\0" -"elverum.no\0" -"fredrikstad.no\0markets\0" -"iglesias-carbonia.it\0" -"nikaho.akita.jp\0miyashiro.saitama.jp\0" -"asmatart.museum\0" -"tsushima.nagasaki.jp\0" -"hekinan.aichi.jp\0" -"lib.ms.us\0lib.nc.us\0" -"inazawa.aichi.jp\0" -"info.ki\0agdenes.no\0" -"medizinhistorisches.museum\0furniture\0" -"ozora.hokkaido.jp\0wakayama.wakayama.jp\0" -"gyokuto.kumamoto.jp\0" -"fishing\0" -"hyogo.jp\0" -"stj\xc3\xb8rdal.no\0" -"kutno.pl\0" -"ulvik.no\0" -"ofunato.iwate.jp\0restaurant\0" -"americanantiques.museum\0paderborn.museum\0" -"sp.it\0yokaichiba.chiba.jp\0" -"kurgan.ru\0" -"hakata.fukuoka.jp\0man\0" -"entomology.museum\0" -"otoyo.kochi.jp\0" -"lel.br\0" -"zoology.museum\0samnanger.no\0" -"obama.nagasaki.jp\0" -"oshu.iwate.jp\0miasa.nagano.jp\0" -"rnrt.tn\0" -"money.museum\0" -"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0" -"yahiko.niigata.jp\0kadena.okinawa.jp\0" -"\xc3\xb8ygarden.no\0" -"v\xc3\xa5gan.no\0" -"trentino.it\0" -"\xc3\xb8rskog.no\0" -"hoyanger.no\0sb.ua\0" -"vestby.no\0" -"yurihonjo.akita.jp\0" -"fjaler.no\0cc.ks.us\0" -"\xd9\x82\xd8\xb7\xd8\xb1\0" -"ltd\0" -"rockart.museum\0" -"lib.as.us\0" -"hashima.gifu.jp\0" -"agano.niigata.jp\0ath.cx\0" -"gangaviika.no\0" -"hammerfest.no\0" -"saskatchewan.museum\0est-mon-blogueur.com\0" -"hoylandet.no\0stockholm\0" -"tatsuno.nagano.jp\0" -"georgia.museum\0" -"kherson.ua\0" -"shiroishi.miyagi.jp\0tomi.nagano.jp\0" -"computerhistory.museum\0" -"kofu.yamanashi.jp\0" -"meo\0" -"setagaya.tokyo.jp\0prochowice.pl\0" -"farm.museum\0" -"fujikawa.yamanashi.jp\0" -"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0dontexist.net\0" -"workshop.museum\0toray\0" -"kosaka.akita.jp\0shijonawate.osaka.jp\0takanezawa.tochigi.jp\0" -"k12.ak.us\0" -"nakamura.kochi.jp\0ochi.kochi.jp\0iizuna.nagano.jp\0" -"midtre-gauldal.no\0" -"k12.md.us\0" -"inuyama.aichi.jp\0" -"kumatori.osaka.jp\0" -"ako.hyogo.jp\0" -"tgory.pl\0" -"ato.br\0higashikawa.hokkaido.jp\0akagi.shimane.jp\0bbs.tr\0" -"newspaper.museum\0oregontrail.museum\0" -"gb.net\0" -"\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" -"ap.it\0" -"zaporizhzhia.ua\0" -"taka.hyogo.jp\0" -"karate.museum\0is-a-geek.org\0" -"from-ks.com\0" -"fage\0misconfused.org\0" -"hn.cn\0" -"palana.ru\0" +"design.museum\0" +"com.kp\0" +"com.la\0" +"ono.hyogo.jp\0com.lb\0oregontrail.museum\0" +"\xe4\xba\xac\xe9\x83\xbd.jp\0com.lc\0" +"takayama.gunma.jp\0cyou\0bnr.la\0" +"ebina.kanagawa.jp\0kawachinagano.osaka.jp\0" +"gotpantheon.com\0" +"takata.fukuoka.jp\0tarama.okinawa.jp\0" +"com.ky\0" +"com.kz\0inf.mk\0" +"com.lk\0" "kisarazu.chiba.jp\0" -"vaapste.no\0" -"namie.fukushima.jp\0ichikawa.hyogo.jp\0" -"cn.com\0" -"stpetersburg.museum\0nord-fron.no\0iamallama.com\0" -"fam.pk\0" -"skjervoy.no\0" -"beskidy.pl\0" -"siellak.no\0" -"mi.th\0" -"mil\0" -"culturalcenter.museum\0tsk.ru\0odessa.ua\0" -"otama.fukushima.jp\0" +"com.lr\0" +"marylhurst.museum\0" +"com.lv\0from-ia.com\0" +"piedmont.it\0goshiki.hyogo.jp\0com.mg\0zero\0" +"mizusawa.iwate.jp\0" +"com.ly\0" +"com.mk\0" +"com.ml\0sandoy.no\0" +"atlanta.museum\0george\0" +"imperia.it\0com.mo\0" +"com.na\0" +"ind.tn\0" +"com.ms\0is-very-sweet.org\0" +"com.mt\0" +"com.mu\0" +"naka.ibaraki.jp\0com.mv\0com.nf\0" +"giessen.museum\0com.mw\0com.ng\0film\0" +"com.mx\0" +"vic.edu.au\0com.my\0com.ni\0sa-east-1.compute.amazonaws.com\0" +"hakui.ishikawa.jp\0" +"chikujo.fukuoka.jp\0" +"okuizumo.shimane.jp\0" +"kota.aichi.jp\0" +"com.nr\0" +"nf.ca\0" +"kids.museum\0" +"fukagawa.hokkaido.jp\0" +"info.ki\0" +"dish\0" +"tana.no\0" +"mr.no\0" +"kerryproperties\0" +"com.om\0" +"hiphop\0" +"com.pa\0" +"cc.ut.us\0" +"sdn.gov.pl\0" +"com.pe\0" +"com.pf\0" +"com.ph\0" +"gs.vf.no\0" +"showtime\0" +"mt.it\0makinohara.shizuoka.jp\0com.pk\0" +"nishikata.tochigi.jp\0com.pl\0" +"br.it\0cb.it\0" +"numata.hokkaido.jp\0" +"com.qa\0rubtsovsk.ru\0" +"com.pr\0" +"zgora.pl\0com.ps\0s3-external-2.amazonaws.com\0" +"com.pt\0certmgr.org\0" +"etajima.hiroshima.jp\0" +"com.py\0" +"cn.eu.org\0" +"mobi.gp\0" +"ichikawa.hyogo.jp\0uchihara.ibaraki.jp\0" +"psi.br\0nittedal.no\0" +"hayakawa.yamanashi.jp\0yorkshire.museum\0" +"valleeaoste.it\0" +"\xe5\xba\x83\xe5\xb3\xb6.jp\0tanabe.wakayama.jp\0com.re\0chloe\0" +"balashov.su\0loans\0" +"selbu.no\0" +"niigata.niigata.jp\0" +"paris.museum\0vantaa.museum\0" +"kembuchi.hokkaido.jp\0" +"com.ro\0" +"com.sa\0poltava.ua\0mymediapc.net\0" +"com.sb\0" +"trentino-sud-tirol.it\0com.sc\0" +"com.sd\0" +"pmn.it\0com.ru\0com.se\0" +"com.rw\0com.sg\0homes\0" +"com.sh\0" +"naie.hokkaido.jp\0" +"fussa.tokyo.jp\0" +"com.sl\0" +"com.sn\0" +"com.so\0fire\0servegame.com\0" +"leclerc\0" +"holmestrand.no\0dedyn.io\0" +"com.st\0" +"com.sv\0" +"bio.br\0ternopil.ua\0" +"githubcloud.com\0" +"com.sy\0" +"trentino-alto-adige.it\0com.tj\0" +"blockbuster\0" +"com.tm\0" +"com.tn\0\xe7\xbd\x91\xe5\x9d\x80\0" +"joboji.iwate.jp\0com.to\0" +"handson.museum\0society.museum\0com.ua\0dyndns-free.com\0" +"com.tr\0fish\0" +"miyakonojo.miyazaki.jp\0" +"nishi.fukuoka.jp\0com.tt\0" +"nichinan.tottori.jp\0lib.mt.us\0lib.nd.us\0is-a-chef.net\0" +"shimotsuma.ibaraki.jp\0kamikitayama.nara.jp\0com.tw\0com.ug\0" +"tsugaru.aomori.jp\0" +"xz.cn\0" +"vegas\0" +"kuju.oita.jp\0" +"kunohe.iwate.jp\0" +"takarazuka.hyogo.jp\0geek.nz\0" +"stv.ru\0" +"com.vc\0" +"so.it\0com.ve\0" +"anamizu.ishikawa.jp\0semine.miyagi.jp\0itoman.okinawa.jp\0" +"ama.aichi.jp\0" +"bt.it\0" +"iwanai.hokkaido.jp\0com.uy\0com.vi\0" +"kunst.museum\0com.uz\0" +"nyuzen.toyama.jp\0" +"dontexist.net\0" +"com.vn\0" +"kitaura.miyazaki.jp\0" +"hi.us\0" +"brussel.museum\0" +"austevoll.no\0" +"com.vu\0" +"oygarden.no\0" +"tomika.gifu.jp\0kumatori.osaka.jp\0lidl\0" +"chikuho.fukuoka.jp\0" +"cy.eu.org\0" +"philips\0" +"kawai.nara.jp\0" +"forum\0" +"com.ws\0" +"munakata.fukuoka.jp\0tokuyama.yamaguchi.jp\0dyr\xc3\xb8y.no\0" +"deloitte\0" +"gemological.museum\0" +"airport.aero\0" +"\xc3\xa1laheadju.no\0northwesternmutual\0" +"higashikagura.hokkaido.jp\0glade\0" +"toei.aichi.jp\0mombetsu.hokkaido.jp\0" +"press\0za.org\0" +"servegame.org\0" +"k12.vi.us\0life\0" +"shimokawa.hokkaido.jp\0ritto.shiga.jp\0" +"!city.sapporo.jp\0" +"cz.eu.org\0" +"leitungsen.de\0worse-than.tv\0" +"yokoshibahikari.chiba.jp\0miyoshi.saitama.jp\0" +"feedback\0" +"kaszuby.pl\0" +"pesaro-urbino.it\0" +"moriya.ibaraki.jp\0" +"furudono.fukushima.jp\0" +"tateyama.toyama.jp\0" +"\xe5\xb3\xb6\xe6\xa0\xb9.jp\0brandywinevalley.museum\0sogndal.no\0" +"tachikawa.tokyo.jp\0alaheadju.no\0vestvagoy.no\0" +"\xe5\xae\xb6\xe9\x9b\xbb\0" +"zentsuji.kagawa.jp\0" +"oita.jp\0\xc3\xa1lt\xc3\xa1.no\0dyndns-ip.com\0" +"workinggroup.aero\0com.zm\0" +"corvette.museum\0for-more.biz\0" +"rimini.it\0mihama.chiba.jp\0" +"hm.no\0" +"sm.ua\0\xe9\xa6\x99\xe6\xb8\xaf\0" +"ath.cx\0" +"bungotakada.oita.jp\0lutsk.ua\0dk.eu.org\0" +"hirara.okinawa.jp\0" +"media.hu\0bharti\0" +"ta.it\0ipiranga\0" +"is-slick.com\0" +"nico\0" +"marumori.miyagi.jp\0" +"arts.co\0tsuruta.aomori.jp\0lancome\0" +"gliding.aero\0inatsuki.fukuoka.jp\0" +"nome.pt\0familyds.net\0" +"naruto.tokushima.jp\0mt.us\0nd.us\0" +"kakinoki.shimane.jp\0" +"is-an-entertainer.com\0" +"port.fr\0gotdns.ch\0" +"bydgoszcz.pl\0" +"r\xc3\xb8st.no\0" +"ranzan.saitama.jp\0" +"marburg.museum\0komi.ru\0" +"wellbeingzone.co.uk\0" +"chikuzen.fukuoka.jp\0hjartdal.no\0" +"ikeda.fukui.jp\0" +"contemporaryart.museum\0" +"ostroleka.pl\0like\0" +"\xc3\xb8vre-eiker.no\0dyndns-server.com\0" "ishikawa.fukushima.jp\0" -"nu.ca\0" -"omiya.saitama.jp\0" -"bike\0" -"hirono.iwate.jp\0digital\0read\0" -"exhibition.museum\0" -"tn.it\0hita.oita.jp\0" -"inder\xc3\xb8y.no\0" -"fail\0" -"otsuka\0" -"k-uralsk.ru\0" -"tamaki.mie.jp\0florist\0" -"mi.us\0place\0" -"yono.saitama.jp\0movistar\0" -"sn\xc3\xa5""ase.no\0k12.ma.us\0" -"ashibetsu.hokkaido.jp\0mizusawa.iwate.jp\0isa.kagoshima.jp\0" -"farsund.no\0" -"haebaru.okinawa.jp\0" -"gs.aa.no\0" -"hyllestad.no\0" -"itako.ibaraki.jp\0" -"pics\0" -"godo.gifu.jp\0" -"fauske.no\0frei.no\0dyndns.info\0" -"bg.it\0" -"matsumoto.nagano.jp\0" -"kids.museum\0gaivuotna.no\0" -"dell\0" -"cc.ma.us\0" -"\xe5\xb2\xa9\xe6\x89\x8b.jp\0yamagata.ibaraki.jp\0" -"austevoll.no\0mma\0" -"br.com\0" -"fuchu.hiroshima.jp\0ostrowiec.pl\0podlasie.pl\0" -"nature.museum\0" -"usdecorativearts.museum\0bing\0" -"matsudo.chiba.jp\0niimi.okayama.jp\0" -"federation.aero\0brussels\0" -"ancona.it\0piaget\0" -"k12.ga.us\0" -"jorpeland.no\0camera\0" -"preservation.museum\0" -"vibo-valentia.it\0" -"tochigi.jp\0" -"salerno.it\0" -"iwade.wakayama.jp\0kiwi.nz\0" -"pvt.ge\0gifts\0globo\0" -"honai.ehime.jp\0" -"childrensgarden.museum\0spreadbetting\0" -"hannan.osaka.jp\0" -"raholt.no\0cc.ga.us\0from-ut.com\0" -"cartier\0maif\0" -"kolobrzeg.pl\0" -"moe\0" -"bungotakada.oita.jp\0" -"moi\0" -"otaru.hokkaido.jp\0\xe8\xb0\xb7\xe6\xad\x8c\0" -"akita.jp\0" -"carboniaiglesias.it\0" -"d.bg\0" -"mov\0" -"gs.ah.no\0marnardal.no\0fans\0" -"tysnes.no\0mordovia.ru\0" -"bearalv\xc3\xa1hki.no\0engineering\0compute-1.amazonaws.com\0" -"is-a-nascarfan.com\0" -"\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" -"friuli-venezia-giulia.it\0bn.it\0udono.mie.jp\0" -"oslo.no\0" -"nu.it\0mormon\0" -"freiburg.museum\0hamar.no\0" -"kita.tokyo.jp\0" -"minamifurano.hokkaido.jp\0" -"bible\0" -"esp.br\0" -"is-a-democrat.com\0" -"narusawa.yamanashi.jp\0" -"uonuma.niigata.jp\0wien\0" -"on-the-web.tv\0" -"karm\xc3\xb8y.no\0" -"mosjoen.no\0" -"koya.wakayama.jp\0" -"chernovtsy.ua\0holiday\0from-mi.com\0" -"square.museum\0is-a-patsfan.org\0" -"mihama.fukui.jp\0" -"clothing\0" -"reit\0" -"historichouses.museum\0gjovik.no\0desi\0" -"cam.it\0asuke.aichi.jp\0" -"kizu.kyoto.jp\0" -"syzran.ru\0eu-central-1.compute.amazonaws.com\0" -"ama.shimane.jp\0" -"farm\0" -"jaworzno.pl\0" -"emp.br\0" -"k12.ar.us\0" -"oto.fukuoka.jp\0takahagi.ibaraki.jp\0elk.pl\0" -"k12.mo.us\0" -"soo.kagoshima.jp\0umaji.kochi.jp\0" -"farmequipment.museum\0github.io\0" -"mashiki.kumamoto.jp\0" -"k.bg\0" -"mtn\0" -"skole.museum\0deals\0" -"is-a-student.com\0" -"friuli-ve-giulia.it\0" -"force.museum\0nec\0" -"fast\0walter\0" -"pharmacien.fr\0ce.it\0hakuba.nagano.jp\0" -"s3-eu-west-1.amazonaws.com\0" -"lucca.it\0" -"nakadomari.aomori.jp\0" -"antiques.museum\0resistance.museum\0cc.mo.us\0" -"troandin.no\0vyatka.ru\0" -"net\0microsoft\0" -"civilisation.museum\0" -"komatsushima.tokushima.jp\0" -"bronnoysund.no\0new\0" -"nanbu.yamanashi.jp\0" -"vic.au\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" -"shitara.aichi.jp\0kamikawa.hokkaido.jp\0nogi.tochigi.jp\0" -"tn.us\0pink\0" -"yokote.akita.jp\0" -"oz.au\0k12.tx.us\0physio\0" -"\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" -"stalbans.museum\0productions\0" -"fvg.it\0" -"riik.ee\0aland.fi\0" -"okazaki.aichi.jp\0" -"gs.tm.no\0" -"*.sapporo.jp\0" -"children.museum\0dali.museum\0" -"ngo\0" -"ritto.shiga.jp\0" -"wiki\0dyndns-at-home.com\0" -"vc.it\0" -"rent\0" -"berlevag.no\0" -"bryne.no\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0nhk\0" -"eng.br\0carrara-massa.it\0" -"penza.ru\0" -"lib.in.us\0" -"onomichi.hiroshima.jp\0" -"k12.oh.us\0" -"ebino.miyazaki.jp\0" -"deatnu.no\0lib.wi.us\0" -"wa.au\0r.bg\0us.org\0" -"univ.sn\0" -"seiro.niigata.jp\0" -"brindisi.it\0" -"is-a-hard-worker.com\0" -"rankoshi.hokkaido.jp\0" -"archi\0" -"dnsdojo.org\0from-ia.com\0" -"kimitsu.chiba.jp\0" -"chernihiv.ua\0" -"cl.it\0toride.ibaraki.jp\0" -"bjarkoy.no\0" -"bu.no\0" -"pc.it\0" -"karasjok.no\0" -"ol.no\0" -"kesennuma.miyagi.jp\0katsuragi.nara.jp\0" -"tourism.tn\0" -"bolzano.it\0" -"act.au\0trondheim.no\0" -"trentinosuedtirol.it\0suwalki.pl\0" -"bahccavuotna.no\0abo.pa\0" -"yamagata.gifu.jp\0canon\0" -"\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0horse\0" -"viajes\0" -"repair\0\xe6\x89\x8b\xe8\xa1\xa8\0" -"history.museum\0" -"gs.hm.no\0" -"\xe7\xa6\x8f\xe4\xba\x95.jp\0" -"inashiki.ibaraki.jp\0" -"us.na\0osoyro.no\0fedje.no\0" -"sakai.fukui.jp\0" -"air-surveillance.aero\0engineer.aero\0pri.ee\0" -"is.it\0namikata.ehime.jp\0" -"warabi.saitama.jp\0" -"strand.no\0" -"lecco.it\0" -"tatar\0" -"shinjo.yamagata.jp\0" -"sakahogi.gifu.jp\0" -"aarborte.no\0cityeats\0" -"\xe7\xbe\xa4\xe9\xa6\xac.jp\0rest\0" -"skien.no\0" -"kasai.hyogo.jp\0hitachinaka.ibaraki.jp\0" -"costume.museum\0photography.museum\0froya.no\0grozny.ru\0simbirsk.ru\0" -"barletta-trani-andria.it\0sells-it.net\0" -"y.bg\0" -"art.museum\0" -"karpacz.pl\0" -"sanok.pl\0" -"gs.nt.no\0" -"fortworth.museum\0murmansk.ru\0" -"mansion.museum\0" -"cs.it\0" -"nishiokoppe.hokkaido.jp\0yaese.okinawa.jp\0" -"santacruz.museum\0googleapis.com\0" -"servebbs.net\0" -"cc.nm.us\0" -"asso.fr\0lupin\0" -"eigersund.no\0" -"sukumo.kochi.jp\0ketrzyn.pl\0" -"compute.amazonaws.com\0" -"nagara.chiba.jp\0" -"bokn.no\0" -"mino.gifu.jp\0" -"author.aero\0" -"erni\0" -"asso.gp\0iz.hr\0" -"otsuki.yamanashi.jp\0" -"posts-and-telecommunications.museum\0marker.no\0" -"is-into-cars.com\0" -"flynnhub.com\0" -"kr\xc3\xa5""anghke.no\0" -"nakamichi.yamanashi.jp\0" -"tokke.no\0" -"pc.pl\0" -"etne.no\0community\0" -"hol.no\0" -"asso.ht\0tatsuno.hyogo.jp\0tokamachi.niigata.jp\0" -"valer.ostfold.no\0d.se\0" -"agrar.hu\0" -"nagareyama.chiba.jp\0niigata.niigata.jp\0" -"ap-northeast-1.compute.amazonaws.com\0" -"qh.cn\0sardinia.it\0tozawa.yamagata.jp\0" -"oe.yamagata.jp\0" -"scotland.museum\0kalmykia.ru\0wedding\0" -"med.br\0" -"nra\0" -"asso.bj\0tabayama.yamanashi.jp\0" -"obi\0" -"cci.fr\0ome.tokyo.jp\0" -"sakuho.nagano.jp\0" -"per.la\0s\xc3\xa1l\xc3\xa1t.no\0" -"murata.miyagi.jp\0" -"airport.aero\0" -"cz.it\0" -"friulive-giulia.it\0koeln\0" -"asso.ci\0birthplace.museum\0nrw\0" -"naka.hiroshima.jp\0shiranuka.hokkaido.jp\0" -"bamble.no\0" -"jx.cn\0mibu.tochigi.jp\0" -"watchandclock.museum\0g\xc3\xa1ls\xc3\xa1.no\0" -"shibata.niigata.jp\0!teledata.mz\0" -"nanmoku.gunma.jp\0" -"med.ec\0aquarium.museum\0il.us\0outsystemscloud.com\0" -"med.ee\0mandal.no\0verran.no\0" -"kumamoto.jp\0is-a-geek.net\0" -"flekkefjord.no\0" -"shinonsen.hyogo.jp\0fudai.iwate.jp\0" -"\xe4\xbf\xa1\xe6\x81\xaf\0" -"nishiaizu.fukushima.jp\0" -"sumy.ua\0" -"per.nf\0" -"chiba.jp\0ntt\0" -"asso.dz\0" -"badaddja.no\0cc.id.us\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0" -"k.se\0" -"niki.hokkaido.jp\0higashikagawa.kagawa.jp\0" -"koeln.museum\0" -"andoy.no\0" -"frana.no\0\xd9\x83\xd9\x88\xd9\x85\0" -"katashina.gunma.jp\0" -"tourism.pl\0" -"aremark.no\0" -"chita.ru\0" -"tarumizu.kagoshima.jp\0" -"\xe7\xbd\x91\xe7\xb5\xa1.hk\0orkanger.no\0" -"tempioolbia.it\0saotome.st\0" -"kawakita.ishikawa.jp\0" -"karikatur.museum\0uz.ua\0hermes\0" -"friuli-vgiulia.it\0" -"textile.museum\0" -"iwatsuki.saitama.jp\0" -"cc.ok.us\0" -"med.ht\0" -"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0" -"tsushima.aichi.jp\0ide.kyoto.jp\0" -"abira.hokkaido.jp\0actor\0" -"\xe7\xb5\x84\xe7\xbb\x87.hk\0" -"tsuchiura.ibaraki.jp\0" -"dep.no\0" -"republican\0" -"vefsn.no\0" -"luxembourg.museum\0" -"chikuho.fukuoka.jp\0" +"um.gov.pl\0industries\0" +"b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0" +"koga.fukuoka.jp\0tsukui.kanagawa.jp\0" +"sumida.tokyo.jp\0info.zm\0" +"tohma.hokkaido.jp\0shika.ishikawa.jp\0" +"ilovecollege.info\0" +"gojome.akita.jp\0tsuchiura.ibaraki.jp\0" +"shikokuchuo.ehime.jp\0" +"pulawy.pl\0" +"dr\xc3\xb8""bak.no\0muos\xc3\xa1t.no\0" +"cremona.it\0" +"de.eu.org\0" +"\xe5\x98\x89\xe9\x87\x8c\xe5\xa4\xa7\xe9\x85\x92\xe5\xba\x97\0" +"mx.na\0" +"oster\xc3\xb8y.no\0" +"nl.ca\0" +"minami.fukuoka.jp\0r\xc3\xb8yken.no\0" +"t\xc3\xb8nsberg.no\0" +"mihama.fukui.jp\0kodaira.tokyo.jp\0limo\0" +"bv.nl\0lind\xc3\xa5s.no\0" +"livorno.it\0" +"yn.cn\0" +"ascolipiceno.it\0sm\xc3\xb8la.no\0\xe6\x96\xb0\xe9\x97\xbb\0" +"is-not-certified.com\0" +"kanmaki.nara.jp\0honda\0" +"link\0" +"roma.it\0nowruz\0" +"prof.pr\0" +"dallas.museum\0" +"iron.museum\0futbol\0hk.org\0" +"ss.it\0" "nasu.tochigi.jp\0" -"intelligence.museum\0nyc\0" -"is-an-actress.com\0" -"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0" -"vda.it\0" -"\xe6\xbb\x8b\xe8\xb3\x80.jp\0worse-than.tv\0" -"gliding.aero\0notaires.km\0lea\xc5\x8bgaviika.no\0" -"r.se\0per.sg\0" -"taxi.br\0" -"elvendrell.museum\0" -"kariwa.niigata.jp\0" -"science.museum\0from-ms.com\0from-nc.com\0" -"cesena-forli.it\0" -"dc.us\0dontexist.org\0" -"kishiwada.osaka.jp\0" -"yoshioka.gunma.jp\0" -"k12.dc.us\0" -"toyoake.aichi.jp\0seranishi.hiroshima.jp\0noda.iwate.jp\0" -"cagliari.it\0buyshouses.net\0" -"aso.kumamoto.jp\0" -"sauda.no\0" -"\xe5\x85\xb5\xe5\xba\xab.jp\0nisshin.aichi.jp\0" -"vegarshei.no\0" -"m\xc4\x81ori.nz\0" -"overhalla.no\0voagat.no\0" -"indian.museum\0railroad.museum\0nsk.ru\0is-leet.com\0" -"inf.br\0nakama.fukuoka.jp\0" -"readmyblog.org\0" -"bergamo.it\0\xe5\xa5\x88\xe8\x89\xaf.jp\0" -"ushiku.ibaraki.jp\0" -"med.ly\0" -"tahara.aichi.jp\0" -"ringsaker.no\0cc.or.us\0" -"aga.niigata.jp\0" -"property\0" -"hinohara.tokyo.jp\0" -"ac\0" -"ad\0kuji.iwate.jp\0kinder\0compute.amazonaws.cn\0" +"other.nf\0" +"ch.it\0sykkylven.no\0loginto.me\0" +"author\0" +"aid.pl\0pics\0" +"us.gov.pl\0kustanai.ru\0" +"nkz.ru\0" +"yaroslavl.ru\0" +"koeln\0" +"padova.it\0" +"vard\xc3\xb8.no\0" +"shiga.jp\0" +"gaular.no\0rennesoy.no\0" +"panama.museum\0" +"yonezawa.yamagata.jp\0media.pl\0ciscofreak.com\0" +"tosa.kochi.jp\0ogawa.nagano.jp\0holt\xc3\xa5len.no\0" +"itayanagi.aomori.jp\0nakamura.kochi.jp\0askvoll.no\0" +"batsfjord.no\0" +"yosemite.museum\0homeip.net\0" +"nike\0" +"tempioolbia.it\0sandvikcoromant\0" +"iwade.wakayama.jp\0" +"kaufen\0" +"shinjuku.tokyo.jp\0presidio.museum\0gloppen.no\0is-a-celticsfan.org\0" +"bahccavuotna.no\0lezajsk.pl\0" +"minamisanriku.miyagi.jp\0" +"*.sapporo.jp\0" +"tomi.nagano.jp\0" +"friuliveneziagiulia.it\0bando.ibaraki.jp\0" +"meiwa.gunma.jp\0" +"k12.fl.us\0" +"sos.pl\0gotdns.org\0" +"bashkiria.ru\0" +"troitsk.su\0" +"kuban.ru\0" +"nakhodka.ru\0" +"moriyama.shiga.jp\0motorcycle.museum\0" +"crew.aero\0" +"luster.no\0podhale.pl\0hockey\0" +"bahn.museum\0" +"tas.gov.au\0" +"izumizaki.fukushima.jp\0" +"b\xc3\xa1jddar.no\0*.magentosite.cloud\0" +"bashkiria.su\0" +"satosho.okayama.jp\0kvam.no\0discount\0" +"cosenza.it\0" +"orkanger.no\0" +"v\xc3\xa5ler.hedmark.no\0" +"tobishima.aichi.jp\0" +"vang.no\0" +"higashine.yamagata.jp\0lib.mn.us\0" +"arao.kumamoto.jp\0center.museum\0" +"doomdns.com\0" +"n\xc3\xb8tter\xc3\xb8y.no\0arts.ve\0" +"\xc3\xa5lesund.no\0mobi.tt\0pamperedchef\0" +"valleaosta.it\0" +"kunstunddesign.museum\0gdynia.pl\0" +"valer.ostfold.no\0rich\0" +"mobi.tz\0" +"te.it\0udono.mie.jp\0" +"abarth\0" +"bz.it\0" +"ca.eu.org\0" +"\xe3\x82\xb3\xe3\x83\xa0\0" +"sondrio.it\0for-some.biz\0" +"wa.gov.au\0agro.pl\0" +"hanno.saitama.jp\0asahi.toyama.jp\0" +"taka.hyogo.jp\0nh.us\0" +"noda.iwate.jp\0" +"hongo.hiroshima.jp\0omiya.saitama.jp\0\xd0\xb1\xd0\xb5\xd0\xbb\0" +"cuneo.it\0yachiyo.chiba.jp\0" +"troandin.no\0" +"is-a-cpa.com\0" +"mikasa.hokkaido.jp\0" +"\xe9\x95\xb7\xe5\xb4\x8e.jp\0smola.no\0glass\0" +"kanoya.kagoshima.jp\0" +"int.ar\0" +"tel.tr\0" +"live\0" +"mitake.gifu.jp\0" +"nakano.nagano.jp\0" +"is-a-nurse.com\0" +"int.az\0matera.it\0hs.kr\0\xc3\xb8rskog.no\0" +"yuzawa.niigata.jp\0" +"lowicz.pl\0" +"int.bo\0grondar.za\0" +"eu-2.evennode.com\0" +"volgograd.ru\0" +"mazowsze.pl\0" +"is-into-games.com\0" +"is-found.org\0" +"vossevangen.no\0" +"int.ci\0yonabaru.okinawa.jp\0" +"resistance.museum\0" +"ginan.gifu.jp\0tiaa\0" +"ayase.kanagawa.jp\0ise.mie.jp\0chichibu.saitama.jp\0athleta\0" +"int.co\0" +"langev\xc3\xa5g.no\0" +"oguni.kumamoto.jp\0" +"sec.ps\0" +"chita.aichi.jp\0" +"nakagyo.kyoto.jp\0cloudcontrolled.com\0" +"inderoy.no\0" +"monmouth.museum\0dep.no\0mazury.pl\0" +"gliwice.pl\0" +"jan-mayen.no\0arts.ro\0" +"ohira.miyagi.jp\0" +"\xe5\xa5\x88\xe8\x89\xaf.jp\0law.pro\0" +"riik.ee\0mobi.na\0volda.no\0" +"shisui.chiba.jp\0" +"kyuragi.saga.jp\0\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0home.dyndns.org\0" +"rotorcraft.aero\0mobi.ng\0nl.no\0" +"kasuga.hyogo.jp\0" +"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0ping\0" +"jfk.museum\0" +"vestv\xc3\xa5g\xc3\xb8y.no\0fam.pk\0healthcare\0pink\0" +"rome.it\0fukushima.hokkaido.jp\0nord-fron.no\0" +"magadan.ru\0" +"nakayama.yamagata.jp\0" +"val-daosta.it\0" +"kiyose.tokyo.jp\0" +"notodden.no\0" +"cl.it\0miami\0" +"modena.it\0" +"hitachiomiya.ibaraki.jp\0" +"kyowa.hokkaido.jp\0yakage.okayama.jp\0" +"\xe6\x96\xb0\xe6\xbd\x9f.jp\0mer\xc3\xa5ker.no\0simple-url.com\0" +"cd.eu.org\0" +"nj.us\0schwarz\0" +"ia.us\0eu-1.evennode.com\0" +"oldnavy\0" +"vladivostok.ru\0" +"barrel-of-knowledge.info\0" +"hirosaki.aomori.jp\0" +"aeroclub.aero\0navigation.aero\0" +"santafe.museum\0" +"dellogliastra.it\0\xe6\x94\xbf\xe5\xba\x9c\0" +"asnes.no\0" +"vao.it\0yugawa.fukushima.jp\0" +"chuo.osaka.jp\0arts.nf\0tokyo\0" +"ap-southeast-1.compute.amazonaws.com\0" +"notogawa.shiga.jp\0" +"tennis\0us.com\0" +"holdings\0" +"beats\0lifestyle\0" +"redumbrella\0issmarterthanyou.com\0" +"britishcolumbia.museum\0" +"maizuru.kyoto.jp\0" +"k12.va.us\0" +"encyclopedic.museum\0posts-and-telecommunications.museum\0k12.pr.us\0" +"youth.museum\0" +"barletta-trani-andria.it\0" +"kai.yamanashi.jp\0" +"riodejaneiro.museum\0" +"nyny.museum\0" +"software.aero\0yamato.kanagawa.jp\0" +"obira.hokkaido.jp\0" +"int.is\0" +"review\0" +"mishima.shizuoka.jp\0" +"aizubange.fukushima.jp\0vestby.no\0" +"akita.jp\0" +"budejju.no\0" +"hosting\0" +"kuwana.mie.jp\0" +"\xe4\xb8\x96\xe7\x95\x8c\0" +"te.ua\0" +"\xe5\xa4\xa7\xe5\x88\x86.jp\0" +"tako.chiba.jp\0moareke.no\0" +"associates\0" +"m\xc3\xa1latvuopmi.no\0windows\0" +"mail.pl\0augustow.pl\0" +"int.la\0" +"!city.kobe.jp\0" +"cn.it\0sanfrancisco.museum\0" +"sakado.saitama.jp\0s3-ap-southeast-1.amazonaws.com\0" +"principe.st\0okinawa\0" +"drive\0" +"jogasz.hu\0misato.shimane.jp\0kuroiso.tochigi.jp\0" +"int.lk\0" +"higashikagawa.kagawa.jp\0" +"groks-this.info\0" +"arkhangelsk.ru\0" +"yawatahama.ehime.jp\0" +"pa.leg.br\0" +"chigasaki.kanagawa.jp\0minami-alps.yamanashi.jp\0osoyro.no\0" +"tone.ibaraki.jp\0matsuda.kanagawa.jp\0tenri.nara.jp\0" +"nogata.fukuoka.jp\0" +"omachi.saga.jp\0\xc3\xb8rsta.no\0" +"lucca.it\0yanaizu.fukushima.jp\0" +"africa.com\0" +"wakuya.miyagi.jp\0" +"arkhangelsk.su\0" +"eurovision\0" +"manx.museum\0askim.no\0" +"sakegawa.yamagata.jp\0" +"int.mv\0b\xc3\xa1hccavuotna.no\0" +"int.mw\0" +"int.ni\0" +"sakaki.nagano.jp\0nakano.tokyo.jp\0" +"blog\0" +"tinn.no\0ostroda.pl\0mydrobo.com\0" +"pb.leg.br\0" +"gonohe.aomori.jp\0starostwo.gov.pl\0edu.krd\0" +"marugame.kagawa.jp\0" +"nt.au\0" +"sekigahara.gifu.jp\0" +"plaza.museum\0" +"leasing.aero\0tjeldsund.no\0" +"sunagawa.hokkaido.jp\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0from-nh.com\0" +"nt.ca\0" +"bellevue.museum\0" +"lib.oh.us\0" +"tysfjord.no\0" +"otsuki.kochi.jp\0co.krd\0" +"k12.ec\0porsangu.no\0" +"yukuhashi.fukuoka.jp\0" +"int.pt\0" +"soundandvision.museum\0nesna.no\0" +"read-books.org\0" +"khmelnitskiy.ua\0" +"br\xc3\xb8nn\xc3\xb8y.no\0" +"tm.cy\0fedje.no\0" +"monzabrianza.it\0" +"ami.ibaraki.jp\0marker.no\0cloudfront.net\0" +"naganohara.gunma.jp\0forsand.no\0" +"\xe6\xbe\xb3\xe9\x96\x80\0volkswagen\0" +"tosu.saga.jp\0raisa.no\0yokohama\0" +"aip.ee\0" +"foggia.it\0" +"takinoue.hokkaido.jp\0realm.cz\0" +"coldwar.museum\0lancaster\0" +"wassamu.hokkaido.jp\0ro.eu.org\0" +"tomari.hokkaido.jp\0locus\0" +"stjordal.no\0" +"aga.niigata.jp\0americanart.museum\0" +"campobasso.it\0shimoda.shizuoka.jp\0" +"adult\0pharmacy\0" +"telekommunikation.museum\0" +"ac\0kopervik.no\0" +"ad\0witd.gov.pl\0int.ru\0" "ae\0" -"af\0uchinomi.kagawa.jp\0kashihara.nara.jp\0" -"ag\0snasa.no\0" -"ai\0" -"inf.cu\0wa.us\0" -"al\0tomioka.gunma.jp\0" -"am\0" -"an\0" -"ao\0k12.wi.us\0" -"traniandriabarletta.it\0" -"aq\0ba\0" -"ar\0bb\0" -"as\0uslivinghistory.museum\0" -"at\0" -"au\0be\0" -"bf\0tomisato.chiba.jp\0tajimi.gifu.jp\0" -"aw\0bg\0is-a-knight.org\0" +"af\0mytis.ru\0int.rw\0abudhabi\0" +"ag\0" +"ai\0raholt.no\0" +"oshima.yamaguchi.jp\0" +"al\0" +"am\0latino\0tips\0" +"reklam.hu\0jewish.museum\0rakkestad.no\0" +"ao\0higashimatsushima.miyagi.jp\0\xe5\xa4\xa7\xe6\x8b\xbf\0elasticbeanstalk.com\0" +"aq\0ba\0chernivtsi.ua\0blogsite.org\0from-id.com\0" +"ar\0bb\0jobs.tt\0" +"as\0tm.fr\0yamagata.yamagata.jp\0dontexist.org\0" +"at\0obanazawa.yamagata.jp\0" +"air-surveillance.aero\0au\0be\0" +"bf\0" +"aw\0bg\0carrara-massa.it\0" "ax\0bh\0" -"bi\0" -"az\0bj\0" -"bm\0nebraska.museum\0one\0" -"bo\0ong\0s3-sa-east-1.amazonaws.com\0" -"ca\0med.om\0" -"br\0gold\0" -"bs\0cc\0y.se\0" -"bt\0cd\0nakai.kanagawa.jp\0golf\0onl\0" -"med.pa\0cc.vi.us\0" -"bv\0cf\0shinanomachi.nagano.jp\0" -"bw\0cg\0york.museum\0" -"ch\0nishihara.kumamoto.jp\0" +"bi\0heroy.more-og-romsdal.no\0int.tj\0" +"az\0bj\0myftp.org\0" +"aogaki.hyogo.jp\0blue\0" +"bm\0" +"kawamata.fukushima.jp\0aurskog-h\xc3\xb8land.no\0scholarships\0" +"bo\0romskog.no\0flir\0" +"honbetsu.hokkaido.jp\0" +"ca\0pors\xc3\xa1\xc5\x8bgu.no\0" +"br\0" +"bs\0cc\0idf.il\0int.tt\0" +"bt\0cd\0" +"bv\0cf\0" +"bw\0cg\0k12.il\0" +"ch\0" "by\0ci\0" "bz\0" -"firestone\0" -"cl\0chikusei.ibaraki.jp\0" -"cm\0frosta.no\0" -"cn\0" -"co\0tingvoll.no\0isa.us\0\xe5\x95\x86\xe5\xba\x97\0" -"sic.it\0kasuga.hyogo.jp\0med.pl\0" -"cr\0!city.yokohama.jp\0maori.nz\0" -"shiroi.chiba.jp\0amagasaki.hyogo.jp\0flsmidth\0" -"cu\0de\0soc.lk\0gloppen.no\0holdings\0loans\0" -"cv\0funabashi.chiba.jp\0kaizuka.osaka.jp\0" -"cw\0ooo\0" -"cx\0\xe1\x83\x92\xe1\x83\x94\0financial\0" -"stada\0" -"cz\0dj\0bedzin.pl\0" -"dk\0\xd8\xa8\xd9\x8a\xd8\xaa\xd9\x83\0" -"wodzislaw.pl\0" -"dm\0" -"otaki.chiba.jp\0saroma.hokkaido.jp\0poker\0" -"do\0lviv.ua\0" -"bibai.hokkaido.jp\0aridagawa.wakayama.jp\0" -"arezzo.it\0" -"ec\0civilization.museum\0vestnes.no\0" -"ee\0communications.museum\0" -"pmn.it\0" -"eg\0" -"dz\0final\0" -"sarufutsu.hokkaido.jp\0nagawa.nagano.jp\0accountant\0" -"muenchen.museum\0" -"\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" -"pisa.it\0" -"linde\0" -"es\0audnedaln.no\0narvik.no\0" -"et\0geometre-expert.fr\0livorno.it\0tra.kp\0" -"eu\0med.sa\0lib.sd.us\0goog\0" -"5.bg\0krager\xc3\xb8.no\0gratis\0" -"med.sd\0" -"fi\0luxury\0" -"nanjo.okinawa.jp\0" -"askim.no\0aurskog-holand.no\0asso.re\0\xd9\x85\xd8\xb5\xd8\xb1\0" -"wada.nagano.jp\0" +"hangout\0moscow\0" +"cl\0" +"cm\0aostavalley.it\0prudential\0" +"cn\0oirase.aomori.jp\0" +"co\0\xc3\xa5mli.no\0" +"chikugo.fukuoka.jp\0" +"cr\0yaizu.shizuoka.jp\0" +"int.ve\0" +"cu\0de\0shiraoi.hokkaido.jp\0iruma.saitama.jp\0lib.nv.us\0" +"of.by\0cv\0tm.hu\0teshikaga.hokkaido.jp\0lib.ia.us\0lawyer\0university\0" +"cw\0yamaga.kumamoto.jp\0" +"b.bg\0cx\0si.eu.org\0" +"cz\0dj\0" +"dk\0" +"dm\0cc.vt.us\0int.vn\0" +"furano.hokkaido.jp\0" +"do\0cn.ua\0" +"consultant.aero\0kasama.ibaraki.jp\0" +"lecce.it\0frana.no\0" +"\xe9\x9b\xbb\xe8\xa8\x8a\xe7\x9b\x88\xe7\xa7\x91\0" +"b.br\0ec\0" +"ee\0" +"higashitsuno.kochi.jp\0" +"eg\0s3-ap-northeast-1.amazonaws.com\0" +"cr.it\0defense.tn\0" +"dz\0" +"tokoname.aichi.jp\0" +"cargo.aero\0frankfurt.museum\0" +"yamakita.kanagawa.jp\0" +"es\0yakutia.ru\0" +"et\0torino.it\0" +"eu\0noshiro.akita.jp\0" +"fr\xc3\xb8ya.no\0\xe6\xbe\xb3\xe9\x97\xa8\0" +"fi\0" "fm\0" -"fo\0org\0" -"fm.br\0agro.pl\0" -"ga\0" -"fr\0gb\0kazo.saitama.jp\0" -"gd\0ogawa.ibaraki.jp\0" -"ge\0us-east-1.amazonaws.com\0" -"gf\0" -"gg\0mer\xc3\xa5ker.no\0from-ok.com\0" -"gh\0kuwana.mie.jp\0" +"tm.km\0" +"fo\0" +"blogdns.org\0" +"ga\0for-better.biz\0" +"fr\0gb\0iinet\0is-a-democrat.com\0" +"kurate.fukuoka.jp\0" +"gd\0" +"ge\0nakijin.okinawa.jp\0" +"gf\0miyoshi.tokushima.jp\0" +"gg\0" +"gh\0" "gi\0" -"mashike.hokkaido.jp\0" -"is-a-celticsfan.org\0" -"gl\0ogawa.nagano.jp\0" -"gm\0" +"oyama.tochigi.jp\0" +"kanan.osaka.jp\0" +"gl\0hannan.osaka.jp\0" +"gm\0tranby.no\0" "gn\0" -"arendal.no\0" -"sd.cn\0gp\0" +"familyds.org\0" +"gp\0" "gq\0" -"gr\0\xe5\xbe\xb3\xe5\xb3\xb6.jp\0" -"gs\0claims\0" -"gt\0" -"gw\0lib.md.us\0" -"int.ar\0" +"gr\0trentinostirol.it\0sande.vestfold.no\0" +"gs\0kanna.gunma.jp\0" +"gt\0tm.mc\0k12.ak.us\0insurance\0" +"virgin\0" +"gw\0" +"tm.mg\0sk.eu.org\0" "gy\0" -"hk\0colonialwilliamsburg.museum\0associates\0" +"hk\0amli.no\0" "hm\0" -"hn\0" -"int.az\0karumai.iwate.jp\0" -"hr\0zao.miyagi.jp\0anan.tokushima.jp\0" -"gov.ac\0" -"ht\0id\0tsuiki.fukuoka.jp\0ikoma.nara.jp\0chungnam.kr\0mail.pl\0" -"gov.ae\0int.bo\0hu\0ie\0bergen.no\0kh.ua\0is-lost.org\0" -"gov.af\0" -"kurobe.toyama.jp\0green\0" -"yk.ca\0" -"tonami.toyama.jp\0" -"gov.al\0" -"md.ci\0im\0histoire.museum\0salem.museum\0" -"in\0rm.it\0vercelli.it\0" -"int.ci\0io\0music.museum\0" -"bieszczady.pl\0gmail\0" -"gov.ba\0iq\0" -"gov.ar\0gov.bb\0ir\0" -"gov.as\0is\0\xc3\xa1laheadju.no\0samsung\0" -"it\0dnsdojo.net\0" -"gov.au\0int.co\0je\0game-server.cc\0" -"gov.bf\0" -"kragero.no\0" -"gov.bh\0" -"asso.nc\0" -"gov.az\0" -"gov.bm\0voss.no\0" -"gov.bo\0jo\0insure\0" -"chirurgiens-dentistes.fr\0gorizia.it\0jp\0ovh\0" -"inf.mk\0" -"gov.br\0" -"gov.bs\0\xc3\xb8ksnes.no\0" -"gov.bt\0gov.cd\0" -"flora.no\0" -"kg\0khakassia.ru\0" -"gov.by\0ki\0" -"gov.bz\0shinkamigoto.nagasaki.jp\0" -"sk.ca\0\xc3\xa5lesund.no\0" -"gov.cl\0fukaya.saitama.jp\0wloclawek.pl\0" -"gov.cm\0km\0tynset.no\0chuvashia.ru\0tec.ve\0" -"gov.cn\0kn\0" -"gov.co\0journalism.museum\0netbank\0" -"basilicata.it\0susaki.kochi.jp\0ogawara.miyagi.jp\0kp\0" -"la\0kvitsoy.no\0" -"kr\0lb\0" -"lc\0alaheadju.no\0" -"gd.cn\0" -"gov.cu\0" -"fujiidera.osaka.jp\0" -"gov.cx\0" -"ky\0li\0oceanographique.museum\0viking.museum\0jessheim.no\0forgot.her.name\0" -"kz\0kitchen\0" -"lk\0" -"minamiawaji.hyogo.jp\0nikko.tochigi.jp\0" -"gov.dm\0" -"kakuda.miyagi.jp\0" -"gov.do\0" -"kasuga.fukuoka.jp\0" -"ma\0r\xc3\xa1isa.no\0" -"lr\0" -"gov.ec\0ls\0mc\0" -"fukuoka.jp\0lt\0md\0" -"gov.ee\0lu\0me\0" +"hn\0shonai.yamagata.jp\0" +"bible\0" +"hr\0" +"pagespeedmobilizer.com\0" +"ht\0id\0trentino-s-tirol.it\0kppsp.gov.pl\0" +"hu\0ie\0" +"yamatokoriyama.nara.jp\0visa\0" +"assedic.fr\0seihi.nagasaki.jp\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0" +"higashiosaka.osaka.jp\0" +"digital\0" +"il\0" +"im\0" +"in\0nagasaki.jp\0alstom\0" +"io\0" +"tm.no\0" +"iq\0shimonoseki.yamaguchi.jp\0nt.no\0protection\0" +"ir\0" +"d.bg\0is\0" +"zj.cn\0it\0vrn.ru\0" +"je\0macys\0" +"nx.cn\0" +"grane.no\0" +"no-ip.co.uk\0" +"santacruz.museum\0aaa.pro\0" +"shiranuka.hokkaido.jp\0" +"surrey.museum\0" +"misato.miyagi.jp\0ngo.lk\0baikal.ru\0careers\0sharp\0" +"jo\0aizumi.tokushima.jp\0" +"to.it\0jp\0palana.ru\0" +"lombardia.it\0markets\0" +"im.it\0gs.fm.no\0latrobe\0" +"ct.it\0pi.leg.br\0" +"sannohe.aomori.jp\0mizumaki.fukuoka.jp\0" +"kg\0guernsey.museum\0\xe7\xb6\xb2\xe8\xb7\xaf.tw\0" +"educational.museum\0" +"ki\0kwp.gov.pl\0" +"soma.fukushima.jp\0dvrcam.info\0" +"km\0tm.pl\0" +"kn\0" +"med.pro\0" +"ota.tokyo.jp\0kp\0" +"la\0" +"kr\0lb\0bradesco\0" +"lc\0dynv6.net\0" +"its.me\0" +"molde.no\0" +"viva\0" +"hofu.yamaguchi.jp\0ru.eu.org\0se.eu.org\0" +"nakatombetsu.hokkaido.jp\0susaki.kochi.jp\0ky\0li\0" +"kz\0chattanooga.museum\0" +"kunitachi.tokyo.jp\0lk\0marnardal.no\0apps.fbsbx.com\0" +"is-an-artist.com\0ch.eu.org\0" +"ovre-eiker.no\0" +"aeroport.fr\0kuromatsunai.hokkaido.jp\0" +"naturalhistory.museum\0" +"shobara.hiroshima.jp\0ma\0""1kapp.com\0" +"taa.it\0lr\0" +"ls\0mc\0grue.no\0" +"lt\0md\0vivo\0" +"kiryu.gunma.jp\0lu\0me\0" "lv\0" -"gov.eg\0mg\0" -"vet.br\0mh\0" +"mg\0gratangen.no\0nat.tn\0" +"mh\0" "ly\0" -"gov.dz\0" -"mk\0" -"zama.kanagawa.jp\0ml\0pid\0" -"trade\0isa-hockeynut.com\0" +"mk\0k12.wi.us\0" +"ml\0" +"betainabox.com\0" "mn\0" -"mo\0komvux.se\0" -"mp\0" -"mq\0na\0from-al.com\0" -"fm.it\0futtsu.chiba.jp\0mr\0" -"ms\0nc\0" -"gov.et\0yasaka.nagano.jp\0mt\0" -"mu\0ne\0ltda\0" -"kazuno.akita.jp\0mv\0nf\0pin\0" -"mw\0ng\0" -"mishima.fukushima.jp\0mx\0" -"steam.museum\0my\0" -"group.aero\0\xe5\x80\x8b\xe4\xba\xba.hk\0" -"matsuyama.ehime.jp\0nl\0" -"no\0trana.no\0" -"minamitane.kagoshima.jp\0nr\0" -"schoenbrunn.museum\0wv.us\0" -"mombetsu.hokkaido.jp\0" -"gov.ge\0boston.museum\0schweiz.museum\0nu\0dyndns-pics.com\0" -"ureshino.mie.jp\0" -"aseral.no\0snz.ru\0" -"gov.gh\0thruhere.net\0" -"gov.gi\0" +"mo\0global\0" +"mp\0tm.ro\0" +"mq\0na\0nt.ro\0" +"yotsukaido.chiba.jp\0mr\0" +"nishiokoppe.hokkaido.jp\0ms\0nc\0" +"kira.aichi.jp\0mt\0" +"mu\0ne\0" +"mv\0nf\0tm.se\0" +"miyawaka.fukuoka.jp\0mw\0ng\0" +"mx\0servebbs.net\0" +"my\0" +"mz\0kraanghke.no\0" +"ngo.ph\0hzc.io\0" +"planetarium.museum\0nl\0onthewifi.com\0" +"k12.tr\0" +"toyako.hokkaido.jp\0" +"no\0" +"adm.br\0" +"samnanger.no\0nr\0" +"wolterskluwer\0" +"nu\0" +"midatlantic.museum\0" +"tsuruoka.yamagata.jp\0" +"radio.br\0" "nz\0" -"gjesdal.no\0" -"om\0" -"gov.gn\0" -"s3.amazonaws.com\0" -"friulivgiulia.it\0tokyo.jp\0" -"kvinesdal.no\0pa\0" -"gov.gr\0" -"asso.km\0hagebostad.no\0" -"adachi.tokyo.jp\0" -"pe\0" -"pf\0" -"bushey.museum\0" -"lt.it\0seoul.kr\0ph\0kaszuby.pl\0" -"civilaviation.aero\0int.is\0" -"genoa.it\0teshikaga.hokkaido.jp\0kawanabe.kagoshima.jp\0" -"gov.hk\0pk\0bharti\0" -"friulivegiulia.it\0ebetsu.hokkaido.jp\0pl\0" -"pm\0" -"kanonji.kagawa.jp\0pn\0star\0" -"shisui.chiba.jp\0" -"qa\0" -"tenri.nara.jp\0pr\0" -"ps\0s3-website-us-west-2.amazonaws.com\0" -"nago.okinawa.jp\0pt\0" -"gov.ie\0alstahaug.no\0" -"pw\0blogspot.com\0" -"aya.miyazaki.jp\0tamano.okayama.jp\0" -"asso.mc\0py\0" -"cuisinella\0" -"moriyoshi.akita.jp\0ikeda.gifu.jp\0berlin\0" -"gov.in\0geek.nz\0" -"okuizumo.shimane.jp\0konskowola.pl\0" -"gov.iq\0circle\0" -"gov.ir\0" -"gov.is\0" -"gov.it\0" -"nb.ca\0re\0kv.ua\0" -"zagan.pl\0" -"int.la\0v\xc3\xa5g\xc3\xa5.no\0\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0" -"newhampshire.museum\0fm.no\0" -"hiji.oita.jp\0" -"gov.jo\0ro\0" -"press.aero\0int.lk\0sa\0" -"yoichi.hokkaido.jp\0kumenan.okayama.jp\0sb\0" -"rs\0sc\0is-a-linux-user.org\0" -"leg.br\0sd\0" -"jur.pro\0ru\0se\0" -"gov.kg\0rw\0sg\0" -"brescia.it\0akishima.tokyo.jp\0sh\0" -"gov.ki\0basel.museum\0si\0shacknet.nu\0" -"ami.ibaraki.jp\0sj\0" +"kicks-ass.net\0" +"of.no\0rade.no\0wloclawek.pl\0legal\0" +"om\0lib.ct.us\0" +"f.bg\0uchinada.ishikawa.jp\0" +"trogstad.no\0" +"pa\0gsm.pl\0" +"od.ua\0" +"k12.vi\0" +"pe\0wsa.gov.pl\0cr.ua\0" +"minamitane.kagoshima.jp\0pf\0pomorskie.pl\0homeunix.net\0" +"ph\0" +"khmelnytskyi.ua\0" +"fukushima.fukushima.jp\0miki.hyogo.jp\0" +"pk\0" +"b\xc3\xb8.nordland.no\0pl\0" +"pm\0panerai\0" +"newmexico.museum\0pn\0" +"qa\0*.ex.ortsinfo.at\0" +"alstahaug.no\0pr\0schaeffler\0" +"otobe.hokkaido.jp\0ps\0" +"como.it\0pt\0" +"oystre-slidre.no\0racing\0" +"trapani.it\0" +"pw\0" +"bayern\0" +"py\0" +"naamesjevuemie.no\0" +"abogado\0" +"space\0" +"svelvik.no\0" +"re\0" +"shirako.chiba.jp\0kvitsoy.no\0" +"hachinohe.aomori.jp\0" +"padua.it\0" +"kurogi.fukuoka.jp\0kanuma.tochigi.jp\0aure.no\0" +"entertainment.aero\0" +"soeda.fukuoka.jp\0" +"moseushi.hokkaido.jp\0ro\0boats\0" +"oksnes.no\0" +"sa\0" +"sb\0" +"rs\0sc\0pe.leg.br\0" +"isehara.kanagawa.jp\0sd\0" +"perso.ht\0ru\0se\0" +"otaki.chiba.jp\0" +"rw\0sg\0" +"sh\0k12.ky.us\0from-ga.com\0" +"scienceandindustry.museum\0si\0budapest\0" +"zushi.kanagawa.jp\0sj\0" "sk\0" -"sl\0" -"gov.km\0sandefjord.no\0sm\0" -"gov.kn\0sn\0" +"sl\0graphics\0" +"sm\0" +"sn\0" "so\0" -"yahaba.iwate.jp\0gov.kp\0" -"gov.la\0pharmacy\0" -"kunitachi.tokyo.jp\0gov.lb\0sr\0" -"gov.lc\0tc\0" -"hidaka.saitama.jp\0st\0td\0" -"convent.museum\0nyny.museum\0floro.no\0su\0" -"kurate.fukuoka.jp\0sv\0tf\0" -"altai.ru\0tg\0" -"ibigawa.gifu.jp\0kakogawa.hyogo.jp\0nagaokakyo.kyoto.jp\0sx\0th\0" -"gov.ky\0sy\0" -"gov.kz\0sz\0tj\0" -"gov.lk\0tk\0" -"int.mv\0tl\0" -"int.mw\0herad.no\0tm\0" -"oarai.ibaraki.jp\0tn\0" -"to\0" -"tp\0" -"gov.ma\0ua\0dnsalias.com\0" -"gov.lr\0tr\0" -"sor-fron.no\0" -"hb.cn\0gov.lt\0tt\0" -"gov.me\0healthcare\0" -"\xe9\x9d\x99\xe5\xb2\xa1.jp\0inagawa.hyogo.jp\0gov.lv\0tv\0" -"gov.mg\0tw\0ug\0" -"ad.jp\0miura.kanagawa.jp\0" -"gov.ly\0" -"tz\0" -"gov.mk\0uk\0" -"\xe4\xbd\x90\xe8\xb3\x80.jp\0okinawa.okinawa.jp\0gov.ml\0" -"archaeology.museum\0" -"biz.bb\0gov.mn\0" -"gov.mo\0" -"biz.at\0" +"beardu.no\0" +"sr\0" +"tc\0durban\0" +"st\0td\0" +"su\0" +"works.aero\0valer.hedmark.no\0sv\0tf\0" +"kikugawa.shizuoka.jp\0tg\0" +"obihiro.hokkaido.jp\0joso.ibaraki.jp\0sx\0th\0" +"sy\0media\0" +"sz\0tj\0" +"tk\0" +"tl\0" +"trading.aero\0tm\0at.eu.org\0" +"nieruchomosci.pl\0tn\0" +"to\0dyn-o-saur.com\0" +"ua\0" +"nakagusuku.okinawa.jp\0tr\0tm.za\0myftp.biz\0" +"kashima.saga.jp\0andasuolo.no\0" +"tt\0s3-eu-central-1.amazonaws.com\0" +"toride.ibaraki.jp\0lighting\0" +"b.se\0tv\0" +"tw\0ug\0" +"artsandcrafts.museum\0bievat.no\0" +"h.bg\0divtasvuodna.no\0dominic.ua\0" +"shizuoka.jp\0mitane.akita.jp\0tz\0booking\0" +"eidfjord.no\0uk\0" +"city.hu\0" +"oki.fukuoka.jp\0" +"shinjo.okayama.jp\0oracle\0" "va\0" -"iglesiascarbonia.it\0satte.saitama.jp\0gov.mr\0" -"gov.ms\0us\0vc\0" -"isshiki.aichi.jp\0" -"gov.mu\0ve\0" -"biz.az\0obira.hokkaido.jp\0gov.mv\0" -"gov.mw\0gov.ng\0vg\0" -"gov.my\0uy\0vi\0" +"nozawaonsen.nagano.jp\0" +"schoenbrunn.museum\0us\0vc\0" +"stjordalshalsen.no\0" +"ve\0from-wa.com\0" +"ts.it\0" +"vg\0" +"gs.ah.no\0uy\0vi\0gallery\0" "uz\0" -"gs.rl.no\0" -"corvette.museum\0" +"unj\xc3\xa1rga.no\0" "vn\0" -"marburg.museum\0swiss\0" -"lyngdal.no\0" -"taiki.hokkaido.jp\0gov.nr\0" -"sandoy.no\0" -"otoineppu.hokkaido.jp\0" -"vu\0" -"sr.it\0misugi.mie.jp\0wf\0" -"orland.no\0pro\0" -"can.museum\0servebbs.org\0" -"int.pt\0" -"services\0" -"s\xc3\xb8mna.no\0gov.om\0" -"higashi.fukuoka.jp\0" -"taobao\0" -"lombardia.it\0tsuwano.shimane.jp\0" -"biei.hokkaido.jp\0" -"meraker.no\0ws\0" -"soka.saitama.jp\0" -"wildlife.museum\0lib.tx.us\0" -"shonai.fukuoka.jp\0gov.ph\0" -"sakaki.nagano.jp\0" -"copenhagen.museum\0gov.pk\0" -"gov.pl\0" -"blue\0christmas\0" -"gov.pn\0" -"gov.qa\0" -"sanagochi.tokushima.jp\0gov.pr\0author\0" -"vestv\xc3\xa5g\xc3\xb8y.no\0gov.ps\0" -"yamanashi.jp\0gov.pt\0" -"yakage.okayama.jp\0" -"holt\xc3\xa5len.no\0" -"gov.py\0" -"pub\0" -"int.ru\0" -"hi.cn\0notaires.fr\0" -"int.rw\0" -"trentino-altoadige.it\0osaka.jp\0" -"loten.no\0" -"biz.et\0odate.akita.jp\0" -"niepce.museum\0" -"rollag.no\0" -"yt\0" -"sd.us\0click\0" -"lib.oh.us\0doesntexist.org\0" -"immobilien\0" -"stor-elvdal.no\0from-ri.com\0" -"fribourg.museum\0finnoy.no\0" -"diet\0" -"int.tj\0" -"gov.sa\0" -"gov.sb\0" -"gov.rs\0gov.sc\0" -"gov.sd\0" -"gov.ru\0lt.ua\0" -"shell.museum\0saratov.ru\0gov.rw\0gov.sg\0" -"aikawa.kanagawa.jp\0gov.sh\0" -"tours\0" -"aosta-valley.it\0gr.it\0buzen.fukuoka.jp\0int.tt\0" -"res.aero\0v\xc3\xa6r\xc3\xb8y.no\0" -"kawamata.fukushima.jp\0gov.sl\0" -"minami.fukuoka.jp\0suzuka.mie.jp\0genkai.saga.jp\0" -"shika.ishikawa.jp\0" -"yao.osaka.jp\0gov.st\0" -"gr.jp\0mitake.gifu.jp\0sejny.pl\0" -"md.us\0" -"gov.sx\0" -"gov.sy\0nagoya\0" -"kurume.fukuoka.jp\0gov.tj\0" -"int.ve\0" -"gov.tl\0" -"gov.tm\0" -"mitaka.tokyo.jp\0gov.tn\0" -"gov.to\0" -"biz.id\0my.id\0" -"trogstad.no\0gov.ua\0" -"gov.tr\0" -"ass.km\0budejju.no\0" -"gov.tt\0int.vn\0" -"aogashima.tokyo.jp\0gets-it.net\0" -"plants.museum\0gov.tw\0" -"store.nf\0" -"gov.uk\0" -"ar.it\0" -"schlesisches.museum\0" -"unzen.nagasaki.jp\0" -"gaular.no\0koenig.ru\0" -"epson\0" -"sld.do\0mr.no\0gov.vc\0" -"ptz.ru\0gov.ve\0" -"build\0" +"nv.us\0" +"ct.us\0\xe5\xb9\xbf\xe4\xb8\x9c\0sells-for-less.com\0" +"hikawa.shimane.jp\0vu\0" +"wf\0" +"kamisu.ibaraki.jp\0grajewo.pl\0rsc.cdn77.org\0" +"yamanakako.yamanashi.jp\0red.sv\0" +"uruma.okinawa.jp\0ryuoh.shiga.jp\0tree.museum\0hotel.tz\0play\0" +"komaki.aichi.jp\0" +"ogliastra.it\0elburg.museum\0" +"averoy.no\0" +"fuchu.toyama.jp\0koenig.ru\0" +"umb.it\0hitachinaka.ibaraki.jp\0alvdal.no\0ws\0" +"berg.no\0ngo.za\0" +"cooking\0" +"okaya.nagano.jp\0" +"kuroishi.aomori.jp\0gwangju.kr\0" +"osakasayama.osaka.jp\0nationalfirearms.museum\0" +"trana.no\0" +"kamogawa.chiba.jp\0prime\0" +"union.aero\0newjersey.museum\0k12.ks.us\0coupon\0" +"nagahama.shiga.jp\0" +"settlement.museum\0" +"siracusa.it\0" +"ac.leg.br\0" +"s\xc3\xb8r-aurdal.no\0adygeya.su\0kep.tr\0" +"os\xc3\xb8yro.no\0" +"kouzushima.tokyo.jp\0malatvuopmi.no\0" +"lavangen.no\0" +"carrier.museum\0" +"uslivinghistory.museum\0homedns.org\0" +"hamada.shimane.jp\0" +"vallee-aoste.it\0vega.no\0yt\0" +"ishigaki.okinawa.jp\0" +"kv\xc3\xa6""fjord.no\0" +"emergency.aero\0on.ca\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0tj\xc3\xb8me.no\0" +"politie\0" +"zm\0cloud\0" +"washingtondc.museum\0" +"tromsa.no\0xen.prgmr.com\0" +"urakawa.hokkaido.jp\0d.se\0" +"chihayaakasaka.osaka.jp\0" +"j.bg\0stjohn.museum\0audio\0" +"qld.edu.au\0kitanakagusuku.okinawa.jp\0\xe7\xbd\x91\xe7\xab\x99\0" "tw.cn\0" -"from-mn.com\0" -"og.ao\0namsskogan.no\0" -"yamato.kumamoto.jp\0" -"moseushi.hokkaido.jp\0gov.vn\0" -"rocks\0" -"biz.ki\0" -"nes.buskerud.no\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" -"schwarz\0" -"pruszkow.pl\0" -"r\xc3\xb8mskog.no\0bargains\0" -"vardo.no\0mk.ua\0" -"house\0" -"hashimoto.wakayama.jp\0" -"cc.fl.us\0gov.ws\0" -"chosei.chiba.jp\0shimosuwa.nagano.jp\0" -"donna.no\0" -"tp.it\0" -"cc.sc.us\0" -"meet\0" -"sologne.museum\0" -"obu.aichi.jp\0" -"ardal.no\0" -"meldal.no\0is-a-republican.com\0" -"maintenance.aero\0" -"haboro.hokkaido.jp\0hatoyama.saitama.jp\0rich\0" -"gateway.museum\0" -"kikonai.hokkaido.jp\0kosa.kumamoto.jp\0" -"yasuoka.nagano.jp\0" -"village.museum\0" -"kyoto.jp\0hanamaki.iwate.jp\0" -"tomsk.ru\0" -"\xe7\xa7\x8b\xe7\x94\xb0.jp\0toyohashi.aichi.jp\0shiso.hyogo.jp\0" -"hadsel.no\0google\0firebaseapp.com\0" -"biz.mv\0" -"biz.mw\0" -"bi.it\0" -"otobe.hokkaido.jp\0" -"kvam.no\0vindafjord.no\0mine.nu\0" -"omuta.fukuoka.jp\0ogasawara.tokyo.jp\0biz.nr\0" -"frosinone.it\0kainan.wakayama.jp\0" -"higashiyoshino.nara.jp\0" -"\xe5\xa4\xa7\xe9\x98\xaa.jp\0" -"delmenhorst.museum\0" -"iwanuma.miyagi.jp\0" -"khmelnitskiy.ua\0" -"kanan.osaka.jp\0" -"uwajima.ehime.jp\0toyonaka.osaka.jp\0" -"transport.museum\0" -"sklep.pl\0" -"figueres.museum\0" -"shimogo.fukushima.jp\0nishinomiya.hyogo.jp\0" -"oumu.hokkaido.jp\0habikino.osaka.jp\0nakano.tokyo.jp\0ohkura.yamagata.jp\0" -"qld.edu.au\0on.ca\0vacations\0" -"berkeley.museum\0collection.museum\0biz.pk\0" -"biz.pl\0pulawy.pl\0" -"yabuki.fukushima.jp\0" -"b\xc3\xa6rum.no\0" -"kanazawa.ishikawa.jp\0" -"reklam.hu\0emerck\0" -"\xe5\xae\xae\xe5\xb4\x8e.jp\0oita.oita.jp\0biz.pr\0" -"cyou\0" -"kiyokawa.kanagawa.jp\0yonago.tottori.jp\0" -"cards\0" -"discount\0" -"ak.us\0" -"iide.yamagata.jp\0exposed\0" -"store.ve\0de.com\0" -"seljord.no\0sula.no\0" -"skiptvet.no\0k12.mt.us\0" -"friuliveneziagiulia.it\0ikeda.nagano.jp\0" -"corporation.museum\0" -"f.bg\0gj\xc3\xb8vik.no\0immo\0" -"name.hr\0" -"southwest.museum\0" -"sekikawa.niigata.jp\0" -"sciencecenters.museum\0" -"tienda\0" -"motoyama.kochi.jp\0" -"plantation.museum\0kyoto\0" -"izena.okinawa.jp\0" -"mo\xc3\xa5reke.no\0" -"og.it\0" -"ap-southeast-1.compute.amazonaws.com\0s3-ap-southeast-1.amazonaws.com\0" -"name.et\0" -"kihoku.ehime.jp\0" -"meme\0co.com\0" -"prof.pr\0" -"foggia.it\0kamisunagawa.hokkaido.jp\0" -"historical.museum\0" -"s3-ap-southeast-2.amazonaws.com\0" -"biz.tj\0" +"no-ip.info\0" +"kusu.oita.jp\0" +"veneto.it\0namikata.ehime.jp\0higashikurume.tokyo.jp\0iide.yamagata.jp\0" +"ddr.museum\0" +"cv.ua\0" +"cc.ga.us\0" +"kyotango.kyoto.jp\0" +"seto.aichi.jp\0" +"takaharu.miyazaki.jp\0" +"is.it\0" +"cz.it\0\xe4\xbd\x90\xe8\xb3\x80.jp\0" +"yoshinogari.saga.jp\0kristiansand.no\0zarow.pl\0no-ip.org\0" +"drangedal.no\0amfam\0" +"trd.br\0adygeya.ru\0\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0frontier\0" +"tamano.okayama.jp\0" +"oh.us\0" +"assassination.museum\0" +"afjord.no\0" +"napoli.it\0komatsu.ishikawa.jp\0pr.leg.br\0" +"shishikui.tokushima.jp\0" +"taranto.it\0!city.yokohama.jp\0higashiomi.shiga.jp\0" +"erimo.hokkaido.jp\0opole.pl\0" +"berlin\0" +"kamisato.saitama.jp\0rindal.no\0" +"trustee.museum\0stada\0" +"accident-investigation.aero\0" +"hokuto.yamanashi.jp\0" +"ownprovider.com\0" +"trainer.aero\0" +"koshu.yamanashi.jp\0countryestate.museum\0astrakhan.ru\0" +"hotel.lk\0direct\0does-it.net\0" +"hatoyama.saitama.jp\0" +"asahi.ibaraki.jp\0norilsk.ru\0" +"pizza\0" +"stryn.no\0" +"\xd0\xb5\xd1\x8e\0" +"audnedaln.no\0supply\0" +"shimamoto.osaka.jp\0" +"saito.miyazaki.jp\0" +"stord.no\0" +"nonoichi.ishikawa.jp\0likescandy.com\0" +"valled-aosta.it\0" +"biratori.hokkaido.jp\0" +"trentinosued-tirol.it\0" +"television.museum\0" +"heimatunduhren.museum\0minnesota.museum\0" +"narashino.chiba.jp\0aejrie.no\0" +"f.se\0" +"ol.no\0" +"l.bg\0ruovat.no\0" +"yatsuka.shimane.jp\0" +"tsushima.aichi.jp\0" +"upow.gov.pl\0" +"nantan.kyoto.jp\0" +"airguard.museum\0" +"lecco.it\0" +"gorlice.pl\0" +"lorenskog.no\0" +"kursk.ru\0" "perm.ru\0" -"tamayu.shimane.jp\0nanyo.yamagata.jp\0" -"folldal.no\0" -"matsuda.kanagawa.jp\0" -"pe.ca\0" -"etajima.hiroshima.jp\0mitsue.nara.jp\0biz.tr\0" -"localhistory.museum\0rodeo\0doesntexist.com\0" -"biz.tt\0" -"iris.arpa\0zp.ua\0" -"showa.yamanashi.jp\0" -"urn.arpa\0sld.pa\0" -"menu\0" -"ar.us\0" -"yusuhara.kochi.jp\0red\0" -"glass.museum\0bygland.no\0" -"ginoza.okinawa.jp\0\xd0\xba\xd0\xbe\xd0\xbc\0" -"\xe7\xbd\x91\xe5\xba\x97\0" -"store.ro\0" -"higashikagura.hokkaido.jp\0" -"selbu.no\0" -"ohda.shimane.jp\0" -"name.eg\0" -"ren\0" -"m.bg\0architecture.museum\0" -"biz.vn\0" -"satsumasendai.kagoshima.jp\0mazury.pl\0" -"gojome.akita.jp\0" -"chungbuk.kr\0" -"\xe7\xbd\x91\xe7\xbb\x9c.cn\0nakasatsunai.hokkaido.jp\0takikawa.hokkaido.jp\0" -"tokushima.tokushima.jp\0" -"store.st\0" -"name.az\0cnt.br\0johana.toyama.jp\0" -"s3-website-eu-west-1.amazonaws.com\0" -"social\0" -"kvits\xc3\xb8y.no\0" -"association.museum\0" -"rikuzentakata.iwate.jp\0" -"environment.museum\0indianmarket.museum\0hi.us\0" -"ishikari.hokkaido.jp\0" -"heimatunduhren.museum\0lib.de.us\0" -"eti.br\0" -"lunner.no\0estate\0" -"lewismiller.museum\0\xec\x82\xbc\xec\x84\xb1\0" -"komaki.aichi.jp\0" -"naumburg.museum\0" -"misato.wakayama.jp\0tsuru.yamanashi.jp\0" -"haus\0" -"kawagoe.mie.jp\0" -"dance\0" -"kadoma.osaka.jp\0" -"ve.it\0" -"vana\0" -"museumcenter.museum\0" -"\xc3\xb8stre-toten.no\0philips\0" -"volyn.ua\0" -"rio\0" -"rip\0" -"hiraya.nagano.jp\0skoczow.pl\0" -"latrobe\0" -"t.bg\0info\0homeftp.org\0" -"shingu.hyogo.jp\0" -"mykolaiv.ua\0" -"loab\xc3\xa1t.no\0\xe7\xbd\x91\xe7\xab\x99\0" -"prd.fr\0incheon.kr\0" -"joburg\0" -"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" -"oizumi.gunma.jp\0" -"grp.lk\0" -"cn.it\0kitamoto.saitama.jp\0" -"silk.museum\0" -"swinoujscie.pl\0" -"\xe7\xbd\x91\xe7\xbb\x9c.hk\0sauherad.no\0komatsu\0" -"pe.it\0datsun\0" -"drangedal.no\0cc.nh.us\0versicherung\0" -"date.fukushima.jp\0" -"jl.cn\0mitane.akita.jp\0ozu.ehime.jp\0" -"is-with-theband.com\0" -"yoro.gifu.jp\0" -"kamo.kyoto.jp\0azure-mobile.net\0" -"aizuwakamatsu.fukushima.jp\0hasuda.saitama.jp\0targi.pl\0" -"ddr.museum\0kiwi\0" -"niyodogawa.kochi.jp\0" -"snaase.no\0" -"sumida.tokyo.jp\0" -"emr.it\0" -"prato.it\0surf\0" -"iron.museum\0pittsburgh.museum\0us-gov-west-1.compute.amazonaws.com\0" -"church\0futbol\0" -"in.na\0" -"moriyama.shiga.jp\0" -"ehime.jp\0" -"watch-and-clock.museum\0" -"kushima.miyazaki.jp\0fussa.tokyo.jp\0" -"qc.ca\0" -"bmd.br\0shakotan.hokkaido.jp\0nyuzen.toyama.jp\0pe.kr\0" -"skjerv\xc3\xb8y.no\0" -"tree.museum\0" -"egersund.no\0" -"gratangen.no\0luxe\0" -"\xe7\xb5\x84\xe7\xb9\x94.hk\0valer.hedmark.no\0" -"stcgroup\0" -"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0higashisumiyoshi.osaka.jp\0" -"accountants\0" -"is-uberleet.com\0" -"kitaaiki.nagano.jp\0" -"test.tj\0" -"bomlo.no\0" -"gs.of.no\0" -"obanazawa.yamagata.jp\0yamanashi.yamanashi.jp\0" -"prd.km\0" -"from-wa.com\0" -"agrigento.it\0" -"casino.hu\0" -"tawaramoto.nara.jp\0babia-gora.pl\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0credit\0" +"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0oga.akita.jp\0kiyosato.hokkaido.jp\0ouchi.saga.jp\0aaa\0" +"tjome.no\0" +"wakkanai.hokkaido.jp\0\xe8\x87\xba\xe7\x81\xa3\0" +"is-very-nice.org\0""3utilities.com\0" +"compute-1.amazonaws.com\0" +"crotone.it\0" +"toyohashi.aichi.jp\0soja.okayama.jp\0" +"rel.ht\0abb\0" +"abc\0" +"chikusei.ibaraki.jp\0tunes\0" +"hotel.hu\0bofa\0dnsdojo.org\0" +"mamurogawa.yamagata.jp\0" +"bindal.no\0kv\xc3\xa6nangen.no\0" +"medical.museum\0" +"sarufutsu.hokkaido.jp\0" +"2000.hu\0n\xc3\xa6r\xc3\xb8y.no\0" +"fukui.jp\0vipsinaapp.com\0" +"oharu.aichi.jp\0" +"lebtimnetz.de\0" +"bushey.museum\0" +"kashiwazaki.niigata.jp\0london\0" +"francaise.museum\0k12.wa.us\0" +"s3.ap-northeast-2.amazonaws.com\0" +"desa.id\0railroad.museum\0" +"r\xc3\xb8ros.no\0" +"pb.ao\0" +"bologna.it\0" +"aco\0" +"or.at\0" +"gratis\0" +"anpachi.gifu.jp\0" +"uenohara.yamanashi.jp\0" +"or.bi\0" +"\xe4\xb8\xad\xe5\x9b\xbd\0" +"from-mt.com\0from-nd.com\0" +"hobol.no\0perso.sn\0attorney\0" +"mitaka.tokyo.jp\0" +"ads\0kinder\0" +"h.se\0" +"or.ci\0s\xc3\xb8gne.no\0aeg\0" +"veg\xc3\xa5rshei.no\0\xe4\xb8\xad\xe5\x9c\x8b\0" +"n.bg\0ureshino.mie.jp\0" +"buzen.fukuoka.jp\0" +"ora.gunma.jp\0" +"unjarga.no\0au.eu.org\0be.eu.org\0" +"powiat.pl\0" +"perso.tn\0" +"kawaminami.miyazaki.jp\0dnipropetrovsk.ua\0" +"or.cr\0osteroy.no\0" +"ooshika.nagano.jp\0boehringer\0" +"kaho.fukuoka.jp\0missoula.museum\0lur\xc3\xb8y.no\0cc.al.us\0" +"docs\0" +"klabu.no\0" +"chita.ru\0" +"s3.cn-north-1.amazonaws.com.cn\0" +"foundation.museum\0l\xc3\xa1hppi.no\0comsec\0mcdonalds\0" +"afl\0" +"pesarourbino.it\0asahi.chiba.jp\0" +"iris.arpa\0inagawa.hyogo.jp\0takatsuki.osaka.jp\0" +"shiso.hyogo.jp\0" +"chofu.tokyo.jp\0viking.museum\0" +"\xc3\xa1k\xc5\x8boluokta.no\0" +"higashinaruse.akita.jp\0" +"vaapste.no\0yachts\0" +"friuli-vegiulia.it\0andria-barletta-trani.it\0grandrapids.museum\0" +"taiki.mie.jp\0dyndns.tv\0" +"gob.ar\0tools\0" +"mup.gov.pl\0" +"uto.kumamoto.jp\0palmsprings.museum\0" +"\xd1\x80\xd1\x84\0" +"akrehamn.no\0" +"caserta.it\0" +"mordovia.su\0" +"sld.do\0" +"farmers\0search\0" +"gob.bo\0nishikatsura.yamanashi.jp\0davvesiida.no\0" +"bialowieza.pl\0k12.la.us\0" +"frogn.no\0g\xc3\xa1ls\xc3\xa1.no\0sinaapp.com\0" +"vic.gov.au\0aero.tt\0aig\0" +"\xe8\xb0\xb7\xe6\xad\x8c\0" +"rel.pl\0" +"annaka.gunma.jp\0izumi.osaka.jp\0" +"tobetsu.hokkaido.jp\0ina.saitama.jp\0blogdns.net\0bg.eu.org\0" +"gob.cl\0capebreton.museum\0" +"embroidery.museum\0" +"miyako.fukuoka.jp\0" +"weibo\0" +"pol.dz\0mjondalen.no\0doha\0ptplus.fit\0" +"plus\0" +"yoshimi.saitama.jp\0\xe7\xa7\xbb\xe5\x8a\xa8\0is-a-republican.com\0al.leg.br\0" +"aero.mv\0" +"labour.museum\0\xe0\xae\x9a\xe0\xae\xbf\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x82\xe0\xae\xb0\xe0\xaf\x8d\0bond\0" +"kaluga.ru\0" +"koka.shiga.jp\0kicks-ass.org\0" +"ono.fukushima.jp\0takasago.hyogo.jp\0asahi.nagano.jp\0kadoma.osaka.jp\0gives\0dyndns.ws\0" +"gob.do\0" +"or.id\0tosashimizu.kochi.jp\0" +"bel.tr\0" +"p.bg\0" +"gob.ec\0" +"kindle\0" +"zp.ua\0" +"homeunix.org\0" +"miyota.nagano.jp\0" +"cc.ri.us\0" +"medecin.km\0kaluga.su\0" +"aisho.shiga.jp\0" +"mordovia.ru\0" +"nowaruda.pl\0" +"book\0" +"or.it\0" +"is-a-patsfan.org\0" +"sigdal.no\0" +"gob.es\0" +"\xe7\xa6\x8f\xe5\xb2\xa1.jp\0" +"lindas.no\0" +"potenza.it\0" +"nsk.ru\0" +"tsuiki.fukuoka.jp\0" +"or.jp\0" +"sk\xc3\xa1nit.no\0" +"b\xc3\xa1id\xc3\xa1r.no\0" +"lea\xc5\x8bgaviika.no\0" +"rifu.miyagi.jp\0" +"ibaraki.jp\0crown\0is-a-knight.org\0" +"mincom.tn\0" +"diamonds\0" +"coach\0" +"pol.ht\0" +"nemuro.hokkaido.jp\0" +"or.kr\0" +"rost.no\0" +"fuel.aero\0gob.gt\0kitagata.saga.jp\0" +"is-a-student.com\0" +"incheon.kr\0" +"idv.hk\0muroto.kochi.jp\0" +"valle-d-aosta.it\0modum.no\0" +"gob.hn\0" +"servecounterstrike.com\0" +"repbody.aero\0ed.ao\0vagan.no\0" +"himeshima.oita.jp\0" +"tajimi.gifu.jp\0takamori.nagano.jp\0" +"wif.gov.pl\0" +"anz\0" +"aol\0hr.eu.org\0" +"or.na\0" +"gildesk\xc3\xa5l.no\0" +"yahiko.niigata.jp\0" +"or.mu\0" +"rep.kp\0" +"shimada.shizuoka.jp\0" +"yokkaichi.mie.jp\0" +"santabarbara.museum\0republican\0*.cns.joyent.com\0" +"l.se\0" +"r.bg\0ed.ci\0surgut.ru\0" +"app\0" +"fjell.no\0" +"kurashiki.okayama.jp\0" +"york.museum\0" +"konskowola.pl\0dn.ua\0" +"green\0" +"ed.cr\0" +"backplaneapp.io\0" +"higashimurayama.tokyo.jp\0servebbs.org\0" +"yokosuka.kanagawa.jp\0tsaritsyn.ru\0" +"ot.it\0pd.it\0livinghistory.museum\0sandcats.io\0" +"bar\0" +"bbc\0" +"shima.mie.jp\0" +"shimonita.gunma.jp\0philadelphia.museum\0" +"show.aero\0carboniaiglesias.it\0koryo.nara.jp\0" +"giehtavuoatna.no\0" +"nadex\0" +"cieszyn.pl\0catholic\0" +"yamatotakada.nara.jp\0lebesby.no\0art\0bbt\0" +"or.pw\0" +"uconnect\0" +"paleo.museum\0bcg\0\xe9\x80\x9a\xe8\xb2\xa9\0" +"vibovalentia.it\0nobeoka.miyazaki.jp\0tsurugashima.saitama.jp\0" +"basilicata.it\0\xd0\xba\xd0\xb0\xd1\x82\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xba\0" +"agric.za\0bcn\0" +"frogans\0" +"babia-gora.pl\0" +"sld.pa\0cruise\0" +"minamiechizen.fukui.jp\0rmit\0" +"walter\0" +"pug.it\0tono.iwate.jp\0joshkar-ola.ru\0" +"gob.mx\0hadsel.no\0hashbang.sh\0" +"gob.ni\0" +"fst.br\0" +"pyatigorsk.ru\0" +"masaki.ehime.jp\0" +"emp.br\0" +"fitjar.no\0" +"ashibetsu.hokkaido.jp\0uzhgorod.ua\0komatsu\0xfinity\0cloudcontrolapp.com\0" +"jorpeland.no\0" +"parti.se\0" +"dr.na\0h\xc3\xa1""bmer.no\0" +"biella.it\0" +"oristano.it\0" +"atsugi.kanagawa.jp\0" +"coal.museum\0stordal.no\0" +"gob.pa\0" +"grosseto.it\0bet\0" +"viterbo.it\0jobs\0rollag.no\0" +"or.th\0" +"shonai.fukuoka.jp\0yono.saitama.jp\0kunstsammlung.museum\0gob.pe\0n.se\0" "dontexist.com\0" -"yatsushiro.kumamoto.jp\0" -"h\xc3\xa5.no\0" -"js.cn\0niikappu.hokkaido.jp\0" -"gallery\0training\0" -"oguni.kumamoto.jp\0" -"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0" -"homebuilt.aero\0" -"lowicz.pl\0" -"sokndal.no\0" -"prd.mg\0" -"kakinoki.shimane.jp\0" -"farmstead.museum\0active\0" -"adm.br\0" -"alibaba\0" -"kunigami.okinawa.jp\0" -"forgot.his.name\0" -"\xc3\xa5mot.no\0test.ru\0" -"bari.it\0" -"fukuchi.fukuoka.jp\0sap\0" -"in.rs\0" -"doshi.yamanashi.jp\0" +"t.bg\0" +"horse\0" +"kashiwa.chiba.jp\0gob.pk\0zt.ua\0" +"cc.wv.us\0" +"food\0health\0" +"vladimir.su\0dp.ua\0cc.md.us\0no-ip.net\0" +"cc.ar.us\0" +"tas.au\0\xe5\xb1\xb1\xe6\xa2\xa8.jp\0or.ug\0" +"tomisato.chiba.jp\0ibaraki.osaka.jp\0farmers.museum\0" +"\xe6\xbb\x8b\xe8\xb3\x80.jp\0yokote.akita.jp\0ine.kyoto.jp\0" +"or.tz\0" "monticello.museum\0" -"f.se\0" -"vs.it\0" -"cpa.pro\0" -"oygarden.no\0" -"tarui.gifu.jp\0" -"inzai.chiba.jp\0arida.wakayama.jp\0" -"sca\0" -"hokuto.hokkaido.jp\0okutama.tokyo.jp\0scb\0" -"sbs\0" -"name.vn\0" -"lib.wy.us\0" -"in.th\0" -"dubai\0" -"magnitka.ru\0vegas\0" -"otofuke.hokkaido.jp\0" -"taipei\0" -"trentinoa-adige.it\0" -"in.ua\0" -"ozu.kumamoto.jp\0" -"from-id.com\0" -"psi.br\0koshu.yamanashi.jp\0" -"capetown\0" -"fylkesbibl.no\0cc.nv.us\0pvt.k12.ma.us\0" -"hachioji.tokyo.jp\0" -"western.museum\0" -"store.bb\0kasama.ibaraki.jp\0" -"trentino-alto-adige.it\0terni.it\0kawaba.gunma.jp\0" -"name.tj\0" -"in.us\0" -"katagami.akita.jp\0kawazu.shizuoka.jp\0" -"mizunami.gifu.jp\0" -"tank.museum\0lib.ri.us\0" -"name.tr\0" -"kiwa.mie.jp\0name.tt\0" -"sm\xc3\xb8la.no\0" -"nakaniikawa.toyama.jp\0" -"online.museum\0hk.org\0" -"miyoshi.saitama.jp\0" -"asaminami.hiroshima.jp\0" -"cn.ua\0" -"fr\xc3\xb8ya.no\0" -"!city.kawasaki.jp\0fukuroi.shizuoka.jp\0" -"sew\0" -"izunokuni.shizuoka.jp\0sex\0" -"exeter.museum\0nesoddtangen.no\0" -"tsukuba.ibaraki.jp\0" -"m.se\0dreamhosters.com\0" -"yame.fukuoka.jp\0ouchi.saga.jp\0" -"amakusa.kumamoto.jp\0realtor\0" -"symantec\0" -"gyeonggi.kr\0" -"ooshika.nagano.jp\0isla.pr\0" -"eun.eg\0sund.no\0lib.ky.us\0" -"teramo.it\0" -"natori.miyagi.jp\0goto.nagasaki.jp\0" -"notteroy.no\0" -"sue.fukuoka.jp\0" -"beardu.no\0naamesjevuemie.no\0" -"iida.nagano.jp\0" -"skj\xc3\xa5k.no\0" -"ino.kochi.jp\0" -"valle-d-aosta.it\0" -"pz.it\0" -"eastafrica.museum\0" -"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0" -"minamiminowa.nagano.jp\0" -"name.qa\0" -"name.pr\0" -"jamison.museum\0" -"kai.yamanashi.jp\0" -"guitars\0" -"farmers.museum\0" -"ntr.br\0kamitonda.wakayama.jp\0" -"name.na\0" -"hanno.saitama.jp\0matsuzaki.shizuoka.jp\0" -"leclerc\0" -"napoli.it\0" -"inatsuki.fukuoka.jp\0name.mv\0" -"name.ng\0pl.ua\0police.uk\0" -"oxford.museum\0name.my\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0kashima.saga.jp\0fuchu.tokyo.jp\0" -"coal.museum\0bridgestone\0software\0" -"campania.it\0rep.kp\0" -"sor-odal.no\0t.se\0" -"kyonan.chiba.jp\0hikawa.shimane.jp\0suginami.tokyo.jp\0" -"medical.museum\0cc.ut.us\0" -"kitakami.iwate.jp\0pa.gov.pl\0" -"ecn.br\0aizumi.tokushima.jp\0" -"amur.ru\0de.us\0" -"kikugawa.shizuoka.jp\0yoshida.shizuoka.jp\0" -"r\xc3\xa5holt.no\0" -"k12.de.us\0" -"international\0" -"sande.vestfold.no\0" -"\xd8\xaa\xd9\x88\xd9\x86\xd8\xb3\0" -"sky\0from-fl.com\0" -"seiyo.ehime.jp\0ariake.saga.jp\0" -"shiojiri.nagano.jp\0" -"koori.fukushima.jp\0bond\0" -"nakagyo.kyoto.jp\0" -"academy.museum\0" -"ra.it\0abeno.osaka.jp\0" -"eidskog.no\0" -"shirahama.wakayama.jp\0" -"dudinka.ru\0" -"bnpparibas\0" -"rybnik.pl\0\xd8\xa7\xd9\x84\xd8\xa7\xd8\xb1\xd8\xaf\xd9\x86\0" -"lazio.it\0gdynia.pl\0" -"name.mk\0" -"\xe5\xae\xae\xe5\x9f\x8e.jp\0nagi.okayama.jp\0" -"is-an-artist.com\0" -"racing\0" -"hatsukaichi.hiroshima.jp\0sakai.ibaraki.jp\0chizu.tottori.jp\0" -"0.bg\0" -"nore-og-uvdal.no\0" -"ichinomiya.chiba.jp\0lezajsk.pl\0" -"bashkiria.ru\0" -"name.jo\0sciencehistory.museum\0" -"lucerne.museum\0vinnytsia.ua\0" -"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0s3-website-us-east-1.amazonaws.com\0is-an-anarchist.com\0" -"annaka.gunma.jp\0" -"florence.it\0tajiri.osaka.jp\0" -"shikabe.hokkaido.jp\0" -"uchinada.ishikawa.jp\0" -"from-pr.com\0hobby-site.com\0" -"higashine.yamagata.jp\0" -"society.museum\0" -"soy\0" -"anamizu.ishikawa.jp\0" -"lom.it\0pohl\0" -"\xc3\xa5seral.no\0" -"kira.aichi.jp\0" -"pizza\0" -"ethnology.museum\0malselv.no\0" -"bayern\0tab\0" -"contact\0" -"tozsde.hu\0saves-the-whales.com\0" -"hokuto.yamanashi.jp\0" -"org.ac\0" -"ayabe.kyoto.jp\0" -"org.ae\0time.no\0cc.ct.us\0" -"org.af\0sobetsu.hokkaido.jp\0takinoue.hokkaido.jp\0sayama.osaka.jp\0" -"org.ag\0moscow\0" -"fukushima.jp\0hirado.nagasaki.jp\0" -"org.ai\0" -"org.al\0" -"org.an\0" -"tax\0" -"org.ba\0soundandvision.museum\0trust.museum\0" -"org.ar\0org.bb\0takasago.hyogo.jp\0" -"engine.aero\0" -"org.au\0kursk.ru\0is-very-bad.org\0" -"\xe6\x94\xbf\xe5\xba\x9c\0" -"org.bh\0" -"7.bg\0org.bi\0sola.no\0is-a-socialist.com\0" -"org.az\0" -"hitachi.ibaraki.jp\0" -"org.bm\0" -"org.bo\0" -"rome.it\0" -"tci\0" -"org.br\0tsukiyono.gunma.jp\0" -"org.bs\0ulm.museum\0" -"org.bt\0" -"padova.it\0iyo.ehime.jp\0" -"org.bw\0" -"sa.edu.au\0org.ci\0" -"org.bz\0shintoku.hokkaido.jp\0" -"stc\0" -"detroit.museum\0geelvinck.museum\0" -"org.cn\0" -"org.co\0sande.more-og-romsdal.no\0" -"sakata.yamagata.jp\0" -"sicily.it\0" -"org.cu\0lib.ak.us\0" -"org.cw\0" -"vang.no\0" -"maritimo.museum\0" -"org.dm\0" -"lapy.pl\0" -"org.do\0lom.no\0\xd0\xbc\xd0\xbe\xd0\xbd\0" -"stranda.no\0" -"sicilia.it\0takasu.hokkaido.jp\0kunitomi.miyazaki.jp\0sugito.saitama.jp\0" -"org.ec\0" -"tel\0" -"org.ee\0" -"nishimera.miyazaki.jp\0" -"org.eg\0" -"aichi.jp\0koto.tokyo.jp\0" -"org.dz\0" -"maryland.museum\0" -"minami.kyoto.jp\0homeftp.net\0" -"giving\0" -"ro.it\0turin.it\0wroclaw.pl\0" -"cc.pr.us\0" -"org.es\0from-mt.com\0from-nd.com\0" -"org.et\0\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0" -"langevag.no\0" -"yamanouchi.nagano.jp\0" -"r\xc3\xa6lingen.no\0fairwinds\0est-a-la-masion.com\0" -"hakui.ishikawa.jp\0" -"kuzumaki.iwate.jp\0sharp\0" -"toyono.osaka.jp\0saitama.saitama.jp\0" -"singles\0" -"military.museum\0" -"eniwa.hokkaido.jp\0" -"jerusalem.museum\0k12.wy.us\0is-a-designer.com\0" -"itayanagi.aomori.jp\0" -"trustee.museum\0" -"org.ge\0" -"amami.kagoshima.jp\0" -"parachuting.aero\0org.gg\0" -"org.gh\0ostroleka.pl\0" -"org.gi\0jondal.no\0stuff-4-sale.org\0" -"org.gn\0" -"servebbs.com\0" -"org.gp\0urawa.saitama.jp\0" -"org.gr\0lo.it\0" -"h\xc3\xb8nefoss.no\0" -"org.gt\0" -"from-nj.com\0" -"cc.wi.us\0" -"org.hk\0" -"org.hn\0" -"oystre-slidre.no\0k12.fl.us\0" -"nat.tn\0" -"encyclopedic.museum\0lib.nm.us\0" -"minamiaiki.nagano.jp\0" -"kv\xc3\xa6nangen.no\0oppdal.no\0k12.ri.us\0" -"org.ht\0" -"org.hu\0dagestan.ru\0" -"gangwon.kr\0" -"rad\xc3\xb8y.no\0" -"*.yokohama.jp\0mochizuki.nagano.jp\0shimoda.shizuoka.jp\0" -"org.im\0" -"org.in\0kunneppu.hokkaido.jp\0" -"marriott\0" -"org.iq\0" -"org.ir\0lodi.it\0shirakawa.gifu.jp\0kumamoto.kumamoto.jp\0" -"org.is\0alabama.museum\0photo\0" -"org.je\0" -"porn\0" -"kristiansand.no\0from-nh.com\0" -"rokunohe.aomori.jp\0" -"org.jo\0" -"la.us\0" -"chichibu.saitama.jp\0" -"afjord.no\0" -"tel.tr\0" -"asn.au\0k12.ky.us\0" -"org.kg\0" -"okawa.fukuoka.jp\0" -"org.ki\0" -"za.net\0" -"badajoz.museum\0" -"tenkawa.nara.jp\0post\0" -"org.km\0" -"org.kn\0" -"ohi.fukui.jp\0org.kp\0" -"org.la\0" -"\xe6\xa0\x83\xe6\x9c\xa8.jp\0org.lb\0" -"org.lc\0" -"caltanissetta.it\0" -"monza.it\0" -"vega.no\0" -"grosseto.it\0" -"council.aero\0org.ky\0pictures\0" -"org.kz\0" -"org.lk\0s3-website-ap-southeast-2.amazonaws.com\0" -"togo.aichi.jp\0wajima.ishikawa.jp\0tado.mie.jp\0" -"org.ma\0" -"org.lr\0dyndns.biz\0" -"org.ls\0" -"saga.jp\0" -"org.me\0h\xc3\xb8yanger.no\0" -"narashino.chiba.jp\0org.lv\0" -"org.mg\0and.museum\0" -"sos.pl\0" -"org.ly\0lib.mt.us\0lib.nd.us\0" -"tohnosho.chiba.jp\0poznan.pl\0" -"org.mk\0" -"org.ml\0" -"s3-website-ap-southeast-1.amazonaws.com\0" -"org.mn\0tmall\0" -"org.mo\0" -"cheltenham.museum\0org.na\0sor-aurdal.no\0" -"kusatsu.shiga.jp\0" -"org.ms\0" -"am.br\0toyone.aichi.jp\0org.mt\0" -"org.mu\0plumbing\0" -"org.mv\0bielawa.pl\0" -"org.mw\0org.ng\0" -"org.mx\0" -"org.my\0" -"work\0" -"toyama.jp\0" -"fh.se\0" -"pol.dz\0" -"gripe\0wales\0" -"tenei.fukushima.jp\0iwakuni.yamaguchi.jp\0po.gov.pl\0" -"family.museum\0" -"org.nr\0" -"bilbao.museum\0sf.no\0" -"hida.gifu.jp\0" -"lyngen.no\0" -"yokoshibahikari.chiba.jp\0" -"kamchatka.ru\0" -"nirasaki.yamanashi.jp\0top\0" -"brunel.museum\0" -"org.nz\0" -"meiwa.gunma.jp\0" -"org.om\0" -"hino.tottori.jp\0boleslawiec.pl\0" -"hareid.no\0" -"taa.it\0" -"org.pa\0" -"tagami.niigata.jp\0" -"komi.ru\0" -"kurogi.fukuoka.jp\0nakatombetsu.hokkaido.jp\0naha.okinawa.jp\0" -"org.pe\0" -"wakuya.miyagi.jp\0org.pf\0" -"org.ph\0" -"org.pk\0" -"higashi.fukushima.jp\0kushiro.hokkaido.jp\0org.pl\0" -"\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0is-a-llama.com\0" -"desa.id\0org.pn\0" -"leksvik.no\0" -"org.qa\0" -"shirako.chiba.jp\0org.pr\0" -"org.ps\0" -"org.pt\0" -"gamvik.no\0org.py\0" -"ikawa.akita.jp\0" -"aircraft.aero\0" -"obama.fukui.jp\0" -"england.museum\0graz.museum\0lib.mo.us\0" -"akita.akita.jp\0nakagawa.hokkaido.jp\0" -"davvenj\xc3\xa1rga.no\0" -"embaixada.st\0" -"ambulance.aero\0" -"pol.ht\0" -"chuo.osaka.jp\0" -"l\xc3\xb8ten.no\0ubs\0" -"limited\0" -"bergbau.museum\0h\xc3\xa6gebostad.no\0" -"savona.it\0" -"org.ro\0uk.com\0" -"ski.museum\0org.sa\0" -"org.sb\0" -"ushistory.museum\0org.rs\0org.sc\0" -"org.sd\0" -"org.ru\0org.se\0amsterdam\0" -"coop.ht\0" -"usarts.museum\0org.sg\0" -"org.sh\0" -"iwate.iwate.jp\0" -"tuva.ru\0" -"org.sl\0" -"stadt.museum\0" -"org.sn\0" -"org.so\0" -"kisosaki.mie.jp\0" -"shunan.yamaguchi.jp\0" -"ohira.miyagi.jp\0wake.okayama.jp\0kyuragi.saga.jp\0org.st\0" -"kumano.mie.jp\0org.sv\0" -"porsanger.no\0org.sy\0" -"trentino-sudtirol.it\0org.sz\0org.tj\0gda.pl\0" -"tj\xc3\xb8me.no\0" -"museum.tt\0" -"org.tm\0lifestyle\0" -"org.tn\0" -"org.to\0" -"altoadige.it\0" -"org.ua\0tui\0" -"org.tr\0" -"r\xc3\xb8yken.no\0m\xc3\xa1tta-v\xc3\xa1rjjat.no\0" -"coop.br\0org.tt\0" -"brumunddal.no\0rv.ua\0gr.com\0" -"ingatlan.hu\0org.tw\0org.ug\0finance\0" +"sakawa.kochi.jp\0nakagawa.tokushima.jp\0" +"saitama.jp\0" +"ozu.ehime.jp\0college\0" +"pharmacy.museum\0" +"press.museum\0r\xc3\xb8yrvik.no\0gist.githubcloud.com\0" +"slattum.no\0" +"umi.fukuoka.jp\0" +"or.us\0axa\0" +"usa.oita.jp\0drammen.no\0" +"aws\0" +"e164.arpa\0" +"ed.jp\0" +"spjelkavik.no\0brasilia.me\0" +"trani-andria-barletta.it\0kasumigaura.ibaraki.jp\0studio\0" +"\xe3\x82\xaf\xe3\x83\xa9\xe3\x82\xa6\xe3\x83\x89\0" +"travelers\0" +"swiebodzin.pl\0" +"kure.hiroshima.jp\0" +"molise.it\0bid\0" +"iwatsuki.saitama.jp\0" +"pup.gov.pl\0" +"nhlfan.net\0" +"pol.tr\0" +"kyowa.akita.jp\0oum.gov.pl\0yolasite.com\0" +"bio\0" +"ford\0" +"rygge.no\0vladimir.ru\0" +"k12.wy.us\0servesarcasm.com\0" +"toyooka.hyogo.jp\0" +"nabari.mie.jp\0" +"gob.sv\0" +"biz\0nachikatsuura.wakayama.jp\0" +"*.kitakyushu.jp\0loan\0azure-mobile.net\0" +"chuo.fukuoka.jp\0satsumasendai.kagoshima.jp\0" +"compute.amazonaws.com\0" +"oz.au\0" +"badaddja.no\0" +"akabira.hokkaido.jp\0" +"kashiwara.osaka.jp\0idv.tw\0" "itakura.gunma.jp\0" -"mt.it\0semboku.akita.jp\0minami-alps.yamanashi.jp\0" -"uvic.museum\0org.uk\0" -"nishikata.tochigi.jp\0" -"hk.cn\0" -"namegawa.saitama.jp\0" -"rentals\0" -"volda.no\0org.vc\0" -"org.ve\0" -"kariya.aichi.jp\0asn.lv\0" -"jp.net\0" -"museumvereniging.museum\0philately.museum\0project.museum\0stordal.no\0lib.nv.us\0org.uy\0org.vi\0" -"org.uz\0football\0" -"!city.sendai.jp\0" -"lebesby.no\0vladimir.ru\0" -"org.vn\0" -"games.hu\0" -"kawakami.nara.jp\0" -"priv.hu\0" -"takamatsu.kagawa.jp\0foundation\0" -"fetsund.no\0org.vu\0" -"yotsukaido.chiba.jp\0" -"lv.ua\0" -"osen.no\0" -"soma.fukushima.jp\0fujisawa.kanagawa.jp\0" -"reggioemilia.it\0" -"\xed\x95\x9c\xea\xb5\xad\0" -"bando.ibaraki.jp\0" -"leka.no\0" -"oshima.tokyo.jp\0" -"presidio.museum\0st.no\0org.ws\0" -"space-to-rent.com\0" -"delaware.museum\0" -"kiyama.saga.jp\0" -"omaha.museum\0azure\0" -"matsukawa.nagano.jp\0kannami.shizuoka.jp\0" -"nakhodka.ru\0" -"suifu.ibaraki.jp\0" -"safety.aero\0songdalen.no\0" -"utazas.hu\0guge\0" -"kahoku.ishikawa.jp\0" -"gotsu.shimane.jp\0koge.tottori.jp\0" -"home.dyndns.org\0" -"trentinostirol.it\0kobayashi.miyazaki.jp\0" -"sm.ua\0" -"at.it\0monza-e-della-brianza.it\0" -"ishigaki.okinawa.jp\0musashimurayama.tokyo.jp\0" -"defense.tn\0" -"kosei.shiga.jp\0" -"nichinan.tottori.jp\0" -"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0" -"surgut.ru\0" -"taito.tokyo.jp\0" -"isleofman.museum\0" -"oksnes.no\0" -"volkenkunde.museum\0" -"minamimaki.nagano.jp\0" -"cologne\0" +"association.museum\0is-a-personaltrainer.com\0" +"ringerike.no\0" +"p.se\0lib.or.us\0" +"folkebibl.no\0" +"v.bg\0" +"uwajima.ehime.jp\0maserati\0" +"oskol.ru\0gob.ve\0z-2.compute-1.amazonaws.com\0" +"urasoe.okinawa.jp\0" +"kumagaya.saitama.jp\0warszawa.pl\0" +"dr.tr\0" +"can.museum\0" +"skanit.no\0" +"ap-northeast-1.compute.amazonaws.com\0" +"atsuma.hokkaido.jp\0mitou.yamaguchi.jp\0" +"va.it\0isesaki.gunma.jp\0" +"rhcloud.com\0" +"mitsue.nara.jp\0" +"columbia.museum\0" +"shimizu.hokkaido.jp\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0" +"cadaques.museum\0" +"is-a-bruinsfan.org\0sells-it.net\0" +"chungnam.kr\0" +"akashi.hyogo.jp\0" +"nsw.au\0" +"barum.no\0" +"ms.leg.br\0" +"bms\0" +"dnsdojo.net\0" +"yomitan.okinawa.jp\0" +"bmw\0" +"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" +"villas\0" +"endofinternet.net\0" +"haibara.shizuoka.jp\0bnl\0" +"ed.pw\0" +"yamaguchi.jp\0" +"medecin.fr\0" +"suzuka.mie.jp\0" +"tamaki.mie.jp\0" +"nirasaki.yamanashi.jp\0" +"catanzaro.it\0" +"nordre-land.no\0" +"ustka.pl\0" +"bom\0" +"nic.in\0" +"froya.no\0k12.mi.us\0boo\0" +"station.museum\0is-a-blogger.com\0" +"coffee\0loft\0" +"mt.leg.br\0" +"tires\0" +"iwamizawa.hokkaido.jp\0bot\0" +"box\0" +"kamo.niigata.jp\0nativeamerican.museum\0" +"friuli-ve-giulia.it\0from-or.com\0" +"ohira.tochigi.jp\0" +"bomlo.no\0\xd8\xa7\xd8\xa8\xd9\x88\xd8\xb8\xd8\xa8\xd9\x8a\0" +"cab\0" +"nagai.yamagata.jp\0" +"czeladz.pl\0" +"tonaki.okinawa.jp\0" +"dentist\0" +"communication.museum\0fusa.no\0condos\0host\0" +"lib.vi.us\0cal\0ufcfan.org\0" +"emr.it\0va.no\0r.se\0cam\0" +"gushikami.okinawa.jp\0sayama.saitama.jp\0" +"sosa.chiba.jp\0geology.museum\0" +"x.bg\0" +"fyresdal.no\0cba\0noip.us\0" +"car\0" +"\xe7\xbe\xa4\xe9\xa6\xac.jp\0minobu.yamanashi.jp\0" +"cat\0js.cn\0" +"publ.pt\0" +"assabu.hokkaido.jp\0cafe\0" +"sumoto.kumamoto.jp\0ar.com\0from-vt.com\0" +"vc.it\0chiyoda.tokyo.jp\0" +"cbn\0" +"cbs\0" +"correios-e-telecomunica\xc3\xa7\xc3\xb5""es.museum\0" +"asmatart.museum\0shell\0" +"yamato.kumamoto.jp\0azure\0compare\0" +"*.nagoya.jp\0music.museum\0farsund.no\0" +"il.eu.org\0" +"\xe6\xa0\x83\xe6\x9c\xa8.jp\0tanagura.fukushima.jp\0mibu.tochigi.jp\0" +"\xc3\xb8rland.no\0" +"nt.edu.au\0" +"s3-ap-northeast-2.amazonaws.com\0" +"tama.tokyo.jp\0" +"kosai.shizuoka.jp\0from-in.com\0" +"forsale\0alpha-myqnapcloud.com\0" +"nagano.nagano.jp\0taira.toyama.jp\0schmidt\0" +"trade\0" +"ceb\0" +"meloy.no\0" +"casino.hu\0tatar\0" +"auction\0" +"reviews\0" +"s\xc3\xb8r-fron.no\0vaksdal.no\0" +"yabu.hyogo.jp\0hu.eu.org\0ie.eu.org\0" +"hopto.org\0" +"kasukabe.saitama.jp\0" +"ceo\0logoip.de\0" +"soo.kagoshima.jp\0cfa\0" +"hiroshima.jp\0daito.osaka.jp\0baltimore.museum\0" +"minamioguni.kumamoto.jp\0" +"tarui.gifu.jp\0*.sch.uk\0cfd\0" +"matsushima.miyagi.jp\0" +"kerrylogistics\0" +"numata.gunma.jp\0" +"buy\0" +"hachioji.tokyo.jp\0us.na\0" +"flanders.museum\0irkutsk.ru\0seven\0" +"matta-varjjat.no\0" +"fr\xc3\xa6na.no\0chtr.k12.ma.us\0" +"blanco\0emerson\0" +"matsubushi.saitama.jp\0t.se\0" +"shintoku.hokkaido.jp\0" +"z.bg\0" +"vinnica.ua\0" +"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0" +"soka.saitama.jp\0" +"cal.it\0" +"cc.sc.us\0" +"wroclaw.pl\0" +"*.cryptonomic.net\0" +"sejny.pl\0deals\0\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0" +"ve.it\0\xe7\xa7\x8b\xe7\x94\xb0.jp\0matsubara.osaka.jp\0americanantiques.museum\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd9\x87\0" +"ham-radio-op.net\0" +"forum.hu\0otaru.hokkaido.jp\0s\xc3\xa1l\xc3\xa1t.no\0skjervoy.no\0" +"mitsuke.niigata.jp\0jevnaker.no\0iki.fi\0" +"company\0" +"kami.miyagi.jp\0" +"va.us\0is-a-green.com\0" "call\0" -"historisches.museum\0" -"asker.no\0hornindal.no\0from-tx.com\0" -"jgora.pl\0" -"barrell-of-knowledge.info\0" -"l\xc3\xa6rdal.no\0" -"rzeszow.pl\0" -"izu.shizuoka.jp\0" -"jewish.museum\0aejrie.no\0" -"blogspot.co.at\0priv.at\0" -"lombardy.it\0" -"minamiise.mie.jp\0school\0" -"botanicalgarden.museum\0freemasonry.museum\0lur\xc3\xb8y.no\0" -"omihachiman.shiga.jp\0" -"tr.it\0hokkaido.jp\0miyoshi.hiroshima.jp\0klodzko.pl\0camp\0" -"suisse.museum\0\xe5\x81\xa5\xe5\xba\xb7\0" -"denmark.museum\0" -"in.net\0" -"trysil.no\0is-a-green.com\0" -"lib.ia.us\0" -"minamiboso.chiba.jp\0" -"karmoy.no\0k12.nm.us\0" -"mil.ac\0a.bg\0film\0" -"liaison\0" -"mil.ae\0" -"bologna.it\0museum.mv\0from-co.net\0" -"museum.mw\0" -"kaneyama.fukushima.jp\0" -"mil.al\0" -"val-daosta.it\0" -"okaya.nagano.jp\0pol.tr\0" -"mil.ba\0museum.no\0business\0uno\0" -"mil.ar\0macerata.it\0" -"government.aero\0cc.me.us\0" -"toba.mie.jp\0watarai.mie.jp\0meguro.tokyo.jp\0help\0" -"shiksha\0" -"mil.az\0abruzzo.it\0" -"barclaycard\0" -"uol\0" -"mil.bo\0museum.om\0lib.ca.us\0" -"naval.museum\0" -"mil.br\0abashiri.hokkaido.jp\0" -"dyndns-work.com\0" -"fot.br\0" -"s\xc3\xb8rfold.no\0" -"mus.br\0" -"mil.by\0website\0from-dc.com\0" -"\xe6\x96\xb0\xe6\xbd\x9f.jp\0" -"mil.cl\0" -"scholarships\0" -"mil.cn\0" -"aero\0mil.co\0" -"avocat.fr\0kawahara.tottori.jp\0" -"heroy.nordland.no\0" -"arakawa.tokyo.jp\0" +"ballooning.aero\0hirogawa.wakayama.jp\0taipei\0" +"aogashima.tokyo.jp\0nationalheritage.museum\0aarp\0" +"lund.no\0loten.no\0tirol\0" +"dell-ogliastra.it\0" +"dental\0" +"kitamoto.saitama.jp\0" +"aseral.no\0" +"miyake.nara.jp\0orenburg.ru\0" +"kamaishi.iwate.jp\0camp\0" +"bzh\0" +"nic.tj\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xd9\x8a\xd8\xa9\0" +"is-a-designer.com\0" +"fylkesbibl.no\0" +"tochigi.jp\0" +"sevastopol.ua\0k12.me.us\0" +"from-ks.com\0" +"k12.as.us\0" +"sobetsu.hokkaido.jp\0oyamazaki.kyoto.jp\0\xd9\xbe\xd8\xa7\xd9\x83\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0" +"nhs.uk\0" +"awaji.hyogo.jp\0" +"\xe6\xb2\x96\xe7\xb8\x84.jp\0" +"trysil.no\0" +"kariwa.niigata.jp\0" +"tajiri.osaka.jp\0" +"calvinklein\0genting\0fbx-os.fr\0" +"pp.az\0" +"traeumtgerade.de\0" +"nedre-eiker.no\0amica\0" +"bykle.no\0" +"tsuwano.shimane.jp\0arteducation.museum\0" +"tanohata.iwate.jp\0nose.osaka.jp\0" +"pohl\0z-1.compute-1.amazonaws.com\0" +"tromso.no\0" +"venice.it\0noip.me\0" +"builders\0" +"eu.com\0" +"asso.eu.org\0" +"toray\0" +"nagaokakyo.kyoto.jp\0" +"flights\0" +"kumamoto.kumamoto.jp\0" +"cc.az.us\0" +"journalism.museum\0" +"\xe8\xaf\xba\xe5\x9f\xba\xe4\xba\x9a\0" +"omi.niigata.jp\0" +"lodi.it\0pn.it\0" +"usuki.oita.jp\0helsinki.museum\0" +"\xed\x95\x9c\xea\xb5\xad\0" +"moriyoshi.akita.jp\0" +"ikeda.nagano.jp\0" "care\0" -"austrheim.no\0her\xc3\xb8y.m\xc3\xb8re-og-romsdal.no\0" -"tur.ar\0" -"humanities.museum\0" -"showa.fukushima.jp\0monash\0" -"tr.no\0" -"yoita.niigata.jp\0" -"mil.do\0" -"nakatsugawa.gifu.jp\0" -"mil.ec\0mt.us\0nd.us\0casa\0" -"sirdal.no\0cars\0iki.fi\0" -"mil.eg\0youth.museum\0k12.mn.us\0sa.com\0" -"tur.br\0cash\0" -"h.bg\0" -"tsubame.niigata.jp\0" -"davvenjarga.no\0" -"shimizu.hokkaido.jp\0" -"budapest\0" -"sagae.yamagata.jp\0" +"naturhistorisches.museum\0" +"friuli-vgiulia.it\0cruises\0" +"hikone.shiga.jp\0" +"paragliding.aero\0hirata.fukushima.jp\0chiyoda.gunma.jp\0sumoto.hyogo.jp\0" +"noda.chiba.jp\0texas.museum\0love\0" +"scientist.aero\0hurum.no\0" +"casa\0ubank\0" +"esurance\0goip.de\0" +"sakaiminato.tottori.jp\0burghof.museum\0cars\0" +"shiogama.miyagi.jp\0" +"case\0" +"webhop.info\0gr.eu.org\0" +"com\0\xe3\x82\xb9\xe3\x83\x88\xe3\x82\xa2\0" +"school.na\0cash\0" +"toyoake.aichi.jp\0" +"discovery.museum\0" +"uppo.gov.pl\0" +"frosta.no\0" +"author.aero\0" +"gotemba.shizuoka.jp\0nesodden.no\0" +"asker.no\0fhv.se\0\xe7\xbd\x91\xe5\xba\x97\0" +"obuse.nagano.jp\0aarborte.no\0" +"museet.museum\0golffan.us\0" +"altai.ru\0komvux.se\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0" +"marche.it\0guovdageaidnu.no\0" +"grong.no\0" +"*.kawasaki.jp\0" +"itoigawa.niigata.jp\0travel.pl\0" +"pfizer\0" +"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0" +"dad\0" +"hanggliding.aero\0shimabara.nagasaki.jp\0environment.museum\0" +"etc.br\0" +"school.nz\0statefarm\0" +"satte.saitama.jp\0gol.no\0" +"cherkassy.ua\0" +"lier.no\0" +"laz.it\0" +"matsuyama.ehime.jp\0kamchatka.ru\0wales\0" +"shiroishi.saga.jp\0" +"tokke.no\0" +"dyndns-web.com\0" +"day\0" +"quebec\0" +"cri.nz\0x.se\0report\0" +"lib.fl.us\0able\0" +"l\xc3\xb8ten.no\0" +"art.museum\0crs\0csc\0" +"pl.ua\0samsung\0" +"cc.mn.us\0securitytactics.com\0" +"yonaguni.okinawa.jp\0rennebu.no\0cc.gu.us\0" +"vi.it\0" +"*.alwaysdata.net\0" +"en.it\0wedding\0" +"mutuelle\0" +"sorum.no\0kiev.ua\0" +"office-on-the.net\0" +"hadano.kanagawa.jp\0krager\xc3\xb8.no\0" +"journalist.aero\0ogata.akita.jp\0" +"sciencecenters.museum\0" +"barcelona\0kuokgroup\0" +"shingu.wakayama.jp\0" +"trentinoaltoadige.it\0gallery.museum\0game\0" +"\xe6\x94\xbf\xe5\xba\x9c.hk\0" +"dds\0" +"uvic.museum\0from-me.org\0" +"odo.br\0\xe7\xbd\x91\xe7\xbb\x9c.cn\0\xe9\x9d\x99\xe5\xb2\xa1.jp\0nordreisa.no\0engineer\0" +"kaizuka.osaka.jp\0trolley.museum\0" +"travel.tt\0" +"vda.it\0" +"bible.museum\0" +"miyoshi.hiroshima.jp\0kg.kr\0" +"dabur\0" +"toyoura.hokkaido.jp\0udmurtia.ru\0" +"leksvik.no\0bentley\0jprs\0" +"dev\0" +"trader.aero\0kochi.kochi.jp\0" +"kamifurano.hokkaido.jp\0" +"australia.museum\0k12.ma.us\0" +"tenkawa.nara.jp\0" +"bizen.okayama.jp\0" +"oumu.hokkaido.jp\0" +"from-ma.com\0" +"wiki.br\0porn\0" +"vads\xc3\xb8.no\0" +"leirvik.no\0" +"yasu.shiga.jp\0" +"tank.museum\0k\xc3\xa5""fjord.no\0" +"yufu.oita.jp\0" +"se.net\0hopto.me\0" +"okinoshima.shimane.jp\0" +"mino.gifu.jp\0bo.telemark.no\0" +"fukuroi.shizuoka.jp\0" +"nes.akershus.no\0post\0" +"lib.va.us\0" +"z.se\0" +"uryu.hokkaido.jp\0" +"dhl\0" +"gon.pk\0" +"fin.ec\0adult.ht\0" +"doesntexist.com\0" +"kaisei.kanagawa.jp\0" +"sk\xc3\xa5nland.no\0" +"versailles.museum\0olayan\0" +"tendo.yamagata.jp\0" +"pr.it\0gs.mr.no\0" +"room\0" +"serveexchange.com\0" +"beauxarts.museum\0" +"dynns.com\0" +"baidu\0" +"\xe7\xbd\x91\xe7\xbb\x9c.hk\0" +"newspaper.museum\0" +"historical.museum\0\xe7\xbd\x91\xe7\xbb\x9c\0" +"odate.akita.jp\0diy\0" +"railway.museum\0masoy.no\0" +"is-a-player.com\0" +"sport.hu\0sciencecenter.museum\0" +"saltdal.no\0" +"playstation\0" +"atami.shizuoka.jp\0" +"download\0" +"chambagri.fr\0sar.it\0hvaler.no\0" +"haboro.hokkaido.jp\0tranoy.no\0" +"lapy.pl\0" +"iselect\0yamaxun\0" +"vestre-toten.no\0phone\0" +"bryansk.su\0" +"navuotna.no\0" +"dscloud.me\0" +"oyer.no\0bielawa.pl\0" +"pp.ru\0pp.se\0volvo\0" +"kuki.saitama.jp\0free\0" +"newport.museum\0" +"fujiyoshida.yamanashi.jp\0" +"amsterdam\0" +"sund.no\0" +"urayasu.chiba.jp\0" +"nflfan.org\0" +"uki.kumamoto.jp\0" +"etisalat\0" +"fuchu.hiroshima.jp\0" +"logoip.com\0" +"gop.pk\0" +"asago.hyogo.jp\0higashimatsuyama.saitama.jp\0cbre\0" +"pp.ua\0" +"nakagawa.fukuoka.jp\0luxembourg.museum\0" +"cc.hi.us\0" +"dnp\0" +"kurotaki.nara.jp\0ogose.saitama.jp\0\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" +"naha.okinawa.jp\0" +"pt.it\0kasamatsu.gifu.jp\0" +"dog\0" +"minamiminowa.nagano.jp\0" +"tcm.museum\0is-uberleet.com\0" +"depot.museum\0" +"bryansk.ru\0" +"vi.us\0" +"gov.ac\0web.co\0anquan\0" +"maibara.shiga.jp\0dot\0" +"gov.ae\0kyotanabe.kyoto.jp\0" +"gov.af\0tadaoka.osaka.jp\0codes\0" +"keymachine.de\0" +"gov.al\0" +"from-ct.com\0from-la.net\0" +"kofu.yamanashi.jp\0" +"baseball.museum\0" +"gov.ba\0" +"gov.ar\0gov.bb\0fujikawa.yamanashi.jp\0" +"gov.as\0web.do\0" +"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0rexroth\0" +"gov.au\0" +"gov.bf\0" +"hamburg.museum\0" +"gov.bh\0copenhagen.museum\0" +"namsos.no\0" +"gov.az\0saku.nagano.jp\0" +"gov.bm\0" +"shimane.jp\0" +"gov.bo\0" +"k12.nm.us\0" +"gov.br\0" +"gov.bs\0film.museum\0maif\0yodobashi\0" +"gov.bt\0gov.cd\0eat\0" +"gbiz\0" +"eti.br\0" +"gov.by\0" +"ecn.br\0gov.bz\0" +"wa.au\0" +"gov.cl\0" +"gov.cm\0tsuno.kochi.jp\0" +"gov.cn\0endofinternet.org\0" +"gov.co\0maison\0" +"\xc3\xb8ygarden.no\0" +"rogers\0" +"iwafune.tochigi.jp\0" +"photo\0" +"gov.cu\0\xd8\xa8\xd8\xa7\xd8\xb2\xd8\xa7\xd8\xb1\0" +"calabria.it\0fuso.aichi.jp\0" +"g\xc3\xa1ivuotna.no\0" +"council.aero\0gov.cx\0" +"gov.cy\0kusatsu.gunma.jp\0kikonai.hokkaido.jp\0" +"kitayama.wakayama.jp\0" +"shinshinotsu.hokkaido.jp\0\xe7\xb5\x84\xe7\xb9\x94.tw\0" +"gov.dm\0timekeeping.museum\0" +"communications.museum\0" +"gov.do\0pacific.museum\0eco\0" +"imabari.ehime.jp\0" +"gov.ec\0" +"qh.cn\0gov.ee\0" +"salangen.no\0" +"gov.eg\0" +"boleslawiec.pl\0" +"cc.mt.us\0cc.nd.us\0" +"gov.dz\0" +"computerhistory.museum\0nes.buskerud.no\0" +"eidsvoll.no\0" +"pv.it\0\xe5\x95\x86\xe6\xa0\x87\0" +"gs.hm.no\0" +"qld.au\0gov.et\0" +"edu\0scotland.museum\0" +"takatsuki.shiga.jp\0dtv\0" +"web.id\0" +"pr.us\0pantheonsite.io\0" "kirov.ru\0" -"br.it\0cb.it\0mie.jp\0" -"bd.se\0" -"\xe6\x9d\xb1\xe4\xba\xac.jp\0" -"game-host.org\0" -"yachiyo.ibaraki.jp\0" -"h\xc3\xa1pmir.no\0" -"otake.hiroshima.jp\0" -"blogspot.co.il\0" -"marylhurst.museum\0" +"fujioka.gunma.jp\0" +"nesseby.no\0" +"narita.chiba.jp\0" +"hurdal.no\0" +"travelersinsurance\0" +"baidar.no\0" +"\xc3\xb8yer.no\0" +"gov.ge\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0" +"writesthisblog.com\0" +"gov.gh\0" +"gov.gi\0california.museum\0" +"kushima.miyazaki.jp\0" +"house\0zuerich\0" +"shinjo.yamagata.jp\0" +"gov.gn\0" +"servebbs.com\0" +"crafts.museum\0" +"gov.gr\0dvr\0" +"photos\0" +"dwg\0town\0" +"friuliv-giulia.it\0accenture\0" +"gov.gy\0gujo.gifu.jp\0minamiaiki.nagano.jp\0" +"konan.shiga.jp\0" +"gov.hk\0lamer\0" +"okoppe.hokkaido.jp\0grocery\0" +"honjyo.akita.jp\0" +"catering.aero\0eniwa.hokkaido.jp\0adac\0" +"higashiizumo.shimane.jp\0oyabe.toyama.jp\0" +"\xc3\xa5rdal.no\0" +"alpha.bounty-full.com\0" +"pgafan.net\0" +"sanofi\0" +"gov.ie\0osaka\0" +"\xc3\xa5s.no\0" +"minamata.kumamoto.jp\0is.gov.pl\0" +"scrapping.cc\0" +"skaun.no\0" +"pictet\0" +"gov.il\0fin.tn\0" +"gov.in\0" +"web.lk\0" +"shiroi.chiba.jp\0" +"gov.iq\0" +"gov.ir\0" +"gov.is\0" +"gov.it\0" +"fukudomi.saga.jp\0boston.museum\0frog.museum\0moskenes.no\0" +"gamagori.aichi.jp\0fuchu.tokyo.jp\0vote\0" +"lib.pr.us\0" +"toys\0" +"gov.jo\0birthplace.museum\0" +"minamiuonuma.niigata.jp\0" +"huissier-justice.fr\0luxury\0" +"voto\0" +"community.museum\0silk.museum\0namsskogan.no\0" +"higashiagatsuma.gunma.jp\0" +"gov.kg\0\xe4\xbc\x81\xe4\xb8\x9a\0" +"gov.ki\0" +"web.nf\0" +"aramco\0" +"gov.km\0web.ni\0" +"gov.kn\0bodo.no\0dyndns-pics.com\0" +"makurazaki.kagoshima.jp\0" +"fukusaki.hyogo.jp\0gov.kp\0" +"cesena-forli.it\0gov.la\0" +"mifune.kumamoto.jp\0gov.lb\0" +"gov.lc\0systems\0" +"tr\xc3\xa6na.no\0" +"gov.ky\0salem.museum\0" +"saroma.hokkaido.jp\0gov.kz\0" +"gov.lk\0" +"kunneppu.hokkaido.jp\0pila.pl\0fareast.ru\0" +"gaivuotna.no\0" +"investments\0\xe3\x81\xbf\xe3\x82\x93\xe3\x81\xaa\0" +"shibata.niigata.jp\0kongsvinger.no\0" +"gov.ma\0tickets\0" +"gov.lr\0" +"mulhouse.museum\0nuernberg.museum\0" +"gov.lt\0b\xc3\xa1hcavuotna.no\0" +"gov.me\0" +"gov.lv\0" +"gov.mg\0kommunalforbund.se\0is-very-evil.org\0" +"l\xc3\xb8""dingen.no\0" +"gov.ly\0" +"gov.mk\0" +"gov.ml\0" +"total\0" +"gov.mn\0" +"gov.mo\0web.pk\0" +"gov.mr\0\xd8\xa8\xda\xbe\xd8\xa7\xd8\xb1\xd8\xaa\0" +"gov.ms\0jefferson.museum\0" +"tuscany.it\0" +"friulivegiulia.it\0kitahata.saga.jp\0gov.mu\0" +"gov.mv\0" +"gov.mw\0gov.ng\0zgrad.ru\0physio\0" +"istanbul\0secure\0" +"isahaya.nagasaki.jp\0gov.my\0lebork.pl\0" +"veterinaire.km\0gov.mz\0" +"kanagawa.jp\0" +"sado.niigata.jp\0fineart.museum\0" +"kashihara.nara.jp\0" +"gov.nr\0" +"narviika.no\0" +"kunigami.okinawa.jp\0agakhan\0" +"alessandria.it\0" +"tolga.no\0" +"izumisano.osaka.jp\0contact\0" +"\xe5\xaf\x8c\xe5\xb1\xb1.jp\0namegawa.saitama.jp\0" +"miyoshi.aichi.jp\0finearts.museum\0" +"gov.om\0" +"zone\0" +"neues.museum\0" +"syzran.ru\0bargains\0" +"daegu.kr\0" +"lib.wi.us\0" +"ambulance.aero\0gov.ph\0" +"hsbc\0icbc\0" +"kusatsu.shiga.jp\0gov.pk\0" +"gov.pl\0krasnoyarsk.ru\0fr.eu.org\0" +"fj.cn\0" +"showa.fukushima.jp\0gov.pn\0km.ua\0" +"cc.nh.us\0" +"gov.qa\0" +"gov.pr\0jp.net\0poznan.pl\0" +"gov.ps\0safe\0" +"mil.ac\0archaeological.museum\0gov.pt\0r.cdn77.net\0" +"vs.it\0" +"mil.ae\0pz.it\0" +"guardian\0" +"c.cdn77.org\0" +"gov.py\0airtel\0" +"gjerdrum.no\0" +"mil.al\0" +"web.tj\0" +"veterinaire.fr\0chanel\0" +"mil.ba\0" +"mil.ar\0" +"lviv.ua\0" +"web.tr\0" +"kiwi.nz\0" +"sand\xc3\xb8y.no\0" +"mil.az\0\xe0\xa6\xad\xe0\xa6\xbe\xe0\xa6\xb0\xe0\xa6\xa4\0" +"sarpsborg.no\0fan\0" +"mil.bo\0poivron.org\0" +"gov.sa\0" +"gov.sb\0" +"mil.br\0gov.rs\0gov.sc\0" +"gov.sd\0" +"gov.ru\0lanxess\0" +"gov.rw\0gov.sg\0is-a-socialist.com\0" +"gov.sh\0intuit\0" +"web.ve\0" +"mil.by\0" +"gov.sl\0" +"mil.cl\0gangwon.kr\0rivne.ua\0" +"shimamaki.hokkaido.jp\0glas.museum\0" +"mil.cn\0" +"ac.ae\0mil.co\0honai.ehime.jp\0" +"narusawa.yamanashi.jp\0k12.ms.us\0k12.nc.us\0" +"k12.il.us\0\xe9\xa6\x99\xe6\xa0\xbc\xe9\x87\x8c\xe6\x8b\x89\0" +"gov.st\0" +"services.aero\0gov.sx\0" +"gov.sy\0" +"gov.tj\0" +"gov.tl\0" +"gov.tm\0" +"gov.tn\0" +"ac.at\0gov.to\0" +"ac.be\0mil.do\0steigen.no\0" +"gov.ua\0esq\0vacations\0" +"taki.mie.jp\0gov.tr\0" +"mil.ec\0tsuruga.fukui.jp\0stockholm.museum\0gov.tt\0" +"gov.tw\0" +"mil.eg\0landes.museum\0" +"murayama.yamagata.jp\0" +"b\xc3\xb8.telemark.no\0" +"kanzaki.saga.jp\0gov.uk\0" +"mypsx.net\0" +"per.la\0" +"lib.ky.us\0baseball\0" +"miyada.nagano.jp\0lib.ak.us\0gov.vc\0" +"1.bg\0ac.ci\0jeonbuk.kr\0" +"gov.ve\0is-lost.org\0" +"tushu\0\xe4\xbf\xa1\xe6\x81\xaf\0" +"ac.cn\0nasushiobara.tochigi.jp\0hyundai\0" +"cc.nj.us\0" +"cc.ia.us\0" +"exhibition.museum\0" +"ac.cr\0" +"gov.vn\0ferrari\0lilly\0" +"fortmissoula.museum\0" +"gs.nl.no\0bearalv\xc3\xa1hki.no\0passagens\0" +"lc.it\0missile.museum\0" +"eus\0sale\0select\0" +"ac.cy\0hasvik.no\0" +"andebu.no\0web.za\0memorial\0" "mil.ge\0" -"shikama.miyagi.jp\0" -"mini\0" -"mil.gh\0tobishima.aichi.jp\0podzone.net\0" -"avoues.fr\0" -"here\0lifeinsurance\0is-an-engineer.com\0" -"komagane.nagano.jp\0fish\0endofinternet.net\0" -"lajolla.museum\0" -"dlugoleka.pl\0" -"mol.it\0" -"mil.gt\0" -"museum\0castle.museum\0udm.ru\0" -"katsuura.chiba.jp\0" -"arts.museum\0" -"kuromatsunai.hokkaido.jp\0minowa.nagano.jp\0" -"hadano.kanagawa.jp\0lawyer\0" -"oryol.ru\0guru\0" -"mil.hn\0mifune.kumamoto.jp\0" -"yaizu.shizuoka.jp\0" -"lecce.it\0" +"marshalls\0" +"mil.gh\0wa.us\0" +"shirakawa.gifu.jp\0" +"spreadbetting\0yahoo\0" +"coloradoplateau.museum\0" +"medizinhistorisches.museum\0loab\xc3\xa1t.no\0" +"\xe7\xb5\x84\xe7\xb9\x94.hk\0theater.museum\0\xe8\x81\x94\xe9\x80\x9a\0" +"zao.miyagi.jp\0taketomi.okinawa.jp\0from-ak.com\0" +"gov.ws\0" +"nakaniikawa.toyama.jp\0per.nf\0" +"mil.gt\0bungoono.oita.jp\0bo.nordland.no\0" +"skodje.no\0dnsfor.me\0" +"westfalen.museum\0" +"naples.it\0\xe5\x8d\x83\xe8\x91\x89.jp\0toyotomi.hokkaido.jp\0tsuyama.okayama.jp\0bugatti\0" +"mil.hn\0" +"kadena.okinawa.jp\0" +"balat.no\0" "mil.id\0" -"m\xc3\xa1latvuopmi.no\0\xe5\x9c\xa8\xe7\xba\xbf\0" -"vet\0" -"olecko.pl\0" -"newjersey.museum\0" -"celtic.museum\0delivery\0" -"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0" -"mil.in\0" -"k12.ok.us\0supplies\0\xd0\xbe\xd1\x80\xd0\xb3\0" -"mil.iq\0" -"ouda.nara.jp\0chihayaakasaka.osaka.jp\0iwi.nz\0" -"o.bg\0skjak.no\0" -"travel.pl\0" -"for-our.info\0" -"mobi.gp\0embetsu.hokkaido.jp\0" -"rennesoy.no\0" -"aomori.jp\0hiroshima.jp\0" -"monzaedellabrianza.it\0" -"mil.jo\0" -"ci.it\0trento.it\0coop.tt\0" -"cc.al.us\0academy\0" -"seika.kyoto.jp\0hyuga.miyazaki.jp\0" -"design.museum\0cc.ms.us\0cc.nc.us\0is-certified.com\0" -"\xe5\xa8\xb1\xe4\xb9\x90\0" -"mil.kg\0za.org\0" -"norfolk.museum\0" +"gildeskal.no\0" +"promo\0" +"l\xc3\xa4ns.museum\0k12.ne.us\0" +"homeunix.com\0" +"mil.in\0tara.saga.jp\0" +"gov.za\0" +"mil.iq\0war.museum\0" +"dynalias.com\0" +"yanagawa.fukuoka.jp\0skoczow.pl\0misconfused.org\0" +"jolster.no\0" +"ac.gn\0minamimaki.nagano.jp\0iwi.nz\0fh.se\0" +"g12.br\0clock.museum\0" +"is-a-landscaper.com\0" +"gov.zm\0" +"shiojiri.nagano.jp\0hotmail\0" +"mil.jo\0\xe5\xbe\xb3\xe5\xb3\xb6.jp\0lierne.no\0" +"dyndns.info\0" +"arakawa.saitama.jp\0" +"fit\0" +"dubai\0" +"ethnology.museum\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0" +"mil.kg\0" +"rocher\0" +"salvadordali.museum\0" +"sapo\0" "mil.km\0" -"naturalhistory.museum\0lib.dc.us\0" -"wales.museum\0" -"mil.kr\0coop.mv\0" -"coop.mw\0" -"nagasaki.nagasaki.jp\0" -"toyokawa.aichi.jp\0imari.saga.jp\0landrover\0" -"fhv.se\0" +"3.bg\0ac.id\0aa.no\0" +"karasuyama.tochigi.jp\0" +"mil.kr\0" +"abiko.chiba.jp\0daiwa.hiroshima.jp\0" +"bas.it\0oryol.ru\0" +"ac.il\0shimokitayama.nara.jp\0" +"ac.im\0" +"ac.in\0" "mil.kz\0" -"roros.no\0java\0" -"toki.gifu.jp\0ina.saitama.jp\0" -"for-more.biz\0" -"vip\0" -"\xe4\xb8\xaa\xe4\xba\xba.hk\0careers\0" -"idrett.no\0kustanai.ru\0" +"ac.ir\0le.it\0" +"school.za\0gripe\0" +"svizzera.museum\0" +"b\xc3\xa6rum.no\0" +"gyeongbuk.kr\0" +"saskatchewan.museum\0per.sg\0mysecuritycamera.net\0" +"la.us\0" "mil.lv\0" -"mil.mg\0" -"chofu.tokyo.jp\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" -"writesthisblog.com\0" -"oirase.aomori.jp\0olkusz.pl\0" -"com.ac\0ballooning.aero\0" -"com.af\0\xe7\xbd\x91\xe7\xbb\x9c\0" -"airline.aero\0com.ag\0" -"nakijin.okinawa.jp\0" -"com.ai\0vossevangen.no\0" -"shinichi.hiroshima.jp\0marumori.miyagi.jp\0" -"com.al\0mil.mv\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.cn\0nagato.yamaguchi.jp\0mil.mg\0" +"takehara.hiroshima.jp\0sarl\0" +"ac.jp\0" +"gjovik.no\0" +"historyofscience.museum\0" +"chiryu.aichi.jp\0broadway\0" +"not.br\0" +"mil.mv\0" "mil.ng\0" -"com.an\0" -"\xe6\x94\xbf\xe5\xba\x9c.hk\0mil.my\0paris\0tips\0" -"trentinos-tirol.it\0kashima.ibaraki.jp\0" -"com.ba\0v.bg\0degree\0" -"com.ar\0com.bb\0caserta.it\0tranibarlettaandria.it\0" -"lebtimnetz.de\0" -"joboji.iwate.jp\0takatsuki.osaka.jp\0gniezno.pl\0travel.tt\0" -"com.au\0mil.no\0" -"in-the-band.net\0" -"com.aw\0" -"com.bh\0" -"com.bi\0" -"com.az\0mito.ibaraki.jp\0" -"coop.py\0" -"kashima.kumamoto.jp\0pomorskie.pl\0" -"com.bm\0" -"shiki.saitama.jp\0sandvikcoromant\0" -"com.bo\0cc.as.us\0" -"minato.tokyo.jp\0mil.nz\0" -"labour.museum\0coffee\0" -"com.br\0pg.it\0shintomi.miyazaki.jp\0" -"com.bs\0cc.nj.us\0" -"com.bt\0bytom.pl\0" -"ichiba.tokushima.jp\0" -"qc.com\0" -"kakamigahara.gifu.jp\0" -"com.by\0com.ci\0" -"com.bz\0ichihara.chiba.jp\0" +"nis.za\0fly\0" +"yaotsu.gifu.jp\0osaki.miyagi.jp\0mil.my\0mil.ni\0" +"kagami.kochi.jp\0mil.mz\0" +"davvenj\xc3\xa1rga.no\0no-ip.biz\0" +"ac.kr\0" +"hazu.aichi.jp\0" +"mil.no\0kobierzyce.pl\0boutique\0" +"\xe4\xb8\x80\xe5\x8f\xb7\xe5\xba\x97\0" +"ac.lk\0lanbib.se\0" +"\xe5\xb2\x90\xe9\x98\x9c.jp\0" +"k12.mo.us\0" +"isa-geek.org\0" +"operaunite.com\0" +"seiro.niigata.jp\0mil.nz\0" +"ofunato.iwate.jp\0ac.ma\0" +"nara.jp\0" +"modalen.no\0" +"ac.me\0" +"epost\0" +"alta.no\0" "mil.pe\0" -"uji.kyoto.jp\0" -"com.cm\0nesna.no\0" -"com.cn\0mil.ph\0" -"com.co\0\xc4\x8d\xc3\xa1hcesuolo.no\0k12.id.us\0\xe8\x87\xba\xe7\x81\xa3\0melbourne\0" -"kahoku.yamagata.jp\0" +"freemasonry.museum\0" +"mil.ph\0" +"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0dyndns-at-work.com\0" +"shimoji.okinawa.jp\0" "mil.pl\0" -"selje.no\0" -"tatebayashi.gunma.jp\0shinjo.okayama.jp\0\xe9\x9b\x86\xe5\x9b\xa2\0" -"com.cu\0com.de\0" -"higashikurume.tokyo.jp\0" -"com.cw\0mil.qa\0club.tw\0" -"v\xc3\xa5ler.hedmark.no\0" -"town.museum\0" -"nagasu.kumamoto.jp\0\xd8\xa7\xd9\x85\xd8\xa7\xd8\xb1\xd8\xa7\xd8\xaa\0" -"com.dm\0" -"ninomiya.kanagawa.jp\0so.gov.pl\0\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" -"com.do\0coop.km\0mil.py\0" -"elasticbeanstalk.com\0" -"nachikatsuura.wakayama.jp\0" -"com.ec\0" -"cim.br\0ogata.akita.jp\0" -"com.ee\0" -"komoro.nagano.jp\0" -"com.eg\0a.se\0" -"priv.pl\0" -"com.dz\0yuki.ibaraki.jp\0utazu.kagawa.jp\0geisei.kochi.jp\0" -"city.hu\0dovre.no\0energy\0" -"ny.us\0" -"com.es\0" -"com.et\0tsurugi.ishikawa.jp\0nakagusuku.okinawa.jp\0" -"bajddar.no\0shouji\0" -"blogspot.co.uk\0" -"meeres.museum\0mil.ru\0" -"chita.aichi.jp\0" -"mil.rw\0naturbruksgymn.se\0" -"mil.sh\0" -"seto.aichi.jp\0vision\0" -"agents.aero\0" -"com.fr\0verbania.it\0" -"com.ge\0" -"shiriuchi.hokkaido.jp\0" -"cc.az.us\0" -"com.gh\0creditcard\0" -"com.gi\0" -"pn.it\0mil.st\0" -"maritime.museum\0priv.no\0" -"jus.br\0genova.it\0" -"haugesund.no\0" -"com.gn\0pesaro-urbino.it\0" -"rubtsovsk.ru\0mil.sy\0" -"com.gp\0kyowa.hokkaido.jp\0mil.tj\0" -"com.gr\0" +"barlettatraniandria.it\0" +"foo\0" +"ac.mu\0stargard.pl\0" +"schokoladen.museum\0ac.mw\0mil.qa\0" +"verdal.no\0save\0" +"\xe7\x86\x8a\xe6\x9c\xac.jp\0ac.ni\0" +"ac.mz\0naturbruksgymn.se\0" +"b\xc3\xa5tsfjord.no\0\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0" +"fox\0" +"tysv\xc3\xa6r.no\0" +"5.bg\0mil.py\0" +"eidsberg.no\0" +"barcelona.museum\0" +"ks.ua\0" +"dni.us\0" +"\xe7\xb6\xb2\xe7\xb5\xa1.hk\0ac.nz\0embaixada.st\0gov.nc.tr\0" +"mutsu.aomori.jp\0figueres.museum\0" +"tsukumi.oita.jp\0diskstation.me\0" +"ujiie.tochigi.jp\0" +"halsa.no\0" +"flakstad.no\0ac.pa\0gal\0" +"realtor\0dyndns-remote.com\0" +"gap\0" +"inawashiro.fukushima.jp\0ks.us\0" +"\xe0\xa8\xad\xe0\xa8\xbe\xe0\xa8\xb0\xe0\xa8\xa4\0" +"tsunan.niigata.jp\0" +"lg.jp\0" +"mil.ru\0" +"tvedestrand.no\0" +"mil.rw\0" +"asso.fr\0mil.sh\0" +"village.museum\0" +"minakami.gunma.jp\0" +"frl\0" +"ac.pr\0saxo\0" +"hidaka.wakayama.jp\0" +"kamiizumi.saitama.jp\0" +"jar.ru\0" +"gouv.fr\0" +"kahoku.ishikawa.jp\0habikino.osaka.jp\0" +"mil.st\0" +"etne.no\0verm\xc3\xb6gensberater\0" +"asso.gp\0kani.gifu.jp\0prod\0" +"uk.com\0" +"allstate\0international\0prof\0" +"mil.sy\0" +"mil.tj\0wang\0\xe6\x97\xb6\xe5\xb0\x9a\0" "mil.tm\0" -"com.gt\0ishikawa.jp\0android\0" -"kazan.ru\0mil.to\0" -"k12.ia.us\0" -"izumi.kagoshima.jp\0mil.tr\0" -"com.gy\0is-a-libertarian.com\0" -"noshiro.akita.jp\0" -"com.hk\0" -"mil.tw\0" -"com.hn\0est.pr\0management\0se.net\0" -"mil.tz\0" -"com.hr\0" -"grane.no\0" -"experts-comptables.fr\0com.ht\0" -"bauern.museum\0nkz.ru\0" -"webcam\0" -"iwanai.hokkaido.jp\0okinoshima.shimane.jp\0" -"mil.vc\0" -"hamura.tokyo.jp\0" -"sorreisa.no\0mil.ve\0" -"com.im\0brussels.museum\0juif.museum\0cc.ia.us\0sa-east-1.compute.amazonaws.com\0" -"com.io\0h.se\0mil.uy\0" -"com.iq\0priv.me\0cc.tx.us\0from-ca.com\0" -"hitoyoshi.kumamoto.jp\0" -"com.is\0" -"salvadordali.museum\0" -"ishikawa.okinawa.jp\0" -"\xe7\xb6\xb2\xe7\xbb\x9c.hk\0algard.no\0ris\xc3\xb8r.no\0" +"milan.it\0xihuan\0is-a-libertarian.com\0" +"mil.to\0\xe6\x9c\xba\xe6\x9e\x84\0" +"milano.it\0" +"imamat\0" +"mil.tr\0" +"nakama.fukuoka.jp\0malopolska.pl\0" +"noboribetsu.hokkaido.jp\0cultural.museum\0mil.tw\0from-md.com\0" +"nishinoshima.shimane.jp\0" +"kazuno.akita.jp\0celtic.museum\0" +"asso.ht\0mil.tz\0" +"yokaichiba.chiba.jp\0" +"shizukuishi.iwate.jp\0ac.rs\0gdn\0" +"natura\0" +"durham.museum\0ac.ru\0ac.se\0" +"gea\0" +"ac.rw\0ftr\0" +"gouv.ht\0" +"tokai.ibaraki.jp\0mil.vc\0apartments\0" +"kouhoku.saga.jp\0mil.ve\0" +"gen.in\0" +"mil.uy\0" +"piemonte.it\0krokstadelva.no\0enterprises\0" +"reggioemilia.it\0duck\0" +"sayama.osaka.jp\0fun\0" +"hyuga.miyazaki.jp\0" +"localhistory.museum\0lib.wa.us\0" +"asso.bj\0koto.shiga.jp\0doesntexist.org\0" +"lib.ks.us\0pimienta.org\0" +"ac.th\0" +"barefoot\0pgfog.com\0" +"7.bg\0gj\xc3\xb8vik.no\0ac.sz\0ac.tj\0" +"stavropol.ru\0" +"suifu.ibaraki.jp\0" +"gouv.bj\0illustration.museum\0" +"sn\xc3\xa5sa.no\0" +"asso.ci\0hatogaya.saitama.jp\0maryland.museum\0dnshome.de\0" +"dev-myqnapcloud.com\0" +"ac.ug\0neat-url.com\0" +"li.it\0" +"virginia.museum\0kosher\0" +"ag.it\0ac.tz\0" +"ac.uk\0watches\0" +"\xd0\xba\xd0\xbe\xd0\xbc\0" +"gouv.ci\0" +"hasura-app.io\0" +"galsa.no\0kddi\0teaches-yoga.com\0" +"freeboxos.com\0" +"fl.us\0rackmaze.com\0" +"jur.pro\0" +"tozsde.hu\0sp.leg.br\0" +"collection.museum\0" +"\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\0" +"ac.vn\0" +"!city.sendai.jp\0convent.museum\0suzuki\0" +"kamo.kyoto.jp\0" +"morioka.iwate.jp\0" +"asso.dz\0" +"mil.za\0" +"kawaue.gifu.jp\0" +"email\0fitness\0" +"film.hu\0" +"chirurgiens-dentistes.fr\0fidelity\0" +"monster\0" +"skien.no\0" +"fyi\0" +"aero\0nrw.museum\0wolomin.pl\0" +"project.museum\0" +"eng.pro\0" +"k12.ok.us\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0mil.zm\0" +"k12.id.us\0" "k12.ca.us\0" -"homeip.net\0" -"k12.or.us\0\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0docs\0frogans\0" -"com.jo\0groks-the.info\0" -"askvoll.no\0aver\xc3\xb8y.no\0" -"ogose.saitama.jp\0gliwice.pl\0" -"sakhalin.ru\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0" -"otsuchi.iwate.jp\0" -"com.kg\0" -"keisen.fukuoka.jp\0" -"com.ki\0" -"yonaguni.okinawa.jp\0" -"from-ma.com\0" -"wed\0" -"com.km\0" -"kv\xc3\xa6""fjord.no\0cherkassy.ua\0cc.ca.us\0" -"chikuzen.fukuoka.jp\0com.kp\0" -"com.la\0nyc.museum\0" -"pu.it\0hirata.fukushima.jp\0suzaka.nagano.jp\0com.lb\0" -"com.lc\0cc.oh.us\0" -"dnsalias.net\0" -"zhitomir.ua\0" -"midori.gunma.jp\0kawai.nara.jp\0" -"com.ky\0masfjorden.no\0" -"wazuka.kyoto.jp\0gotemba.shizuoka.jp\0com.kz\0" -"com.lk\0" -"fujieda.shizuoka.jp\0opole.pl\0" -"lib.fl.us\0homelinux.com\0" -"sar.it\0bydgoszcz.pl\0" -"bristol.museum\0parts\0photos\0" -"ogawa.saitama.jp\0" -"com.lr\0" -"shibetsu.hokkaido.jp\0" -"party\0" -"liguria.it\0com.lv\0" -"com.mg\0m\xc3\xa5lselv.no\0herokussl.com\0" -"adv.br\0oga.akita.jp\0" -"com.ly\0" -"com.mk\0north.museum\0" -"com.ml\0agrinet.tn\0prod\0" -"gs.vf.no\0" -"prof\0" -"com.mo\0yolasite.com\0" -"com.na\0" -"com.ms\0" -"com.mt\0" -"com.mu\0ar.com\0" -"com.mv\0com.nf\0" -"com.mw\0com.ng\0o.se\0" -"com.mx\0swidnica.pl\0" -"com.my\0" -"yamada.iwate.jp\0" -"landes.museum\0stathelle.no\0doha\0" -"togitsu.nagasaki.jp\0" -"trani-andria-barletta.it\0sr.gov.pl\0" -"asakawa.fukushima.jp\0joyo.kyoto.jp\0" -"laz.it\0com.nr\0" -"usculture.museum\0" -"yamaguchi.jp\0" -"tottori.jp\0ota.gunma.jp\0" -"midsund.no\0" -"sannohe.aomori.jp\0" -"lancashire.museum\0com.om\0" -"olsztyn.pl\0" -"com.pa\0\xd9\x87\xd9\x85\xd8\xb1\xd8\xa7\xd9\x87\0" -"eisenbahn.museum\0paroch.k12.ma.us\0s3-us-gov-west-1.amazonaws.com\0no.com\0from-vt.com\0" -"dgca.aero\0com.pe\0vn.ua\0" -"com.pf\0win\0blogspot.co.nz\0" -"bykle.no\0" -"oshima.yamaguchi.jp\0com.ph\0" -"honjo.saitama.jp\0nishikawa.yamagata.jp\0" -"lakas.hu\0com.pk\0" -"*.nagoya.jp\0fuji.shizuoka.jp\0com.pl\0" -"com.qa\0" -"xj.cn\0tomari.hokkaido.jp\0com.pr\0" -"j\xc3\xb8lster.no\0com.ps\0" -"sumoto.hyogo.jp\0com.pt\0" -"kuriyama.hokkaido.jp\0nasushiobara.tochigi.jp\0" -"barcelona.museum\0aurskog-h\xc3\xb8land.no\0" -"com.py\0marketing\0s3-website-sa-east-1.amazonaws.com\0" -"kayabe.hokkaido.jp\0" -"minamata.kumamoto.jp\0shima.mie.jp\0" -"mulhouse.museum\0gs.svalbard.no\0" -"red.sv\0" -"ngo.lk\0com.re\0" -"hachirogata.akita.jp\0kanoya.kagoshima.jp\0" -"massacarrara.it\0anjo.aichi.jp\0chijiwa.nagasaki.jp\0" -"from-hi.com\0" -"is-into-games.com\0" -"\xe6\x96\xb0\xe5\x8a\xa0\xe5\x9d\xa1\0" -"ina.ibaraki.jp\0" -"com.ro\0" -"com.sa\0" -"com.sb\0mobi.tt\0" -"com.sc\0neat-url.com\0" -"com.sd\0" -"drobak.no\0lillehammer.no\0com.ru\0com.se\0" -"kiho.mie.jp\0" -"com.rw\0com.sg\0" -"com.sh\0mobi.tz\0xbox\0" -"k12.co.us\0" -"lease\0" -"com.sl\0" -"wme\0" -"com.sn\0" -"l\xc3\xb8renskog.no\0com.so\0" -"com.st\0" -"cosenza.it\0com.sv\0" -"masoy.no\0" -"sasaguri.fukuoka.jp\0" -"com.sy\0" -"assabu.hokkaido.jp\0kanmaki.nara.jp\0com.tj\0" -"zaporizhzhe.ua\0" -"tamakawa.fukushima.jp\0faith\0" -"com.tm\0" -"ug.gov.pl\0com.tn\0" -"com.to\0cc.co.us\0" -"voronezh.ru\0com.ua\0" -"rc.it\0com.tr\0" -"hokksund.no\0\xc3\xa1k\xc5\x8boluokta.no\0" -"com.tt\0" -"mel\xc3\xb8y.no\0" -"\xe6\x84\x9b\xe5\xaa\x9b.jp\0shichinohe.aomori.jp\0" -"com.tw\0com.ug\0" -"kisofukushima.nagano.jp\0" -"kepno.pl\0" -"artgallery.museum\0zgrad.ru\0" -"nome.pt\0" -"inc.hk\0" -"control.aero\0" -"gamagori.aichi.jp\0ngo.ph\0" -"sa.au\0""2.bg\0com.vc\0" -"biratori.hokkaido.jp\0matsushige.tokushima.jp\0" -"topology.museum\0com.ve\0" -"ichinomiya.aichi.jp\0" -"semine.miyagi.jp\0saarland\0" -"com.uy\0com.vi\0" -"valle-aosta.it\0nakayama.yamagata.jp\0com.uz\0" -"dn.ua\0" -"ws.na\0" -"com.vn\0" -"act.edu.au\0durham.museum\0" -"reggio-emilia.it\0bizen.okayama.jp\0yamada.toyama.jp\0" -"mansions.museum\0podzone.org\0" -"tomobe.ibaraki.jp\0minamiyamashiro.kyoto.jp\0matsubushi.saitama.jp\0" -"glas.museum\0" -"lc.it\0rikubetsu.hokkaido.jp\0engineer\0" -"com.vu\0" -"nishitosa.kochi.jp\0" -"yaroslavl.ru\0" -"fj.cn\0" -"makinohara.shizuoka.jp\0" -"saka.hiroshima.jp\0" -"mobi.na\0vagsoy.no\0sevastopol.ua\0" -"sa.cr\0" -"lib.mi.us\0com.ws\0" -"naoshima.kagawa.jp\0" -"mobi.ng\0hobby-site.org\0" -"tokai.ibaraki.jp\0" -"catania.it\0shinagawa.tokyo.jp\0" -"sannan.hyogo.jp\0" -"rotorcraft.aero\0amot.no\0" -"sanofi\0" -"tas.gov.au\0" -"fc.it\0kochi.kochi.jp\0" -"kemerovo.ru\0" -"leangaviika.no\0" -"gyeongnam.kr\0consulado.st\0" -"leirfjord.no\0" -"hayashima.okayama.jp\0koka.shiga.jp\0" -"autos\0is-by.us\0" -"smile\0" -"conf.au\0" -"9.bg\0wtc\0" -"wtf\0" -"nsw.edu.au\0aurland.no\0chrome\0" -"otaki.saitama.jp\0" -"yosemite.museum\0parti.se\0" -"kawanishi.nara.jp\0" -"baltimore.museum\0yoga\0" -"es.kr\0" -"heroy.more-og-romsdal.no\0" -"omotego.fukushima.jp\0" -"british.museum\0" -"ishinomaki.miyagi.jp\0" -"game.tw\0cc.vt.us\0" -"umi.fukuoka.jp\0ikusaka.nagano.jp\0" -"sh.cn\0" -"judaica.museum\0gjemnes.no\0itau\0" -"slupsk.pl\0" -"musashino.tokyo.jp\0" -"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" -"malatvuopmi.no\0from-pa.com\0" -"tomakomai.hokkaido.jp\0" -"\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" -"unbi.ba\0nid.io\0" -"szex.hu\0" -"wassamu.hokkaido.jp\0naka.ibaraki.jp\0" -"kawasaki.miyagi.jp\0" -"daiwa.hiroshima.jp\0" -"is-very-sweet.org\0" -"naganohara.gunma.jp\0" -"solund.no\0" -"gose.nara.jp\0" -"juegos\0" -"sa.it\0" -"emergency.aero\0hawaii.museum\0" -"\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0" -"medio-campidano.it\0hiroo.hokkaido.jp\0" -"svizzera.museum\0doomdns.org\0" -"hioki.kagoshima.jp\0" -"edu.ac\0" -"yokosuka.kanagawa.jp\0" -"ipiranga\0" -"edu.af\0tono.iwate.jp\0takagi.nagano.jp\0" -"edu.al\0nuoro.it\0\xe5\xb3\xb6\xe6\xa0\xb9.jp\0inagi.tokyo.jp\0" -"sogndal.no\0room\0endofinternet.org\0" -"edu.an\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86.ir\0yuasa.wakayama.jp\0" -"berlev\xc3\xa5g.no\0" -"edu.ba\0" -"edu.ar\0edu.bb\0taketomi.okinawa.jp\0" -"crimea.ua\0" -"edu.au\0" -"video\0" -"edu.bh\0" -"edu.bi\0" -"edu.az\0" -"anthropology.museum\0is-a-anarchist.com\0" -"kartuzy.pl\0xin\0" -"edu.bm\0" -"watari.miyagi.jp\0" -"edu.bo\0flatanger.no\0roan.no\0" -"edu.br\0" -"edu.bs\0homedns.org\0" -"edu.bt\0" -"imabari.ehime.jp\0" -"edu.ci\0\xd1\x80\xd1\x83\xd1\x81\0" -"edu.bz\0kumiyama.kyoto.jp\0" +"saotome.st\0" +"honjo.saitama.jp\0" +"h\xc3\xb8nefoss.no\0" +"b\xc3\xb8mlo.no\0" +"living.museum\0" +"dnsiskinky.com\0" +"lig.it\0" +"auto.pl\0" +"niikappu.hokkaido.jp\0" +"seaport.museum\0" +"vibo-valentia.it\0" +"mari.ru\0homeftp.org\0" +"costume.museum\0sydney\0" +"gen.nz\0" +"aioi.hyogo.jp\0" +"oguchi.aichi.jp\0alaska.museum\0pinb.gov.pl\0" +"nnov.ru\0" +"ac.za\0" +"lib.la.us\0" +"isa-geek.com\0" +"9.bg\0hokkaido.jp\0kitadaito.okinawa.jp\0technology.museum\0fuettertdasnetz.de\0" +"gangaviika.no\0" +"gd.cn\0samukawa.kanagawa.jp\0bahcavuotna.no\0" +"miasta.pl\0lg.ua\0gle\0shopping\0de.com\0" +"money.museum\0jpmorgan\0" +"ac.zm\0" +"kumiyama.kyoto.jp\0izumo.shimane.jp\0agency\0" +"linde\0" +"kamikawa.saitama.jp\0" +"asuke.aichi.jp\0gs.tm.no\0" +"gs.nt.no\0juegos\0" +"ltda\0" +"fr.it\0fishing\0" "is-a-financialadvisor.com\0" -"izhevsk.ru\0" -"edu.cn\0" -"edu.co\0sandnessj\xc3\xb8""en.no\0" -"sardegna.it\0" -"awaji.hyogo.jp\0" -"soni.nara.jp\0" -"edu.cu\0" -"edu.cw\0clinton.museum\0\xc3\xa5mli.no\0ks.ua\0" -"\xe7\xbb\x84\xe7\xbb\x87\xe6\x9c\xba\xe6\x9e\x84\0" -"gol.no\0" -"pisz.pl\0" -"monmouth.museum\0" -"edu.dm\0z-1.compute-1.amazonaws.com\0" -"edu.do\0" -"ah.cn\0" -"edu.ec\0" -"mo.cn\0izumiotsu.osaka.jp\0" -"edu.ee\0" -"dental\0" -"edu.eg\0cartoonart.museum\0" -"trentinoalto-adige.it\0" -"ks.us\0" -"edu.dz\0homelinux.net\0" -"epilepsy.museum\0" -"nakanoto.ishikawa.jp\0shiraoka.saitama.jp\0" -"stateofdelaware.museum\0k12.ks.us\0" -"izumozaki.niigata.jp\0" -"kamisu.ibaraki.jp\0" -"edu.es\0discovery.museum\0" -"edu.et\0airtel\0" -"palermo.it\0" -"yura.wakayama.jp\0" -"\xd0\xb4\xd0\xb5\xd1\x82\xd0\xb8\0" -"go.ci\0romsa.no\0" -"omigawa.chiba.jp\0niihama.ehime.jp\0" -"villas\0" -"edu.ge\0" -"pug.it\0matsuura.nagasaki.jp\0" -"comunica\xc3\xa7\xc3\xb5""es.museum\0dyndns-ip.com\0" -"edu.gh\0" -"edu.gi\0br\xc3\xb8nn\xc3\xb8y.no\0rahkkeravju.no\0sn\xc3\xa5sa.no\0" -"go.cr\0ulsan.kr\0" -"agency\0" -"edu.gn\0" -"stavanger.no\0" -"edu.gp\0" -"edu.gr\0" -"artcenter.museum\0" -"edu.gt\0" -"fitjar.no\0" -"aosta.it\0" -"yoshino.nara.jp\0publ.pt\0" -"edu.hk\0" -"edu.hn\0higashiizu.shizuoka.jp\0" -"nf.ca\0investments\0" -"trentinosued-tirol.it\0imakane.hokkaido.jp\0" -"naie.hokkaido.jp\0" -"illustration.museum\0" -"edu.ht\0fujiyoshida.yamanashi.jp\0" -"chiyoda.gunma.jp\0" -"science-fiction.museum\0" -"so.it\0" -"kamikoani.akita.jp\0" -"edu.in\0" -"gv.ao\0" -"kyotanabe.kyoto.jp\0nabari.mie.jp\0" -"edu.iq\0" -"edu.is\0" -"gv.at\0edu.it\0" -"stuff-4-sale.us\0" -"yamagata.yamagata.jp\0" -"pasadena.museum\0" -"kawai.iwate.jp\0ryuoh.shiga.jp\0" -"saltdal.no\0stokke.no\0" -"tychy.pl\0makeup\0" -"surnadal.no\0gos.pk\0" -"edu.jo\0" -"fermo.it\0fujimi.saitama.jp\0" -"wakkanai.hokkaido.jp\0" -"nara.nara.jp\0" -"edu.kg\0\xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x9f\0" -"edu.ki\0aa.no\0" -"mo.it\0" -"kvinnherad.no\0" -"oamishirasato.chiba.jp\0sumita.iwate.jp\0" -"edu.km\0from-nm.com\0" -"edu.kn\0" -"cc.wy.us\0" -"fukui.fukui.jp\0koryo.nara.jp\0edu.kp\0" -"edu.la\0" -"edu.lb\0" -"edu.lc\0" -"kounosu.saitama.jp\0fuchu.toyama.jp\0" -"dominic.ua\0lib.ar.us\0" -"\xe7\xae\x87\xe4\xba\xba.hk\0edu.ky\0" -"edu.kz\0" -"edu.lk\0" -"go.id\0mantova.it\0funahashi.toyama.jp\0" -"chippubetsu.hokkaido.jp\0" -"hamburg.museum\0\xc3\xa5snes.no\0" -"tsuga.tochigi.jp\0" -"sciences.museum\0" -"edu.lr\0" -"luster.no\0vinnica.ua\0" -"edu.me\0" -"edu.lv\0" -"edu.mg\0" -"edu.ly\0cultural.museum\0ftpaccess.cc\0" -"kagamino.okayama.jp\0" -"edu.mk\0rygge.no\0" -"go.it\0hirono.fukushima.jp\0daito.osaka.jp\0edu.ml\0" -"salangen.no\0tromsa.no\0reviews\0" -"edu.mn\0" -"edu.mo\0" -"sv.it\0" -"cymru.museum\0e-burg.ru\0cc.ri.us\0" -"tsumagoi.gunma.jp\0gorlice.pl\0" -"edu.ms\0" -"nm.cn\0\xe5\x8d\x83\xe8\x91\x89.jp\0nonoichi.ishikawa.jp\0edu.mt\0" -"ayagawa.kagawa.jp\0edu.mv\0" -"edu.mw\0edu.ng\0b\xc3\xa5""d\xc3\xa5""ddj\xc3\xa5.no\0poltava.ua\0" -"go.jp\0edu.mx\0" -"edu.my\0ma.us\0k12.al.us\0" -"kyotamba.kyoto.jp\0" -"k12.mi.us\0" -"onna.okinawa.jp\0" -"stryn.no\0" -"pescara.it\0edu.nr\0" -"county.museum\0" -"\xe5\x95\x86\xe6\xa0\x87\0" -"tm.fr\0komae.tokyo.jp\0" -"msk.ru\0" -"bialowieza.pl\0" -"haram.no\0\xd1\x81\xd1\x80\xd0\xb1\0sells-for-u.com\0" -"go.kr\0" -"trapani.it\0takahama.fukui.jp\0nayoro.hokkaido.jp\0ibaraki.ibaraki.jp\0" -"forde.no\0edu.om\0" -"ao.it\0" -"ah.no\0edu.pa\0" -"trentino-suedtirol.it\0" -"mesaverde.museum\0cc.ky.us\0" -"taishin.fukushima.jp\0erimo.hokkaido.jp\0" -"edu.pe\0" -"como.it\0edu.pf\0" -"edu.ph\0" -"yamada.fukuoka.jp\0" -"edu.pk\0ga.us\0" -"edu.pl\0" -"edu.pn\0" -"production.aero\0sk\xc3\xa1nit.no\0" -"lucania.it\0" -"sandnes.no\0edu.qa\0" -"edu.pr\0garden\0" -"nt.au\0edu.ps\0" -"mar.it\0edu.pt\0" -"fukagawa.hokkaido.jp\0toyosato.shiga.jp\0" -"tm.hu\0edu.py\0" -"friulivenezia-giulia.it\0hiphop\0" -"coastaldefence.museum\0" -"chiyoda.tokyo.jp\0mragowo.pl\0" -"nt.ca\0" -"valle-daosta.it\0" -"hinode.tokyo.jp\0" -"lacaixa\0" -"watches\0" -"xxx\0" -"field.museum\0missoula.museum\0d\xc3\xb8nna.no\0science\0hu.com\0" -"tadaoka.osaka.jp\0" -"hayakawa.yamanashi.jp\0" -"dnsalias.org\0" -"edu.sa\0" -"edu.sb\0" -"edu.rs\0edu.sc\0lib.id.us\0" -"ogori.fukuoka.jp\0notogawa.shiga.jp\0edu.sd\0" -"repbody.aero\0id.au\0edu.ru\0k12.nj.us\0" -"loyalist.museum\0edu.rw\0edu.sg\0" -"xyz\0" -"moka.tochigi.jp\0dynathome.net\0" -"kimino.wakayama.jp\0edu.sl\0nissan\0" -"veterinaire.km\0" -"kokubunji.tokyo.jp\0edu.sn\0" -"os.hordaland.no\0" -"tm.km\0artsandcrafts.museum\0is-a-musician.com\0" -"*.kitakyushu.jp\0iitate.fukushima.jp\0" -"edu.st\0" -"av.it\0urayasu.chiba.jp\0edu.sv\0" -"florida.museum\0ninja\0" -"edu.sy\0" -"nemuro.hokkaido.jp\0edu.tj\0" -"s\xc3\xb8rum.no\0" -"yawatahama.ehime.jp\0oyamazaki.kyoto.jp\0moroyama.saitama.jp\0" -"edu.tm\0" -"shinyoshitomi.fukuoka.jp\0\xd1\x80\xd1\x84\0" -"fuel.aero\0hellas.museum\0go.pw\0edu.to\0" -"edu.ua\0" -"edu.tr\0" -"zlg.br\0edu.tt\0" -"tm.mc\0edu.tw\0fitness\0s3-us-west-2.amazonaws.com\0" -"iwaizumi.iwate.jp\0kitakata.miyazaki.jp\0" -"hembygdsforbund.museum\0" -"kumano.hiroshima.jp\0" -"tm.mg\0sec.ps\0" -"cremona.it\0" -"railway.museum\0" -"r\xc3\xa5""de.no\0is-a-lawyer.com\0" -"nishiizu.shizuoka.jp\0wajiki.tokushima.jp\0" -"edu.vc\0" -"shimonoseki.yamaguchi.jp\0" -"edu.ve\0" -"tt.im\0edu.uy\0bingo\0" -"ibestad.no\0" -"komatsu.ishikawa.jp\0meiwa.mie.jp\0\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" -"cadaques.museum\0" -"edu.vn\0" -"cyber.museum\0" -"ud.it\0aki.kochi.jp\0" -"veterinaire.fr\0" -"tm.no\0royrvik.no\0boats\0youtube\0" -"toshima.tokyo.jp\0" -"edu.vu\0" -"hazu.aichi.jp\0yoka.hyogo.jp\0" -"mo.us\0k12.az.us\0boldlygoingnowhere.org\0" -"shimamaki.hokkaido.jp\0" -"mizuho.tokyo.jp\0conf.lv\0go.th\0" -"c.bg\0" -"go.tj\0" -"indiana.museum\0edu.ws\0" -"kamifurano.hokkaido.jp\0ryugasaki.ibaraki.jp\0" -"giske.no\0safe\0" -"miyagi.jp\0" -"matta-varjjat.no\0" -"caa.aero\0firmdale\0" -"ojiya.niigata.jp\0" -"go.ug\0" -"tm.pl\0" -"go.tz\0" -"sakegawa.yamagata.jp\0" -"alvdal.no\0" -"os.hedmark.no\0" -"hizen.saga.jp\0" -"pb.ao\0chicago.museum\0fuossko.no\0" -"srv.br\0azurewebsites.net\0" -"or.at\0" -"br\xc3\xb8nn\xc3\xb8ysund.no\0" -"or.bi\0" -"higashimatsuyama.saitama.jp\0" -"l\xc3\xa1hppi.no\0" -"\xe5\x85\xac\xe5\x8f\xb8.cn\0koga.fukuoka.jp\0cern\0" -"notodden.no\0" -"katano.osaka.jp\0" -"dinosaur.museum\0windmill.museum\0" -"yonezawa.yamagata.jp\0" -"id.ir\0kasahara.gifu.jp\0" -"tm.ro\0" -"sex.hu\0college\0" -"or.ci\0starnberg.museum\0hm.no\0bloomberg\0" -"cal.it\0rns.tn\0" -"\xe5\x85\xac\xe5\x8f\xb8.hk\0tm.se\0" -"web.co\0" -"land\0" -"saga.saga.jp\0" -"or.cr\0" -"navuotna.no\0" -"onojo.fukuoka.jp\0" -"global\0" -"lib.va.us\0" -"j.bg\0" -"web.do\0" -"kagoshima.jp\0misato.akita.jp\0" -"webhop.info\0" -"nagahama.shiga.jp\0" -"bt.it\0taku.saga.jp\0" -"kraanghke.no\0" -"sakurai.nara.jp\0" -"cc.mn.us\0" -"culture.museum\0guernsey.museum\0nt.no\0" -"tachiarai.fukuoka.jp\0" -"plc.co.im\0historisch.museum\0" -"aisho.shiga.jp\0" -"coldwar.museum\0" -"motobu.okinawa.jp\0ibaraki.osaka.jp\0" -"news.hu\0sale\0" -"id.lv\0" -"anthro.museum\0" -"sondrio.it\0" -"id.ly\0lib.pa.us\0" -"finearts.museum\0" -"matsuno.ehime.jp\0yun\0" -"t\xc3\xb8nsberg.no\0" -"sciencecenter.museum\0baidar.no\0muosat.no\0" -"lind\xc3\xa5s.no\0v\xc3\xa1rgg\xc3\xa1t.no\0kiev.ua\0" -"scrapping.cc\0" -"av.tr\0" -"\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0" -"kitagata.gifu.jp\0ota.tokyo.jp\0" -"j\xc3\xb8rpeland.no\0" -"krakow.pl\0" -"zt.ua\0" -"kirovograd.ua\0" -"vb.it\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0kicks-ass.net\0" -"telefonica\0" -"fundacio.museum\0" -"tomika.gifu.jp\0" -"bodo.no\0" -"cuneo.it\0!city.nagoya.jp\0" -"neues.museum\0bryansk.ru\0nm.us\0" -"mielno.pl\0" -"elburg.museum\0" -"american.museum\0" -"skanit.no\0" -"web.id\0sakawa.kochi.jp\0" -"q.bg\0" -"or.id\0" -"lavagis.no\0tydal.no\0" -"hachijo.tokyo.jp\0" -"gs.nl.no\0vestvagoy.no\0yekaterinburg.ru\0" -"uchihara.ibaraki.jp\0" -"trentino-aadige.it\0pesarourbino.it\0masaki.ehime.jp\0sukagawa.fukushima.jp\0" -"c.la\0" -"nt.ro\0homelinux.org\0" -"pordenone.it\0chuo.fukuoka.jp\0okegawa.saitama.jp\0" -"\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" -"voyage\0\xe5\xa4\xa7\xe6\x8b\xbf\0" -"or.it\0isumi.chiba.jp\0takehara.hiroshima.jp\0" -"cc.ne.us\0" -"soja.okayama.jp\0naruto.tokushima.jp\0" -"\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" -"exchange\0" -"kaho.fukuoka.jp\0tosa.kochi.jp\0" -"asago.hyogo.jp\0kawatana.nagasaki.jp\0sex.pl\0kred\0" -"or.jp\0zip\0" -"sapo\0" -"honjyo.akita.jp\0" -"skaun.no\0knowsitall.info\0" -"stuttgart.museum\0\xc3\xb8rsta.no\0k12.tn.us\0" -"tcm.museum\0" -"kani.gifu.jp\0" -"eu.com\0" -"pp.az\0milan.it\0hikari.yamaguchi.jp\0buzz\0" -"gs.hl.no\0enterprises\0" -"miho.ibaraki.jp\0" -"codespot.com\0" -"milano.it\0" -"perso.ht\0" -"kunstsammlung.museum\0od.ua\0" -"oyama.tochigi.jp\0or.kr\0" -"estate.museum\0" -"cc.gu.us\0" -"web.lk\0" -"balsan.it\0vi.it\0shikaoi.hokkaido.jp\0" -"quebec.museum\0" -"sarl\0" -"moriguchi.osaka.jp\0" -"leikanger.no\0safety\0\xe6\x96\xb0\xe9\x97\xbb\0" -"hangout\0" -"yamashina.kyoto.jp\0yoshida.saitama.jp\0" -"research.aero\0" -"x.bg\0from-ct.com\0" -"kimobetsu.hokkaido.jp\0" -"artdeco.museum\0levanger.no\0" -"b\xc3\xb8mlo.no\0skanland.no\0" -"pro.az\0" -"or.na\0" -"kanie.aichi.jp\0" -"web.nf\0" -"or.mu\0donetsk.ua\0" -"russia.museum\0" -"pro.br\0cr.it\0mizumaki.fukuoka.jp\0" -"*.nom.br\0hara.nagano.jp\0inami.wakayama.jp\0" -"uscountryestate.museum\0" -"pi.it\0ujiie.tochigi.jp\0" -"is-a-guru.com\0" -"creation.museum\0" -"higashishirakawa.gifu.jp\0\xe5\x85\xab\xe5\x8d\xa6\0" -"sciencesnaturelles.museum\0" -"bonn.museum\0sondre-land.no\0s\xc3\xb8r-aurdal.no\0" -"ham-radio-op.net\0" -"id.us\0" -"oki.fukuoka.jp\0" -"b\xc3\xa1hccavuotna.no\0" -"katowice.pl\0" -"\xe5\xa4\xa7\xe5\x88\x86.jp\0takayama.nagano.jp\0nishinoshima.shimane.jp\0nyc.mn\0" -"folkebibl.no\0vladivostok.ru\0" -"halden.no\0" -"ninohe.iwate.jp\0" -"\xe6\x95\x99\xe8\x82\xb2.hk\0" -"ebiz.tw\0" -"gujo.gifu.jp\0rebun.hokkaido.jp\0dentist\0" -"lindesnes.no\0" -"s\xc3\xb8ndre-land.no\0" -"tamamura.gunma.jp\0akashi.hyogo.jp\0toda.saitama.jp\0" -"pro.ec\0web.pk\0blackfriday\0" -"zara\0" -"for-the.biz\0" -"vadso.no\0" -"chocolate.museum\0c.se\0" -"chikuhoku.nagano.jp\0" -"or.pw\0" -"e164.arpa\0tushu\0" -"komono.mie.jp\0" -"ok.us\0is-a-photographer.com\0" -"nuernberg.museum\0is-slick.com\0" -"\xe4\xba\xac\xe9\x83\xbd.jp\0tonosho.kagawa.jp\0" -"k12.ec\0" -"mikasa.hokkaido.jp\0" -"tom.ru\0viva\0" -"a\xc3\xa9roport.ci\0" -"umb.it\0iwafune.tochigi.jp\0mazowsze.pl\0\xd1\x83\xd0\xba\xd1\x80\0" -"bel.tr\0" -"rakkestad.no\0" -"bievat.no\0" -"saxo\0" -"fuefuki.yamanashi.jp\0" -"research.museum\0" -"ragusa.it\0nadex\0" -"jar.ru\0" -"busan.kr\0" +"kitagawa.miyazaki.jp\0plc.ly\0workisboring.com\0" +"*.sendai.jp\0" +"tohnosho.chiba.jp\0" +"wi.us\0" +"blogdns.com\0" +"ozora.hokkaido.jp\0\xe7\x8f\xa0\xe5\xae\x9d\0" +"davvenjarga.no\0" +"shichinohe.aomori.jp\0meiwa.mie.jp\0gmo\0" +"yao.osaka.jp\0kms.ru\0" +"otake.hiroshima.jp\0" +"somna.no\0tours\0publishproxy.com\0" +"chintai\0" +"s3-sa-east-1.amazonaws.com\0" +"toyotsu.fukuoka.jp\0busan.kr\0df.leg.br\0" +"botanical.museum\0gmx\0" +"fbxos.fr\0" +"hekinan.aichi.jp\0" +"philately.museum\0" +"dodge\0" +"otaki.saitama.jp\0" +"kinokawa.wakayama.jp\0" +"trentino-sudtirol.it\0motosu.gifu.jp\0cern\0" +"asahi.yamagata.jp\0from-il.com\0" +"lasalle\0" +"hitachiota.ibaraki.jp\0" +"student.aero\0" +"kakuda.miyagi.jp\0" +"mmafan.biz\0" +"florist\0goo\0" +"gop\0pramerica\0" +"omuta.fukuoka.jp\0got\0" +"gov\0" +"indianapolis.museum\0" +"finland.museum\0likes-pie.com\0" +"gotsu.shimane.jp\0" +"sling\0" +"gen.tr\0" +"r\xc3\xb8""d\xc3\xb8y.no\0" +"hokksund.no\0" +"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0" +"am.br\0duns\0" +"odesa.ua\0myeffect.net\0" +"sch.ae\0" +"es.eu.org\0" +"realestate.pl\0" +"telecity\0" +"harvestcelebration.museum\0" +"etnedal.no\0krasnodar.su\0" +"hirakata.osaka.jp\0" +"castres.museum\0" +"lucania.it\0tainai.niigata.jp\0" +"gs.of.no\0hemne.no\0skype\0" +"matsuzaki.shizuoka.jp\0\xe0\xaa\xad\xe0\xaa\xbe\xe0\xaa\xb0\xe0\xaa\xa4\0" +"saga.jp\0" +"ieee\0" +"amursk.ru\0" +"hbo\0" +"akita.akita.jp\0netbank\0" +"ky.us\0" +"nov.ru\0" +"omega\0" +"fudai.iwate.jp\0furniture\0" +"sanagochi.tokushima.jp\0turen.tn\0dvag\0" +"asakawa.fukushima.jp\0" +"egyptian.museum\0" +"natuurwetenschappen.museum\0" +"xperia\0est-mon-blogueur.com\0" +"cymru.museum\0" +"moroyama.saitama.jp\0hikari.yamaguchi.jp\0" +"nov.su\0" +"hagebostad.no\0" +"trentino.it\0shirahama.wakayama.jp\0" +"fauske.no\0" +"sopot.pl\0" +"plc.uk\0" +"usa.museum\0" +"chernovtsy.ua\0" +"vefsn.no\0" +"asso.re\0android\0" +"iveco\0" +"latina.it\0kitaaiki.nagano.jp\0" +"tsuno.miyazaki.jp\0fund\0" +"unnan.shimane.jp\0" +"philadelphiaarea.museum\0" +"nomi.ishikawa.jp\0sumita.iwate.jp\0" +"lugansk.ua\0" +"mansion.museum\0" +"media.museum\0" +"chungbuk.kr\0" +"gausdal.no\0slupsk.pl\0" +"troms\xc3\xb8.no\0" +"gent\0hobby-site.com\0" +"vaga.no\0" +"stackspace.space\0" +"fresenius\0" +"ullensvang.no\0gouv.rw\0" +"us.eu.org\0" +"sor-odal.no\0" +"cc.nv.us\0" +"fujikawaguchiko.yamanashi.jp\0gouv.sn\0global.prod.fastly.net\0" +"inashiki.ibaraki.jp\0sebastopol.ua\0cc.ct.us\0" +"togitsu.nagasaki.jp\0omaha.museum\0buzz\0" +"tateshina.nagano.jp\0edu.eu.org\0" +"lo.it\0" +"goodhands\0" +"mysecuritycamera.org\0" +"tysvar.no\0" +"democrat\0" +"adachi.tokyo.jp\0" +"delivery\0" +"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0" +"greta.fr\0szkola.pl\0" +"iitate.fukushima.jp\0hida.gifu.jp\0" +"sch.id\0tonami.toyama.jp\0" +"asso.nc\0odda.no\0" +"dgca.aero\0" +"kommune.no\0" +"build\0scor\0" +"scot\0" +"kimitsu.chiba.jp\0lunner.no\0salat.no\0\xd2\x9b\xd0\xb0\xd0\xb7\0coupons\0" +"sch.ir\0" +"hiv\0" +"gotdns.com\0" +"koza.wakayama.jp\0" +"ro.com\0" +"otsuchi.iwate.jp\0k12.ny.us\0" +"edogawa.tokyo.jp\0" +"sch.jo\0algard.no\0" +"hasama.oita.jp\0" +"hara.nagano.jp\0" +"kitakata.miyazaki.jp\0elblag.pl\0" +"horology.museum\0" +"arboretum.museum\0sciencehistory.museum\0" +"commbank\0" +"kounosu.saitama.jp\0" +"arq.br\0" +"ikeda.osaka.jp\0" +"conference.aero\0" +"shinonsen.hyogo.jp\0hkt\0" +"tynset.no\0" +"okawa.kochi.jp\0" +"meland.no\0" +"\xc3\xa5seral.no\0" +"kl\xc3\xa6""bu.no\0" +"lib.wy.us\0" +"canada.museum\0" +"sch.lk\0" +"protonet.io\0" +"haga.tochigi.jp\0allfinanz\0" +"shiroishi.miyagi.jp\0jetzt\0" +"miyazu.kyoto.jp\0" +"tagawa.fukuoka.jp\0zoology.museum\0" +"prd.fr\0mishima.fukushima.jp\0" +"choyo.kumamoto.jp\0cc.oh.us\0" +"kharkiv.ua\0" +"yatsushiro.kumamoto.jp\0" +"sch.ly\0fi.eu.org\0" +"business\0" +"estate\0" +"ao.it\0bari.it\0antiques.museum\0" +"property\0" +"!city.kitakyushu.jp\0" +"svalbard.no\0" +"happou.akita.jp\0skedsmokorset.no\0" +"kumakogen.ehime.jp\0" +"taketa.oita.jp\0" +"sch.ng\0ak.us\0" +"graz.museum\0krakow.pl\0" +"meet\0" +"ulsan.kr\0" +"asso.km\0cartoonart.museum\0" +"teramo.it\0" +"matsumoto.kagoshima.jp\0" +"iheya.okinawa.jp\0" +"\xd9\xbe\xd8\xa7\xda\xa9\xd8\xb3\xd8\xaa\xd8\xa7\xd9\x86\0" +"gouv.km\0" +"is-into-anime.com\0" +"yawara.ibaraki.jp\0" +"sic.it\0" "rovno.ua\0" -"pilot.aero\0" -"dell-ogliastra.it\0" -"space.museum\0" -"asakuchi.okayama.jp\0" -"kafjord.no\0" -"sakado.saitama.jp\0" -"k12.ut.us\0" -"matsushima.miyagi.jp\0" -"or.th\0web.tj\0" -"communication.museum\0naturalsciences.museum\0" -"pro.ht\0rawa-maz.pl\0" -"ashiya.hyogo.jp\0" -"udmurtia.ru\0ck.ua\0" -"eastcoast.museum\0gs.va.no\0motorcycles\0praxi\0" -"web.tr\0" -"cechire.com\0" -"choshi.chiba.jp\0" -"avellino.it\0kuchinotsu.nagasaki.jp\0" -"or.ug\0" -"or.tz\0" -"ap-southeast-2.compute.amazonaws.com\0" -"kusatsu.gunma.jp\0okawa.kochi.jp\0yamaga.kumamoto.jp\0hikone.shiga.jp\0" -"selfip.info\0" -"urausu.hokkaido.jp\0taki.mie.jp\0" -"essex.museum\0" -"group\0" -"or.us\0web.ve\0" -"tama.tokyo.jp\0" -"l\xc3\xb8""dingen.no\0today\0likescandy.com\0" -"iizuka.fukuoka.jp\0" -"\xe4\xb8\xad\xe4\xbf\xa1\0" -"takamori.kumamoto.jp\0" -"kibichuo.okayama.jp\0" +"asahikawa.hokkaido.jp\0nagatoro.saitama.jp\0hot\0" +"how\0" +"everbank\0" +"asso.mc\0getmyip.com\0" +"campania.it\0" +"capital\0" +"kawanishi.yamagata.jp\0rsvp\0" +"\xe9\xb9\xbf\xe5\x85\x90\xe5\xb3\xb6.jp\0" +"glogow.pl\0recht.pro\0sch.qa\0" +"jpn.com\0" +"is-a-candidate.org\0" +"i234.me\0" +"ws.na\0" +"gouv.ml\0" +"mydissent.net\0" +"prd.km\0" +"qld.gov.au\0" +"bc.ca\0" +"ogi.saga.jp\0" +"arts.museum\0mosj\xc3\xb8""en.no\0isa-geek.net\0" +"is-a-caterer.com\0" +"lib.mi.us\0gb.com\0" +"katsushika.tokyo.jp\0naustdal.no\0" +"nanao.ishikawa.jp\0" +"yoshida.shizuoka.jp\0ibm\0" +"\xd0\xbc\xd0\xba\xd0\xb4\0" +"austin.museum\0outsystemscloud.com\0" +"ichihara.chiba.jp\0" +"cookingchannel\0" +"sch.sa\0corsica\0" +"ice\0" +"kiso.nagano.jp\0" +"gs.ol.no\0from-wi.com\0" +"friuli-venezia-giulia.it\0mc.it\0" +"prd.mg\0software\0" +"aq.it\0ba.it\0" +"toho.fukuoka.jp\0" +"fjaler.no\0" +"hareid.no\0" +"dnsalias.com\0" +"stange.no\0" +"htc\0" +"nanto.toyama.jp\0icu\0" "kristiansund.no\0" -"dallas.museum\0diamonds\0" -"daegu.kr\0" -"svalbard.no\0" -"rocher\0" -"chonan.chiba.jp\0" -"evenassi.no\0" -"cinema.museum\0bardu.no\0" -"midori.chiba.jp\0starostwo.gov.pl\0" -"balestrand.no\0" -"homeunix.net\0" -"forsand.no\0" -"\xe3\x82\xb3\xe3\x83\xa0\0" -"steiermark.museum\0" -"kamiizumi.saitama.jp\0fukumitsu.toyama.jp\0" -"from-ar.com\0" -"gosen.niigata.jp\0" -"s\xc3\xb8gne.no\0chernivtsi.ua\0vi.us\0" -"takahama.aichi.jp\0kamiichi.toyama.jp\0" -"memorial.museum\0k12.va.us\0" -"hitachiota.ibaraki.jp\0taiwa.miyagi.jp\0" -"odo.br\0minamiuonuma.niigata.jp\0\xe5\x85\xac\xe5\x8f\xb8\0" -"shimada.shizuoka.jp\0" -"mobi\0oyer.no\0cr.ua\0" -"\xe6\xb2\x96\xe7\xb8\x84.jp\0" -"pro.na\0b\xc3\xa1hcavuotna.no\0\xd7\xa7\xd7\x95\xd7\x9d\0" -"ogano.saitama.jp\0" -"\xe6\xb8\xb8\xe6\x88\x8f\0" -"pro.mv\0" -"environmentalconservation.museum\0" -"takatsuki.shiga.jp\0" -"www.ro\0" -"furukawa.miyagi.jp\0" -"balat.no\0cc.va.us\0" -"h\xc3\xb8ylandet.no\0schule\0" -"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86.ir\0" -"aostavalley.it\0ferrara.it\0kashiwazaki.niigata.jp\0" -"consulting.aero\0n\xc3\xa5\xc3\xa5mesjevuemie.no\0" -"k12.ct.us\0" -"forli-cesena.it\0warszawa.pl\0" -"media.aero\0moda\0" -"kuki.saitama.jp\0" -"b\xc3\xa1jddar.no\0vikna.no\0k12.pa.us\0" -"pro.om\0boutique\0" -"katsuragi.wakayama.jp\0" -"esashi.hokkaido.jp\0urakawa.hokkaido.jp\0hamatama.saga.jp\0" -"kg.kr\0" -"appspot.com\0" -"mashiko.tochigi.jp\0" -"kuban.ru\0" -"kawanehon.shizuoka.jp\0" -"africa\0" -"suldal.no\0pp.ru\0pp.se\0cc.pa.us\0" -"modena.it\0" -"krym.ua\0" -"pro.pr\0" -"goshiki.hyogo.jp\0" -"sasebo.nagasaki.jp\0" +"yekaterinburg.ru\0" +"certification.aero\0" +"harstad.no\0" +"ichinomiya.aichi.jp\0" +"ibestad.no\0" +"logistics.aero\0" +"arendal.no\0" +"yaese.okinawa.jp\0hoylandet.no\0midsund.no\0" +"endoftheinternet.org\0" +"ohtawara.tochigi.jp\0" +"koeln.museum\0" +"kyonan.chiba.jp\0" +"meme\0to.leg.br\0" +"hashikami.aomori.jp\0" +"k12.tx.us\0" +"association.aero\0" +"k12.dc.us\0" +"gorizia.it\0dealer\0" +"miho.ibaraki.jp\0kotoura.tottori.jp\0" +"takazaki.miyazaki.jp\0" +"asaminami.hiroshima.jp\0skierva.no\0ifm\0" +"homeftp.net\0" +"naval.museum\0" +"histoire.museum\0mango\0" +"bristol.museum\0" +"vologda.su\0" +"ontario.museum\0" +"\xd0\xbc\xd0\xbe\xd0\xbd\0" +"*.compute.estate\0" +"higashiyoshino.nara.jp\0alt.za\0" +"chino.nagano.jp\0" +"gjerstad.no\0menu\0" +"rl.no\0" +"\xe3\x82\xbb\xe3\x83\xbc\xe3\x83\xab\0zappos\0s3-external-1.amazonaws.com\0from-sc.com\0" +"chelyabinsk.ru\0" +"haram.no\0" +"fujikawa.shizuoka.jp\0" +"microlight.aero\0" +"automotive.museum\0virtual.museum\0" +"yurihonjo.akita.jp\0akiruno.tokyo.jp\0plantation.museum\0" +"myqnapcloud.com\0" +"rn.it\0tuxfamily.org\0" +"lu.it\0me.it\0noto.ishikawa.jp\0laakesvuemie.no\0" +"bokn.no\0" +"takaoka.toyama.jp\0" +"is-an-anarchist.com\0" +"yakumo.hokkaido.jp\0ogano.saitama.jp\0" +"bestbuy\0" +"ayabe.kyoto.jp\0ma.us\0theater\0" +"mosjoen.no\0" +"rissa.no\0" +"amagasaki.hyogo.jp\0" +"taishi.osaka.jp\0snillfjord.no\0vologda.ru\0s3-us-west-2.amazonaws.com\0" +"macerata.it\0" +"stj\xc3\xb8rdalshalsen.no\0" +"dazaifu.fukuoka.jp\0" +"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" +"sch.zm\0ventures\0" +"florence.it\0brasil.museum\0" +"rzeszow.pl\0homedepot\0" +"piw.gov.pl\0design\0" +"sardegna.it\0alibaba\0" +"arna.no\0" +"tsuga.tochigi.jp\0" +"shichikashuku.miyagi.jp\0" +"ddns.me\0" +"kumano.hiroshima.jp\0nakatane.kagoshima.jp\0k12.de.us\0seat\0" +"pa.gov.pl\0" +"rennes\xc3\xb8y.no\0" +"nishiaizu.fukushima.jp\0" +"avellino.it\0" +"cnt.br\0eu.int\0bolzano.it\0" +"kiyama.saga.jp\0\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88\0" +"heroy.nordland.no\0" +"ggee\0" +"from-ne.com\0" +"chuo.chiba.jp\0kyoto\0" +"shinto.gunma.jp\0" +"network\0" +"*.platform.sh\0" +"science\0" +"hasami.nagasaki.jp\0" +"lib.me.us\0" "marine.ru\0" -"nanporo.hokkaido.jp\0" -"sa.gov.au\0frogn.no\0is-a-cpa.com\0" -"vaksdal.no\0" -"tomiya.miyagi.jp\0" -"orskog.no\0" -"\xe5\x9f\xbc\xe7\x8e\x89.jp\0" -"missile.museum\0theater.museum\0" -"nanto.toyama.jp\0jeonbuk.kr\0" -"unj\xc3\xa1rga.no\0" -"crotone.it\0" -"2000.hu\0\xe7\x8f\xa0\xe5\xae\x9d\0" -"pp.ua\0" -"broker\0" -"kui.hiroshima.jp\0" -"aerobatic.aero\0x.se\0lugansk.ua\0" -"perso.sn\0" -"palace.museum\0hob\xc3\xb8l.no\0plo.ps\0" -"agriculture.museum\0" -"nozawaonsen.nagano.jp\0mitsuke.niigata.jp\0parliament.nz\0" -"hattfjelldal.no\0" -"jeonnam.kr\0mielec.pl\0" -"wallonie.museum\0" -"shimabara.nagasaki.jp\0" -"higashimurayama.tokyo.jp\0" -"k12.pr.us\0works\0" -"sado.niigata.jp\0world\0" -"eid.no\0" -"nishiwaki.hyogo.jp\0minamisanriku.miyagi.jp\0perso.tn\0" -"hanamigawa.chiba.jp\0" -"mikawa.yamagata.jp\0" -"odesa.ua\0" -"obuse.nagano.jp\0" -"from-md.com\0" -"en.it\0koga.ibaraki.jp\0" -"lincoln.museum\0aure.no\0gildeskal.no\0belgorod.ru\0" -"pro.tt\0" +"rackmaze.net\0" +"baths.museum\0uscountryestate.museum\0damnserver.com\0" +"ing\0" +"kvinnherad.no\0siellak.no\0" +"chat\0" +"net.ac\0tambov.ru\0ink\0" +"net.ae\0toyono.osaka.jp\0nishiazai.shiga.jp\0" +"net.af\0niki.hokkaido.jp\0" +"net.ag\0r\xc3\xa1isa.no\0\xd1\x83\xd0\xbf\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" +"net.ai\0" +"harima.hyogo.jp\0" +"net.al\0int\0dinosaur.museum\0" +"liguria.it\0" +"net.ba\0health.nz\0seek\0" +"net.ar\0net.bb\0" +"net.au\0router.management\0" +"net.bh\0" +"net.az\0" +"tabuse.yamaguchi.jp\0ae.org\0" +"tokai.aichi.jp\0khv.ru\0" +"net.bm\0zoological.museum\0" +"net.bo\0wegrow.pl\0" +"fantasyleague.cc\0" +"net.br\0" +"net.bs\0" +"net.bt\0" +"fortworth.museum\0" +"net.ci\0" +"net.bz\0luxe\0" +"serveblog.net\0" +"pistoia.it\0" +"net.cm\0uchiko.ehime.jp\0" +"net.cn\0" +"net.co\0izena.okinawa.jp\0iwata.shizuoka.jp\0" +"r\xc3\xa6lingen.no\0zp.gov.pl\0" +"nagano.jp\0" +"net.cu\0monzaedellabrianza.it\0k12.co.us\0\xec\x82\xbc\xec\x84\xb1\0" +"tube\0" +"net.cw\0" +"net.cy\0time.no\0" +"aerobatic.aero\0" +"net.dm\0" +"press.cy\0net.do\0" +"komono.mie.jp\0" +"cim.br\0" +"net.ec\0" +"kagoshima.jp\0rochester.museum\0plo.ps\0myvnc.com\0" +"net.eg\0" +"ruhr\0" +"leka.no\0" +"net.dz\0obu.aichi.jp\0jcb\0" +"and.museum\0" +"krym.ua\0" +"ako.hyogo.jp\0" +"oketo.hokkaido.jp\0" +"helsinki\0" +"net.et\0misato.akita.jp\0bbs.tr\0" +"sd.cn\0kostroma.ru\0" +"\xe5\xae\xae\xe5\x9f\x8e.jp\0jcp\0" +"hb.cn\0" +"ist\0" +"onyourside\0" +"ba.leg.br\0" +"mi.it\0toyama.jp\0me.tz\0" +"aver\xc3\xb8y.no\0k-uralsk.ru\0me.uk\0" +"net.ge\0bg.it\0" +"net.gg\0hyllestad.no\0" +"singles\0" +"yasaka.nagano.jp\0" +"security\0from-az.net\0" +"net.gl\0sardinia.it\0sakai.osaka.jp\0me.us\0" +"ushiku.ibaraki.jp\0r\xc3\xa5holt.no\0" +"net.gn\0as.us\0itv\0" +"net.gp\0" +"educator.aero\0net.gr\0dsmynas.org\0" +"net.gt\0technology\0" +"vennesla.no\0dunlop\0" +"takayama.gifu.jp\0" +"net.gy\0" +"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0" +"net.hk\0" +"\xd7\x99\xd7\xa8\xd7\x95\xd7\xa9\xd7\x9c\xd7\x99\xd7\x9d.museum\0\xc3\xa5lg\xc3\xa5rd.no\0ferrero\0" +"net.hn\0" +"minamiyamashiro.kyoto.jp\0" +"unicom\0" +"massa-carrara.it\0" +"net.ht\0net.id\0" +"health.vn\0" +"iwc\0" +"net.il\0hizen.saga.jp\0" +"net.im\0owani.aomori.jp\0k12.tn.us\0" +"net.in\0os.hedmark.no\0" +"trieste.it\0mc.eu.org\0" +"net.iq\0" +"net.ir\0" +"passenger-association.aero\0net.is\0" +"stokke.no\0" +"net.je\0us.org\0" +"sweetpepper.org\0" +"iwakura.aichi.jp\0" +"lardal.no\0" +"lancashire.museum\0eidskog.no\0" +"blogsyte.com\0" +"net.jo\0" +"broke-it.net\0" +"channel\0from-ok.com\0" +"net.kg\0" +"net.ki\0vista\0" +"sakyo.kyoto.jp\0" +"akaiwa.okayama.jp\0verisign\0" +"lib.ma.us\0" +"net.kn\0is-into-cars.com\0" +"lib.as.us\0lt.eu.org\0" +"grainger\0" +"maniwa.okayama.jp\0net.la\0" +"net.lb\0" +"net.lc\0" +"usui.fukuoka.jp\0nagi.okayama.jp\0" +"cc.or.us\0" +"amur.ru\0tom.ru\0jio\0" +"ryugasaki.ibaraki.jp\0jeju.kr\0sko.gov.pl\0" +"net.ky\0" +"asti.it\0net.kz\0" +"net.lk\0" +"montreal.museum\0" "sibenik.museum\0" -"re.it\0" -"storage\0" -"kinokawa.wakayama.jp\0" -"sci.eg\0" -"manchester.museum\0" -"rs.ba\0" -"4.bg\0" -"k12.tr\0" -"minamioguni.kumamoto.jp\0" -"pro.vn\0chat\0dyndns.tv\0" -"dp.ua\0" -"nom.ad\0" -"nom.ag\0fed.us\0" -"kanna.gunma.jp\0inabe.mie.jp\0izumi.osaka.jp\0re.kr\0" -"dielddanuorri.no\0" -"le.it\0" -"firm.ht\0" -"modalen.no\0" -"hitachiomiya.ibaraki.jp\0taishi.osaka.jp\0" -"kin.okinawa.jp\0" -"windows\0" -"sc.cn\0" -"k12.vi\0" -"qld.gov.au\0lib.al.us\0" -"firm.in\0yashiro.hyogo.jp\0" -"manno.kagawa.jp\0" -"\xe9\xa4\x90\xe5\x8e\x85\0" -"kuroiso.tochigi.jp\0" -"abogado\0" -"okinawa\0kicks-ass.org\0" -"ford\0" -"bellevue.museum\0" -"shizuoka.jp\0" -"misaki.osaka.jp\0" -"fe.it\0karuizawa.nagano.jp\0" -"wa.edu.au\0nom.co\0dyndns.ws\0" -"miyako.fukuoka.jp\0earth\0" -"film.hu\0" +"gr.it\0sakuragawa.ibaraki.jp\0" +"bi.it\0" +"net.ma\0oceanographique.museum\0" +"net.lr\0" +"kamioka.akita.jp\0" +"ikaruga.nara.jp\0epson\0" +"net.me\0wy.us\0" +"net.lv\0hoyanger.no\0" +"net.ly\0" +"lakas.hu\0gr.jp\0takagi.nagano.jp\0net.mk\0" +"net.ml\0" +"stadt.museum\0school\0" +"kahoku.yamagata.jp\0karmoy.no\0" +"net.mo\0" +"kawajima.saitama.jp\0" +"treviso.it\0kamiamakusa.kumamoto.jp\0net.ms\0pittsburgh.museum\0" +"net.mt\0" +"koganei.tokyo.jp\0net.mu\0" +"net.mv\0net.nf\0\xe3\x83\x95\xe3\x82\xa1\xe3\x83\x83\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3\0" +"net.mw\0net.ng\0" +"yazu.tottori.jp\0net.mx\0" +"net.my\0net.ni\0" +"net.mz\0" +"jlc\0" +"hichiso.gifu.jp\0tatarstan.ru\0" +"am.leg.br\0" +"shinichi.hiroshima.jp\0onagawa.miyagi.jp\0net.nr\0" +"jll\0" +"togo.aichi.jp\0" +"lipsy\0" +"net.nz\0k12.in.us\0" +"ishikawa.jp\0net.om\0" +"naklo.pl\0globo\0" +"gv.ao\0" +"net.pa\0" +"yamanouchi.nagano.jp\0koebenhavn.museum\0" +"gv.at\0net.pe\0" +"mihama.mie.jp\0net.ph\0jmp\0" +"theatre\0" +"sa.edu.au\0" +"net.pk\0" +"wildlife.museum\0vanylven.no\0net.pl\0" +"sagae.yamagata.jp\0botany.museum\0" +"net.pn\0abbott\0" +"nishikawa.yamagata.jp\0" +"selfip.net\0" +"net.qa\0" +"net.pr\0aigo\0jnj\0" +"net.ps\0ryukyu\0" +"austrheim.no\0net.pt\0" "takahashi.okayama.jp\0" -"suita.osaka.jp\0" -"\xe5\xb2\xa1\xe5\xb1\xb1.jp\0toyota.yamaguchi.jp\0" -"firm.co\0" -"xz.cn\0sakae.nagano.jp\0" -"fareast.ru\0is-a-soxfan.org\0" -"la-spezia.it\0tempio-olbia.it\0" -"radoy.no\0" -"shimofusa.chiba.jp\0" -"issmarterthanyou.com\0" -"okuma.fukushima.jp\0" -"is-an-entertainer.com\0" -"ustka.pl\0" -"nexus\0" -"is-into-anime.com\0" -"kadogawa.miyazaki.jp\0" -"gc.ca\0mj\xc3\xb8ndalen.no\0holmestrand.no\0divttasvuotna.no\0" -"art.br\0puglia.it\0maniwa.okayama.jp\0" -"workinggroup.aero\0" -"yoshimi.saitama.jp\0" -"channel\0" -"ac.ae\0" -"nom.es\0" -"storfjord.no\0" -"owariasahi.aichi.jp\0hotmail\0" -"astronomy.museum\0" -"losangeles.museum\0" -"trentino-sud-tirol.it\0" -"ac.at\0" -"ac.be\0crafts.museum\0" -"nom.fr\0rishirifuji.hokkaido.jp\0kamikawa.saitama.jp\0" -"kouhoku.saga.jp\0akiruno.tokyo.jp\0" -"art.do\0pubol.museum\0" -"not.br\0vallee-aoste.it\0" -"hanggliding.aero\0" -"ravenna.it\0" -"katsuyama.fukui.jp\0kitahata.saga.jp\0" -"builders\0" -"art.dz\0" -"ac.ci\0" -"choyo.kumamoto.jp\0" -"ac.cn\0kawajima.saitama.jp\0" -"shimoichi.nara.jp\0global.ssl.fastly.net\0" -"rl.no\0" -"ac.cr\0za.bz\0" -"tobe.ehime.jp\0" -"scor\0" -"leasing.aero\0presse.km\0" -"scot\0" -"makurazaki.kagoshima.jp\0tome.miyagi.jp\0" -"andriatranibarletta.it\0" -"takarazuka.hyogo.jp\0" -"air.museum\0" -"kanra.gunma.jp\0" -"sumoto.kumamoto.jp\0" -"ambulance.museum\0" -"motorcycle.museum\0isteingeek.de\0" -"sc.kr\0" -"journal.aero\0" -"wiki.br\0mc.it\0kusu.oita.jp\0" -"cloudcontrolapp.com\0" -"inami.toyama.jp\0" -"presse.ml\0" -"broke-it.net\0" -"assn.lk\0montreal.museum\0" -"egyptian.museum\0" -"legal\0" -"nom.km\0its.me\0" -"art.ht\0" -"kotoura.tottori.jp\0" -"lutsk.ua\0" -"chino.nagano.jp\0" -"mitou.yamaguchi.jp\0" -"ujitawara.kyoto.jp\0yomitan.okinawa.jp\0" -"rieti.it\0sera.hiroshima.jp\0joetsu.niigata.jp\0" -"unjarga.no\0" -"ac.gn\0watch\0" -"nishihara.okinawa.jp\0*.platform.sh\0" -"beauxarts.museum\0" -"kviteseid.no\0rissa.no\0" -"toei.aichi.jp\0" -"nom.mg\0" -"piedmont.it\0" -"kongsberg.no\0" -"kunstunddesign.museum\0flakstad.no\0rennebu.no\0" -"campobasso.it\0nowaruda.pl\0gdansk.pl\0" -"lib.hi.us\0" -"events\0" -"ac.id\0" -"touch.museum\0narviika.no\0" -"kamitsue.oita.jp\0" -"gon.pk\0" -"ac.im\0" -"ac.in\0" -"glass\0" -"ac.ir\0" -"firm.ve\0" -"murakami.niigata.jp\0" -"furano.hokkaido.jp\0" -"melhus.no\0" -"ha.cn\0andria-trani-barletta.it\0computer\0" -"gives\0" -"saku.nagano.jp\0" -"sx.cn\0ac.jp\0" -"coloradoplateau.museum\0livinghistory.museum\0is-a-candidate.org\0" -"flog.br\0" -"rsvp\0" -"nom.pa\0" -"nom.pe\0" -"sweden.museum\0namsos.no\0" -"tanabe.wakayama.jp\0" +"mi.th\0lib.sd.us\0" +"nishiawakura.okayama.jp\0net.py\0" +"sh.cn\0" +"mo.cn\0tempio-olbia.it\0gamo.shiga.jp\0weir\0" +"org.ac\0sb.ua\0" +"org.ae\0hotels\0" +"org.af\0" +"org.ag\0fetsund.no\0" +"takatori.nara.jp\0" +"org.ai\0" +"orange\0" +"mihama.wakayama.jp\0tuva.su\0" +"org.al\0seoul.kr\0" +"active\0" +"lerdal.no\0servehumour.com\0" +"jot\0" +"org.ba\0ingatlan.hu\0" +"org.ar\0org.bb\0" +"po.gov.pl\0" +"yasugi.shimane.jp\0is-an-actor.com\0" +"org.au\0net.sa\0barclays\0joy\0" +"net.sb\0mi.us\0" +"net.sc\0" +"org.bh\0echizen.fukui.jp\0net.sd\0nissan\0" +"org.bi\0net.ru\0" +"org.az\0\xe7\xb5\x84\xe7\xbb\x87.hk\0" +"net.rw\0net.sg\0" +"a\xc3\xa9roport.ci\0net.sh\0" +"org.bm\0" +"tateyama.chiba.jp\0" +"org.bo\0" +"uji.kyoto.jp\0net.sl\0" +"org.br\0mantova.it\0" +"org.bs\0s\xc3\xb8r-odal.no\0net.so\0nissay\0" +"org.bt\0" +"org.bw\0" +"aosta.it\0net.st\0*.triton.zone\0" +"org.ci\0" +"org.bz\0hakusan.ishikawa.jp\0kudoyama.wakayama.jp\0leirfjord.no\0" +"tos.it\0space.museum\0" +"ikeda.hokkaido.jp\0net.th\0iamallama.com\0" +"net.sy\0" +"org.cn\0langevag.no\0net.tj\0" +"org.co\0hirono.iwate.jp\0" +"shunan.yamaguchi.jp\0net.tm\0" +"rikubetsu.hokkaido.jp\0net.tn\0inc.hk\0" +"net.to\0ap.leg.br\0" +"org.cu\0kameyama.mie.jp\0net.ua\0" +"iwaizumi.iwate.jp\0losangeles.museum\0hob\xc3\xb8l.no\0net.tr\0" +"org.cw\0" +"net.tt\0" +"org.cy\0" +"afamilycompany\0" +"ggf.br\0tuva.ru\0net.tw\0" +"wada.nagano.jp\0" +"org.dm\0" +"schweiz.museum\0" +"org.do\0net.uk\0nikon\0" +"govt.nz\0\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0\0" +"org.ec\0sexy\0" +"org.ee\0chesapeakebay.museum\0bingo\0" +"org.eg\0kamijima.ehime.jp\0net.vc\0" +"tenei.fukushima.jp\0\xc3\xa5""fjord.no\0net.ve\0" +"org.dz\0izumiotsu.osaka.jp\0" +"yamagata.ibaraki.jp\0obninsk.su\0" +"net.uy\0net.vi\0" +"kuji.iwate.jp\0net.uz\0" +"net.vn\0hdfcbank\0ftpaccess.cc\0" +"org.es\0" +"org.et\0" +"trentinosudtirol.it\0nakasatsunai.hokkaido.jp\0" +"franziskaner.museum\0sf.no\0lib.nm.us\0" +"net.vu\0" +"shibuya.tokyo.jp\0funahashi.toyama.jp\0" +"gx.cn\0" +"press.se\0mk.ua\0" +"esashi.hokkaido.jp\0" +"gamvik.no\0" +"abr.it\0" +"org.ge\0" +"gs.va.no\0" +"org.gg\0net.ws\0" +"org.gh\0mo.it\0lomza.pl\0zhitomir.ua\0cupcake.is\0" +"org.gi\0" "beiarn.no\0" -"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0handa.aichi.jp\0edogawa.tokyo.jp\0nom.pl\0" -"snoasa.no\0" -"ac.kr\0abb\0" -"tokigawa.saitama.jp\0" -"surgery\0" -"nakanojo.gunma.jp\0takino.hyogo.jp\0" -"construction\0" -"tinn.no\0" -"ta.it\0\xe6\x97\xb6\xe5\xb0\x9a\0" -"kitadaito.okinawa.jp\0" -"ac.ma\0" -"vlog.br\0" -"kirkenes.no\0" -"urbino-pesaro.it\0town\0" -"ac.me\0solutions\0" -"gouv.fr\0novara.it\0" -"gs.jan-mayen.no\0" -"mat.br\0" -"nom.re\0" -"filatelia.museum\0" -"aco\0" -"pistoia.it\0" -"versailles.museum\0" -"community.museum\0rennes\xc3\xb8y.no\0nom.ro\0" -"agr.br\0chikugo.fukuoka.jp\0" -"ac.mu\0stavern.no\0homeunix.org\0" -"ac.mw\0" -"mutsuzawa.chiba.jp\0" -"virtual.museum\0" -"intl.tn\0art.pl\0" -"dnepropetrovsk.ua\0" -"ppg.br\0" -"firm.ro\0" -"tas.au\0kautokeino.no\0" -"na.it\0" -"kvanangen.no\0pub.sa\0sc.ug\0" -"ads\0" -"gx.cn\0sc.tz\0" -"gouv.ht\0" -"somna.no\0fl.us\0toys\0" -"kutchan.hokkaido.jp\0ac.nz\0" -"iveland.no\0nordkapp.no\0" -"rovigo.it\0" -"\xc3\xa5""fjord.no\0sc.us\0" -"veneto.it\0report\0" -"nalchik.ru\0lib.ok.us\0" -"iwaki.fukushima.jp\0yatsuka.shimane.jp\0" -"lindas.no\0tvedestrand.no\0ac.pa\0nom.tm\0k12.sc.us\0omega\0" -"mjondalen.no\0" -"obihiro.hokkaido.jp\0cri.nz\0" -"matsumoto.kagoshima.jp\0" -"state.museum\0fl\xc3\xa5.no\0rauma.no\0vennesla.no\0tires\0" -"afl\0" -"gouv.bj\0" -"ac.pr\0" -"usuki.oita.jp\0" -"oregon.museum\0" -"matsusaka.mie.jp\0tochio.niigata.jp\0lebork.pl\0" -"stat.no\0" -"balsfjord.no\0karlsoy.no\0" -"mugi.tokushima.jp\0art.sn\0" -"freight.aero\0gouv.ci\0" -"coach\0" -"marche.it\0nishiawakura.okayama.jp\0" -"kids.us\0" -"shimonita.gunma.jp\0kitagawa.miyazaki.jp\0" -"tv.bb\0firm.nf\0" -"udine.it\0" -"nagasaki.jp\0" -"dni.us\0" -"luroy.no\0" -"tv.bo\0education.museum\0cooking\0" -"kagawa.jp\0" -"ac.rs\0" -"tv.br\0aq.it\0ba.it\0" -"usgarden.museum\0ac.ru\0ac.se\0" -"ac.rw\0aig\0" -"panama.museum\0bahcavuotna.no\0stord.no\0" -"shibuya.tokyo.jp\0" -"rehab\0" -"consultant.aero\0harstad.no\0" -"spjelkavik.no\0moareke.no\0" -"ono.fukui.jp\0" -"ac.th\0" -"imageandsound.museum\0" -"ac.sz\0ac.tj\0" -"malbork.pl\0" -"usa.oita.jp\0" -"bahn.museum\0educational.museum\0" -"stjordalshalsen.no\0" -"kozagawa.wakayama.jp\0" -"uozu.toyama.jp\0" -"ac.ug\0s3-us-west-1.amazonaws.com\0" -"education\0" -"ac.tz\0" -"pharmaciens.km\0ac.uk\0" -"hachinohe.aomori.jp\0" -"of.by\0ha.no\0" -"qsl.br\0to.it\0okayama.jp\0higashi.okinawa.jp\0" +"org.gl\0" +"is-by.us\0" +"ip6.arpa\0org.gn\0" +"org.gp\0sd.us\0" +"org.gr\0otofuke.hokkaido.jp\0" +"org.gt\0kfh\0" +"alsace\0exposed\0" +"nogi.tochigi.jp\0london.museum\0" +"aircraft.aero\0org.gy\0" +"courses\0" +"org.hk\0" +"org.hn\0" +"dlugoleka.pl\0" +"sorreisa.no\0mk.eu.org\0" +"org.ht\0" +"org.hu\0nishiizu.shizuoka.jp\0net.za\0" +"shimizu.shizuoka.jp\0" +"shiwa.iwate.jp\0natori.miyagi.jp\0haebaru.okinawa.jp\0" +"eu-central-1.compute.amazonaws.com\0" +"bern.museum\0" +"org.il\0mihara.hiroshima.jp\0" +"org.im\0higashishirakawa.gifu.jp\0aviation.museum\0" +"org.in\0" +"from-mn.com\0" +"org.iq\0net.zm\0" +"org.ir\0" +"org.is\0" +"jewelry\0static.land\0" +"org.je\0youtube\0" +"trentinosuedtirol.it\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xd8\xa9\0" +"donetsk.ua\0\xd0\xbe\xd1\x80\xd0\xb3\0" +"salerno.it\0shoo.okayama.jp\0stockholm\0" +"shibata.miyagi.jp\0" +"kia\0" +"beeldengeluid.museum\0" +"org.jo\0levanger.no\0" +"touch.museum\0" +"tsukigata.hokkaido.jp\0no-ip.ca\0qa2.com\0" +"takahata.yamagata.jp\0" +"shirosato.ibaraki.jp\0" +"org.kg\0mlbfan.org\0" +"abashiri.hokkaido.jp\0higashisumiyoshi.osaka.jp\0" +"org.ki\0kim\0" +"org.km\0" +"org.kn\0boldlygoingnowhere.org\0" +"org.kp\0" +"org.la\0vikna.no\0" +"org.lb\0" +"org.lc\0porsgrunn.no\0consulado.st\0" +"tsubata.ishikawa.jp\0" +"tur.ar\0gz.cn\0org.ky\0rv.ua\0" +"org.kz\0cc.va.us\0" +"org.lk\0press.ma\0" +"camera\0" +"org.ma\0\xc3\xb8ystre-slidre.no\0yalta.ua\0" +"org.lr\0" +"na.it\0org.ls\0lu.eu.org\0me.eu.org\0" +"bo.it\0org.me\0sauherad.no\0" +"org.lv\0" +"org.mg\0" +"columbus.museum\0kazimierz-dolny.pl\0e12.ve\0cloudns.pro\0" +"tur.br\0toon.ehime.jp\0org.ly\0" +"org.mk\0watchandclock.museum\0kvafjord.no\0" +"seirou.niigata.jp\0org.ml\0" +"org.mn\0rj.leg.br\0" +"org.mo\0" +"mine.nu\0" +"org.na\0" +"bifuka.hokkaido.jp\0volkenkunde.museum\0" +"org.ms\0" +"org.mt\0" +"org.mu\0" +"org.mv\0dyndns.biz\0" +"org.mw\0org.ng\0" +"urbinopesaro.it\0org.mx\0fedex\0" +"org.my\0org.ni\0varggat.no\0" +"org.mz\0" +"lindesnes.no\0mandal.no\0" +"volyn.ua\0" +"aoste.it\0" +"hakone.kanagawa.jp\0org.nr\0" +"date.hokkaido.jp\0money\0nokia\0lv.eu.org\0" +"toga.toyama.jp\0" +"yamanobe.yamagata.jp\0org.nz\0" +"itako.ibaraki.jp\0skole.museum\0" +"maritimo.museum\0org.om\0" +"from-ny.net\0" +"nosegawa.nara.jp\0org.pa\0" +"org.pe\0" +"org.pf\0" +"kamitsue.oita.jp\0blogspot.com.cy\0" +"satx.museum\0org.ph\0" +"zgorzelec.pl\0" +"mill.museum\0" +"ishikari.hokkaido.jp\0minami.tokushima.jp\0org.pk\0better-than.tv\0" +"org.pl\0gift\0" +"\xe4\xb8\xaa\xe4\xba\xba.hk\0" +"org.pn\0" +"*.api.githubcloud.com\0" +"watch\0" +"meldal.no\0org.qa\0" +"org.pr\0is-a-bulls-fan.com\0" +"org.ps\0blogspot.com.ee\0" +"org.pt\0events\0" +"finance\0blogspot.com.eg\0" +"codespot.com\0" +"beppu.oita.jp\0bytom.pl\0" +"org.py\0" +"izhevsk.ru\0" +"h\xc3\xa1pmir.no\0" +"blogspot.com.ar\0" +"sn.cn\0" +"mw.gov.pl\0education\0blogspot.com.au\0" +"hl.cn\0" +"circus.museum\0" +"shinshiro.aichi.jp\0" +"suwalki.pl\0" +"kijo.miyazaki.jp\0sunndal.no\0snz.ru\0kpn\0" +"citi\0target\0" +"exchange\0" +"uchinomi.kagawa.jp\0" +"ms.it\0" +"shiki.saitama.jp\0org.ro\0" +"ca.it\0tokashiki.okinawa.jp\0blogspot.com.br\0" +"org.sa\0cn-north-1.compute.amazonaws.com.cn\0" +"org.sb\0" +"org.rs\0org.sc\0" +"moma.museum\0org.sd\0" +"yugawara.kanagawa.jp\0org.ru\0org.se\0" +"org.sg\0mo.us\0blogspot.com.by\0" +"mad.museum\0even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0org.sh\0" +"yatomi.aichi.jp\0" +"limanowa.pl\0" +"city\0" +"org.sl\0ddns.net\0" +"recreation.aero\0blogspot.com.co\0" +"org.sn\0" +"horokanai.hokkaido.jp\0org.so\0" +"krd\0lat\0" +"bolt.hu\0ojiya.niigata.jp\0" +"childrensgarden.museum\0law\0" +"fribourg.museum\0org.st\0" +"org.sv\0" +"kaminoyama.yamagata.jp\0dali.museum\0" +"higashiura.aichi.jp\0org.sy\0" +"rieti.it\0org.sz\0org.tj\0" +"v\xc3\xa6r\xc3\xb8y.no\0" +"taiji.wakayama.jp\0ms.kr\0" +"machida.tokyo.jp\0org.tm\0" +"org.tn\0" +"neyagawa.osaka.jp\0org.to\0" +"wiw.gov.pl\0" +"org.ua\0" +"org.tr\0" +"zagan.pl\0mex.com\0" +"org.tt\0" +"org.tw\0org.ug\0caseih\0" +"tec.ve\0" +"ikusaka.nagano.jp\0" +"jeonnam.kr\0org.uk\0" +"ascoli-piceno.it\0" +"homesecuritymac.com\0" +"miyako.iwate.jp\0yoshino.nara.jp\0" +"lupin\0blogspot.com.es\0" +"org.vc\0" +"is-a-anarchist.com\0" +"org.ve\0" +"chizu.tottori.jp\0monash\0" +"dscloud.biz\0" +"tananger.no\0" +"org.uy\0org.vi\0" +"org.uz\0" +"ca.na\0myshopblocks.com\0" +"ing.pa\0org.vn\0" +"stalbans.museum\0lds\0" +"kr.eu.org\0" +"isernia.it\0" +"matsue.shimane.jp\0org.vu\0dev.static.land\0" +"tomobe.ibaraki.jp\0" +"xenapponazure.com\0" +"hn.cn\0farmequipment.museum\0" +"\xd8\xa7\xd9\x84\xd8\xb3\xd8\xb9\xd9\x88\xd8\xaf\xdb\x8c\xdb\x83\0" +"org.ws\0forgot.her.name\0" +"catania.it\0" +"fukumitsu.toyama.jp\0koya.wakayama.jp\0" +"agents.aero\0" +"bs.it\0" +"hidaka.kochi.jp\0" +"konsulat.gov.pl\0" +"aso.kumamoto.jp\0walmart\0" +"froland.no\0" +"hughes\0" +"ne.jp\0onga.fukuoka.jp\0" +"yamanashi.yamanashi.jp\0" +"presse.km\0" +"watarai.mie.jp\0" +"ass.km\0" +"h\xc3\xa6gebostad.no\0" +"bandai.fukushima.jp\0" +"org.za\0" +"is-into-cartoons.com\0" +"tochio.niigata.jp\0" +"futaba.fukushima.jp\0" +"production.aero\0ne.kr\0" +"monzaebrianza.it\0" +"lel.br\0" +"frosinone.it\0is-a-therapist.com\0" +"org.zm\0" +"futtsu.chiba.jp\0" +"tamakawa.fukushima.jp\0" +"nankoku.kochi.jp\0fuji.shizuoka.jp\0" +"dsmynas.net\0" +"myphotos.cc\0" +"\xe4\xb8\x89\xe9\x87\x8d.jp\0presse.ml\0pvt.k12.ma.us\0" +"bnpparibas\0" +"karuizawa.nagano.jp\0" +"irish\0" +"*.transurl.be\0" +"hitachi.ibaraki.jp\0kalisz.pl\0" +"beep.pl\0" +"kushimoto.wakayama.jp\0cc.na\0" +"yk.ca\0" +"kawanishi.nara.jp\0" +"nanbu.yamanashi.jp\0" +"tagajo.miyagi.jp\0" +"chikushino.fukuoka.jp\0ikeda.gifu.jp\0eu-west-1.compute.amazonaws.com\0cloudns.org\0" +"lib.ne.us\0" +"lib.il.us\0" +"hl.no\0akdn\0liaison\0" +"ota.gunma.jp\0\xd8\xa7\xd8\xaa\xd8\xb5\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\0" +"suedtirol.it\0shitara.aichi.jp\0jinsekikogen.hiroshima.jp\0" +"szczytno.pl\0nc.tr\0" +"usculture.museum\0sochi.su\0" +"rr.leg.br\0" +"shaw\0" +"blogspot.com.mt\0" +"sp.it\0" +"flesberg.no\0blogspot.com.ng\0" +"ce.it\0olsztyn.pl\0" +"achi.nagano.jp\0" +"go.dyndns.org\0" +"shoes\0" +"geometre-expert.fr\0ms.us\0nc.us\0" +"ca.us\0" +"virtueeldomein.nl\0" "online\0" -"maebashi.gunma.jp\0" -"valleaosta.it\0kushimoto.wakayama.jp\0" -"pomorze.pl\0" -"salat.no\0" -"surrey.museum\0" -"ichinoseki.iwate.jp\0seat\0" -"tokai.aichi.jp\0abiko.chiba.jp\0numata.gunma.jp\0for-better.biz\0" -"tas.edu.au\0nationalheritage.museum\0" -"ac.vn\0sopot.pl\0" -"tambov.ru\0" -"redstone\0" -"mx.na\0est-le-patron.com\0" -"amli.no\0" -"higashiosaka.osaka.jp\0auto.pl\0" -"omitama.ibaraki.jp\0" -"dynalias.com\0" -"no.it\0" -"bir.ru\0" -"haibara.shizuoka.jp\0" -"suwa.nagano.jp\0" -"recreation.aero\0jewishart.museum\0rade.no\0" -"shingu.fukuoka.jp\0warmia.pl\0" -"flesberg.no\0hemne.no\0" -"minamidaito.okinawa.jp\0" -"station.museum\0bo.telemark.no\0" -"kitanakagusuku.okinawa.jp\0" -"nesodden.no\0vologda.ru\0casino\0" -"itoigawa.niigata.jp\0" -"misawa.aomori.jp\0tsubata.ishikawa.jp\0maibara.shiga.jp\0" -"exchange.aero\0" -"tv.im\0seek\0" -"toon.ehime.jp\0" -"kyiv.ua\0" -"tirol\0" -"tv.it\0" -"phoenix.museum\0" -"stjordal.no\0" -"yonabaru.okinawa.jp\0" -"akabira.hokkaido.jp\0aguni.okinawa.jp\0" -"yugawara.kanagawa.jp\0" -"kiyose.tokyo.jp\0" -"powiat.pl\0lomza.pl\0" -"lans.museum\0mex.com\0" -"gifu.gifu.jp\0" -"sel.no\0lib.ut.us\0" -"e.bg\0film.museum\0" -"fortmissoula.museum\0" -"itano.tokushima.jp\0yamanobe.yamagata.jp\0" -"honjo.akita.jp\0ginan.gifu.jp\0" -"r\xc3\xa1hkker\xc3\xa1vju.no\0" -"bar\0" -"presse.ci\0bbc\0" -"bo.it\0" -"minakami.gunma.jp\0" -"hapmir.no\0cc.mi.us\0is-a-teacher.com\0" +"alto-adige.it\0opencraft.hosting\0" +"naturalhistorymuseum.museum\0" +"\xe0\xa6\xac\xe0\xa6\xbe\xe0\xa6\x82\xe0\xa6\xb2\xe0\xa6\xbe\0" +"\xe5\x81\xa5\xe5\xba\xb7\0" +"!www.ck\0valle-aosta.it\0ne.pw\0rns.tn\0" +"cincinnati.museum\0" +"rs.leg.br\0sc.leg.br\0*.transurl.eu\0" +"gateway.museum\0" +"roan.no\0" +"togakushi.nagano.jp\0oshima.tokyo.jp\0" +"higashi.fukushima.jp\0musashimurayama.tokyo.jp\0" +"is-certified.com\0" +"kaga.ishikawa.jp\0quicksytes.com\0" +"k12.ut.us\0" +"christiansburg.museum\0vindafjord.no\0k12.pa.us\0" +"kazan.ru\0blogspot.com.tr\0" +"claims\0knightpoint.systems\0" +"ueda.nagano.jp\0ringebu.no\0" +"leikanger.no\0" +"lol\0works\0" +"chiba.jp\0science-fiction.museum\0murmansk.su\0world\0" +"nago.okinawa.jp\0" +"jelenia-gora.pl\0goldpoint\0" +"nahari.kochi.jp\0estate.museum\0" +"mysecuritycamera.com\0" +"hanamaki.iwate.jp\0ube.yamaguchi.jp\0sorfold.no\0" +"fermo.it\0" +"lincoln\0" +"lpl\0" +"country\0" +"whoswho\0" +"hioki.kagoshima.jp\0musashino.tokyo.jp\0muosat.no\0lib.ms.us\0lib.nc.us\0" +"my.id\0" +"bu.no\0" +"north.museum\0is-a-soxfan.org\0" +"blackfriday\0" +"parma.it\0" +"group\0" +"cc.vi.us\0" +"masfjorden.no\0" +"trentino-sued-tirol.it\0\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\0" +"iizuna.nagano.jp\0sor-varanger.no\0engineering\0" +"man\0" +"nishihara.kumamoto.jp\0" +"sveio.no\0ne.ug\0map\0microsoft\0" +"her\xc3\xb8y.nordland.no\0mba\0" +"sr.it\0kouyama.kagoshima.jp\0" +"ne.tz\0" +"canon\0" "kasugai.aichi.jp\0" -"jewelry.museum\0gulen.no\0dvag\0" -"engerdal.no\0" -"achi.nagano.jp\0serveftp.net\0" -"khv.ru\0" -"morotsuka.miyazaki.jp\0tarama.okinawa.jp\0ruhr\0" -"laakesvuemie.no\0is-a-caterer.com\0" -"onga.fukuoka.jp\0" -"khmelnytskyi.ua\0" -"messina.it\0bcn\0" -"fhs.no\0" -"berlin.museum\0alipay\0infiniti\0" -"adult.ht\0" -"tv.na\0name\0" -"vao.it\0zachpomor.pl\0" -"\xc3\xa5rdal.no\0herokuapp.com\0" -"karatsu.saga.jp\0gov.nc.tr\0" -"sydney\0uy.com\0" -"imperia.it\0turen.tn\0" -"time.museum\0" -"\xd9\x85\xd9\x88\xd8\xa8\xd8\xa7\xd9\x8a\xd9\x84\xd9\x8a\0" -"lighting\0" -"matsubara.osaka.jp\0rnu.tn\0" -"seaport.museum\0" -"assassination.museum\0" -"ikeda.fukui.jp\0iinet\0" -"doosan\0" -"it.ao\0idv.hk\0e12.ve\0" -"shari.hokkaido.jp\0nahari.kochi.jp\0" -"trader.aero\0nh.us\0" -"takatori.nara.jp\0" -"columbia.museum\0" -"city\0is-a-player.com\0" -"presse.fr\0shimoji.okinawa.jp\0numazu.shizuoka.jp\0upow.gov.pl\0" -"arna.no\0" -"muroto.kochi.jp\0" -"l.bg\0" -"kamogawa.chiba.jp\0" -"mosvik.no\0" -"frankfurt.museum\0mo-i-rana.no\0" -"nichinan.miyazaki.jp\0" -"kitagawa.kochi.jp\0" -"kr\xc3\xb8""dsherad.no\0skierv\xc3\xa1.no\0us.com\0from-oh.com\0" -"arao.kumamoto.jp\0" -"ryazan.ru\0" -"hurum.no\0" -"kitashiobara.fukushima.jp\0ichinohe.iwate.jp\0" -"louvre.museum\0moma.museum\0of.no\0" -"\xe4\xb8\x89\xe9\x87\x8d.jp\0shingu.wakayama.jp\0" -"cupcake.is\0" -"limanowa.pl\0zuerich\0" -"decorativearts.museum\0" -"gouv.rw\0lib.ct.us\0" -"andria-barletta-trani.it\0market\0" -"nomi.ishikawa.jp\0nakano.nagano.jp\0" -"irish\0" -"logistics.aero\0molde.no\0axa\0industries\0" -"nagano.jp\0gouv.sn\0" -"technology.museum\0" -"press.museum\0s3-fips-us-gov-west-1.amazonaws.com\0" -"munakata.fukuoka.jp\0" -"rodoy.no\0" -"bolt.hu\0" -"flor\xc3\xb8.no\0khabarovsk.ru\0" -"yachiyo.chiba.jp\0miyama.fukuoka.jp\0" -"sanuki.kagawa.jp\0" -"im.it\0" -"bid\0" -"kitaura.miyazaki.jp\0tv.sd\0" -"shizukuishi.iwate.jp\0" -"corsica\0" -"pavia.it\0usui.fukuoka.jp\0" -"chesapeakebay.museum\0bio\0" -"atami.shizuoka.jp\0" -"nanae.hokkaido.jp\0" -"saitama.jp\0" -"ggf.br\0" -"s.bg\0" -"shobara.hiroshima.jp\0himi.toyama.jp\0" -"biz\0takko.aomori.jp\0" -"guovdageaidnu.no\0" -"shishikui.tokushima.jp\0" -"massa-carrara.it\0shimokawa.hokkaido.jp\0" -"erotika.hu\0oppeg\xc3\xa5rd.no\0" -"sayo.hyogo.jp\0" -"bentley\0" -"eidfjord.no\0hamaroy.no\0" -"bv.nl\0tv.tr\0" -"smola.no\0" -"ohira.tochigi.jp\0" -"botanicgarden.museum\0" -"ot.it\0pd.it\0" -"halsa.no\0troms\xc3\xb8.no\0\xd2\x9b\xd0\xb0\xd0\xb7\0" -"fr\xc3\xa6na.no\0" -"niigata.jp\0takayama.gifu.jp\0koshimizu.hokkaido.jp\0tv.tz\0" -"\xc3\xa5l.no\0" -"solar\0" -"belluno.it\0" -"interactive.museum\0lib.co.us\0us-west-2.compute.amazonaws.com\0" -"shikatsu.aichi.jp\0" -"nobeoka.miyazaki.jp\0" -"torsken.no\0" -"\xe9\x95\xb7\xe9\x87\x8e.jp\0iki.nagasaki.jp\0" -"express.aero\0" -"nysa.pl\0" -"miyawaka.fukuoka.jp\0gbiz\0" -"catanzaro.it\0" -"kiyosu.aichi.jp\0ikaruga.nara.jp\0" +"guitars\0" +"oarai.ibaraki.jp\0selfip.org\0serveminecraft.net\0" +"teo.br\0kochi.jp\0berlev\xc3\xa5g.no\0ne.us\0" +"murmansk.ru\0" +"mel\xc3\xb8y.no\0shia\0" +"grp.lk\0" +"mcd\0" +"ome.tokyo.jp\0" +"izunokuni.shizuoka.jp\0" +"dyndns-work.com\0" +"rnu.tn\0" +"okawa.fukuoka.jp\0misaki.okayama.jp\0" +"hakuba.nagano.jp\0" +"owariasahi.aichi.jp\0s\xc3\xb8rfold.no\0" +"rn.leg.br\0" +"clinique\0" +"gmail\0ltd\0" +"state.museum\0" +"readmyblog.org\0" +"blogspot.com.uy\0" +"niiza.saitama.jp\0" +"v\xc3\xa5gan.no\0williamhill\0" +"rawa-maz.pl\0" +"historisches.museum\0" +"abira.hokkaido.jp\0" +"audible\0med\0" +"from-mi.com\0" +"insurance.aero\0hita.oita.jp\0" +"is-a-techie.com\0" +"id.au\0" +"men\0" +"kr\xc3\xa5""anghke.no\0meo\0" +"ro.leg.br\0" +"takaishi.osaka.jp\0www.ro\0" +"himeji.hyogo.jp\0" +"sakuho.nagano.jp\0*.transurl.nl\0" +"priv.hu\0" +"aki.kochi.jp\0" +"arida.wakayama.jp\0" +"nm.cn\0" +"kawagoe.mie.jp\0" +"pubol.museum\0" +"cc.pr.us\0mini\0" +"square.museum\0chernihiv.ua\0" +"church\0" +"spb.ru\0" +"contractors\0" +"ci.it\0ulan-ude.ru\0" +"avoues.fr\0mint\0" +"trentino-stirol.it\0" +"lincoln.museum\0" +"tottori.jp\0" +"campidano-medio.it\0oamishirasato.chiba.jp\0spb.su\0" +"aichi.jp\0" +"hisamitsu\0" +"kurobe.toyama.jp\0mopar\0drud.io\0" +"hisayama.fukuoka.jp\0" +"time.museum\0" +"skjerv\xc3\xb8y.no\0from-de.com\0" +"ehime.jp\0biei.hokkaido.jp\0" +"koriyama.fukushima.jp\0" +"mugi.tokushima.jp\0idrett.no\0" +"mil\0" +"shop\0\xd8\xb9\xd8\xb1\xd8\xa8\0" +"mit\0" +"show\0us-gov-west-1.compute.amazonaws.com\0" +"takko.aomori.jp\0" +"kamoenai.hokkaido.jp\0tadotsu.kagawa.jp\0kiwi\0" +"jamison.museum\0dupont\0" +"flora.no\0" +"tokushima.jp\0" +"bounceme.net\0" +"garden.museum\0paderborn.museum\0hjelmeland.no\0" +"priv.at\0" +"glass.museum\0plumbing\0" +"training\0compute.amazonaws.com.cn\0" +"*.yokohama.jp\0g\xc3\xa1\xc5\x8bgaviika.no\0" +"stj\xc3\xb8rdal.no\0v\xc3\xa5gs\xc3\xb8y.no\0" +"vlaanderen\0" +"rebun.hokkaido.jp\0cyon.site\0" +"hiraya.nagano.jp\0mlb\0hu.com\0" +"sakae.nagano.jp\0" +"kitashiobara.fukushima.jp\0" +"chernigov.ua\0" +"ce.leg.br\0" +"st.no\0lib.mo.us\0radio\0za.bz\0" +"engineer.aero\0matsuura.nagasaki.jp\0toyosato.shiga.jp\0" +"lib.ca.us\0" +"bunkyo.tokyo.jp\0\xd1\x80\xd1\x83\xd1\x81\0" +"sx.cn\0" +"cloudns.eu\0" +"keisen.fukuoka.jp\0webhop.me\0" +"mma\0" +"actor\0mls\0" +"karpacz.pl\0is-a-conservative.com\0" +"ninja\0" +"misasa.tottori.jp\0rightathome\0" +"id.ir\0sv.it\0" +"buyshouses.net\0" +"oceanographic.museum\0aurskog-holand.no\0" +"uonuma.niigata.jp\0" +"\xe9\xa3\x9e\xe5\x88\xa9\xe6\xb5\xa6\0" +"telefonica\0" +"monza-e-della-brianza.it\0snasa.no\0" +"kozagawa.wakayama.jp\0" +"kragero.no\0" +"isteingeek.de\0" +"sandiego.museum\0" +"agematsu.nagano.jp\0" +"kitahiroshima.hokkaido.jp\0toyonaka.osaka.jp\0" +"bergbau.museum\0" +"moe\0" +"trentino-suedtirol.it\0ralingen.no\0" +"jewelry.museum\0lenug.su\0" +"presse.ci\0" +"shirakawa.fukushima.jp\0takashima.shiga.jp\0moi\0wroc.pl\0" +"norton\0" +"mom\0" +"takino.hyogo.jp\0kviteseid.no\0waw.pl\0" +"google\0" +"dvrdns.org\0is-leet.com\0" +"market\0" +"co.ae\0" +"lenvik.no\0" , -"\xd0\xbe\xd0\xb1\xd1\x80.\xd1\x81\xd1\x80\xd0\xb1\0" -"kitahiroshima.hokkaido.jp\0" -"\xe9\x95\xb7\xe5\xb4\x8e.jp\0" -"student.aero\0kopervik.no\0hof.no\0" -"tula.ru\0" -"izumizaki.fukushima.jp\0" -"g\xc3\xa1ivuotna.no\0cc.tn.us\0" -"fyresdal.no\0bms\0media\0ryukyu\0" -"miyakonojo.miyazaki.jp\0" -"mosj\xc3\xb8""en.no\0nv.us\0bmw\0navy\0" -"iwakura.aichi.jp\0" -"\xe4\xbd\x9b\xe5\xb1\xb1\0" -"bnl\0" -"lib.wa.us\0" -"sabae.fukui.jp\0motosu.gifu.jp\0" -"z.bg\0" +"co.ag\0hanawa.fukushima.jp\0" +"gmina.pl\0" +"mov\0" +"kihoku.ehime.jp\0bir.ru\0cloudns.in\0" +"onna.okinawa.jp\0" +"bygland.no\0" +"far.br\0kongsberg.no\0" +"co.ao\0act.au\0id.lv\0" +"aetna\0" +"co.bb\0id.ly\0" +"co.at\0" +"nab\0" +"utashinai.hokkaido.jp\0" +"obama.nagasaki.jp\0elverum.no\0" +"co.bi\0ato.br\0soni.nara.jp\0" +"homelinux.com\0" +"omitama.ibaraki.jp\0" +"motobu.okinawa.jp\0cloudns.cc\0" +"fujisawa.kanagawa.jp\0boots\0co.ca\0" +"bauern.museum\0" +"nba\0" +"se.leg.br\0" +"co.bw\0lib.id.us\0starhub\0support\0" +"co.ci\0" +"tj.cn\0seki.gifu.jp\0" +"co.cl\0yuza.yamagata.jp\0" +"co.cm\0" +"scienceandhistory.museum\0" +"co.cr\0alesund.no\0from-va.com\0" +"abu.yamaguchi.jp\0" +"presse.fr\0shiriuchi.hokkaido.jp\0" +"storage\0" +"county.museum\0" +"no.it\0tula.su\0msd\0" +"yamanashi.jp\0bod\xc3\xb8.no\0" +"nagareyama.chiba.jp\0larvik.no\0co.cz\0" +"konyvelo.hu\0co.dk\0" +"from.hr\0laspezia.it\0" +"chuvashia.ru\0" +"m\xc3\xa5s\xc3\xb8y.no\0" +"sakata.yamagata.jp\0" +"kishiwada.osaka.jp\0synology.me\0" +"suli.hu\0sakai.ibaraki.jp\0pisz.pl\0" +"ally\0" +"susono.shizuoka.jp\0" +"komae.tokyo.jp\0" +"takasaki.gunma.jp\0" +"nature.museum\0" +"mtn\0" +"valle-daosta.it\0" +"black\0" +"mtr\0xerox\0" +"nec\0" +"tokyo.jp\0shimosuwa.nagano.jp\0hamaroy.no\0drud.us\0" +"nichinan.miyazaki.jp\0" +"championship.aero\0surnadal.no\0" +"jor.br\0ichiba.tokushima.jp\0" +"yandex\0" +"tsukuba.ibaraki.jp\0" +"sa.com\0" +"honefoss.no\0" +"biz.bb\0" +"museum.tt\0" +"lewismiller.museum\0biz.at\0" +"skierv\xc3\xa1.no\0\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0" +"co.gg\0net\0tula.ru\0" +"fhsk.se\0new\0" +"biz.az\0niimi.okayama.jp\0orland.no\0" +"co.gl\0shimane.shimane.jp\0silk\0" +"capetown\0" +"iwakuni.yamaguchi.jp\0" +"pordenone.it\0nfl\0" +"gifu.gifu.jp\0" +"sula.no\0" +"pointto.us\0" +"orskog.no\0porsanger.no\0" +"co.gy\0hemnes.no\0" +"ns.ca\0tonosho.kagawa.jp\0" +"realty\0" +"fujisato.akita.jp\0" +"comunica\xc3\xa7\xc3\xb5""es.museum\0" +"lib.ok.us\0" +"ngo\0sina\0" +"co.id\0" +"co.hu\0hiraizumi.iwate.jp\0mitoyo.kagawa.jp\0firmdale\0" +"toyota\0" +"inabe.mie.jp\0karelia.ru\0" +"cq.cn\0cc.wa.us\0" +"biz.cy\0" +"naoshima.kagawa.jp\0rzgw.gov.pl\0ck.ua\0" +"co.il\0iijima.nagano.jp\0biz.dk\0" +"co.im\0historicalsociety.museum\0" +"co.in\0nhk\0" +"numazu.shizuoka.jp\0\xd1\x81\xd1\x80\xd0\xb1\0observer\0" +"szczecin.pl\0ricoh\0" +"co.ir\0wodzislaw.pl\0" +"iida.nagano.jp\0zaporizhzhe.ua\0" +"co.it\0" +"co.je\0horonobe.hokkaido.jp\0" +"est-le-patron.com\0" +"\xe5\xb2\xa9\xe6\x89\x8b.jp\0karelia.su\0" +"atm.pl\0" +"is-a-doctor.com\0" +"kainan.tokushima.jp\0" +"himi.toyama.jp\0nm.us\0barrell-of-knowledge.info\0" +"utazu.kagawa.jp\0id.us\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0" +"tomioka.gunma.jp\0russia.museum\0kutno.pl\0" +"tran\xc3\xb8y.no\0" +"co.jp\0lillehammer.no\0" +"minamiboso.chiba.jp\0" +"news.hu\0" +"group.aero\0" +"tochigi.tochigi.jp\0maritime.museum\0" +"biz.et\0net.eu.org\0" +"kibichuo.okayama.jp\0" +"management\0dyndns-home.com\0" +"ina.nagano.jp\0service.gov.uk\0" +"shriram\0" +"from-ar.com\0" +"co.kr\0" +"co.lc\0" +"wien\0" +"mukawa.hokkaido.jp\0bedzin.pl\0express\0" +"hokuto.hokkaido.jp\0" +"nakadomari.aomori.jp\0" +"frontdoor\0" +"amami.kagoshima.jp\0kisosaki.mie.jp\0" +"birdart.museum\0seljord.no\0" +"artgallery.museum\0" +"co.ma\0" +"co.ls\0dating\0reliance\0" +"mckinsey\0" +"obama.fukui.jp\0kaneyama.fukushima.jp\0co.me\0" +"omihachiman.shiga.jp\0co.mg\0" +"ushuaia.museum\0" +"morimachi.shizuoka.jp\0namdalseid.no\0" +"iwanuma.miyagi.jp\0limited\0" +"hellas.museum\0cloudns.us\0" +"co.na\0\xc3\xa5snes.no\0" +"yasuda.kochi.jp\0" "miharu.fukushima.jp\0" -"higashiyama.kyoto.jp\0" -"skierva.no\0" -"laspezia.it\0" +"nu.ca\0biz.id\0co.mu\0preservation.museum\0" +"amex\0" +"minamiise.mie.jp\0co.mw\0nerdpol.ovh\0" +"co.ni\0" +"co.mz\0gniezno.pl\0archi\0" +"lib.ny.us\0co.nl\0" +"a.bg\0co.no\0" +"res.aero\0aremark.no\0" +"air-traffic-control.aero\0aizumisato.fukushima.jp\0" +"exeter.museum\0priv.pl\0" "if.ua\0" -"himeshima.oita.jp\0" -"imb.br\0caravan\0" -"ct.it\0utashinai.hokkaido.jp\0" -"bom\0" -"pictet\0" -"boo\0" -"biella.it\0" -"gouv.km\0risor.no\0" -"bot\0" -"\xc3\xa5s.no\0gotdns.org\0" -"oskol.ru\0dyndns-blog.com\0" -"gokase.miyazaki.jp\0tonaki.okinawa.jp\0" -"salon\0" -"averoy.no\0press\0" -"halloffame.museum\0h\xc3\xa1""bmer.no\0" -"*.sendai.jp\0" -"oseto.nagasaki.jp\0" -"usantiques.museum\0" -"cab\0" -"download\0" -"nord-odal.no\0" -"unsa.ba\0museet.museum\0galsa.no\0gb.com\0" -"muko.kyoto.jp\0" -"zero\0" -"yasugi.shimane.jp\0cal\0" -"torino.museum\0" -"kami.kochi.jp\0gouv.ml\0" -"idv.tw\0cba\0network\0" -"yokawa.hyogo.jp\0car\0" -"cat\0" -"americana.museum\0e.se\0" -"vr.it\0" -"omi.niigata.jp\0" -"togane.chiba.jp\0toyako.hokkaido.jp\0" -"samara.ru\0" -"nakagawa.fukuoka.jp\0urasoe.okinawa.jp\0cbn\0" -"nordre-land.no\0" -"aquila.it\0gonohe.aomori.jp\0fukusaki.hyogo.jp\0" -"yodobashi\0" -"rimini.it\0sakaiminato.tottori.jp\0" -"plc.ly\0" -"erotica.hu\0" -"eurovision\0" -"jefferson.museum\0gs.bu.no\0" -"uki.kumamoto.jp\0augustow.pl\0" -"gs.ol.no\0sexy\0" -"v\xc3\xa5ler.\xc3\xb8stfold.no\0" -"ayase.kanagawa.jp\0" -"vard\xc3\xb8.no\0" -"recipes\0" -"varese.it\0asahi.mie.jp\0" -"yuzhno-sakhalinsk.ru\0" -"pr.it\0nango.fukushima.jp\0" -"oharu.aichi.jp\0wakasa.fukui.jp\0" -"avianca\0" -"govt.nz\0" -"ruovat.no\0" -"kujukuri.chiba.jp\0" -"weather\0" -"ut.us\0" -"odawara.kanagawa.jp\0" -"shriram\0" -"niiza.saitama.jp\0" -"siljan.no\0" -"ae.org\0" -"latina.it\0iwamizawa.hokkaido.jp\0" -"itami.hyogo.jp\0" -"stange.no\0ceo\0" -"gifu.jp\0yamato.fukushima.jp\0toyo.kochi.jp\0" -"cfa\0" -"kamakura.kanagawa.jp\0" -"cfd\0" -"otago.museum\0" -"baghdad.museum\0" -"buy\0" -"vicenza.it\0" -"ip6.arpa\0" -"skedsmo.no\0l.se\0" -"okinawa.jp\0marugame.kagawa.jp\0" -"\xc3\xb8yer.no\0" -"aukra.no\0" -"luzern.museum\0" -"mihama.mie.jp\0" -"fukushima.hokkaido.jp\0kembuchi.hokkaido.jp\0\xe6\x85\x88\xe5\x96\x84\0" -"gsm.pl\0" -"savannahga.museum\0" -"sanjo.niigata.jp\0\xd8\xb9\xd9\x85\xd8\xa7\xd9\x86\0" -"lesja.no\0vik.no\0" -"minamiizu.shizuoka.jp\0" -"tran\xc3\xb8y.no\0" -"lgbt\0" -"joshkar-ola.ru\0" -"hemsedal.no\0sarpsborg.no\0" -"gob.ar\0calabria.it\0kurashiki.okayama.jp\0" -"irkutsk.ru\0" -"osaki.miyagi.jp\0ginowan.okinawa.jp\0neustar\0" -"higashinaruse.akita.jp\0taketa.oita.jp\0nagatoro.saitama.jp\0" -"ventures\0from-mo.com\0" -"mishima.shizuoka.jp\0" -"vaga.no\0" -"sano.tochigi.jp\0" -"k12.in.us\0" -"gob.bo\0partners\0" -"mediocampidano.it\0kumakogen.ehime.jp\0" -"dyr\xc3\xb8y.no\0lier.no\0groks-this.info\0" -"tsuruta.aomori.jp\0" -"tosu.saga.jp\0office-on-the.net\0" -"bzh\0" -"grong.no\0" -"attorney\0" -"oji.nara.jp\0" -"gob.cl\0" -"froland.no\0meloy.no\0" -"taranto.it\0uk.net\0" -"\xe8\x8c\xa8\xe5\x9f\x8e.jp\0" -"school.museum\0cc.il.us\0" -"s.se\0" -"marketplace.aero\0plc.uk\0" -"ontario.museum\0" -"ranzan.saitama.jp\0" -"ct.us\0" -"memorial\0" -"gob.do\0media.hu\0lib.ks.us\0" -"reise\0" -"horonobe.hokkaido.jp\0" -"gob.ec\0" -"yamal.ru\0" -"yamato.kanagawa.jp\0" -"dr.na\0" -"spydeberg.no\0" -"zgora.pl\0" -"verona.it\0" -"gob.es\0" -"jeju.kr\0" -"chiropractic.museum\0doomdns.com\0" -"kozaki.chiba.jp\0" -"monza-brianza.it\0isen.kagoshima.jp\0glogow.pl\0" -"uchiko.ehime.jp\0yasu.shiga.jp\0" -"sandvik\0eu-west-1.compute.amazonaws.com\0" -"suedtirol.it\0czest.pl\0" -"kashiba.nara.jp\0yuza.yamagata.jp\0" -"tondabayashi.osaka.jp\0toyama.toyama.jp\0" -"\xe6\x95\x8e\xe8\x82\xb2.hk\0k12.vt.us\0" -"astrakhan.ru\0nfshost.com\0" -"!city.kobe.jp\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0" -"enebakk.no\0" -"travel\0" -"sandiego.museum\0yokohama\0" -"valleeaoste.it\0parma.it\0kochi.jp\0kunohe.iwate.jp\0" -"izumisano.osaka.jp\0szczecin.pl\0" -"sellsyourhome.org\0" -"gob.gt\0" -"dyndns-remote.com\0" -"pippu.hokkaido.jp\0" -"com\0z.se\0is-a-bookkeeper.com\0" -"kotohira.kagawa.jp\0" -"is-found.org\0" -"gob.hn\0radom.pl\0" -"christiansburg.museum\0" -"tomigusuku.okinawa.jp\0swiebodzin.pl\0" -"bihoro.hokkaido.jp\0minato.osaka.jp\0" -"firenze.it\0" -"pr.us\0" -"takanabe.miyazaki.jp\0" -"jinsekikogen.hiroshima.jp\0" +"cc.la.us\0infiniti\0site\0" +"blogspot.com\0" +"yamato.fukushima.jp\0" +"co.nz\0" +"iiyama.nagano.jp\0" +"botanicgarden.museum\0co.om\0" +"minoh.osaka.jp\0gs.aa.no\0" +"for-our.info\0" +"ogimi.okinawa.jp\0" +"usarts.museum\0nextdirect\0" +"oi.kanagawa.jp\0" +"university.museum\0museum.mv\0\xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86\0" +"pharmacien.fr\0museum.mw\0andoy.no\0pictures\0taifun-dns.de\0" +"delta\0" +"newhampshire.museum\0" +"biz.ki\0" +"rec.br\0co.pl\0" +"puglia.it\0" +"co.pn\0" +"nanyo.yamagata.jp\0museum.no\0" +"nikaho.akita.jp\0" +"handa.aichi.jp\0" +"priv.no\0co.pw\0" +"rec.co\0herokussl.com\0" +"mo\xc3\xa5reke.no\0now\0viajes\0go.leg.br\0" +"okayama.okayama.jp\0museum.om\0" +"wiki\0" +"aguni.okinawa.jp\0" "computer.museum\0" -"dad\0" -"kikuchi.kumamoto.jp\0sakura.tochigi.jp\0" +"jp.eu.org\0" +"k12.al.us\0club\0" +"ozu.kumamoto.jp\0" +"og.ao\0" +"hayashima.okayama.jp\0" +"karasjohka.no\0" +"co.rs\0" +"usdecorativearts.museum\0nra\0" +"wajima.ishikawa.jp\0" +"yahaba.iwate.jp\0biz.mv\0co.rw\0" +"biz.mw\0" +"zama.kanagawa.jp\0kr.com\0" +"biz.ni\0" +"malvik.no\0obi\0" +"priv.me\0" +"ujitawara.kyoto.jp\0malselv.no\0orsta.no\0doctor\0" +"matsushige.tokushima.jp\0" +"biz.nr\0" +"co.st\0" +"dance\0" +"yoshida.saitama.jp\0" +"co.th\0" +"kamisunagawa.hokkaido.jp\0from-ri.com\0" +"c.bg\0co.sz\0co.tj\0nrw\0" +"wine\0" +"co.tm\0" +"cc.ks.us\0co.ua\0" +"sicilia.it\0catering\0" +"okegawa.saitama.jp\0" +"elk.pl\0co.tt\0" +"assisi.museum\0nagoya\0" +"kiho.mie.jp\0" +"tn.it\0co.ug\0" +"nu.it\0" +"ismaili\0" +"cs.it\0co.tz\0" +"co.uk\0" +"decorativearts.museum\0naumburg.museum\0biz.pk\0" +"botanicalgarden.museum\0biz.pl\0" +"computer\0" +"\xe6\x95\x99\xe8\x82\xb2.hk\0" +"stuff-4-sale.us\0" +"biz.pr\0co.us\0" +"co.ve\0caravan\0" +"ntt\0" +"co.vi\0" +"toyo.kochi.jp\0co.uz\0" +"izumozaki.niigata.jp\0sel.no\0" +"uzs.gov.pl\0" +"quebec.museum\0" +"funagata.yamagata.jp\0" +"yoka.hyogo.jp\0" +"brand.se\0" +"ryokami.saitama.jp\0dscloud.mobi\0" +"uy.com\0" +"trentino-aadige.it\0ide.kyoto.jp\0saarland\0" +"off\0" +"aland.fi\0" +"rocks\0" +"slask.pl\0" +"nore-og-uvdal.no\0" +"semboku.akita.jp\0" +"k\xc3\xa1r\xc3\xa1\xc5\xa1johka.no\0" +"\xd8\xa7\xd9\x84\xd8\xb9\xd9\x84\xd9\x8a\xd8\xa7\xd9\x86\0" +"chijiwa.nagasaki.jp\0" +"eastafrica.museum\0radom.pl\0" +"motegi.tochigi.jp\0" +"aya.miyazaki.jp\0ariake.saga.jp\0spy.museum\0" +"shinagawa.tokyo.jp\0" +"utsunomiya.tochigi.jp\0" +"higashi.fukuoka.jp\0izumi.kagoshima.jp\0solund.no\0" +"kagoshima.kagoshima.jp\0" +"homelinux.net\0" +"cloudns.pw\0" +"olbia-tempio.it\0" +"from-ms.com\0from-nc.com\0" +"soccer\0" +"biz.tj\0" +"egersund.no\0yuzhno-sakhalinsk.ru\0" +"science.museum\0" +"bryne.no\0paroch.k12.ma.us\0" +"s3.eu-central-1.amazonaws.com\0" +"co.za\0" +"biz.ua\0" +"yoro.gifu.jp\0biz.tr\0" +"spydeberg.no\0" +"e.bg\0biz.tt\0" +"nyc\0" +"conf.au\0" +"cleaning\0" +"yuki.ibaraki.jp\0" +"cc.fl.us\0co.zm\0" +"wellbeingzone.eu\0" +"tp.it\0" +"og.it\0" +"parliament.nz\0" +"gmbh\0" +"ando.nara.jp\0" +"\xe6\x95\x8e\xe8\x82\xb2.hk\0" +"biz.vn\0" +"rec.nf\0" +"jerusalem.museum\0selfip.biz\0" +"azumino.nagano.jp\0grimstad.no\0" +"kamikawa.hyogo.jp\0wiih.gov.pl\0" +"olbiatempio.it\0" +"sango.nara.jp\0" +"store\0" +"notaires.km\0" +"inuyama.aichi.jp\0" +"is-gone.com\0" +"shakotan.hokkaido.jp\0" +"\xe5\x8c\x97\xe6\xb5\xb7\xe9\x81\x93.jp\0" +"jus.br\0fhapp.xyz\0" +"rovigo.it\0yamagata.jp\0" +"reg.dk\0" +"k12.vt.us\0" +"kamitonda.wakayama.jp\0turystyka.pl\0" +"children.museum\0" +"c.la\0" +"kyiv.ua\0" +"weatherchannel\0" +"okinawa.okinawa.jp\0" +"lotte\0" +"in.na\0" +"ivgu.no\0from-nj.com\0" +"basketball\0" +"is-a-hunter.com\0" +"imageandsound.museum\0" +"lotto\0one\0" +"in.ni\0osen.no\0" +"ong\0" +"krodsherad.no\0" +"lib.tx.us\0" +"a.se\0" +"arita.saga.jp\0biz.zm\0" +"kamishihoro.hokkaido.jp\0onl\0lib.de.us\0" +"g.bg\0omigawa.chiba.jp\0" +"nagaoka.niigata.jp\0" +"belgorod.ru\0" +"cc.wi.us\0neustar\0" +"fuoisku.no\0" +"namegata.ibaraki.jp\0" +"sakahogi.gifu.jp\0takahagi.ibaraki.jp\0rec.ro\0" +"omura.nagasaki.jp\0" +"tokigawa.saitama.jp\0" +"tr.it\0hoteles\0" +"hanamigawa.chiba.jp\0" +"mortgage\0" +"ooo\0" +"eu.org\0" +"tn.us\0" +"il.us\0rodeo\0" +"dc.us\0shouji\0" +"tamatsukuri.ibaraki.jp\0" +"blogspot.co.at\0" +"caa.aero\0" +"ski.no\0" +"steiermark.museum\0" +"civilization.museum\0" +"blogspot.vn\0" +"kitagata.gifu.jp\0utsira.no\0" +"ono.fukui.jp\0imdb\0" +"lefrak\0*.githubcloudusercontent.com\0" +"fukuchiyama.kyoto.jp\0cloudns.info\0" +"symantec\0" +"giving\0" +"firestone\0quest\0" +"tjmaxx\0" +"shintomi.miyazaki.jp\0" +"org\0" +"grozny.su\0pay\0" +"floro.no\0" +"rec.ve\0" +"it.ao\0" +"tv.bb\0" +"biev\xc3\xa1t.no\0in.rs\0" +"takahama.fukui.jp\0" +"ebiz.tw\0chirurgiens-dentistes-en-france.fr\0" +"higashikawa.hokkaido.jp\0" +"wallonie.museum\0dovre.no\0" +"lipetsk.ru\0" +"tv.bo\0\xd1\x83\xd0\xba\xd1\x80\0" +"broker.aero\0skin\0" +"tv.br\0" +"fredrikstad.no\0hobby-site.org\0" +"sano.tochigi.jp\0" +"arezzo.it\0q-a.eu.org\0" +"metlife\0" +"gokase.miyazaki.jp\0tr.no\0aurland.no\0c.se\0in.th\0" +"lib.dc.us\0" +"i.bg\0" +"is-a-cubicle-slave.com\0blogspot.re\0" +"akune.kagoshima.jp\0" +"gucci\0from-wv.com\0js.org\0" +"tt.im\0in.ua\0" +"cc.ky.us\0" +"matsudo.chiba.jp\0kiwa.mie.jp\0e-burg.ru\0" +"viking\0" +"ott\0" +"ud.it\0blogspot.ro\0" +"karate.museum\0royrvik.no\0" +"prochowice.pl\0warmia.pl\0smart\0" +"nanbu.tottori.jp\0" +"hino.tottori.jp\0americana.museum\0grozny.ru\0blogspot.rs\0" +"erotica.hu\0trentinoalto-adige.it\0" +"blogspot.ru\0blogspot.se\0" +"steinkjer.no\0blogspot.sg\0" +"blogspot.si\0" +"vgs.no\0in.us\0" +"wzmiuw.gov.pl\0de.us\0blogspot.sk\0" +"chippubetsu.hokkaido.jp\0" +"\xe7\xbd\x91\xe7\xb5\xa1.hk\0pet\0blogspot.sn\0" +"\xe9\xb3\xa5\xe5\x8f\x96.jp\0drobak.no\0" +"ovh\0" +"za.com\0blogspot.td\0" +"ichinomiya.chiba.jp\0ikata.ehime.jp\0yuasa.wakayama.jp\0" +"degree\0" +"takasu.hokkaido.jp\0herokuapp.com\0" +"miners.museum\0" +"fukuoka.jp\0moriguchi.osaka.jp\0lodingen.no\0" +"selje.no\0" +"trentinoaadige.it\0minowa.nagano.jp\0rnrt.tn\0" +"mat.br\0verran.no\0" +"is.eu.org\0" +"bar.pro\0" +"cards\0" +"friulivgiulia.it\0cdn77-ssl.net\0" +"kawakami.nagano.jp\0blogspot.co.id\0" +"epilepsy.museum\0blogspot.tw\0blogspot.ug\0" +"schule\0\xe7\x82\xb9\xe7\x9c\x8b\0" +"aizuwakamatsu.fukushima.jp\0" +"isla.pr\0capitalone\0selfip.com\0" +"hornindal.no\0tychy.pl\0" +"blogspot.co.il\0" +"yachiyo.ibaraki.jp\0phd\0" +"nara.nara.jp\0redstone\0" +"iglesias-carbonia.it\0blogspot.mr\0" +"osakikamijima.hiroshima.jp\0kimino.wakayama.jp\0" +"kids.us\0no.com\0" +"mar.it\0" +"mochizuki.nagano.jp\0" +"blogspot.mx\0" +"blogspot.my\0" +"terni.it\0tra.kp\0" +"casino\0blogspot.nl\0" +"kmpsp.gov.pl\0" +"pid\0" +"blogspot.no\0" +"tatsuno.hyogo.jp\0" +"it.eu.org\0" +"sakura.tochigi.jp\0staples\0from-oh.com\0" +"pin\0" +"cymru\0dynalias.net\0" +"togane.chiba.jp\0e.se\0" +"klepp.no\0" +"k.bg\0" +"inazawa.aichi.jp\0" +"moss.no\0" +"khabarovsk.ru\0" +"tv.im\0" +"blogspot.pe\0" +"forde.no\0so.gov.pl\0website\0" +"space-to-rent.com\0" +"indianmarket.museum\0\xd1\x81\xd0\xb0\xd0\xb9\xd1\x82\0" +"tv.it\0" +"tobe.ehime.jp\0" +"aisai.aichi.jp\0hinode.tokyo.jp\0v\xc3\xa1rgg\xc3\xa1t.no\0us-west-1.compute.amazonaws.com\0" +"miyagi.jp\0delaware.museum\0" +"aerodrome.aero\0immo\0" +"ollo\0blogspot.qa\0" +"ny.us\0blogspot.pt\0" +"hatsukaichi.hiroshima.jp\0kvinesdal.no\0" +"kalmykia.su\0" +"nishigo.fukushima.jp\0" "otsu.shiga.jp\0" -"larvik.no\0\xd0\xb0\xd0\xba.\xd1\x81\xd1\x80\xd0\xb1\0" -"berg.no\0cc.dc.us\0" -"tateyama.toyama.jp\0" -"is-an-actor.com\0" -"rg.it\0" -"kep.tr\0from-la.net\0" -"ln.cn\0" -"from-wv.com\0is-a-hunter.com\0" -"day\0" -"kokonoe.oita.jp\0" -"wi.us\0" -"schmidt\0" -"6.bg\0portland.museum\0k12.wa.us\0" -"crs\0csc\0" -"groundhandling.aero\0cahcesuolo.no\0" -"francaise.museum\0dyndns-free.com\0" -"media.pl\0" -"dr.tr\0b.ssl.fastly.net\0" -"everbank\0" -"kitakata.fukushima.jp\0" -"montblanc\0" -"tanohata.iwate.jp\0nishi.osaka.jp\0reisen\0" -"rindal.no\0hamburg\0" -"koriyama.fukushima.jp\0ena.gifu.jp\0" -"foundation.museum\0" -"axis.museum\0" -"helsinki.museum\0cc.wa.us\0myphotos.cc\0" -"vic.edu.au\0" -"cloudapp.net\0" -"yamaxun\0" -"trading\0" -"viterbo.it\0lg.jp\0ise.mie.jp\0" -"lillesand.no\0" -"lib.me.us\0" -"okoppe.hokkaido.jp\0oyodo.nara.jp\0" -"shinshinotsu.hokkaido.jp\0tobetsu.hokkaido.jp\0" -"magadan.ru\0tennis\0" -"\xe5\xba\x83\xe5\xb3\xb6.jp\0mobara.chiba.jp\0" -"ltd.co.im\0" -"fet.no\0elb.amazonaws.com\0" -"kamikawa.hyogo.jp\0sango.nara.jp\0gob.mx\0" -"alta.no\0" -"sowa.ibaraki.jp\0" -"g\xc3\xa1\xc5\x8bgaviika.no\0" -"tattoo\0" -"fg.it\0konan.shiga.jp\0" -"off.ai\0country\0" -"dev\0" -"rn.it\0samukawa.kanagawa.jp\0" -"baidu\0" -"port.fr\0carbonia-iglesias.it\0miyoshi.tokushima.jp\0tabuse.yamaguchi.jp\0sosnowiec.pl\0adult\0" -"in-addr.arpa\0gran.no\0" -"gob.pa\0serveftp.org\0" -"hidaka.hokkaido.jp\0" -"nesseby.no\0" -"satosho.okayama.jp\0" -"gob.pe\0" -"flights\0" -"andriabarlettatrani.it\0" -"nagato.yamaguchi.jp\0host\0" -"nes.akershus.no\0gob.pk\0dvrdns.org\0" -"miyota.nagano.jp\0" -"embroidery.museum\0karasjohka.no\0" -"from-ky.com\0" -"trieste.it\0ashoro.hokkaido.jp\0" -"dealer\0" -"saigawa.fukuoka.jp\0" -"spiegel\0" -"atlanta.museum\0romskog.no\0" -"l\xc3\xa4ns.museum\0evje-og-hornnes.no\0" -"valled-aosta.it\0karasuyama.tochigi.jp\0" -"ing.pa\0" -"siracusa.it\0minano.saitama.jp\0" -"isahaya.nagasaki.jp\0hagi.yamaguchi.jp\0" -"!city.kitakyushu.jp\0uto.kumamoto.jp\0forex\0" -"murayama.yamagata.jp\0virgin\0" -"norddal.no\0cherkasy.ua\0codes\0" -"misato.saitama.jp\0" -"\xd9\x85\xd9\x88\xd9\x82\xd8\xb9\0" -"iwata.shizuoka.jp\0" -"tjome.no\0mango\0" -"greta.fr\0" -"eu.int\0minokamo.gifu.jp\0oi.kanagawa.jp\0" -"accident-prevention.aero\0" +"r\xc3\xb8mskog.no\0" +"gyokuto.kumamoto.jp\0" +"lifeinsurance\0" +"games.hu\0kotohira.kagawa.jp\0" +"brumunddal.no\0" +"blogspot.is\0" +"blogspot.it\0" +"civilisation.museum\0" +"saijo.ehime.jp\0" +"nishinomiya.hyogo.jp\0" +"kuzumaki.iwate.jp\0stor-elvdal.no\0" +"blogspot.jp\0" +"in.eu.org\0" +"solutions\0" +"s\xc3\xb8rum.no\0" +"sekikawa.niigata.jp\0comcast\0" +"fnd.br\0kitaakita.akita.jp\0nakanoto.ishikawa.jp\0" +"hof.no\0withyoutube.com\0" +"store.nf\0pnc\0" +"cechire.com\0" +"mikawa.yamagata.jp\0blogspot.kr\0" +"kalmykia.ru\0" +"shikatsu.aichi.jp\0tv.na\0" +"niepce.museum\0" +"blogspot.li\0" "hirokawa.fukuoka.jp\0" -"kainan.tokushima.jp\0" -"gob.sv\0" -"gub.uy\0" -"black\0" -"noda.chiba.jp\0" -"tanagura.fukushima.jp\0abu.yamaguchi.jp\0" +"balestrand.no\0" +"realestate\0" +"faith\0" +"hk.com\0" +"saves-the-whales.com\0" +"kawaguchi.saitama.jp\0blogspot.lt\0blogspot.md\0" +"g.se\0blogspot.lu\0" +"lib.co.us\0" +"m.bg\0" +"is-a-lawyer.com\0" +"blogspot.mk\0" +"tamba.hyogo.jp\0" +"bosch\0" +"moka.tochigi.jp\0cc.ak.us\0autos\0br.com\0from-ut.com\0" +"i.ng\0" +"ushistory.museum\0" +"nanmoku.gunma.jp\0pruszkow.pl\0" +"kokonoe.oita.jp\0" +"woodside\0" +"jondal.no\0blogspot.fi\0" +"lahppi.no\0" +"naturalsciences.museum\0" +"ok.us\0" +"utazas.hu\0" +"hachijo.tokyo.jp\0googlecode.com\0" +"trading\0blogspot.fr\0" +"tsubetsu.hokkaido.jp\0creation.museum\0risor.no\0nyc.mn\0" +"!city.nagoya.jp\0" +"field.museum\0" +"servequake.com\0" +"sex.hu\0fujitsu\0" "is-a-painter.com\0" -"ikeda.hokkaido.jp\0" -"mitoyo.kagawa.jp\0" -"gausdal.no\0" -"kvafjord.no\0" -"philadelphiaarea.museum\0santafe.museum\0cruises\0" -"ringerike.no\0" -"ven.it\0kamisato.saitama.jp\0przeworsk.pl\0" -"\xe7\x82\xb9\xe7\x9c\x8b\0" -"ask\xc3\xb8y.no\0" -"suli.hu\0is-an-accountant.com\0" -"lu.it\0me.it\0\xe7\xa7\xbb\xe5\x8a\xa8\0" -"flanders.museum\0" -"anquan\0" -"s\xc3\xb8rreisa.no\0" -"gob.ve\0" -"treviso.it\0" -"crew.aero\0" -"jaguar\0" -"barlettatraniandria.it\0happou.akita.jp\0" -"annefrank.museum\0is-a-bulls-fan.com\0" -"medecin.km\0jamal.ru\0dyndns-mail.com\0" -"toyota.aichi.jp\0" -"\xe6\x9c\xba\xe6\x9e\x84\0" -"muos\xc3\xa1t.no\0" -"monzaebrianza.it\0" -"lg.ua\0" -"dnp\0" -"archaeological.museum\0" -"ichikawa.chiba.jp\0kami.miyagi.jp\0" -"media.museum\0" -"ge.it\0unnan.shimane.jp\0walbrzych.pl\0" -"namdalseid.no\0dog\0" -"australia.museum\0\xe3\x82\xb0\xe3\x83\xbc\xe3\x82\xb0\xe3\x83\xab\0" -"shop.ht\0ascolipiceno.it\0" -"trading.aero\0shop.hu\0tr\xc3\xa6na.no\0" -"wroc.pl\0" -"kharkiv.ua\0" -"slattum.no\0" -"zj.cn\0" -"amursk.ru\0" -"miyazaki.jp\0nishinoomote.kagoshima.jp\0" -"\xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe\0" -"ora.gunma.jp\0" -"chattanooga.museum\0naturalhistorymuseum.museum\0uhren.museum\0" -"emilia-romagna.it\0\xe9\xa6\x99\xe5\xb7\x9d.jp\0" -"spb.ru\0" -"kiso.nagano.jp\0" -"gop.pk\0vote\0" -"krokstadelva.no\0leitungsen.de\0" -"ogi.saga.jp\0" -"broker.aero\0" -"asaka.saitama.jp\0" -"dnipropetrovsk.ua\0" -"minamiechizen.fukui.jp\0kagamiishi.fukushima.jp\0" -"voto\0" -"ostroda.pl\0" -"noheji.aomori.jp\0stalowa-wola.pl\0" -"jolster.no\0" -"iijima.nagano.jp\0" -"blog.br\0gs.cn\0tainai.niigata.jp\0kouzushima.tokyo.jp\0cheap\0" -"kharkov.ua\0cc.wv.us\0" -"s3-website-us-gov-west-1.amazonaws.com\0" -"tj.cn\0onagawa.miyagi.jp\0" -"naples.it\0miyako.iwate.jp\0yaita.tochigi.jp\0eat\0" -"nord-aurdal.no\0servegame.org\0" -"money\0blogdns.org\0" -"lib.mn.us\0" -"aoste.it\0" -"westfalen.museum\0" -"kasaoka.okayama.jp\0" -"bc.ca\0" -"shia\0" -"*.kawasaki.jp\0" -"skodje.no\0" -"\xe7\x86\x8a\xe6\x9c\xac.jp\0" -"varoy.no\0" -"kaga.ishikawa.jp\0cloudfront.net\0" -"ss.it\0" -"shimane.jp\0ryokami.saitama.jp\0yamanakako.yamanashi.jp\0durban\0" -"randaberg.no\0" -"jobs.tt\0" -"bjugn.no\0z-2.compute-1.amazonaws.com\0" -"futaba.fukushima.jp\0" -"kms.ru\0" -"zamami.okinawa.jp\0" -"laquila.it\0" +"kherson.ua\0" +"minato.osaka.jp\0abbvie\0" +"otsuki.yamanashi.jp\0circle\0blogspot.gr\0" +"i.ph\0" +"muenchen.museum\0" +"pro\0" +"us-east-1.amazonaws.com\0blogspot.hk\0" +"oshu.iwate.jp\0" +"pru\0richardli\0" +"k12.ri.us\0" +"blogspot.hr\0" +"blogspot.hu\0blogspot.ie\0" +"institute\0" +"clothing\0" +"berkeley.museum\0cipriani\0" +"tv.sd\0" +"rodoy.no\0" +"homelinux.org\0blogspot.co.uk\0" +"ssl.origin.cdn77-secure.org\0blogspot.in\0" +"info\0conf.lv\0" +"blogspot.ba\0" +"aibetsu.hokkaido.jp\0blogspot.be\0" +"adv.br\0sr.gov.pl\0\xe5\xb7\xa5\xe8\xa1\x8c\0" +"blogspot.bg\0" +"blogspot.bj\0" +"pub\0" +"fujimi.saitama.jp\0from-tn.com\0" +"friulivenezia-giulia.it\0" +"i.se\0" +"blogspot.ca\0" +"health.museum\0poker\0" +"o.bg\0steam.museum\0" +"fuossko.no\0" +"berlevag.no\0" +"giske.no\0blogspot.cf\0" +"tomigusuku.okinawa.jp\0ashikaga.tochigi.jp\0tv.tr\0for-the.biz\0blogspot.ch\0" +"stavanger.no\0" +"store.ve\0blogspot.cl\0" +"abeno.osaka.jp\0town.museum\0" +"mashiko.tochigi.jp\0" +"tv.tz\0is-a-geek.com\0" +"pa.it\0progressive\0" +"orkdal.no\0" +"torino.museum\0" +"notaires.fr\0corporation.museum\0otago.museum\0blogspot.de\0" +"chase\0blogspot.cv\0" +"blogspot.cz\0" +"blogspot.dk\0" +"parliament.cy\0bridgestone\0" +"pwc\0dyndns-at-home.com\0" +"essex.museum\0" +"inzai.chiba.jp\0oita.oita.jp\0" +"ringsaker.no\0" +"genova.it\0" +"radoy.no\0" +"supplies\0" +"hamburg\0" +"\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91\0" +"holtalen.no\0" +"kimobetsu.hokkaido.jp\0" +"virtuel.museum\0" +"skiptvet.no\0" +"kinko.kagoshima.jp\0sakhalin.ru\0" +"komagane.nagano.jp\0" +"finnoy.no\0homesecuritypc.com\0" +"k12.az.us\0point2this.com\0" +"florida.museum\0\xd0\xbe\xd1\x80\xd0\xb3.\xd1\x81\xd1\x80\xd0\xb1\0" +"sex.pl\0" +"cloudns.club\0" +"blogspot.co.ke\0" +"uk.net\0" +"minamiawaji.hyogo.jp\0" +"habmer.no\0" +"\xd8\xa7\xd9\x84\xd9\x8a\xd9\x85\xd9\x86\0" +"pe.ca\0oregon.museum\0mutual\0flynnhub.com\0" +"ug.gov.pl\0store.ro\0" +"udine.it\0" +"*.nom.br\0" +"lib.tn.us\0" +"iz.hr\0k.se\0" +"q.bg\0" +"luzern.museum\0mobile\0" +"jl.cn\0" +"clinton.museum\0" +"cc.ma.us\0blogspot.ae\0" +"kanie.aichi.jp\0" +"building.museum\0" +"gs.rl.no\0store.st\0" +"pc.it\0pub.sa\0cool\0blogspot.al\0" +"podzone.net\0blogspot.am\0myds.me\0" +"coop\0ogawa.saitama.jp\0gulen.no\0" +"matsumae.hokkaido.jp\0public.museum\0" +"sweden.museum\0" "mobily\0" -"club\0" -"edu\0" -"a.prod.fastly.net\0" -"tamatsukuri.ibaraki.jp\0" -"kamoenai.hokkaido.jp\0" -"f\xc3\xb8rde.no\0" -"al.it\0" -"ube.yamaguchi.jp\0" -"ms.it\0" -"higashiagatsuma.gunma.jp\0" -"pacific.museum\0" -"gz.cn\0" -"dyndns.org\0" -"otari.nagano.jp\0" +"tx.us\0" +"lyngen.no\0" +"shibetsu.hokkaido.jp\0" +"slg.br\0" +"trentinosud-tirol.it\0" +"halden.no\0" +"shiiba.miyazaki.jp\0" +"kartuzy.pl\0vision\0dsmynas.com\0" +"holiday\0" +"sanda.hyogo.jp\0" +"kaita.hiroshima.jp\0" +"photography.museum\0" +"blogspot.co.nz\0" +"askoy.no\0" +"iglesiascarbonia.it\0bjark\xc3\xb8y.no\0" +"sera.hiroshima.jp\0hidaka.hokkaido.jp\0" +"uozu.toyama.jp\0cpa.pro\0" +"omasvuotna.no\0" +"mragowo.pl\0consulting\0" +"\xe5\x85\xab\xe5\x8d\xa6\0" +"rehab\0" +"air.museum\0hol.no\0" +"privatizehealthinsurance.net\0" +"shop.ht\0" +"shop.hu\0" +"\xe6\x94\xbf\xe5\x8a\xa1\0" +"nsupdate.info\0" +"africa\0" +"sklep.pl\0" +"zaporizhzhia.ua\0" +"montblanc\0" +"adv.mz\0" +"koshigaya.saitama.jp\0m\xc4\x81ori.nz\0odessa.ua\0" +"brunel.museum\0s3.amazonaws.com\0" +"lillesand.no\0jaworzno.pl\0" +"m.se\0panasonic\0" +"oishida.yamagata.jp\0lib.in.us\0" +"s.bg\0sciences.museum\0" +"is-a-geek.org\0" +"force.museum\0spacekit.io\0" +"frei.no\0dnepropetrovsk.ua\0police.uk\0" +"nisshin.aichi.jp\0" +"katsuura.chiba.jp\0" +"jgora.pl\0" +"in.net\0" +"pe.it\0taku.saga.jp\0" +"isleofman.museum\0" +"lixil\0" +"hyogo.jp\0" +"pa.us\0" +"campidanomedio.it\0" +"pc.pl\0" +"yakumo.shimane.jp\0" +"flickr\0" +"ibara.okayama.jp\0" +"lexus\0" +"taito.tokyo.jp\0" +"\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0hitachi\0" +"cranbrook.museum\0khakassia.ru\0" +"setagaya.tokyo.jp\0" +"pe.kr\0voss.no\0" +"res.in\0williamsburg.museum\0cuisinella\0" +"toshima.tokyo.jp\0" +"ancona.it\0koga.ibaraki.jp\0gold\0" +"barclaycard\0directory\0" +"golf\0" +"omotego.fukushima.jp\0" +"gifts\0" +"maori.nz\0" +"tarumizu.kagoshima.jp\0" +"khakassia.su\0" +"valdaosta.it\0" +"melhus.no\0" +"analytics\0" +"stream\0" +"wazuka.kyoto.jp\0" +"warabi.saitama.jp\0" +"red\0" +"trani-barletta-andria.it\0nsn.us\0" +"hokuryu.hokkaido.jp\0" +"iyo.ehime.jp\0" +"freight.aero\0agrigento.it\0" +"futsu.nagasaki.jp\0" +"ericsson\0mitsubishi\0ren\0" +"iizuka.fukuoka.jp\0" +"karlsoy.no\0" +"vladikavkaz.ru\0" +"sandnes.no\0qvc\0" +"o.se\0webhop.biz\0" +"ashiya.hyogo.jp\0h\xc3\xa5.no\0" +"familyds.com\0" +"u.bg\0lesja.no\0" +"basel.museum\0pagefrontapp.com\0" +"jewishart.museum\0" +"vic.au\0" +"gda.pl\0" +"towada.aomori.jp\0cc.me.us\0" +"vladikavkaz.su\0" +"cc.as.us\0goog\0" +"online.museum\0" +"doomdns.org\0" +"lamborghini\0is-an-actress.com\0" +"pg.it\0bialystok.pl\0" +"enna.it\0kunitomi.miyazaki.jp\0" +"hakodate.hokkaido.jp\0*.kunden.ortsinfo.at\0" +"es.leg.br\0" +"friuli-veneziagiulia.it\0mimata.miyazaki.jp\0blogspot.co.za\0" +"health-carereform.com\0" +"reggio-calabria.it\0museum\0\xe5\x85\xac\xe5\x8f\xb8\0" +"dielddanuorri.no\0" +"perugia.it\0" +"takikawa.hokkaido.jp\0" +"laquila.it\0\xc4\x8d\xc3\xa1hcesuolo.no\0" +"fukuyama.hiroshima.jp\0yokoze.saitama.jp\0pt.eu.org\0" +"farmstead.museum\0" +"ril\0" +"oe.yamagata.jp\0" +"store.bb\0rio\0is-a-liberal.com\0" +"rip\0" +"arakawa.tokyo.jp\0" +"medio-campidano.it\0baby\0" +"przeworsk.pl\0" +"citadel\0" +"kuriyama.hokkaido.jp\0doshi.yamanashi.jp\0" +"entomology.museum\0" +"merckmsd\0" +"dyroy.no\0notteroy.no\0" +"reggiocalabria.it\0mj\xc3\xb8ndalen.no\0" +"hamura.tokyo.jp\0" +"madrid\0thruhere.net\0" +"saka.hiroshima.jp\0" +"gunma.jp\0mito.ibaraki.jp\0mobi\0annefrank.museum\0nebraska.museum\0" +"from-nm.com\0" +"kozaki.chiba.jp\0aknoluokta.no\0\xe6\xb8\xb8\xe6\x88\x8f\0is-an-accountant.com\0is-very-good.org\0" +"kosei.shiga.jp\0" +"zippo\0" +"urawa.saitama.jp\0" +"togura.nagano.jp\0ama.shimane.jp\0" +"avianca\0" +"nayoro.hokkaido.jp\0vistaprint\0" +"w.bg\0" +"sennan.osaka.jp\0appspot.com\0" +"tmall\0" +"garden\0store.dk\0" +"cc.wy.us\0" +"federation.aero\0" +"fie.ee\0takanabe.miyazaki.jp\0hinohara.tokyo.jp\0" +"ishikawa.okinawa.jp\0" +"uhren.museum\0undersea.museum\0moda\0" +"halloffame.museum\0wskr.gov.pl\0cisco\0" +"brescia.it\0vb.it\0" +"pi.it\0cyon.link\0" +"sugito.saitama.jp\0sncf\0dyndns-office.com\0" +"szex.hu\0american.museum\0" +"katsuragi.nara.jp\0" +"sowa.ibaraki.jp\0kiyokawa.kanagawa.jp\0" +"delmenhorst.museum\0" +"mizuho.tokyo.jp\0trondheim.no\0" +"flight.aero\0" +"exchange.aero\0wa.edu.au\0furniture.museum\0dynalias.org\0" +"hitra.no\0" +"toscana.it\0" +"wakayama.jp\0" +"muni.il\0savona.it\0ikano\0" "miyazaki.miyazaki.jp\0" -"texas.museum\0hosting\0" -"mincom.tn\0" -"huissier-justice.fr\0" -"\xc3\xa5lg\xc3\xa5rd.no\0fusa.no\0lib.ny.us\0mtpc\0panerai\0" -"chieti.it\0fujikawaguchiko.yamanashi.jp\0blogspot.com.ar\0" -"gs.fm.no\0" -"chikushino.fukuoka.jp\0" -"blogspot.com.au\0" -"iiyama.nagano.jp\0" -"ms.kr\0" -"tohma.hokkaido.jp\0tara.saga.jp\0" -"is-gone.com\0" -"friuli-vegiulia.it\0saito.miyazaki.jp\0" -"ringebu.no\0" -"bj.cn\0me.tz\0blogspot.com.br\0" -"raisa.no\0me.uk\0" -"tokuyama.yamaguchi.jp\0" -"isesaki.gunma.jp\0" -"kunst.museum\0" -"childrens.museum\0me.us\0" -"mihara.hiroshima.jp\0" -"jogasz.hu\0" -"sayama.saitama.jp\0" -"k12.me.us\0" -"bale.museum\0s\xc3\xb8r-odal.no\0" -"cambridge.museum\0" -"shimotsuke.tochigi.jp\0" -"harima.hyogo.jp\0" -"varggat.no\0barcelona\0" -"kunimi.fukushima.jp\0" -"gallery.museum\0" -"kitayama.wakayama.jp\0" -"nov.ru\0" -"kasumigaura.ibaraki.jp\0taiki.mie.jp\0" -"lierne.no\0is-a-doctor.com\0" -"lidl\0" -"al.no\0\xeb\x8b\xb7\xeb\x84\xb7\0dyndns-office.com\0" -"kunisaki.oita.jp\0ricoh\0" -"biev\xc3\xa1t.no\0" -"yamagata.jp\0ibara.okayama.jp\0" -"shirakawa.fukushima.jp\0" -"is-a-nurse.com\0" -"sagamihara.kanagawa.jp\0" -"verdal.no\0" -"fie.ee\0shoes\0" -"blogspot.com.es\0" -"tachikawa.tokyo.jp\0" -"valley.museum\0oracle\0\xd0\xbe\xd0\xbd\xd0\xbb\xd0\xb0\xd0\xb9\xd0\xbd\0" -"yuzawa.niigata.jp\0higashiizumo.shimane.jp\0" +"vegarshei.no\0" +"oy.lc\0" +"emiliaromagna.it\0dy.fi\0" +"hyatt\0" +"\xe5\x85\xb5\xe5\xba\xab.jp\0" +"from-hi.com\0" +"carbonia-iglesias.it\0" +"tkmaxx\0" +"agdenes.no\0" +"ebino.miyazaki.jp\0k12.md.us\0\xe0\xb0\xad\xe0\xb0\xbe\xe0\xb0\xb0\xe0\xb0\xa4\xe0\xb1\x8d\0nid.io\0" +"kasahara.gifu.jp\0k12.ga.us\0" +"k12.ar.us\0" +"dolls.museum\0" +"sandefjord.no\0" +"r\xc3\xa1hkker\xc3\xa1vju.no\0" +"sherbrooke.museum\0rendalen.no\0" +"fl\xc3\xa5.no\0" +"fhs.no\0" +"fukaya.saitama.jp\0" +"kwpsp.gov.pl\0kerryhotels\0" +"hasuda.saitama.jp\0vanguard\0" +"umaji.kochi.jp\0royken.no\0" +"\xe5\x80\x8b\xe4\xba\xba.hk\0clinic\0" +"ivanovo.ru\0" +"is-a-nascarfan.com\0" +"s.se\0lib.pa.us\0" +"y.bg\0sap\0" +"niyodogawa.kochi.jp\0" +"intl.tn\0" +"surgeonshall.museum\0sas\0" +"funabashi.chiba.jp\0karumai.iwate.jp\0from-wy.com\0" +"cc.mi.us\0" +"sbi\0voting\0" +"ogori.fukuoka.jp\0" +"ivanovo.su\0" +"turin.it\0" +"ishinomaki.miyagi.jp\0" +"sca\0" +"nishi.osaka.jp\0ptz.ru\0scb\0" +"aikawa.kanagawa.jp\0sbs\0" +"ninomiya.kanagawa.jp\0" +"daplie.me\0" +"hammarfeasta.no\0" +"trentino-a-adige.it\0" +"al.eu.org\0" +"bardu.no\0" +"\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\0" "\xe0\xb6\xbd\xe0\xb6\x82\xe0\xb6\x9a\xe0\xb7\x8f\0" -"katori.chiba.jp\0" -"vic.gov.au\0center.museum\0ulan-ude.ru\0life\0" -"machida.tokyo.jp\0better-than.tv\0" -"hino.tokyo.jp\0" -"tokoname.aichi.jp\0" -"kawachinagano.osaka.jp\0" -"minnesota.museum\0" -"steinkjer.no\0" -"trentino-stirol.it\0hamatonbetsu.hokkaido.jp\0" -"reggio-calabria.it\0" -"etnedal.no\0vdonsk.ru\0cc.sd.us\0" -"plaza.museum\0" -"nx.cn\0band\0" -"flowers\0" -"bank\0" -"agematsu.nagano.jp\0" -"passenger-association.aero\0mod.gi\0" -"settsu.osaka.jp\0" -"shimokitayama.nara.jp\0" -"washingtondc.museum\0apartments\0is-a-blogger.com\0" -"at-band-camp.net\0" -"med.pro\0" -"torino.it\0" -"merseine.nu\0" -"ine.kyoto.jp\0" -"\xe9\xb3\xa5\xe5\x8f\x96.jp\0" -"komforb.se\0" -"porsgrunn.no\0" -"noboribetsu.hokkaido.jp\0kameoka.kyoto.jp\0" -"analytics\0" -"cng.br\0" -"vladikavkaz.ru\0cc.md.us\0" -"page\0" -"friuli-veneziagiulia.it\0shimamoto.osaka.jp\0uw.gov.pl\0" -"microlight.aero\0canada.museum\0koebenhavn.museum\0" -"olbia-tempio.it\0yukuhashi.fukuoka.jp\0allfinanz\0" -"aerodrome.aero\0" -"\xe6\x84\x9b\xe7\x9f\xa5.jp\0" -"beppu.oita.jp\0nishiazai.shiga.jp\0" -"minami.tokushima.jp\0kaneyama.yamagata.jp\0" -"amber.museum\0from-ga.com\0" -"kita.kyoto.jp\0" -"sakyo.kyoto.jp\0fund\0" -"modern.museum\0" -"ebina.kanagawa.jp\0" -"kuzbass.ru\0" -"namegata.ibaraki.jp\0nowruz\0" -"nc.tr\0" -"like\0" -"valledaosta.it\0" -"tromso.no\0" -"fukui.jp\0" -"b\xc3\xb8.telemark.no\0jpn.com\0" -"kumagaya.saitama.jp\0" -"charter.aero\0" -"gent\0" -"barum.no\0nannestad.no\0homeunix.com\0" -"medecin.fr\0" -"bern.museum\0batsfjord.no\0al.us\0getmyip.com\0" -"fan\0" -"jetzt\0" -"alaska.museum\0zhytomyr.ua\0ms.us\0nc.us\0" -"\xd8\xa7\xd9\x84\xd9\x85\xd8\xba\xd8\xb1\xd8\xa8\0" -"k12.ms.us\0k12.nc.us\0" -"surgeonshall.museum\0" -"g.bg\0from-me.org\0" -"auction\0" -"gs.mr.no\0" -"osakikamijima.hiroshima.jp\0nanao.ishikawa.jp\0" -"yanaizu.fukushima.jp\0muika.niigata.jp\0" -"hjartdal.no\0" -"ca.it\0kawakami.nagano.jp\0support\0" -"co.ae\0" -"co.ag\0" -"naroy.no\0limo\0" -"kawara.fukuoka.jp\0katsushika.tokyo.jp\0" -"bungoono.oita.jp\0" -"co.ao\0esq\0" -"co.ba\0" -"co.bb\0" -"simple-url.com\0" -"co.at\0etc.br\0" -"\xc3\xa5krehamn.no\0vestre-slidre.no\0barclays\0link\0" -"kiryu.gunma.jp\0hamamatsu.shizuoka.jp\0" -"lib.or.us\0" -"taira.toyama.jp\0" -"co.bi\0" -"kazimierz-dolny.pl\0" -"krasnoyarsk.ru\0" -"gucci\0" -"wanggou\0" -"co.ca\0" -"yamatsuri.fukushima.jp\0" -"paris.museum\0" -"\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xae\0" -"co.bw\0" -"omi.nagano.jp\0" -"co.ci\0aquarelle\0" -"co.cl\0" -"co.cm\0" -"nakagawa.tokushima.jp\0" -"zushi.kanagawa.jp\0tokorozawa.saitama.jp\0" -"eus\0from-ne.com\0" -"co.cr\0szkola.pl\0" -"as.us\0" -"oiso.kanagawa.jp\0xihuan\0blogspot.com.tr\0" -"nj.us\0k12.as.us\0" -"conference.aero\0" -"n.bg\0" +"ppg.br\0education.museum\0" +"openair.museum\0" +"higashichichibu.saitama.jp\0" +"from-dc.com\0" +"ashiya.fukuoka.jp\0" +"brussels.museum\0s\xc3\xa1lat.no\0" +"omsk.ru\0" +"genkai.saga.jp\0dnsalias.net\0" +"band\0" +"mypets.ws\0shop.ro\0" +"sucks\0" +"sukagawa.fukushima.jp\0bamble.no\0bank\0" +"kayabe.hokkaido.jp\0yura.wakayama.jp\0" +"daigo.ibaraki.jp\0" +"run\0" +"esp.br\0" +"eng.br\0mediocampidano.it\0is-a-photographer.com\0" +"tarnobrzeg.pl\0" +"cancerresearch\0ses\0" +"southwest.museum\0accountant\0" +"tokushima.tokushima.jp\0sande.m\xc3\xb8re-og-romsdal.no\0" +"sew\0" +"isshiki.aichi.jp\0sex\0" +"andria-trani-barletta.it\0andriatranibarletta.it\0" "shop.pl\0" -"ca.na\0n\xc3\xa6r\xc3\xb8y.no\0" -"takaishi.osaka.jp\0" -"miyazu.kyoto.jp\0\xe5\x85\xac\xe7\x9b\x8a\0" -"abr.it\0taiji.wakayama.jp\0" -"v\xc3\xa5gs\xc3\xb8y.no\0bar.pro\0kchr.ru\0lanbib.se\0" -"traeumtgerade.de\0" -"ch.it\0" -"cc.ak.us\0" -"mypets.ws\0" -"owani.aomori.jp\0" +"seranishi.hiroshima.jp\0" +"midori.chiba.jp\0" +"sasebo.nagasaki.jp\0sfr\0" +"kanonji.kagawa.jp\0" +"yamashina.kyoto.jp\0rwe\0" +"lib.ut.us\0" +"u.se\0" +"est-a-la-masion.com\0" +"ibigawa.gifu.jp\0" +"kameoka.kyoto.jp\0toba.mie.jp\0" +"iveland.no\0arab\0" +"sciencesnaturelles.museum\0" +"cam.it\0" +"cc.sd.us\0" +"koge.tottori.jp\0cn.com\0" +"wake.okayama.jp\0bjugn.no\0podzone.org\0" +"gs.sf.no\0" +"oppdal.no\0" +"ito.shizuoka.jp\0" +"psse.gov.pl\0" +"sayo.hyogo.jp\0sydney.museum\0" +"niigata.jp\0" +"hashimoto.wakayama.jp\0" +"hagi.yamaguchi.jp\0gb.net\0" +"ichikawamisato.yamanashi.jp\0" +"kamikoani.akita.jp\0legnica.pl\0" +"msk.ru\0fage\0" +"ohda.shimane.jp\0" +"saiki.oita.jp\0" +"yokawa.hyogo.jp\0" +"lazio.it\0matsuno.ehime.jp\0shimodate.ibaraki.jp\0" +"isen.kagoshima.jp\0" +"onojo.fukuoka.jp\0" +"siljan.no\0" +"properties\0" +"msk.su\0" +"lubin.pl\0" +"sandvik\0" +"tottori.tottori.jp\0" +"toyama.toyama.jp\0" +"cinema.museum\0" +"ski\0" +"british.museum\0" +"daisen.akita.jp\0" +"fail\0" +"ninohe.iwate.jp\0" +"otama.fukushima.jp\0" +"nakagawa.nagano.jp\0at-band-camp.net\0" +"louvre.museum\0" +"tsu.mie.jp\0" +"sky\0" +"kawanishi.hyogo.jp\0" +"is-a-geek.net\0" +"tas.edu.au\0" +"fujixerox\0" +"storfjord.no\0chukotka.ru\0" +"ogawara.miyagi.jp\0lucerne.museum\0vf.no\0w.se\0" +"saintlouis.museum\0" +"forli-cesena.it\0tomakomai.hokkaido.jp\0swinoujscie.pl\0" +"gok.pk\0" +"maintenance.aero\0jx.cn\0" +"zlg.br\0gub.uy\0" +"sue.fukuoka.jp\0moto\0" +"toyota.aichi.jp\0" +"tamamura.gunma.jp\0evenes.no\0" +"misugi.mie.jp\0watari.miyagi.jp\0artanddesign.museum\0donna.no\0" +"stathelle.no\0knowsitall.info\0" +"yoichi.hokkaido.jp\0hamamatsu.shizuoka.jp\0" +"fukuchi.fukuoka.jp\0" +"po.it\0" +"airline.aero\0" +"ut.us\0" +"tokorozawa.saitama.jp\0" +"novara.it\0" +"s3-eu-west-1.amazonaws.com\0" +"office\0" +"kumano.mie.jp\0cambridge.museum\0" +"myoko.niigata.jp\0" +"otari.nagano.jp\0starnberg.museum\0" +"bauhaus\0movie\0" +"oppegard.no\0" +"data\0" "iwate.jp\0" -"\xe4\xb8\xad\xe5\x9b\xbd\0feedback\0" -"dyndns-at-work.com\0" -"even\xc3\xa1\xc5\xa1\xc5\xa1i.no\0organic\0" -"k12.il.us\0" -"yabu.hyogo.jp\0" -"stjohn.museum\0\xe4\xb8\xad\xe5\x9c\x8b\0" -"davvesiida.no\0sucks\0temasek\0" -"drammen.no\0" -"aip.ee\0co.gg\0" -"kumejima.okinawa.jp\0" -"london\0" -"tolga.no\0" -"sakura.chiba.jp\0fit\0" -"tjeldsund.no\0" -"rec.br\0gushikami.okinawa.jp\0" -"navigation.aero\0" -"co.gy\0" -"sanda.hyogo.jp\0daigo.ibaraki.jp\0uenohara.yamanashi.jp\0" -"az.us\0" -"nakatane.kagoshima.jp\0" -"labor.museum\0wang\0" -"matera.it\0shirataka.yamagata.jp\0swatch\0selfip.net\0" -"fashion\0" -"pars\0" -"yugawa.fukushima.jp\0" -"rec.co\0k12.ny.us\0" -"co.id\0" -"co.hu\0lib.vt.us\0" -"jelenia-gora.pl\0" -"u.bg\0" -"\xd8\xa7\xd9\x84\xd8\xac\xd8\xb2\xd8\xa7\xd8\xa6\xd8\xb1\0" -"ito.shizuoka.jp\0maison\0" -"miyada.nagano.jp\0" -"co.im\0yakutia.ru\0" -"co.in\0" -"live\0" -"venice.it\0" -"co.ir\0aizubange.fukushima.jp\0shizuoka.shizuoka.jp\0principe.st\0" -"co.it\0" -"co.je\0cc.ar.us\0review\0" -"heguri.nara.jp\0center\0from-ny.net\0" -"sanfrancisco.museum\0" -"akune.kagoshima.jp\0" -"casadelamoneda.museum\0edeka\0" -"\xe7\x9f\xb3\xe5\xb7\x9d.jp\0fukuchiyama.kyoto.jp\0" -"nissedal.no\0ivanovo.ru\0" -"co.jp\0" -"ia.us\0" -"vantaa.museum\0" -"yanagawa.fukuoka.jp\0" -"aeroclub.aero\0tx.us\0" -"urbinopesaro.it\0" -"army\0fly\0" -"fukudomi.saga.jp\0oguni.yamagata.jp\0" -"val-d-aosta.it\0" -"historyofscience.museum\0tranby.no\0" -"andasuolo.no\0" -"yoshinogari.saga.jp\0co.kr\0" -"championship.aero\0co.lc\0public.museum\0" -"nerima.tokyo.jp\0" -"moscow.museum\0cymru\0" -"site\0" -"namerikawa.toyama.jp\0" -"cc.hi.us\0" -"tsuruga.fukui.jp\0" -"arpa\0news\0nokia\0" -"co.ma\0vf.no\0" -"verm\xc3\xb6gensberater\0" -"co.ls\0cmw.ru\0ca.us\0" -"co.me\0" -"grandrapids.museum\0nuremberg.museum\0oh.us\0" -"shibukawa.gunma.jp\0" -"fujioka.gunma.jp\0asahi.yamagata.jp\0oshino.yamanashi.jp\0" -"foo\0quebec\0" -"co.na\0" -"campidano-medio.it\0" -"austin.museum\0" -"\xe7\xbb\x84\xe7\xbb\x87.hk\0co.mu\0" -"\xe7\xa6\x8f\xe5\xb3\xb6.jp\0" -"co.mw\0" -"yatomi.aichi.jp\0daejeon.kr\0" -"steigen.no\0" -"ogimi.okinawa.jp\0" -"equipment.aero\0settlers.museum\0" -"psc.br\0nara.jp\0tsugaru.aomori.jp\0co.nl\0" -"co.no\0" -"university.museum\0" -"nakagawa.nagano.jp\0email\0" -"sveio.no\0" -"ed.ao\0donostia.museum\0kommunalforbund.se\0" -"cleaning\0technology\0" -"co.nz\0gal\0" -"forsale\0" -"carraramassa.it\0" -"co.om\0" -"emiliaromagna.it\0" -"birdart.museum\0" -"scrapper-site.net\0" -"oceanographic.museum\0" -"aca.pro\0karelia.ru\0" -"atsuma.hokkaido.jp\0hidaka.wakayama.jp\0" -"handson.museum\0" -"chuo.yamanashi.jp\0frl\0" -"co.pl\0" -"gjerstad.no\0" -"co.pn\0" -"bearalvahki.no\0" -"piemonte.it\0" -"ed.ci\0amsterdam.museum\0hk.com\0" -"taishi.hyogo.jp\0" -"arte\0" -"jor.br\0shinshiro.aichi.jp\0kyowa.akita.jp\0" -"g.se\0" -"vt.it\0koto.shiga.jp\0um.gov.pl\0" -"co.pw\0cbg.ru\0" -"ed.cr\0vald-aosta.it\0" -"blogspot.re\0" -"midatlantic.museum\0" -"modum.no\0" -"blogspot.ro\0" -"riodejaneiro.museum\0" -"gdn\0" -"cisco\0blogspot.ru\0blogspot.se\0" -"brand.se\0bbva\0gea\0blogspot.sg\0" -"utah.museum\0porsangu.no\0" -"sakai.osaka.jp\0" -"linz.museum\0co.rs\0blogspot.sk\0" -"trentino-a-adige.it\0aero.tt\0" -"realestate.pl\0" -"bjark\xc3\xb8y.no\0co.rw\0" -"pt.it\0esan.hokkaido.jp\0" -"hsbc\0" -"kawanishi.yamagata.jp\0rec.nf\0" -"blogspot.td\0" -"taxi.aero\0" -"kamigori.hyogo.jp\0aoki.nagano.jp\0" -"ferrero\0lotte\0" -"whaling.museum\0" -"\xe9\xab\x98\xe7\x9f\xa5.jp\0blogdns.net\0" -"broadway\0" -"co.st\0\xe5\xb9\xbf\xe4\xb8\x9c\0" -"aero.mv\0" -"ama.aichi.jp\0iwama.ibaraki.jp\0uruma.okinawa.jp\0hamada.shimane.jp\0co.th\0" -"lotto\0" -"co.sz\0co.tj\0" -"is-not-certified.com\0" -"samegawa.fukushima.jp\0hatogaya.saitama.jp\0" -"co.tm\0" -"zoological.museum\0evenes.no\0blogspot.tw\0" -"b\xc3\xb8.nordland.no\0n\xc3\xb8tter\xc3\xb8y.no\0co.ua\0" -"nishio.aichi.jp\0shibecha.hokkaido.jp\0" -"magazine.aero\0" -"co.tt\0\xe4\xb8\x96\xe7\x95\x8c\0" -"\xeb\x8b\xb7\xec\xbb\xb4\0" -"nordreisa.no\0co.ug\0" -"kvalsund.no\0ggee\0" -"co.tz\0blogspot.mr\0" -"jobs\0giessen.museum\0co.uk\0verm\xc3\xb6gensberatung\0" -"n.se\0" -"yamamoto.miyagi.jp\0" -"asia\0uzhgorod.ua\0" -"blogspot.mx\0" -"burghof.museum\0" -"co.us\0" -"higashiura.aichi.jp\0blogspot.nl\0" -"columbus.museum\0co.ve\0" -"nnov.ru\0yachts\0blogspot.no\0" -"bjerkreim.no\0co.vi\0" -"co.uz\0" -"sekigahara.gifu.jp\0" -"osteroy.no\0\xe9\xa6\x99\xe6\xb8\xaf\0" -"kinko.kagoshima.jp\0" -"tsubetsu.hokkaido.jp\0" -"eiheiji.fukui.jp\0yawata.kyoto.jp\0yamatokoriyama.nara.jp\0" -"sasayama.hyogo.jp\0" -"equipment\0" -"takamori.nagano.jp\0" -"hobol.no\0university\0" -"itabashi.tokyo.jp\0" -"school.na\0chel.ru\0" -"kuroishi.aomori.jp\0" -"timekeeping.museum\0\xe6\xb7\xa1\xe9\xa9\xac\xe9\x94\xa1\0" -"reggiocalabria.it\0" -"rec.ro\0" -"alsace\0" -"royken.no\0" -"ed.jp\0gunma.jp\0" -"amusement.aero\0giehtavuoatna.no\0" -"blogspot.pt\0" -"*.bd\0hokuryu.hokkaido.jp\0" -"and\xc3\xb8y.no\0" -"trd.br\0" -"osakasayama.osaka.jp\0" -"systems\0" -"asahikawa.hokkaido.jp\0" -"takazaki.miyazaki.jp\0school.nz\0" -"\xe5\x95\x86\xe6\xa5\xad.tw\0" -"*.bn\0tosashimizu.kochi.jp\0dabur\0" -"cranbrook.museum\0usa.museum\0cv.ua\0" -"daisen.akita.jp\0shirosato.ibaraki.jp\0" -"perugia.it\0blogspot.it\0" -"atsugi.kanagawa.jp\0" -"oyabe.toyama.jp\0" -"skedsmokorset.no\0cc.in.us\0gle\0" -"*.ck\0hurdal.no\0u.se\0" -"bunkyo.tokyo.jp\0" -"mad.museum\0" -"blogspot.jp\0" -"eco.br\0" -"wa.gov.au\0k\xc3\xa5""fjord.no\0\xc3\xb8rland.no\0space\0" -"oita.jp\0mukawa.hokkaido.jp\0" -"lib.la.us\0" -"bialystok.pl\0szczytno.pl\0democrat\0" -"*.cy\0webhop.org\0" -"neyagawa.osaka.jp\0" -"horology.museum\0audio\0commbank\0" -"ashiya.fukuoka.jp\0" -"hiratsuka.kanagawa.jp\0" -"grimstad.no\0rec.ve\0" -"blogspot.kr\0" -"tokyo\0" -"dellogliastra.it\0shiiba.miyazaki.jp\0" -"gmo\0" -"yaotsu.gifu.jp\0" -"\xd8\xb4\xd8\xa8\xd9\x83\xd8\xa9\0" -"kaisei.kanagawa.jp\0" -"tonsberg.no\0" -"gmx\0" -"b\xc3\xa5tsfjord.no\0law.pro\0suzuki\0" -"oristano.it\0" -"tsukui.kanagawa.jp\0yokkaichi.mie.jp\0" +"kpmg\0soy\0" +"stalowa-wola.pl\0" +"hakata.fukuoka.jp\0miura.kanagawa.jp\0date\0" +"stranda.no\0from-mo.com\0" +"koori.fukushima.jp\0okutama.tokyo.jp\0" +"matsumoto.nagano.jp\0interactive.museum\0k12.nj.us\0" +"research.museum\0tab\0" +"starachowice.pl\0" +"umig.gov.pl\0fans\0reise\0" +"safety.aero\0" +"yusuhara.kochi.jp\0kudamatsu.yamaguchi.jp\0intelligence.museum\0" +"\xc3\xa5l.no\0" +"balsan.it\0saratov.ru\0" +"mihama.aichi.jp\0" +"hair\0" +"coop.ht\0netflix\0" +"citic\0" +"stat.no\0" +"qc.ca\0broker\0" +"tax\0" +"oslo.no\0servepics.com\0" +"iki.nagasaki.jp\0" +"chitose.hokkaido.jp\0joburg\0" +"misato.wakayama.jp\0srl\0" +"gosen.niigata.jp\0y.se\0" +"shikaoi.hokkaido.jp\0" +"kanegasaki.iwate.jp\0sosnowiec.pl\0" +"ap.gov.pl\0" +"yorii.saitama.jp\0" +"sohu\0" +"srt\0" +"vald-aosta.it\0tsubame.niigata.jp\0cc.mo.us\0" +"togliatti.su\0tci\0sells-for-u.com\0" +"kurume.fukuoka.jp\0" +"servebeer.com\0" +"coop.br\0" +"americanexpress\0" +"oyodo.nara.jp\0hamar.no\0stc\0" +"watch-and-clock.museum\0" +"niihama.ehime.jp\0open\0" +"tmp.br\0" +"statoil\0" +"tdk\0" +"emilia-romagna.it\0roros.no\0" +"experts-comptables.fr\0" +"farm\0" +"toyota.yamaguchi.jp\0" +"consulting.aero\0photography\0serveftp.net\0" +"army\0" +"m\xc3\xa5lselv.no\0" +"cheap\0" +"fundacio.museum\0organic\0ngrok.io\0" +"stuttgart.museum\0" +"sassari.it\0" +"tel\0" +"tysnes.no\0" +"itabashi.tokyo.jp\0americanfamily\0" +"law.za\0" +"ichikawa.chiba.jp\0" +"fast\0" +"hammerfest.no\0" +"sogne.no\0" +"bozen.it\0vlaanderen.museum\0" +"airtraffic.aero\0k12.sc.us\0myactivedirectory.com\0" +"here-for-more.info\0" +"arpa\0" +"\xd5\xb0\xd5\xa1\xd5\xb5\0" +"messina.it\0airforce\0" +"ogaki.gifu.jp\0" +"h\xc3\xa1mm\xc3\xa1rfeasta.no\0" +"nuoro.it\0detroit.museum\0" +"western.museum\0" +"konan.aichi.jp\0" +"s\xc3\xb8mna.no\0" +"brindisi.it\0miasa.nagano.jp\0" +"karasjok.no\0" +"\xd7\xa7\xd7\x95\xd7\x9d\0" +"yuu.yamaguchi.jp\0thd\0" +"song\0" +"podlasie.pl\0" +"productions\0" +"from-tx.com\0" +"rybnik.pl\0mykolaiv.ua\0" +"is-with-theband.com\0" +"kawara.fukuoka.jp\0komoro.nagano.jp\0" +"karm\xc3\xb8y.no\0" +"kautokeino.no\0" +"tr\xc3\xb8gstad.no\0" +"showa.yamanashi.jp\0sony\0" +"maebashi.gunma.jp\0onomichi.hiroshima.jp\0" +"lukow.pl\0" +"kanazawa.ishikawa.jp\0" +"vik.no\0flowers\0" +"services\0" +"ukiha.fukuoka.jp\0dyndns-blog.com\0" +"piacenza.it\0" +"midtre-gauldal.no\0" +"asda\0" +"vardo.no\0" +"kawahara.tottori.jp\0" +"engine.aero\0deatnu.no\0arte\0" +"ntr.br\0" +"\xe6\x85\x88\xe5\x96\x84\0" +"airbus\0" +"tjx\0" +"sellsyourhome.org\0" +"\xe5\x95\x86\xe5\x9f\x8e\0" +"avocat.pro\0" +"caltanissetta.it\0massacarrara.it\0" +"zapto.org\0" +"saga.saga.jp\0overhalla.no\0" +"l\xc3\xb8renskog.no\0" +"chonan.chiba.jp\0" +"cartier\0stuff-4-sale.org\0" +"stavern.no\0" +"friulive-giulia.it\0bbva\0" +"misawa.aomori.jp\0" +"hashima.gifu.jp\0" +"groundhandling.aero\0from-pr.com\0" +"fujimino.saitama.jp\0ulm.museum\0" +"okuma.fukushima.jp\0shizuoka.shizuoka.jp\0vuelos\0" +"zamami.okinawa.jp\0cloudns.biz\0" +"bmoattachments.org\0geekgalaxy.com\0" +"tachiarai.fukuoka.jp\0" +"haus\0" +"aquarium.museum\0manchester.museum\0" +"gitlab.io\0" +"chiropractic.museum\0olayangroup\0" +"*.bd\0" +"izu.shizuoka.jp\0" +"fujieda.shizuoka.jp\0study\0" +"labor.museum\0r\xc3\xa5""de.no\0" +"uz.ua\0" +"songdalen.no\0" +"ostrowwlkp.pl\0kh.ua\0emerck\0" +"cc.ms.us\0cc.nc.us\0" +"*.bn\0s3-us-west-1.amazonaws.com\0" +"sakurai.nara.jp\0haugesund.no\0cc.ca.us\0" +"ltd.co.im\0" +"pu.it\0architecture.museum\0sondre-land.no\0" +"sakura.chiba.jp\0gs.hl.no\0est.pr\0" +"fc.it\0\xc3\xb8ksnes.no\0" +"ginoza.okinawa.jp\0v\xc3\xa5ler.\xc3\xb8stfold.no\0" +"takamatsu.kagawa.jp\0" +"asia\0*.ck\0" +"hepforge.org\0" +"\xe5\xa4\xa7\xe4\xbc\x97\xe6\xb1\xbd\xe8\xbd\xa6\0" +"ardal.no\0top\0" +"bruxelles.museum\0skj\xc3\xa5k.no\0" +"is-an-engineer.com\0" +"\xd9\x85\xd9\x84\xd9\x8a\xd8\xb3\xd9\x8a\xd8\xa7\0" +"erni\0" +"ashoro.hokkaido.jp\0pippu.hokkaido.jp\0dudinka.ru\0" +"sologne.museum\0" +"ap-southeast-2.compute.amazonaws.com\0" +"akagi.shimane.jp\0aquarelle\0" +"es.kr\0" +"land\0" +"yamal.ru\0" +"4u.com\0" +"shari.hokkaido.jp\0" +"kvanangen.no\0" +"sasaguri.fukuoka.jp\0tgory.pl\0" +"yoga\0" +"k12.nh.us\0juniper\0" +"k12.gu.us\0" "*.er\0" -"capebreton.museum\0n\xc3\xa1vuotna.no\0sunndal.no\0" -"nishi.fukuoka.jp\0" -"otsuki.kochi.jp\0" -"*.fj\0*.kobe.jp\0zakopane.pl\0" -"*.fk\0vt.us\0" -"lig.it\0nishikatsura.yamanashi.jp\0" -"valdaosta.it\0takahata.yamagata.jp\0" -"1.bg\0" -"podhale.pl\0capital\0" -"kamo.niigata.jp\0cool\0" -"goo\0" -"gop\0" -"larsson.museum\0" -"coop\0" -"blogspot.fi\0" -"got\0" -"gov\0piacenza.it\0hisayama.fukuoka.jp\0" -"cincinnati.museum\0" -"frog.museum\0hitachi\0" -"kr.it\0fujinomiya.shizuoka.jp\0blogspot.fr\0" -"vistaprint\0" -"kodaira.tokyo.jp\0" -"*.gu\0ed.pw\0nsn.us\0" -"hu.net\0" -"fi.cr\0horokanai.hokkaido.jp\0gwangju.kr\0" -"yamagata.nagano.jp\0" -"lubin.pl\0blogspot.gr\0" -"modelling.aero\0rendalen.no\0kostroma.ru\0from-sc.com\0" -"tarnobrzeg.pl\0" -"ivgu.no\0comsec\0" -"broadcast.museum\0" -"buryatia.ru\0blogspot.hk\0" -"kl\xc3\xa6""bu.no\0" -"*.il\0" -"study\0" -"kameyama.mie.jp\0wakasa.tottori.jp\0" -"bas.it\0kanzaki.saga.jp\0" -"cc.de.us\0blogspot.hu\0blogspot.ie\0" -"hasama.oita.jp\0" -"ri.it\0dynalias.net\0" -"\xe6\x94\xbf\xe5\x8a\xa1\0" -"toscana.it\0shikokuchuo.ehime.jp\0" -"aknoluokta.no\0sor-varanger.no\0" -"kasamatsu.gifu.jp\0kawaue.gifu.jp\0blogspot.in\0" +"embetsu.hokkaido.jp\0" +"trento.it\0shimogo.fukushima.jp\0castle.museum\0" +"portlligat.museum\0" +"tourism.tn\0" +"eco.br\0" +"*.fj\0" +"*.fk\0" +"kumamoto.jp\0" +"sumy.ua\0" +"eid.no\0" +"modelling.aero\0kui.hiroshima.jp\0ubs\0" +"mie.jp\0" +"trv\0" +"abruzzo.it\0java\0" +"aomori.aomori.jp\0beta.bounty-full.com\0" +"homebuilt.aero\0social\0" +"shirataka.yamagata.jp\0" +"f\xc3\xb8rde.no\0v\xc3\xa5g\xc3\xa5.no\0qpon\0repair\0" +"gos.pk\0myasustor.com\0" +"*.gu\0" +"cc.ne.us\0" +"nom.ad\0" +"umbria.it\0movistar\0" +"nom.ag\0rahkkeravju.no\0" +"erotika.hu\0england.museum\0" +"fe.it\0gs.bu.no\0" +"serveirc.com\0" +"\xe6\x84\x9b\xe5\xaa\x9b.jp\0" +"\xe9\xa6\x99\xe5\xb7\x9d.jp\0" +"tui\0" +"bronnoysund.no\0" +"page\0" +"judaica.museum\0" +"nanporo.hokkaido.jp\0" +"lajolla.museum\0wales.museum\0name\0divttasvuotna.no\0" +"coop.tt\0hermes\0" +"ragusa.it\0game-server.cc\0" +"fuefuki.yamanashi.jp\0" +"friuli-v-giulia.it\0" +"walbrzych.pl\0" +"civilwar.museum\0" "*.jm\0" -"ina.nagano.jp\0" -"venezia.it\0misato.shimane.jp\0" -"is-very-good.org\0blogspot.be\0" -"*.ke\0tananger.no\0lib.sc.us\0dating\0" -"kakegawa.shizuoka.jp\0skin\0" -"8.bg\0" -"omachi.nagano.jp\0ichikawamisato.yamanashi.jp\0*.kh\0blogspot.bj\0" -"yashio.saitama.jp\0" -"blogspot.ca\0" -"arq.br\0takayama.gunma.jp\0" -"kagoshima.kagoshima.jp\0cancerresearch\0" -"miami\0" -"mihama.aichi.jp\0blogspot.cf\0" -"blogspot.ch\0" -"*.kw\0bindal.no\0" -"li.it\0" -"nationalfirearms.museum\0" -"rochester.museum\0" -"shibata.miyagi.jp\0" -"blogspot.de\0" -"blogspot.cv\0" -"leirvik.no\0" -"blogspot.cz\0" -"civilwar.museum\0krodsherad.no\0eng.pro\0blogspot.dk\0" -"kamiamakusa.kumamoto.jp\0" -"nic.in\0umbria.it\0" -"*.mm\0stv.ru\0" -"noto.ishikawa.jp\0webhop.biz\0" -"kiyosato.hokkaido.jp\0ueda.nagano.jp\0miyake.nara.jp\0" -"scienceandhistory.museum\0" -"nittedal.no\0" +"\xe7\xa5\x9e\xe5\xa5\x88\xe5\xb7\x9d.jp\0uda.nara.jp\0" +"cesenaforli.it\0" +"rankoshi.hokkaido.jp\0" +"shinkamigoto.nagasaki.jp\0tvs\0" +"ekloges.cy\0kawakami.nara.jp\0" +"coop.mv\0" +"nom.co\0iwaki.fukushima.jp\0godo.gifu.jp\0*.ke\0coop.mw\0" +"video.hu\0minami.kyoto.jp\0locker\0shiksha\0" +"ichinohe.iwate.jp\0nerima.tokyo.jp\0" +"*.kh\0" +"servehalflife.com\0" +"cityeats\0" +"kitchen\0" +"today\0work\0" +"childrens.museum\0test.tj\0" +"yamada.toyama.jp\0" +"sa.gov.au\0ravenna.it\0" +"kred\0" +"crimea.ua\0" +"avocat.fr\0*.kw\0" +"ena.gifu.jp\0webhop.org\0" +"bato.tochigi.jp\0kuzbass.ru\0" +"bostik\0" +"rauma.no\0" +"dnsalias.org\0" +"dclk\0" +"nishimera.miyazaki.jp\0" +"nord-odal.no\0tunk.org\0" +"kisofukushima.nagano.jp\0pl.eu.org\0" +"nom.es\0" +"okinawa.jp\0wakayama.wakayama.jp\0" +"lib.al.us\0restaurant\0" +"*.mm\0" +"hachirogata.akita.jp\0" +"andriabarlettatrani.it\0minamiizu.shizuoka.jp\0" +"vn.ua\0" +"spot\0" +"kamikawa.hokkaido.jp\0" +"tsk.ru\0" +"fi.cr\0akkeshi.hokkaido.jp\0" +"hattfjelldal.no\0" +"coop.py\0" +"nom.fr\0" +"vr.it\0" +"temasek\0" +"fg.it\0setouchi.okayama.jp\0test.ru\0" +"uri.arpa\0center\0" +"esan.hokkaido.jp\0*.np\0" +"\xe9\xab\x98\xe7\x9f\xa5.jp\0asahi.mie.jp\0hawaii.museum\0" +"ostrowiec.pl\0" +"srv.br\0chel.ru\0" +"tsuru.yamanashi.jp\0" +"yame.fukuoka.jp\0" +"chikuma.nagano.jp\0" +"dreamhosters.com\0" +"environmentalconservation.museum\0valley.museum\0" +"\xe5\x85\xac\xe7\x9b\x8a\0" +"mallorca.museum\0" +"ichinoseki.iwate.jp\0" +"prato.it\0" +"tatsuno.nagano.jp\0" +"anthro.museum\0*.pg\0" +"yamamoto.miyagi.jp\0gets-it.net\0" +"kagamino.okayama.jp\0" +"coop.km\0" +"ayagawa.kagawa.jp\0" +"valle.no\0" +"kamakura.kanagawa.jp\0" +"discover\0" +"yonago.tottori.jp\0" +"s\xc3\xb8r-varanger.no\0" +"honjo.akita.jp\0" +"inami.wakayama.jp\0k12.mt.us\0raid\0" +"cbg.ru\0" +"kitami.hokkaido.jp\0shingu.hyogo.jp\0nishinoomote.kagoshima.jp\0ostre-toten.no\0" "gorge.museum\0" -"\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4\0" -"*.ni\0" -"fi.it\0*.mz\0\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0" -"vibovalentia.it\0" -"*.np\0" -"sigdal.no\0skype\0" -"ono.fukushima.jp\0" -"mutsu.aomori.jp\0omachi.saga.jp\0" -"yn.cn\0" -"rost.no\0company\0" -"trainer.aero\0scienceandindustry.museum\0" -"kitaakita.akita.jp\0" -"entertainment.aero\0" -"fuettertdasnetz.de\0" +"kunimi.fukushima.jp\0" +"kitakata.fukushima.jp\0cyber.museum\0" +"nakanojo.gunma.jp\0misaki.osaka.jp\0" +"bmd.br\0tranibarlettaandria.it\0tourism.pl\0" +"inami.toyama.jp\0" +"reisen\0" +"nsw.edu.au\0" +"torsken.no\0uno\0" +"farm.museum\0" +"ab.ca\0boston\0" +"archaeology.museum\0" +"nom.km\0museumvereniging.museum\0" +"bloomberg\0" +"0.bg\0" +"belluno.it\0" +"\xe9\x9d\x92\xe6\xa3\xae.jp\0nishiwaki.hyogo.jp\0lacaixa\0uol\0" +"nagasu.kumamoto.jp\0" +"tatamotors\0" +"vt.it\0gs.st.no\0" +"navy\0" +"kr.it\0" +"fi.it\0" +"ballangen.no\0" +"sor-fron.no\0\xe5\x8f\xb0\xe6\xb9\xbe\0" +"mod.gi\0nom.mg\0j\xc3\xb8rpeland.no\0" +"intel\0" +"ups\0" +"kemerovo.ru\0taobao\0" +"honeywell\0" +"varoy.no\0" +"pars\0land-4-sale.us\0" +"paris\0" +"modern.museum\0s\xc3\xb8rreisa.no\0living\0" +"katsuyama.fukui.jp\0nom.ni\0" +"military.museum\0" +"rokunohe.aomori.jp\0" +"granvin.no\0" +"ino.kochi.jp\0" +"kasuya.fukuoka.jp\0" +"vicenza.it\0" +"furubira.hokkaido.jp\0loabat.no\0" +"taishi.hyogo.jp\0" +"travelchannel\0" +"wlocl.pl\0" +"mypep.link\0" +"ohi.fukui.jp\0k12.mn.us\0" +"otoineppu.hokkaido.jp\0githubusercontent.com\0" +"tado.mie.jp\0" +"final\0" +"nom.pa\0jamal.ru\0" +"amusement.aero\0ltd.cy\0" +"nom.pe\0psp.gov.pl\0" +"kirkenes.no\0" +"kagamiishi.fukushima.jp\0" +"val-d-aosta.it\0kannami.shizuoka.jp\0auspost\0" +"nom.pl\0" +"fosnes.no\0" +"opoczno.pl\0" +"firebaseapp.com\0" +"cologne\0" +"akishima.tokyo.jp\0" +"lib.ee\0" +"tagami.niigata.jp\0horten.no\0from-nv.com\0" +"fm.br\0" +"sabae.fukui.jp\0omi.nagano.jp\0" +"insure\0" +"lib.vt.us\0" +"nagasaki.nagasaki.jp\0" +"fukui.fukui.jp\0is-a-teacher.com\0" +"2.bg\0" +"gallo\0" +"*.ye\0scrapper-site.net\0github.io\0" +"guide\0" +"co.com\0" +"fujimi.nagano.jp\0nom.re\0" +"research.aero\0oizumi.gunma.jp\0" +"vv.it\0muroran.hokkaido.jp\0s\xc3\xb8ndre-land.no\0" +"ullensaker.no\0" +"sandnessjoen.no\0nannestad.no\0" +"equipment\0vet\0" +"nikko.tochigi.jp\0\xd0\xbc\xd0\xbe\xd1\x81\xd0\xba\xd0\xb2\xd0\xb0\0" +"nom.ro\0winners\0" +"*.kobe.jp\0" +"talk\0" +"geelvinck.museum\0" +"ltd.gi\0" +"plants.museum\0" +"omaezaki.shizuoka.jp\0" +"fujishiro.ibaraki.jp\0" +"place\0" +"imizu.toyama.jp\0marketing\0" +"monza-brianza.it\0*.zw\0" +"nakai.kanagawa.jp\0ddnsking.com\0" +"romsa.no\0" +"ltd.hk\0" +"bieszczady.pl\0" +"toyokawa.aichi.jp\0" +"aukra.no\0" +"czest.pl\0" +"nom.tm\0cloudapp.net\0" +"\xe7\xbb\x84\xe7\xb9\x94.hk\0acct.pro\0" +"juif.museum\0" +"gose.nara.jp\0" +"kakogawa.hyogo.jp\0" +"taiwa.miyagi.jp\0" +"club.aero\0fot.br\0" +"lombardy.it\0tsumagoi.gunma.jp\0colonialwilliamsburg.museum\0" +"ebetsu.hokkaido.jp\0" +"serveftp.org\0" +"n\xc3\xa1vuotna.no\0vig\0" +"kepno.pl\0" +"\xe5\xb1\xb1\xe5\x8f\xa3.jp\0" +"nanjo.okinawa.jp\0" +"koshimizu.hokkaido.jp\0" +"agriculture.museum\0vin\0" +"ens.tn\0" +"kaminokawa.tochigi.jp\0vip\0" +"yamagata.nagano.jp\0" +"immobilien\0" +"lundbeck\0" +"\xd8\xa7\xd8\xb1\xd8\xa7\xd9\x85\xd9\x83\xd9\x88\0" +"cherkasy.ua\0" +"browsersafetymark.io\0" +"namerikawa.toyama.jp\0" +"oirm.gov.pl\0" +"mizunami.gifu.jp\0nagiso.nagano.jp\0" +"4.bg\0mesaverde.museum\0cloudfunctions.net\0" +"kasuga.fukuoka.jp\0muncie.museum\0pioneer\0" +"suzaka.nagano.jp\0kr.ua\0audi\0" +"malbork.pl\0cc.nm.us\0" +"cc.id.us\0" +"ferrara.it\0" +"recipes\0" +"gobo.wakayama.jp\0" +"ltd.lk\0" +"fm.it\0roma.museum\0" +"turek.pl\0" +"anjo.aichi.jp\0" +"vt.us\0" +"artdeco.museum\0" +"kita.tokyo.jp\0\xd0\xb8\xd0\xba\xd0\xbe\xd0\xbc.museum\0" +"ad.jp\0" +"parts\0" +"beer\0" +"yasuoka.nagano.jp\0flatanger.no\0" +"pilot.aero\0" +"party\0" +"hiratsuka.kanagawa.jp\0" +"hemsedal.no\0" +"nom.za\0" +"vana\0" +"miyashiro.saitama.jp\0strand.no\0" +"kawanabe.kagoshima.jp\0smolensk.ru\0dynathome.net\0" +"hdfc\0" +"valledaosta.it\0" +"nishihara.okinawa.jp\0" +"yaita.tochigi.jp\0deal\0" "contemporary.museum\0" -"higashiyodogawa.osaka.jp\0" -"*.pg\0" -"aioi.hyogo.jp\0" -"newyork.museum\0\xd0\xbe\xd0\xb4.\xd1\x81\xd1\x80\xd0\xb1\0" -"does-it.net\0" -"her\xc3\xb8y.nordland.no\0" -"sosa.chiba.jp\0uryu.hokkaido.jp\0hirakata.osaka.jp\0" -"valle.no\0" -"circus.museum\0" -"citic\0" -"sn.cn\0" -"fukuyama.hiroshima.jp\0hiv\0" -"lenvik.no\0" -"nieruchomosci.pl\0" -"higashihiroshima.hiroshima.jp\0ohtawara.tochigi.jp\0" -"lib.nj.us\0" -"direct\0" -"blogspot.ae\0" -"kamaishi.iwate.jp\0omura.nagasaki.jp\0kaminoyama.yamagata.jp\0" -"s\xc3\xa1lat.no\0" -"towada.aomori.jp\0" -"klabu.no\0" -"padua.it\0" -"kr.ua\0" -"bio.br\0morimachi.shizuoka.jp\0" -"assisi.museum\0" -"tone.ibaraki.jp\0tsuno.miyazaki.jp\0" -"sells-for-less.com\0" -"hichiso.gifu.jp\0czeladz.pl\0" -"hvaler.no\0" -"paragliding.aero\0asnes.no\0" -"tako.chiba.jp\0" -"house.museum\0" -"anan.nagano.jp\0mihama.wakayama.jp\0" -"heritage.museum\0andebu.no\0from-wy.com\0" -"service.gov.uk\0" -"chambagri.fr\0" -"istmein.de\0" -"myoko.niigata.jp\0from-az.net\0" -"wy.us\0" -"yamakita.kanagawa.jp\0" -"garden.museum\0" -"\xe5\x92\x8c\xe6\xad\x8c\xe5\xb1\xb1.jp\0" -"qld.au\0gok.pk\0" -"schokoladen.museum\0" -"southcarolina.museum\0" -"nativeamerican.museum\0s3-website-us-west-1.amazonaws.com\0is-a-personaltrainer.com\0" -"hirosaki.aomori.jp\0" -"homes\0" -"fineart.museum\0" -"crown\0" -"nrw.museum\0" -"from-in.com\0" -"kaufen\0" -"grue.no\0lib.az.us\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa7\0" -"far.br\0arita.saga.jp\0" -"bronnoy.no\0lipetsk.ru\0ri.us\0\xd8\xb3\xd9\x88\xd8\xb1\xd9\x8a\xd8\xa9\0is-a-conservative.com\0" -"honbetsu.hokkaido.jp\0" -"lib.ne.us\0selfip.org\0" -"tmp.br\0wakayama.jp\0" -"lodingen.no\0" -"moriya.ibaraki.jp\0shioya.tochigi.jp\0" -"dolls.museum\0health.museum\0" -"trentinoaadige.it\0" -"ascoli-piceno.it\0fukushima.fukushima.jp\0" -"takasaki.gunma.jp\0" -"how\0" -"bandai.fukushima.jp\0takaharu.miyazaki.jp\0" -"muenster.museum\0" -"statoil\0" -"himeji.hyogo.jp\0" -"asti.it\0" -"certification.aero\0santabarbara.museum\0yorkshire.museum\0sandnessjoen.no\0hasvik.no\0" -"bus.museum\0africa.com\0" -"ky.us\0" -"sennan.osaka.jp\0nic.tj\0" -"lib.gu.us\0" -"k12.la.us\0" -"konyvelo.hu\0trolley.museum\0bradesco\0is-a-liberal.com\0" -"mihama.chiba.jp\0misato.miyagi.jp\0madrid\0" -"yalta.ua\0accenture\0" -"b\xc3\xa1l\xc3\xa1t.no\0" -"fujisawa.iwate.jp\0saiki.oita.jp\0" -"countryestate.museum\0*.ye\0" -"yuu.yamaguchi.jp\0" -"airguard.museum\0horten.no\0" -"lukow.pl\0" -"nhs.uk\0" -"forum.hu\0" -"ag.it\0chiryu.aichi.jp\0nankoku.kochi.jp\0" -"asahi.ibaraki.jp\0" -"tr\xc3\xb8gstad.no\0" -"mn.it\0setouchi.okayama.jp\0" -"utsira.no\0cc.la.us\0*.za\0ibm\0" -"uda.nara.jp\0kitagata.saga.jp\0arakawa.saitama.jp\0\xe5\x95\x86\xe5\x9f\x8e\0" -"hole.no\0" -"he.cn\0shiraoi.hokkaido.jp\0mimata.miyazaki.jp\0" -"shingo.aomori.jp\0tateyama.chiba.jp\0kaita.hiroshima.jp\0" -"database.museum\0vodka\0" -"lardal.no\0ice\0" -"spy.museum\0*.zm\0" -"hiraizumi.iwate.jp\0" -"airtraffic.aero\0" -"trentinoaltoadige.it\0" -"enna.it\0" -"association.aero\0*.zw\0" -"funagata.yamagata.jp\0" -"kaluga.ru\0clinic\0icu\0" -"okayama.okayama.jp\0" -"is-a-techie.com\0" -"nl.ca\0virtuel.museum\0" -"waw.pl\0" -"is-a-rockstar.com\0" -"higashimatsushima.miyagi.jp\0iruma.saitama.jp\0" -"yusui.kagoshima.jp\0kalisz.pl\0" -"from-va.com\0" -"hiranai.aomori.jp\0" -"te.it\0beer\0" -"mallorca.museum\0svelvik.no\0" -"career\0" -"tver.ru\0" +"minamifurano.hokkaido.jp\0" +"kin.okinawa.jp\0engerdal.no\0" +"games\0" +"amber.museum\0" +"simbirsk.ru\0" +"sn\xc3\xa5""ase.no\0" +"*.alces.network\0" +"\xe6\x89\x8b\xe6\x9c\xba\0" +"unzen.nagasaki.jp\0" +"shikabe.hokkaido.jp\0hirado.nagasaki.jp\0no.eu.org\0" +"minano.saitama.jp\0" +"murata.miyagi.jp\0itau\0" +"kitagawa.kochi.jp\0" +"gr.com\0" +"windmill.museum\0in-the-band.net\0" +"express.aero\0\xd9\x82\xd8\xb7\xd8\xb1\0" +"fm.no\0" +"6.bg\0wajiki.tokushima.jp\0" +"bonn.museum\0" +"shiraoka.saitama.jp\0" +"ah.cn\0" +"pvt.ge\0anan.tokushima.jp\0" +"bibai.hokkaido.jp\0katsuragi.wakayama.jp\0chuo.yamanashi.jp\0" +"ra.it\0naroy.no\0buryatia.ru\0" +"tatebayashi.gunma.jp\0wakasa.tottori.jp\0swatch\0" +"oshino.yamanashi.jp\0dyndns-mail.com\0" +"earth\0" +"vestre-slidre.no\0" +"cahcesuolo.no\0" +"wios.gov.pl\0wanggou\0" +"matsukawa.nagano.jp\0tyumen.ru\0" +"kolobrzeg.pl\0" +"morotsuka.miyazaki.jp\0olkusz.pl\0" +"taxi\0" +"bloxcms.com\0" +"filatelia.museum\0vagsoy.no\0" +"luroy.no\0" +"yabuki.fukushima.jp\0sokndal.no\0" +"pccw\0" +"polkowice.pl\0" +"name.hr\0" +"vercelli.it\0" +"aquila.it\0" +"vdonsk.ru\0melbourne\0" +"yamagata.gifu.jp\0" +"oji.nara.jp\0snaase.no\0" +"kakegawa.shizuoka.jp\0chocolate.museum\0" +"kashiba.nara.jp\0" +"hamatama.saga.jp\0kirovograd.ua\0" +"lancia\0" +"name.et\0" +"wakasa.fukui.jp\0lans.museum\0" +"freebox-os.com\0" +"takanezawa.tochigi.jp\0ltd.uk\0" +"beauty\0" +"cng.br\0eiheiji.fukui.jp\0" +"taishin.fukushima.jp\0versicherung\0" +"nishiarita.saga.jp\0" +"national.museum\0mattel\0wed\0" +"\xe9\xa3\x9f\xe5\x93\x81\0" +"kikuchi.kumamoto.jp\0" +"nz.eu.org\0" +"global.ssl.fastly.net\0" +"sanuki.kagawa.jp\0" +"iwate.iwate.jp\0" +"gc.ca\0" +"kakamigahara.gifu.jp\0selfip.info\0" +"belau.pw\0" +"kita.osaka.jp\0lib.ri.us\0" +"8.bg\0" +"museumcenter.museum\0" +"charter.aero\0" +"name.cy\0berlin.museum\0" +"suzu.ishikawa.jp\0kv.ua\0" +"sa.gov.pl\0" +"kharkov.ua\0cc.co.us\0" +"government.aero\0" +"rc.it\0" +"name.eg\0norfolk.museum\0" +"oxford.museum\0" +"salzburg.museum\0" +"\xd8\xa7\xd9\x8a\xd8\xb1\xd8\xa7\xd9\x86\0" +"\xe0\xb9\x84\xe0\xb8\x97\xe0\xb8\xa2\0" +"chicago.museum\0" +"anan.nagano.jp\0" +"hidaka.saitama.jp\0" +"minamidaito.okinawa.jp\0" +"name.az\0\xe5\xb1\xb1\xe5\xbd\xa2.jp\0tienda\0" +"badajoz.museum\0\xe9\x9b\x86\xe5\x9b\xa2\0" +"net-freaks.com\0" +"trentinos-tirol.it\0" +"wmflabs.org\0" +"rockart.museum\0swidnica.pl\0makeup\0" +"univ.sn\0dell\0" +"settlers.museum\0" +"madrid.museum\0" +"tsurugi.ishikawa.jp\0gran.no\0" +"imb.br\0" +"nakagawa.hokkaido.jp\0manno.kagawa.jp\0" +"trust.museum\0\xd8\xb3\xd9\x88\xd8\xaf\xd8\xa7\xd9\x86\0" +"k12.nv.us\0win\0" +"fashion\0" +"agano.niigata.jp\0" +"mol.it\0kamiichi.toyama.jp\0lyngdal.no\0" +"wuoz.gov.pl\0best\0eating-organic.net\0" +"tozawa.yamagata.jp\0" +"meeres.museum\0" +"indian.museum\0" +"kutchan.hokkaido.jp\0kosuge.yamanashi.jp\0snoasa.no\0" +"higashi.okinawa.jp\0meguro.tokyo.jp\0origins\0\xd9\x83\xd8\xa7\xd8\xab\xd9\x88\xd9\x84\xd9\x8a\xd9\x83\0" +"auto\0" +"bearalvahki.no\0" +"ah.no\0" +"amsterdam.museum\0" +"collegefan.org\0" +"ln.cn\0yoshioka.gunma.jp\0" +"toyone.aichi.jp\0" +"webhop.net\0" +"sanjo.niigata.jp\0eastcoast.museum\0" +"re.it\0h\xc3\xb8yanger.no\0" +"kuchinotsu.nagasaki.jp\0" +"zara\0" +"okagaki.fukuoka.jp\0" +"date.fukushima.jp\0" +"accident-prevention.aero\0design.aero\0" +"kyoto.jp\0homesense\0piaget\0wme\0" +"hanyu.saitama.jp\0nuremberg.museum\0utah.museum\0" +"historichouses.museum\0" +"moscow.museum\0stateofdelaware.museum\0" +"from-al.com\0" +"denmark.museum\0" +"sukumo.kochi.jp\0" +"nexus\0" +"trentino-altoadige.it\0" +"smile\0" +"iwama.ibaraki.jp\0karikatur.museum\0\xe6\x9b\xb8\xe7\xb1\x8d\0" +"re.kr\0" +"suisse.museum\0" +"from-ca.com\0" +"usantiques.museum\0" +"vyatka.ru\0\xe5\x8f\xb0\xe7\x81\xa3\0guge\0" +"\xce\xb5\xce\xbb\0" +"yusui.kagoshima.jp\0sytes.net\0" +"shimotsuke.tochigi.jp\0" +"k12.oh.us\0stufftoread.com\0" +"hikimi.shimane.jp\0" +"qc.com\0googleapis.com\0" +"goodyear\0" +"nalchik.ru\0" +"desi\0" +"bremanger.no\0" +"chuo.tokyo.jp\0" +"wow\0" +"christmas\0cricket\0" +"kchr.ru\0" +"bale.museum\0" +"nalchik.su\0" +"ogawa.ibaraki.jp\0" +"toda.saitama.jp\0\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\0surgery\0" +"kita.kyoto.jp\0gjesdal.no\0energy\0" +"zachpomor.pl\0" +"\xe8\xb4\xad\xe7\x89\xa9\0" +"tydal.no\0wielun.pl\0" +"otaki.nagano.jp\0" +"sasayama.hyogo.jp\0fed.us\0" +"cc.tn.us\0" +"cc.il.us\0" +"motoyama.kochi.jp\0broadcast.museum\0cc.dc.us\0" +"suwa.nagano.jp\0" +"voagat.no\0" +"off.ai\0nagara.chiba.jp\0" +"rg.it\0\xe0\xb8\x84\xe0\xb8\xad\xe0\xb8\xa1\0" +"os.hordaland.no\0hu.net\0" +"ge.it\0" +"al.it\0" +"olecko.pl\0" +"shibukawa.gunma.jp\0" +"bergamo.it\0" +"mielno.pl\0ga.us\0" }; static const quint16 tldChunkCount = 2; -static const quint32 tldChunks[] = {65528, 84704}; +static const quint32 tldChunks[] = {65512, 93761}; QT_END_NAMESPACE diff --git a/src/corelib/io/qurltlds_p.h.INFO b/src/corelib/io/qurltlds_p.h.INFO index 7e5c0bb19f..3f3d808a21 100644 --- a/src/corelib/io/qurltlds_p.h.INFO +++ b/src/corelib/io/qurltlds_p.h.INFO @@ -9,8 +9,8 @@ Those arrays in qurltlds_p.h are derived from the Public Suffix List ([2]), which was originally provided by Jo Hermans . -The file qurltlds_p.h was last generated Wednesday, -February 11th 14:36 2015. +The file qurltlds_p.h was last generated Thursday, +October 20th 8:40 2016. ---- [1] list: http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1 diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp index 12ac1e519d..7af057da65 100644 --- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp +++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp @@ -192,16 +192,16 @@ void tst_QNetworkCookieJar::setCookiesFromUrl_data() result += cookie; QTest::newRow("effective-tld1-accepted") << preset << cookie << "http://something.co.uk" << result << true; - // 2. anything .mz is an effective TLD ('*.mz'), but 'teledata.mz' is an exception + // 2. anything .ck is an effective TLD ('*.ck'), but 'www.ck' is an exception result.clear(); preset.clear(); - cookie.setDomain(".farmacia.mz"); - QTest::newRow("effective-tld2-denied") << preset << cookie << "http://farmacia.mz" << result << false; - QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.farmacia.mz" << result << false; - QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.farmacia.mz" << result << false; - cookie.setDomain(".teledata.mz"); + cookie.setDomain(".foo.ck"); + QTest::newRow("effective-tld2-denied") << preset << cookie << "http://foo.ck" << result << false; + QTest::newRow("effective-tld2-denied2") << preset << cookie << "http://www.foo.ck" << result << false; + QTest::newRow("effective-tld2-denied3") << preset << cookie << "http://www.anything.foo.ck" << result << false; + cookie.setDomain(".www.ck"); result += cookie; - QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.teledata.mz" << result << true; + QTest::newRow("effective-tld2-accepted") << preset << cookie << "http://www.www.ck" << result << true; result.clear(); preset.clear(); -- cgit v1.2.3 From 49d3bb005889b9fb5a06d6aadac23ebd5b2f9f2d Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 6 Oct 2016 11:24:38 +0200 Subject: Normalize realpath(3) output to composed form MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All strings coming out of POSIX API calls are converted to composed form by QFile::decodeName. Do the same for realpath(3) output. This is especially important for HFS+, which will store file names in decomposed form, and APIs will therefore return strings in decomposed form. Task-number: QTBUG-55896 Change-Id: I5e51f4e5712ff26bf9644cbcf9a9603995748892 Reviewed-by: Morten Johan Sørvig --- src/corelib/io/qfilesystemengine_unix.cpp | 2 +- tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp index 7bc2293b0d..3cc27bf847 100644 --- a/src/corelib/io/qfilesystemengine_unix.cpp +++ b/src/corelib/io/qfilesystemengine_unix.cpp @@ -276,7 +276,7 @@ QFileSystemEntry QFileSystemEngine::canonicalName(const QFileSystemEntry &entry, if (ret) { data.knownFlagsMask |= QFileSystemMetaData::ExistsAttribute; data.entryFlags |= QFileSystemMetaData::ExistsAttribute; - QString canonicalPath = QDir::cleanPath(QString::fromLocal8Bit(ret)); + QString canonicalPath = QDir::cleanPath(QFile::decodeName(ret)); free(ret); return QFileSystemEntry(canonicalPath); } else if (errno == ENOENT) { // file doesn't exist diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp index d2c43f79d6..10921ea0a3 100644 --- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp +++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp @@ -770,6 +770,19 @@ void tst_QFileInfo::canonicalFilePath() QDir::current().rmdir(linkTarget); } #endif + +#ifdef Q_OS_DARWIN + { + // Check if canonicalFilePath's result is in Composed normalization form. + QString path = QString::fromLatin1("caf\xe9"); + QDir dir(QDir::tempPath()); + dir.mkdir(path); + QString canonical = QFileInfo(dir.filePath(path)).canonicalFilePath(); + QString roundtrip = QFile::decodeName(QFile::encodeName(canonical)); + QCOMPARE(canonical, roundtrip); + dir.rmdir(path); + } +#endif } void tst_QFileInfo::fileName_data() -- cgit v1.2.3 From ef88bf02efdfb1bde447ed924b30b656356a2f59 Mon Sep 17 00:00:00 2001 From: Frederik Schwarzer Date: Tue, 18 Oct 2016 17:38:17 +0200 Subject: Fix some typos in docs and apidocs While "commonest" is still correct English, it's rather old-fashioned and "most common" predominates Qt's wording style. Change-Id: I20d72c098ee40b2a89f91e42f7208fe5b87286a2 Reviewed-by: Frederik Gladhorn --- src/corelib/doc/src/eventsandfilters.qdoc | 2 +- src/corelib/io/qurl.cpp | 2 +- src/corelib/kernel/qcoreapplication.cpp | 2 +- src/corelib/tools/qregularexpression.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/corelib/doc/src/eventsandfilters.qdoc b/src/corelib/doc/src/eventsandfilters.qdoc index 99a40bb1b8..64f015b9cc 100644 --- a/src/corelib/doc/src/eventsandfilters.qdoc +++ b/src/corelib/doc/src/eventsandfilters.qdoc @@ -80,7 +80,7 @@ \section1 Event Types - Most events types have special classes, notably QResizeEvent, + Most event types have special classes, notably QResizeEvent, QPaintEvent, QMouseEvent, QKeyEvent, and QCloseEvent. Each class subclasses QEvent and adds event-specific functions. For example, QResizeEvent adds \l{QResizeEvent::}{size()} and diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index a5643d123d..7512bcd83f 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -149,7 +149,7 @@ dealing with URLs and strings: \list - \li When creating an QString to contain a URL from a QByteArray or a + \li When creating a QString to contain a URL from a QByteArray or a char*, always use QString::fromUtf8(). \endlist */ diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index f5b15207cc..bd3c12ce97 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -1031,7 +1031,7 @@ bool QCoreApplication::notifyInternal2(QObject *receiver, QEvent *event) approaches are listed below: \list 1 \li Reimplementing \l {QWidget::}{paintEvent()}, \l {QWidget::}{mousePressEvent()} and so - on. This is the commonest, easiest, and least powerful way. + on. This is the most common, easiest, and least powerful way. \li Reimplementing this function. This is very powerful, providing complete control; but only one subclass can be active at a time. diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp index 81b108059b..9781733abb 100644 --- a/src/corelib/tools/qregularexpression.cpp +++ b/src/corelib/tools/qregularexpression.cpp @@ -542,7 +542,7 @@ QT_BEGIN_NAMESPACE \inmodule QtCore \reentrant - \brief The QRegularExpressionMatch class provides the results of a matching + \brief The QRegularExpressionMatch class provides the results of matching a QRegularExpression against a string. \since 5.0 -- cgit v1.2.3 From 92df823ed6170f6d9d33687e9a8c4f215f7db2a9 Mon Sep 17 00:00:00 2001 From: Frederik Schwarzer Date: Thu, 20 Oct 2016 16:41:49 +0200 Subject: QFileInfo: fix double sentence in apidoc Change-Id: Ie1cf32565b2fcb828ec381c45595adad1392e2ec Reviewed-by: Frederik Gladhorn --- src/corelib/io/qfileinfo.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp index 3458d5eb25..d2e287039f 100644 --- a/src/corelib/io/qfileinfo.cpp +++ b/src/corelib/io/qfileinfo.cpp @@ -287,8 +287,7 @@ QDateTime &QFileInfoPrivate::getFileTime(QAbstractFileEngine::FileTime request) \note To speed up performance, QFileInfo caches information about the file. - To speed up performance, QFileInfo caches information about the - file. Because files can be changed by other users or programs, or + Because files can be changed by other users or programs, or even by other parts of the same program, there is a function that refreshes the file information: refresh(). If you want to switch off a QFileInfo's caching and force it to access the file system -- cgit v1.2.3 From 10b9321c1dc19236620ba20bdf54cae73891d1ef Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Wed, 19 Oct 2016 15:30:58 +0300 Subject: qxcbconnection.cpp: fix warning about unused function isXIEvent() is used iff XCB_USE_XINPUT2 is defined. So move declaration of the function in XCB_USE_XINPUT2 define scope. Change-Id: I6f045cd07d572ee7425ee6edc5ac73dcf0afdb37 Reviewed-by: Edward Welbourne Reviewed-by: Thiago Macieira --- src/plugins/platforms/xcb/qxcbconnection.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp index c533a2a5f5..3d808d1d37 100644 --- a/src/plugins/platforms/xcb/qxcbconnection.cpp +++ b/src/plugins/platforms/xcb/qxcbconnection.cpp @@ -110,6 +110,7 @@ Q_LOGGING_CATEGORY(lcQpaScreen, "qt.qpa.screen") #define XCB_GE_GENERIC 35 #endif +#if defined(XCB_USE_XINPUT2) // Starting from the xcb version 1.9.3 struct xcb_ge_event_t has changed: // - "pad0" became "extension" // - "pad1" and "pad" became "pad0" @@ -127,6 +128,7 @@ static inline bool isXIEvent(xcb_generic_event_t *event, int opCode) qt_xcb_ge_event_t *e = (qt_xcb_ge_event_t *)event; return e->extension == opCode; } +#endif // XCB_USE_XINPUT2 #ifdef XCB_USE_XLIB static const char * const xcbConnectionErrors[] = { -- cgit v1.2.3 From f773ddd026a6227cdb754dea4a5fe0a25137033f Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 19 Oct 2016 10:49:21 +0200 Subject: Fix when calling QSurfaceFormat::setDefaultFormat before Q*Application Fixes a regression introduced in commit 51767affb. QOpenGLContext::globalShareContext requires a QGuiApplication to exist. This wasn't required so far. Task-number: QTBUG-56614 Change-Id: I07bcf434fca536c4dc50feee7ea17eb541fd589a Reviewed-by: Liang Qi --- src/gui/kernel/qsurfaceformat.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp index 109ba8e610..d19690891f 100644 --- a/src/gui/kernel/qsurfaceformat.cpp +++ b/src/gui/kernel/qsurfaceformat.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef major #undef major @@ -760,10 +761,13 @@ Q_GLOBAL_STATIC(QSurfaceFormat, qt_default_surface_format) void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format) { #ifndef QT_NO_OPENGL - QOpenGLContext *globalContext = QOpenGLContext::globalShareContext(); - if (globalContext && globalContext->isValid()) { - qWarning("Warning: Setting a new default format with a different version or profile after " - "the global shared context is created may cause issues with context sharing."); + if (qApp) { + QOpenGLContext *globalContext = QOpenGLContext::globalShareContext(); + if (globalContext && globalContext->isValid()) { + qWarning("Warning: Setting a new default format with a different version or profile " + "after the global shared context is created may cause issues with context " + "sharing."); + } } #endif *qt_default_surface_format() = format; -- cgit v1.2.3 From 686c44a69b13f6e884dd2b6d9991f4cd94597c5a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 28 Sep 2016 10:49:57 +0200 Subject: Plug remaining leaks in tests/auto/widgets/kernel The usual: - delete return values of QLayout::takeAt(), replaceWidget() - delete styles - delete top-level widgets - delete actions Either by naked delete, QScopedPointer or allocation on the stack instead of the heap. This fixes the remaining errors in GCC 6.1 Linux ASan runs of tests/auto/widgets/kernel. Change-Id: I8cc217be114b2e0edf34ad8d60dbf722f900bb7f Reviewed-by: Thiago Macieira --- tests/auto/widgets/kernel/qaction/tst_qaction.cpp | 6 +++--- .../auto/widgets/kernel/qapplication/tst_qapplication.cpp | 12 ++++++------ tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp | 15 +++++++++------ 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp index 71b55d71ea..b496550f85 100644 --- a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp +++ b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp @@ -329,7 +329,7 @@ void tst_QAction::enabledVisibleInteraction() void tst_QAction::task200823_tooltip() { - QAction *action = new QAction("foo", 0); + const QScopedPointer action(new QAction("foo", Q_NULLPTR)); QString shortcut("ctrl+o"); action->setShortcut(shortcut); @@ -343,8 +343,8 @@ void tst_QAction::task200823_tooltip() void tst_QAction::task229128TriggeredSignalWithoutActiongroup() { // test without a group - QAction *actionWithoutGroup = new QAction("Test", qApp); - QSignalSpy spyWithoutGroup(actionWithoutGroup, SIGNAL(triggered(bool))); + const QScopedPointer actionWithoutGroup(new QAction("Test", Q_NULLPTR)); + QSignalSpy spyWithoutGroup(actionWithoutGroup.data(), SIGNAL(triggered(bool))); QCOMPARE(spyWithoutGroup.count(), 0); actionWithoutGroup->trigger(); // signal should be emitted diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp index 87a189fc87..424069c8ae 100644 --- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp +++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp @@ -2211,8 +2211,8 @@ void tst_QApplication::noQuitOnHide() { int argc = 0; QApplication app(argc, 0); - QWidget *window1 = new NoQuitOnHideWidget; - window1->show(); + NoQuitOnHideWidget window1; + window1.show(); QCOMPARE(app.exec(), 1); } @@ -2246,12 +2246,12 @@ void tst_QApplication::abortQuitOnShow() { int argc = 0; QApplication app(argc, 0); - QWidget *window1 = new ShowCloseShowWidget(false); - window1->show(); + ShowCloseShowWidget window1(false); + window1.show(); QCOMPARE(app.exec(), 0); - QWidget *window2 = new ShowCloseShowWidget(true); - window2->show(); + ShowCloseShowWidget window2(true); + window2.show(); QCOMPARE(app.exec(), 1); } diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp index e1b494c9f1..5703d7e114 100644 --- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp +++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp @@ -395,7 +395,8 @@ void tst_QFormLayout::setFormStyle() QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows); #endif - widget.setStyle(QStyleFactory::create("windows")); + const QScopedPointer windowsStyle(QStyleFactory::create("windows")); + widget.setStyle(windowsStyle.data()); QCOMPARE(layout.labelAlignment(), Qt::AlignLeft); QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop)); @@ -406,14 +407,16 @@ void tst_QFormLayout::setFormStyle() this test is cross platform.. so create dummy styles that return all the right stylehints. */ - widget.setStyle(new DummyMacStyle()); + DummyMacStyle macStyle; + widget.setStyle(&macStyle); QCOMPARE(layout.labelAlignment(), Qt::AlignRight); QVERIFY(layout.formAlignment() == (Qt::AlignHCenter | Qt::AlignTop)); QCOMPARE(layout.fieldGrowthPolicy(), QFormLayout::FieldsStayAtSizeHint); QCOMPARE(layout.rowWrapPolicy(), QFormLayout::DontWrapRows); - widget.setStyle(new DummyQtopiaStyle()); + DummyQtopiaStyle qtopiaStyle; + widget.setStyle(&qtopiaStyle); QCOMPARE(layout.labelAlignment(), Qt::AlignRight); QVERIFY(layout.formAlignment() == (Qt::AlignLeft | Qt::AlignTop)); @@ -891,7 +894,7 @@ void tst_QFormLayout::takeAt() QCOMPARE(layout->count(), 7); for (int i = 6; i >= 0; --i) { - layout->takeAt(0); + delete layout->takeAt(0); QCOMPARE(layout->count(), i); } } @@ -983,7 +986,7 @@ void tst_QFormLayout::replaceWidget() QFormLayout::ItemRole role; // replace editor - layout->replaceWidget(edit1, edit3); + delete layout->replaceWidget(edit1, edit3); edit1->hide(); // Not strictly needed for the test, but for normal usage it is. QCOMPARE(layout->indexOf(edit1), -1); QCOMPARE(layout->indexOf(edit3), editIndex); @@ -994,7 +997,7 @@ void tst_QFormLayout::replaceWidget() QCOMPARE(rownum, 0); QCOMPARE(role, QFormLayout::FieldRole); - layout->replaceWidget(label1, label2); + delete layout->replaceWidget(label1, label2); label1->hide(); QCOMPARE(layout->indexOf(label1), -1); QCOMPARE(layout->indexOf(label2), labelIndex); -- cgit v1.2.3 From 0e888ae1a10750c7f5e644da8f774376f0c8da6a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 7 Oct 2016 10:49:18 +0200 Subject: tst_QGraphicsItem: plug remaining leaks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Store QGraphicsItems that are either not added to a scene or removed from it again and that are also not children of other items - iow: those that were leaked, even on successful runs of the tests, in either a QScopedPointer, or, where that'd cause too much churn due to adding of .data() calls, back the pointer by a stack-allocated object. This fixes the remaining leaks reported by GCC 6.2.1's ASan on successful runs of tests/auto/widgets/graphicsview/qgraphicsitem. Change-Id: I61c3a1cd39b9e96e83c5d7b8cf392e0b26ecbaf0 Reviewed-by: Edward Welbourne Reviewed-by: Sérgio Martins --- .../qgraphicsitem/tst_qgraphicsitem.cpp | 40 ++++++++++++---------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp index 8ee9ffe294..4a5a66dd05 100644 --- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp @@ -848,14 +848,14 @@ void tst_QGraphicsItem::parentItem() void tst_QGraphicsItem::setParentItem() { QGraphicsScene scene; - QGraphicsItem *item = scene.addRect(QRectF(0, 0, 10, 10)); + const QScopedPointer item(scene.addRect(QRectF(0, 0, 10, 10))); QCOMPARE(item->scene(), &scene); - QGraphicsRectItem *child = new QGraphicsRectItem; + const QScopedPointer child(new QGraphicsRectItem); QCOMPARE(child->scene(), (QGraphicsScene *)0); // This implicitly adds the item to the parent's scene - child->setParentItem(item); + child->setParentItem(item.data()); QCOMPARE(child->scene(), &scene); // This just makes it a toplevel @@ -863,8 +863,8 @@ void tst_QGraphicsItem::setParentItem() QCOMPARE(child->scene(), &scene); // Add the child back to the parent, then remove the parent from the scene - child->setParentItem(item); - scene.removeItem(item); + child->setParentItem(item.data()); + scene.removeItem(item.data()); QCOMPARE(child->scene(), (QGraphicsScene *)0); } @@ -962,19 +962,19 @@ void tst_QGraphicsItem::flags() QCOMPARE(item->pos(), QPointF(10, 10)); } { - QGraphicsItem* clippingParent = new QGraphicsRectItem; + const QScopedPointer clippingParent(new QGraphicsRectItem); clippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true); - QGraphicsItem* nonClippingParent = new QGraphicsRectItem; + const QScopedPointer nonClippingParent(new QGraphicsRectItem); nonClippingParent->setFlag(QGraphicsItem::ItemClipsChildrenToShape, false); - QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent); + QGraphicsItem* child = new QGraphicsRectItem(nonClippingParent.data()); QVERIFY(!child->isClipped()); - child->setParentItem(clippingParent); + child->setParentItem(clippingParent.data()); QVERIFY(child->isClipped()); - child->setParentItem(nonClippingParent); + child->setParentItem(nonClippingParent.data()); QVERIFY(!child->isClipped()); } } @@ -3133,7 +3133,8 @@ void tst_QGraphicsItem::isAncestorOf() void tst_QGraphicsItem::commonAncestorItem() { - QGraphicsItem *ancestor = new QGraphicsRectItem; + QGraphicsRectItem ancestorItem; + QGraphicsItem *ancestor = &ancestorItem; QGraphicsItem *grandMa = new QGraphicsRectItem; QGraphicsItem *grandPa = new QGraphicsRectItem; QGraphicsItem *brotherInLaw = new QGraphicsRectItem; @@ -3633,7 +3634,7 @@ void tst_QGraphicsItem::setGroup() QGraphicsItemGroup group1; QGraphicsItemGroup group2; - QGraphicsRectItem *rect = new QGraphicsRectItem; + const QScopedPointer rect(new QGraphicsRectItem); QCOMPARE(rect->group(), (QGraphicsItemGroup *)0); QCOMPARE(rect->parentItem(), (QGraphicsItem *)0); rect->setGroup(&group1); @@ -6831,8 +6832,8 @@ void tst_QGraphicsItem::opacity() QFETCH(qreal, c2_effectiveOpacity); QFETCH(qreal, c3_effectiveOpacity); - QGraphicsRectItem *p = new QGraphicsRectItem; - QGraphicsRectItem *c1 = new QGraphicsRectItem(p); + const QScopedPointer p(new QGraphicsRectItem); + QGraphicsRectItem *c1 = new QGraphicsRectItem(p.data()); QGraphicsRectItem *c2 = new QGraphicsRectItem(c1); QGraphicsRectItem *c3 = new QGraphicsRectItem(c2); @@ -7219,11 +7220,12 @@ void tst_QGraphicsItem::sceneTransformCache() // Test that an item's scene transform is updated correctly when the // parent is transformed. QGraphicsScene scene; - QGraphicsRectItem *rect = scene.addRect(0, 0, 100, 100); + + const QScopedPointer rect(scene.addRect(0, 0, 100, 100)); rect->setPen(QPen(Qt::black, 0)); QGraphicsRectItem *rect2 = scene.addRect(0, 0, 100, 100); rect2->setPen(QPen(Qt::black, 0)); - rect2->setParentItem(rect); + rect2->setParentItem(rect.data()); rect2->rotate(90); rect->translate(0, 50); QGraphicsView view(&scene); @@ -7235,7 +7237,7 @@ void tst_QGraphicsItem::sceneTransformCache() x.rotate(90); QCOMPARE(rect2->sceneTransform(), x); - scene.removeItem(rect); + scene.removeItem(rect.data()); //Crazy use case : rect4 child of rect3 so the transformation of rect4 will be cached.Good! //We remove rect4 from the scene, then the validTransform bit flag is set to 0 and the index of the cache @@ -10688,7 +10690,7 @@ void tst_QGraphicsItem::scenePosChange() { ScenePosChangeTester* root = new ScenePosChangeTester; ScenePosChangeTester* child1 = new ScenePosChangeTester(root); - ScenePosChangeTester* grandChild1 = new ScenePosChangeTester(child1); + const QScopedPointer grandChild1(new ScenePosChangeTester(child1)); ScenePosChangeTester* child2 = new ScenePosChangeTester(root); ScenePosChangeTester* grandChild2 = new ScenePosChangeTester(child2); @@ -10740,7 +10742,7 @@ void tst_QGraphicsItem::scenePosChange() QCOMPARE(grandChild2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 3); // remove - scene.removeItem(grandChild1); + scene.removeItem(grandChild1.data()); delete grandChild2; grandChild2 = 0; QCoreApplication::processEvents(); // QGraphicsScenePrivate::_q_updateScenePosDescendants() root->moveBy(1.0, 1.0); -- cgit v1.2.3 From 84dc7d5f5560d69a0d7973f591ce253605a458ac Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Mon, 10 Oct 2016 21:53:09 +0200 Subject: QComboBox: fix build with GCC 7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC 7 warns about implicit fall-throughs now. Fix by adding the missing comments. Interestingly, Coverity only found one of them, even though all three still exist in dev, too. Change-Id: I9f2c5e2700d5ec5234fee3a532feffe01b7c4ce3 Coverity-Id: 11156 Reviewed-by: Edward Welbourne Reviewed-by: Sérgio Martins --- src/widgets/widgets/qcombobox.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index 0ef76b95f0..22ba26b6a3 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -3125,6 +3125,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) case Qt::Key_Up: if (e->modifiers() & Qt::ControlModifier) break; // pass to line edit for auto completion + // fall through case Qt::Key_PageUp: #ifdef QT_KEYPAD_NAVIGATION if (QApplication::keypadNavigationEnabled()) @@ -3210,6 +3211,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) switch (move) { case MoveFirst: newIndex = -1; + // fall through case MoveDown: newIndex++; while ((newIndex < count()) && !(d->model->flags(d->model->index(newIndex,d->modelColumn,d->root)) & Qt::ItemIsEnabled)) @@ -3217,6 +3219,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e) break; case MoveLast: newIndex = count(); + // fall through case MoveUp: newIndex--; while ((newIndex >= 0) && !(d->model->flags(d->model->index(newIndex,d->modelColumn,d->root)) & Qt::ItemIsEnabled)) -- cgit v1.2.3 From e70e168abb4b75dc8d00e2cba12efa1a111d429d Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 29 Sep 2016 09:06:12 +0200 Subject: Plug leaks in tst_QWizard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This completely over-engineered piece of code has a hierarchy of Operation subclasses encapsulating but three actual operations on a QWizard. Because these operations and their containers were all allocated on the heap, but never deleted, asan went crazy and reported over 50 leaks (not the record so far, but a (distant) second). Since these collections are passed through addColumn/QFETCH, too, it's nearly impossible to track their lifetimes. So instead of trying, delegate that to the runtime, ie. pack the Operation objects into QSharedPointer and pass around those instead. Change-Id: I8a0fe7a60cd30aed618667affaa030e80cf2b1ac Reviewed-by: Edward Welbourne Reviewed-by: Sérgio Martins --- tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp | 106 ++++++++++++--------- 1 file changed, 60 insertions(+), 46 deletions(-) diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp index b2bdbac79a..5789f0ca42 100644 --- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp +++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp @@ -1626,28 +1626,44 @@ class SetPage : public Operation wizard->next(); } QString describe() const { return QString("set page %1").arg(page); } - const int page; + int page; public: - SetPage(int page) : page(page) {} + static QSharedPointer create(int page) + { + QSharedPointer o = QSharedPointer::create(); + o->page = page; + return o; + } }; class SetStyle : public Operation { void apply(QWizard *wizard) const { wizard->setWizardStyle(style); } QString describe() const { return QString("set style %1").arg(style); } - const QWizard::WizardStyle style; + QWizard::WizardStyle style; public: - SetStyle(QWizard::WizardStyle style) : style(style) {} + static QSharedPointer create(QWizard::WizardStyle style) + { + QSharedPointer o = QSharedPointer::create(); + o->style = style; + return o; + } }; class SetOption : public Operation { void apply(QWizard *wizard) const { wizard->setOption(option, on); } QString describe() const; - const QWizard::WizardOption option; - const bool on; + QWizard::WizardOption option; + bool on; public: - SetOption(QWizard::WizardOption option, bool on) : option(option), on(on) {} + static QSharedPointer create(QWizard::WizardOption option, bool on) + { + QSharedPointer o = QSharedPointer::create(); + o->option = option; + o->on = on; + return o; + } }; class OptionInfo @@ -1672,16 +1688,16 @@ class OptionInfo tags[QWizard::HaveCustomButton3] = "15/CB3"; for (int i = 0; i < 2; ++i) { - QMap operations_; + QMap > operations_; foreach (QWizard::WizardOption option, tags.keys()) - operations_[option] = new SetOption(option, i == 1); + operations_[option] = SetOption::create(option, i == 1); operations << operations_; } } OptionInfo(OptionInfo const&); OptionInfo& operator=(OptionInfo const&); QMap tags; - QList > operations; + QList > > operations; public: static OptionInfo &instance() { @@ -1690,7 +1706,7 @@ public: } QString tag(QWizard::WizardOption option) const { return tags.value(option); } - Operation * operation(QWizard::WizardOption option, bool on) const + QSharedPointer operation(QWizard::WizardOption option, bool on) const { return operations.at(on).value(option); } QList options() const { return tags.keys(); } }; @@ -1700,10 +1716,7 @@ QString SetOption::describe() const return QString("set opt %1 %2").arg(OptionInfo::instance().tag(option)).arg(on); } -Q_DECLARE_METATYPE(Operation *) -Q_DECLARE_METATYPE(SetPage *) -Q_DECLARE_METATYPE(SetStyle *) -Q_DECLARE_METATYPE(SetOption *) +Q_DECLARE_METATYPE(QVector >) class TestGroup { @@ -1720,14 +1733,17 @@ public: combinations.clear(); } - QList &add() - { combinations << new QList; return *(combinations.last()); } + QVector > &add() + { + combinations.resize(combinations.size() + 1); + return combinations.last(); + } void createTestRows() { for (int i = 0; i < combinations.count(); ++i) { QTest::newRow((name + QString(", row %1").arg(i)).toLatin1().data()) - << (i == 0) << (type == Equality) << *(combinations.at(i)); + << (i == 0) << (type == Equality) << combinations.at(i); ++nRows_; } } @@ -1738,7 +1754,7 @@ private: QString name; Type type; int nRows_; - QList *> combinations; + QVector > > combinations; }; class IntroPage : public QWizardPage @@ -1822,9 +1838,9 @@ public: } } - void applyOperations(const QList &operations) + void applyOperations(const QVector > &operations) { - foreach (Operation * op, operations) { + foreach (const QSharedPointer &op, operations) { if (op) { op->apply(this); opsDescr += QString("(%1) ").arg(op->describe()); @@ -1844,31 +1860,29 @@ public: class CombinationsTestData { TestGroup testGroup; - QList pageOps; - QList styleOps; - QMap *> setAllOptions; + QVector > pageOps; + QVector > styleOps; + QMap > > setAllOptions; public: CombinationsTestData() { QTest::addColumn("ref"); QTest::addColumn("testEquality"); - QTest::addColumn >("operations"); - pageOps << new SetPage(0) << new SetPage(1) << new SetPage(2); - styleOps << new SetStyle(QWizard::ClassicStyle) << new SetStyle(QWizard::ModernStyle) - << new SetStyle(QWizard::MacStyle); + QTest::addColumn > >("operations"); + pageOps << SetPage::create(0) << SetPage::create(1) << SetPage::create(2); + styleOps << SetStyle::create(QWizard::ClassicStyle) << SetStyle::create(QWizard::ModernStyle) + << SetStyle::create(QWizard::MacStyle); #define SETPAGE(page) pageOps.at(page) #define SETSTYLE(style) styleOps.at(style) #define OPT(option, on) OptionInfo::instance().operation(option, on) #define CLROPT(option) OPT(option, false) #define SETOPT(option) OPT(option, true) - setAllOptions[false] = new QList; - setAllOptions[true] = new QList; foreach (QWizard::WizardOption option, OptionInfo::instance().options()) { - *setAllOptions.value(false) << CLROPT(option); - *setAllOptions.value(true) << SETOPT(option); + setAllOptions[false] << CLROPT(option); + setAllOptions[true] << SETOPT(option); } -#define CLRALLOPTS *setAllOptions.value(false) -#define SETALLOPTS *setAllOptions.value(true) +#define CLRALLOPTS setAllOptions.value(false) +#define SETALLOPTS setAllOptions.value(true) } int nRows() const { return testGroup.nRows(); } @@ -1920,7 +1934,7 @@ public: testGroup.createTestRows(); for (int i = 0; i < 2; ++i) { - QList setOptions = *setAllOptions.value(i == 1); + QVector > setOptions = setAllOptions.value(i == 1); testGroup.reset("testAll 3.1"); testGroup.add() << setOptions; @@ -1937,21 +1951,21 @@ public: testGroup.createTestRows(); } - foreach (Operation *pageOp, pageOps) { + foreach (const QSharedPointer &pageOp, pageOps) { testGroup.reset("testAll 4.1"); testGroup.add() << pageOp; testGroup.add() << pageOp << pageOp; testGroup.createTestRows(); for (int i = 0; i < 2; ++i) { - QList optionOps = *setAllOptions.value(i == 1); + QVector > optionOps = setAllOptions.value(i == 1); testGroup.reset("testAll 4.2"); testGroup.add() << optionOps << pageOp; testGroup.add() << pageOp << optionOps; testGroup.createTestRows(); foreach (QWizard::WizardOption option, OptionInfo::instance().options()) { - Operation *optionOp = OPT(option, i == 1); + QSharedPointer optionOp = OPT(option, i == 1); testGroup.reset("testAll 4.3"); testGroup.add() << optionOp << pageOp; testGroup.add() << pageOp << optionOp; @@ -1960,21 +1974,21 @@ public: } } - foreach (Operation *styleOp, styleOps) { + foreach (const QSharedPointer &styleOp, styleOps) { testGroup.reset("testAll 5.1"); testGroup.add() << styleOp; testGroup.add() << styleOp << styleOp; testGroup.createTestRows(); for (int i = 0; i < 2; ++i) { - QList optionOps = *setAllOptions.value(i == 1); + QVector > optionOps = setAllOptions.value(i == 1); testGroup.reset("testAll 5.2"); testGroup.add() << optionOps << styleOp; testGroup.add() << styleOp << optionOps; testGroup.createTestRows(); foreach (QWizard::WizardOption option, OptionInfo::instance().options()) { - Operation *optionOp = OPT(option, i == 1); + QSharedPointer optionOp = OPT(option, i == 1); testGroup.reset("testAll 5.3"); testGroup.add() << optionOp << styleOp; testGroup.add() << styleOp << optionOp; @@ -1983,8 +1997,8 @@ public: } } - foreach (Operation *pageOp, pageOps) { - foreach (Operation *styleOp, styleOps) { + foreach (const QSharedPointer &pageOp, pageOps) { + foreach (const QSharedPointer &styleOp, styleOps) { testGroup.reset("testAll 6.1"); testGroup.add() << pageOp; @@ -2002,7 +2016,7 @@ public: testGroup.createTestRows(); for (int i = 0; i < 2; ++i) { - QList optionOps = *setAllOptions.value(i == 1); + QVector > optionOps = setAllOptions.value(i == 1); testGroup.reset("testAll 6.4"); testGroup.add() << optionOps << pageOp << styleOp; testGroup.add() << pageOp << optionOps << styleOp; @@ -2013,7 +2027,7 @@ public: testGroup.createTestRows(); foreach (QWizard::WizardOption option, OptionInfo::instance().options()) { - Operation *optionOp = OPT(option, i == 1); + QSharedPointer optionOp = OPT(option, i == 1); testGroup.reset("testAll 6.5"); testGroup.add() << optionOp << pageOp << styleOp; testGroup.add() << pageOp << optionOp << styleOp; @@ -2079,7 +2093,7 @@ void tst_QWizard::combinations() QFETCH(bool, ref); QFETCH(bool, testEquality); - QFETCH(QList, operations); + QFETCH(QVector >, operations); TestWizard wizard; #if !defined(QT_NO_STYLE_WINDOWSVISTA) -- cgit v1.2.3 From 30b7278c5cf1df0b507cd3139a53b7adcc190850 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 6 Oct 2016 16:32:49 +0200 Subject: Remove type punning from ucstrncmp Type punning is UB. Change-Id: I0022d2a38136d80f5ddda21cea7dc0968c736242 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/tools/qstring.cpp | 48 +++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index ff7e7fd406..b7f83e4b9d 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -480,48 +480,46 @@ static int ucstrncmp(const QChar *a, const QChar *b, int l) if (!l) return 0; - union { - const QChar *w; - const quint32 *d; - quintptr value; - } sa, sb; - sa.w = a; - sb.w = b; - // check alignment - if ((sa.value & 2) == (sb.value & 2)) { + if ((reinterpret_cast(a) & 2) == (reinterpret_cast(b) & 2)) { // both addresses have the same alignment - if (sa.value & 2) { + if (reinterpret_cast(a) & 2) { // both addresses are not aligned to 4-bytes boundaries // compare the first character - if (*sa.w != *sb.w) - return sa.w->unicode() - sb.w->unicode(); + if (*a != *b) + return a->unicode() - b->unicode(); --l; - ++sa.w; - ++sb.w; + ++a; + ++b; // now both addresses are 4-bytes aligned } // both addresses are 4-bytes aligned // do a fast 32-bit comparison - const quint32 *e = sa.d + (l >> 1); - for ( ; sa.d != e; ++sa.d, ++sb.d) { - if (*sa.d != *sb.d) { - if (*sa.w != *sb.w) - return sa.w->unicode() - sb.w->unicode(); - return sa.w[1].unicode() - sb.w[1].unicode(); + const quint32 *da = reinterpret_cast(a); + const quint32 *db = reinterpret_cast(b); + const quint32 *e = da + (l >> 1); + for ( ; da != e; ++da, ++db) { + if (*da != *db) { + a = reinterpret_cast(da); + b = reinterpret_cast(db); + if (*a != *b) + return a->unicode() - b->unicode(); + return a[1].unicode() - b[1].unicode(); } } // do we have a tail? - return (l & 1) ? sa.w->unicode() - sb.w->unicode() : 0; + a = reinterpret_cast(da); + b = reinterpret_cast(db); + return (l & 1) ? a->unicode() - b->unicode() : 0; } else { // one of the addresses isn't 4-byte aligned but the other is - const QChar *e = sa.w + l; - for ( ; sa.w != e; ++sa.w, ++sb.w) { - if (*sa.w != *sb.w) - return sa.w->unicode() - sb.w->unicode(); + const QChar *e = a + l; + for ( ; a != e; ++a, ++b) { + if (*a != *b) + return a->unicode() - b->unicode(); } } return 0; -- cgit v1.2.3 From a6a08095a4c5442283ac9b873c90ab0131e5b24f Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 29 Jun 2016 12:46:45 +0200 Subject: Compile fix for DB2 sqldriver plugin Change-Id: Ib91ffaa0f1f240b9d93e1756cf309a9975f09928 Reviewed-by: Lars Knoll Reviewed-by: Friedemann Kleint --- src/sql/drivers/db2/qsql_db2.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp index 4ccc3aca9e..a2046e17a1 100644 --- a/src/sql/drivers/db2/qsql_db2.cpp +++ b/src/sql/drivers/db2/qsql_db2.cpp @@ -59,8 +59,6 @@ #define SQL_BIGUINT_TYPE quint64 #endif -#define UNICODE - #include #include @@ -1187,8 +1185,8 @@ QDB2Driver::QDB2Driver(Qt::HANDLE env, Qt::HANDLE con, QObject* parent) : QSqlDriver(*new QDB2DriverPrivate, parent) { Q_D(QDB2Driver); - d->hEnv = reinterpret_cast(env); - d->hDbc = reinterpret_cast(con); + d->hEnv = reinterpret_cast(env); + d->hDbc = reinterpret_cast(con); if (env && con) { setOpen(true); setOpenError(false); -- cgit v1.2.3 From 391741bd7b9d07a6c3fd2e5c0bc70d3c00f29ac8 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Wed, 19 Oct 2016 17:50:52 +0200 Subject: Cocoa integration - remove erroneous warning The conditional statement checks/allows only right/left mouse buttons in handleMouseDraggedEvent and generates a lot of useless/misleading warnings in case we press (for example) a middle mouse button (when we're also moving mouse cursor, intentionally or not). Task-number: QTBUG-54160 Task-number: QTBUG-42846 Change-Id: I5c54b6204cb90036c7d98724537f1c985b40d9cc Reviewed-by: Shawn Rutledge --- src/plugins/platforms/cocoa/qnsview.mm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index 51a69be759..0e46c3150b 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -892,11 +892,6 @@ QT_WARNING_POP if (!(m_acceptedMouseDowns & button) == button) return false; - if (!(m_buttons & (m_sendUpAsRightButton ? Qt::RightButton : Qt::LeftButton))) { - qCWarning(lcQpaCocoaWindow) << "QNSView mouseDragged: Internal mouse button tracking" - << "invalid (missing Qt::LeftButton)"; - } - [self handleMouseEvent:theEvent]; return true; } -- cgit v1.2.3 From 592614ea3ecd90ede2ae1b8e6579d1b898f474ec Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 21 Oct 2016 10:13:20 +0200 Subject: Don't claim all fonts are smoothly scalable on Windows Since 40ebda3efbcf00c3393cb70c9eee203c68a57311, bitmap fonts are detected as smoothly scalable on Windows. While the fontsAlwaysScalable() does say whether or not the font engine can rasterize the fonts at any size, it does not determine whether or not the result is "attractive" as the documentation for isSmoothlyScalable() says. Only outline fonts are smoothly scalable, and this fact is used in Qt Quick to determine whether we can use the distance field renderer for the font or if we have to fall back to the native renderer. The consequence was that the fonts were no longer usable in Qt Quick. We also need to revert the optimization for isBitmapScalable() since there a font that is smoothly scalable should not be identified as bitmap scalable (basically this means: Font is not smoothly scalable, but it can be scaled with bitmap scaling artifacts). [ChangeLog][QtGui][Text] Fixed a regression where raster fonts on Windows were detected as smoothly scalable and thus rendering with said fonts in Qt Quick would break. Task-number: QTBUG-56659 Change-Id: Ia7db6fee8249aca347233a488388be5c3a00c2df Reviewed-by: Lars Knoll --- src/gui/text/qfontdatabase.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index f063541249..04081a5ca7 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -1657,9 +1657,6 @@ bool QFontDatabase::isFixedPitch(const QString &family, bool QFontDatabase::isBitmapScalable(const QString &family, const QString &style) const { - if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) - return true; - bool bitmapScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); @@ -1700,9 +1697,6 @@ bool QFontDatabase::isBitmapScalable(const QString &family, */ bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style) const { - if (QGuiApplicationPrivate::platformIntegration()->fontDatabase()->fontsAlwaysScalable()) - return true; - bool smoothScalable = false; QString familyName, foundryName; parseFontName(family, foundryName, familyName); -- cgit v1.2.3 From f6eb570c7dee2ec92383607c614db91f31804707 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 29 Sep 2016 11:59:01 +0200 Subject: Darwin: normalize all watched paths to composed from MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This will be done by all POSIX APIs for strings coming in that way, but because other code (like NSWhateverViews) will most likely return decomposed form, we make sure that those are in composed form too. Task-number: QTBUG-55896 Change-Id: I065e11cee6b59706d4346ed20d4b59b9b95163b8 Reviewed-by: Morten Johan Sørvig --- src/corelib/io/qfilesystemwatcher_fsevents.mm | 2 +- .../qfilesystemwatcher/tst_qfilesystemwatcher.cpp | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm index c6fa6c9846..6af9e5f5ef 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.mm +++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm @@ -343,7 +343,7 @@ QStringList QFseventsFileSystemWatcherEngine::addPaths(const QStringList &paths, QStringList p = paths; QMutableListIterator it(p); while (it.hasNext()) { - QString origPath = it.next(); + QString origPath = it.next().normalized(QString::NormalizationForm_C); QString realPath = origPath; if (realPath.endsWith(QDir::separator())) realPath = realPath.mid(0, realPath.size() - 1); diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index 026743257c..4ede1e69f3 100644 --- a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -78,6 +78,8 @@ private slots: void signalsEmittedAfterFileMoved(); + void watchUnicodeCharacters(); + private: QString m_tempDirPattern; #endif // QT_NO_FILESYSTEMWATCHER @@ -763,6 +765,25 @@ void tst_QFileSystemWatcher::signalsEmittedAfterFileMoved() QVERIFY2(changedSpy.count() <= fileCount, changedSpy.receivedFilesMessage()); QTRY_COMPARE(changedSpy.count(), fileCount); } + +void tst_QFileSystemWatcher::watchUnicodeCharacters() +{ + QTemporaryDir temporaryDirectory(m_tempDirPattern); + QVERIFY2(temporaryDirectory.isValid(), qPrintable(temporaryDirectory.errorString())); + + QDir testDir(temporaryDirectory.path()); + const QString subDir(QString::fromLatin1("caf\xe9")); + QVERIFY(testDir.mkdir(subDir)); + testDir = QDir(temporaryDirectory.path() + QDir::separator() + subDir); + + QFileSystemWatcher watcher; + QVERIFY(watcher.addPath(testDir.path())); + + FileSystemWatcherSpy changedSpy(&watcher, FileSystemWatcherSpy::SpyOnDirectoryChanged); + QCOMPARE(changedSpy.count(), 0); + QVERIFY(testDir.mkdir("creme")); + QTRY_COMPARE(changedSpy.count(), 1); +} #endif // QT_NO_FILESYSTEMWATCHER QTEST_MAIN(tst_QFileSystemWatcher) -- cgit v1.2.3 From 843247e1c509ec3ce55a2e2051b83fcfa6634135 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 14 Oct 2016 13:05:00 +0200 Subject: Call raise on the window that contains the widget and not the widget When the mouse is clicked on the widget in a window while a popup is visible then it should raise just the window and not the widget inside it. If the widget is in a stacked layout then calling raise() on it can cause it to appear on top so avoid this by calling raise() directly on the window. Task-number: QTBUG-52670 Change-Id: Idd287c6cc7038c57e14e92f4a3e1c50985925684 Reviewed-by: Friedemann Kleint --- src/widgets/kernel/qwidgetwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index 95f63025fb..40c488857e 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -529,7 +529,7 @@ void QWidgetWindow::handleMouseEvent(QMouseEvent *event) // activate window of the widget under mouse pointer if (!w->isActiveWindow()) { w->activateWindow(); - w->raise(); + w->window()->raise(); } QWindow *win = w->windowHandle(); -- cgit v1.2.3 From e2d8c7bf2203cbc0c7ff923caf3132881aafa0b0 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 1 Sep 2016 11:53:15 +0200 Subject: Don't change the size of widgets just because it is in a floating dock When a QDockWidget was floating on macOS then it would force the size of various widgets, such as buttons, comboboxes, to be the smallest needed rather than the size they had when it was docked. Task-number: QTBUG-7460 Task-number: QTBUG-52354 Change-Id: Id348180934f113f3a9a9ce5622a9af03eed04108 Reviewed-by: Jake Petroules --- src/widgets/styles/qmacstyle_mac.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 46918a2d5f..84445bfce4 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -1034,6 +1034,8 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg #if defined(QMAC_QAQUASTYLE_SIZE_CONSTRAIN) || defined(DEBUG_SIZE_CONSTRAINT) static QAquaWidgetSize qt_aqua_guess_size(const QWidget *widg, QSize large, QSize small, QSize mini) { + Q_UNUSED(widg); + if (large == QSize(-1, -1)) { if (small != QSize(-1, -1)) return QAquaSizeSmall; @@ -1049,7 +1051,7 @@ static QAquaWidgetSize qt_aqua_guess_size(const QWidget *widg, QSize large, QSiz } #ifndef QT_NO_MAINWINDOW - if (qobject_cast(widg->window()) || qEnvironmentVariableIsSet("QWIDGET_ALL_SMALL")) { + if (qEnvironmentVariableIsSet("QWIDGET_ALL_SMALL")) { //if (small.width() != -1 || small.height() != -1) return QAquaSizeSmall; } else if (qEnvironmentVariableIsSet("QWIDGET_ALL_MINI")) { -- cgit v1.2.3 From 9c83d7f871f95b1cc03fb404bd602df32056b9cb Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Fri, 30 Sep 2016 15:39:03 -0700 Subject: QCocoaMenuBar: Update even if no window is attached Then we need to check if the current active (or focused) window has any menubar associated. In case there isn't, and the menubar has no window associated, then we should update immediately. The previous condition is still valid. Change-Id: I4532ccc87354d91c76b53f5433dc3944b9e29584 Task-number: QTBUG-56275 Reviewed-by: Erik Verbruggen --- src/plugins/platforms/cocoa/qcocoamenubar.h | 1 + src/plugins/platforms/cocoa/qcocoamenubar.mm | 28 +++++++++++++- tests/auto/widgets/widgets/qmenubar/qmenubar.pro | 5 +++ .../auto/widgets/widgets/qmenubar/tst_qmenubar.cpp | 24 ++++++++++++ .../widgets/widgets/qmenubar/tst_qmenubar_mac.mm | 44 ++++++++++++++++++++++ 5 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.h b/src/plugins/platforms/cocoa/qcocoamenubar.h index e84da7aeb0..2865dd2460 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.h +++ b/src/plugins/platforms/cocoa/qcocoamenubar.h @@ -70,6 +70,7 @@ private: static QCocoaWindow *findWindowForMenubar(); static QCocoaMenuBar *findGlobalMenubar(); + bool needsImmediateUpdate(); bool shouldDisable(QCocoaWindow *active) const; NSMenuItem *nativeItemForMenu(QCocoaMenu *menu) const; diff --git a/src/plugins/platforms/cocoa/qcocoamenubar.mm b/src/plugins/platforms/cocoa/qcocoamenubar.mm index 3523182e6d..82aebf8cf3 100644 --- a/src/plugins/platforms/cocoa/qcocoamenubar.mm +++ b/src/plugins/platforms/cocoa/qcocoamenubar.mm @@ -89,6 +89,32 @@ QCocoaMenuBar::~QCocoaMenuBar() } } +bool QCocoaMenuBar::needsImmediateUpdate() +{ + if (m_window && m_window->window()->isActive()) { + return true; + } else if (!m_window) { + // Only update if the focus/active window has no + // menubar, which means it'll be using this menubar. + // This is to avoid a modification in a parentless + // menubar to affect a window-assigned menubar. + QWindow *fw = QGuiApplication::focusWindow(); + if (!fw) { + // Same if there's no focus window, BTW. + return true; + } else { + QCocoaWindow *cw = static_cast(fw->handle()); + if (cw && !cw->menubar()) + return true; + } + } + + // Either the menubar is attached to a non-active window, + // or the application's focus window has its own menubar + // (which is different from this one) + return false; +} + void QCocoaMenuBar::insertMenu(QPlatformMenu *platformMenu, QPlatformMenu *before) { QCocoaMenu *menu = static_cast(platformMenu); @@ -129,7 +155,7 @@ void QCocoaMenuBar::insertMenu(QPlatformMenu *platformMenu, QPlatformMenu *befor syncMenu(menu); - if (m_window && m_window->window()->isActive()) + if (needsImmediateUpdate()) updateMenuBarImmediately(); } diff --git a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro index 3fb6ae61a8..e680cf4d7d 100644 --- a/tests/auto/widgets/widgets/qmenubar/qmenubar.pro +++ b/tests/auto/widgets/widgets/qmenubar/qmenubar.pro @@ -2,3 +2,8 @@ CONFIG += testcase TARGET = tst_qmenubar QT += widgets testlib SOURCES += tst_qmenubar.cpp + +macos: { + OBJECTIVE_SOURCES += tst_qmenubar_mac.mm + LIBS += -framework AppKit +} diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp index b2d15fffef..45eae18240 100644 --- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp @@ -133,6 +133,9 @@ private slots: void cornerWidgets_data(); void cornerWidgets(); void taskQTBUG53205_crashReparentNested(); +#ifdef Q_OS_MACOS + void taskQTBUG56275_reinsertMenuInParentlessQMenuBar(); +#endif protected slots: void onSimpleActivated( QAction*); @@ -1495,7 +1498,28 @@ void tst_QMenuBar::slotForTaskQTBUG53205() taskQTBUG53205MenuBar->setParent(parent); } +#ifdef Q_OS_MACOS +extern bool tst_qmenubar_taskQTBUG56275(QMenuBar *); + +void tst_QMenuBar::taskQTBUG56275_reinsertMenuInParentlessQMenuBar() +{ + QMenuBar menubar; + QMenu *menu = new QMenu("menu", &menubar); + QMenu* submenu = menu->addMenu("submenu"); + submenu->addAction("action1"); + submenu->addAction("action2"); + menu->addAction("action3"); + menubar.addMenu(menu); + + QTest::qWait(100); + menubar.clear(); + menubar.addMenu(menu); + QTest::qWait(100); + + QVERIFY(tst_qmenubar_taskQTBUG56275(&menubar)); +} +#endif // Q_OS_MACOS QTEST_MAIN(tst_QMenuBar) #include "tst_qmenubar.moc" diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm new file mode 100644 index 0000000000..4645de4d7a --- /dev/null +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar_mac.mm @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import + +#include +#include + +bool tst_qmenubar_taskQTBUG56275(QMenuBar *menubar) +{ + NSMenu *mainMenu = menubar->toNSMenu(); + return mainMenu.numberOfItems == 2 + && [[mainMenu itemAtIndex:1].title isEqualToString:@"menu"]; +} -- cgit v1.2.3 From fe8f387794853b0456f554a783e2769edab9aecb Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 21 Oct 2016 21:16:10 +0200 Subject: don't moc OBJECTIVE_SOURCES twice since 9ff1310af, the variable's contents are simply added to SOURCES, and the variable is not cleared. and qmake does not de-duplicate ... Task-number: QTBUG-53905 Change-Id: I3e551d21cbbd2d0cbfbf7aa7efaa5babac112f9d Reviewed-by: Jake Petroules --- 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 8e8deec63c..9cc2bf3b76 100644 --- a/mkspecs/features/moc.prf +++ b/mkspecs/features/moc.prf @@ -56,7 +56,7 @@ moc_source.CONFIG = no_link moc_verify moc_source.dependency_type = TYPE_C moc_source.commands = ${QMAKE_FUNC_mocCmdBase} ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT} moc_source.output = $$MOC_DIR/$${QMAKE_CPP_MOD_MOC}${QMAKE_FILE_BASE}$${QMAKE_EXT_CPP_MOC} -moc_source.input = SOURCES OBJECTIVE_SOURCES +moc_source.input = SOURCES moc_source.name = MOC ${QMAKE_FILE_IN} moc_source.depends += $$WIN_INCLUDETEMP silent:moc_source.commands = @echo moc ${QMAKE_FILE_IN} && $$moc_source.commands -- cgit v1.2.3 From d507cd40b6fc3b7271e3ba83c668f33b8aab8683 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 21 Oct 2016 21:18:58 +0200 Subject: unset OBJECTIVE_SOURCES and QMAKE_OBJECTIVE_CFLAGS after absorbing them this is a bit easier on the backwards compat code in qt creator, which needs to merge and then de-duplicate the lists itself. Change-Id: I79f9319c26af541f5efa85700878e7ddbd00e2b7 Reviewed-by: Jake Petroules --- mkspecs/features/mac/objective_c.prf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mkspecs/features/mac/objective_c.prf b/mkspecs/features/mac/objective_c.prf index b3b1d4be99..ed1ad8ad38 100644 --- a/mkspecs/features/mac/objective_c.prf +++ b/mkspecs/features/mac/objective_c.prf @@ -1,6 +1,7 @@ # Objective-C/C++ sources go in SOURCES, like all other sources SOURCES += $$OBJECTIVE_SOURCES +unset(OBJECTIVE_SOURCES) # Strip C/C++ flags from QMAKE_OBJECTIVE_CFLAGS just in case QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS @@ -8,3 +9,4 @@ QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_CFLAGS $$QMAKE_CXXFLAGS # Add Objective-C/C++ flags to C/C++ flags, the compiler can handle it QMAKE_CFLAGS += $$QMAKE_OBJECTIVE_CFLAGS QMAKE_CXXFLAGS += $$QMAKE_OBJECTIVE_CFLAGS +unset(QMAKE_OBJECTIVE_CFLAGS) -- cgit v1.2.3 From 0cffe2135e7303bd103bdf888a345fe0a8b94cd6 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 14 Sep 2016 11:29:37 -0700 Subject: qversiontagging.h: Don't tag binaries in static mode Though there should have been no ill-effects, they happen. Task-number: QTBUG-52605 Change-Id: I9093948278414644a416fffd147444078edc3183 Reviewed-by: Oswald Buddenhagen Reviewed-by: Thiago Macieira --- src/corelib/global/qversiontagging.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/corelib/global/qversiontagging.h b/src/corelib/global/qversiontagging.h index fa824d1c89..b46bb7aa77 100644 --- a/src/corelib/global/qversiontagging.h +++ b/src/corelib/global/qversiontagging.h @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE * There will only be one copy of the section in the output library or application. */ -#if defined(QT_BUILD_CORE_LIB) || defined(QT_BOOTSTRAPPED) || defined(QT_NO_VERSION_TAGGING) +#if defined(QT_BUILD_CORE_LIB) || defined(QT_BOOTSTRAPPED) || defined(QT_NO_VERSION_TAGGING) || defined(QT_STATIC) // don't make tags in QtCore, bootstrapped systems or if the user asked not to #elif defined(Q_CC_GNU) && !defined(Q_OS_ANDROID) # if defined(Q_PROCESSOR_X86) && (defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD_KERNEL)) -- cgit v1.2.3 From b82793e7909d38482662a8de0f16d8ab0df232ec Mon Sep 17 00:00:00 2001 From: Jesus Fernandez Date: Tue, 25 Oct 2016 11:43:56 +0200 Subject: Fix possible loss of data in conversion from size_t to int warning Change-Id: I72c74e67708f1e164a0c35e1e92d9bf3ec99ffd6 Reviewed-by: Oswald Buddenhagen Reviewed-by: Timur Pocheptsov --- qmake/generators/makefiledeps.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp index ff613ea8f1..65f401affd 100644 --- a/qmake/generators/makefiledeps.cpp +++ b/qmake/generators/makefiledeps.cpp @@ -50,6 +50,7 @@ #include #include #include +#include #if defined(_MSC_VER) && _MSC_VER >= 1400 #include #endif @@ -983,9 +984,11 @@ bool QMakeSourceFileInfo::findMocs(SourceFile *file) continue; int matchlen = 0, extralines = 0; + size_t needle_len = strlen(interesting[interest]); + Q_ASSERT(needle_len <= INT_MAX); if (matchWhileUnsplitting(buffer, buffer_len, y, interesting[interest], - strlen(interesting[interest]), + static_cast(needle_len), &matchlen, &extralines) && y + matchlen < buffer_len && !isCWordChar(buffer[y + matchlen])) { -- cgit v1.2.3 From 047e3f8f046ac9267cc27d47a48189ae2cbfe0ef Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 29 Sep 2016 15:14:22 -0700 Subject: Autotest: fix silly mistake in assigning where a comparison was intended MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The file descriptor has been closed and this test is checking if we get EBADF. Change-Id: I33dc971f005a4848bb8ffffd1478eaffd99aa2e9 Reviewed-by: Jake Petroules Reviewed-by: Jędrzej Nowacki --- tests/auto/corelib/io/qfile/tst_qfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp index b38620fcbb..b26db788de 100644 --- a/tests/auto/corelib/io/qfile/tst_qfile.cpp +++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp @@ -3446,7 +3446,7 @@ void tst_QFile::autocloseHandle() //file is closed, read should fail char buf; QCOMPARE((int)QT_READ(fd, &buf, 1), -1); - QVERIFY(errno = EBADF); + QVERIFY(errno == EBADF); } { -- cgit v1.2.3 From 8daa050ed2bc3502f19ae38e2c3060941a19a5a6 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 14 Sep 2016 15:07:23 -0700 Subject: Fix syncqt warning about wrong include syncqt says: QtGui: WARNING: /Users/tjmaciei/src/qt/qt5/qtbase/src/gui/kernel/qevent.h includes qiodevice.h when it should include QtCore/qiodevice.h Change-Id: I9093948278414644a416fffd14744fe9c6c9c5f8 Reviewed-by: Kai Koehne --- src/gui/kernel/qevent.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h index 570212966f..7fdad24f52 100644 --- a/src/gui/kernel/qevent.h +++ b/src/gui/kernel/qevent.h @@ -51,7 +51,7 @@ #include #include // ### Qt 6: Remove #include -#include // ### Qt 6: Replace by and forward declare QFile +#include // ### Qt 6: Replace by and forward declare QFile #include #include // ### Qt 6: Replace by forward declaration -- cgit v1.2.3 From 60dbd80e5a26182b3ed9e2c60bb7212dfd32632b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Somers?= Date: Wed, 28 Sep 2016 10:13:27 +0200 Subject: Document that qFuzzyCompare does not work on NaN or infinity MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On a discussion in the Development mailing list it became clear that qFuzzyCompare does not work for NaN or infinity values. That was not mentioned in the method documentation though. This patch fixes that hiatus. It also clarifies how to deal with the comparing to 0.0 limitation. Change-Id: I8b6d54cc0c1136e79b0d7be1a62bc9ed394d2575 Reviewed-by: Topi Reiniö Reviewed-by: Martin Smith --- src/corelib/global/qglobal.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 6d7fbce946..59799b07bb 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -4109,8 +4109,10 @@ bool QInternal::activateCallbacks(Callback cb, void **parameters) Compares the floating point value \a p1 and \a p2 and returns \c true if they are considered equal, otherwise \c false. - Note that comparing values where either \a p1 or \a p2 is 0.0 will not work. - The solution to this is to compare against values greater than or equal to 1.0. + Note that comparing values where either \a p1 or \a p2 is 0.0 will not work, + nor does comparing values where one of the values is NaN or infinity. + If one of the values is always 0.0, use qFuzzyIsNull instead. If one of the + values is likely to be 0.0, one solution is to add 1.0 to both values. \snippet code/src_corelib_global_qglobal.cpp 46 -- cgit v1.2.3 From 99ce5d5e85007cb656cd48ab161be14af8f16238 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 28 Sep 2016 13:58:56 +0200 Subject: iOS: refactor usage of photos into optional plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Starting from iOS 10, apps that tries to access photos on the device need to specify the reason for this up front by adding the key 'NSPhotoLibraryUsageDescription' into Info.plist. If the key is missing, the app will be rejected from AppStore. This causes problems for the iOS plugin as it stands since parts of it already tries to access photos, e.g to show an image picker dialog if a file dialog is set to open QStandardPaths::PicturesLocation. This means that currently, all apps written with Qt will be rejected from AppStore unless the developer adds this key, whether he tries to access photos or not. To solve this, we choose to split the plugin into two parts, one that contains the core functionality, and one that contains optional support. The latter will need to be enabled explicit by the developer in the pro file, or in this case, indirectly by adding the right key to the Info.plist. This patch refactors the code in the plugin that gives access to photos into a separate optional plugin called 'nsphotolibrarysupport'. Change-Id: Ic4351eb0bbfffdf840fd88cd00bb29a25907798f Reviewed-by: Tor Arne Vestbø Reviewed-by: Jake Petroules --- src/gui/gui.pro | 1 + src/plugins/platforms/ios/ios.pro | 63 +-- src/plugins/platforms/ios/kernel.pro | 58 +++ .../nsphotolibrarysupport.pro | 22 + .../ios/optional/nsphotolibrarysupport/plugin.json | 3 + .../ios/optional/nsphotolibrarysupport/plugin.mm | 64 +++ .../qiosfileengineassetslibrary.h | 76 ++++ .../qiosfileengineassetslibrary.mm | 469 +++++++++++++++++++++ .../nsphotolibrarysupport/qiosfileenginefactory.h | 55 +++ .../qiosimagepickercontroller.h | 42 ++ .../qiosimagepickercontroller.mm | 66 +++ src/plugins/platforms/ios/optional/optional.pro | 2 + src/plugins/platforms/ios/qiosfiledialog.h | 2 + src/plugins/platforms/ios/qiosfiledialog.mm | 79 ++-- .../platforms/ios/qiosfileengineassetslibrary.h | 76 ---- .../platforms/ios/qiosfileengineassetslibrary.mm | 469 --------------------- src/plugins/platforms/ios/qiosfileenginefactory.h | 55 --- src/plugins/platforms/ios/qiosintegration.h | 7 +- src/plugins/platforms/ios/qiosintegration.mm | 8 + .../platforms/ios/qiosoptionalplugininterface.h | 59 +++ 20 files changed, 967 insertions(+), 709 deletions(-) create mode 100644 src/plugins/platforms/ios/kernel.pro create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h create mode 100644 src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm create mode 100644 src/plugins/platforms/ios/optional/optional.pro delete mode 100644 src/plugins/platforms/ios/qiosfileengineassetslibrary.h delete mode 100644 src/plugins/platforms/ios/qiosfileengineassetslibrary.mm delete mode 100644 src/plugins/platforms/ios/qiosfileenginefactory.h create mode 100644 src/plugins/platforms/ios/qiosoptionalplugininterface.h diff --git a/src/gui/gui.pro b/src/gui/gui.pro index 69434e801f..2cdb3a7ab7 100644 --- a/src/gui/gui.pro +++ b/src/gui/gui.pro @@ -9,6 +9,7 @@ QMAKE_DOCS = $$PWD/doc/qtgui.qdocconf MODULE_PLUGIN_TYPES = \ platforms \ + platforms/darwin \ xcbglintegrations \ platformthemes \ platforminputcontexts \ diff --git a/src/plugins/platforms/ios/ios.pro b/src/plugins/platforms/ios/ios.pro index 545db8c093..594ccefcf1 100644 --- a/src/plugins/platforms/ios/ios.pro +++ b/src/plugins/platforms/ios/ios.pro @@ -1,61 +1,2 @@ -TARGET = qios - -QT += core-private gui-private platformsupport-private -LIBS += -framework Foundation -framework UIKit -framework QuartzCore -framework AssetsLibrary - -OBJECTIVE_SOURCES = \ - plugin.mm \ - qiosintegration.mm \ - qioseventdispatcher.mm \ - qioswindow.mm \ - qiosscreen.mm \ - qiosbackingstore.mm \ - qiosapplicationdelegate.mm \ - qiosapplicationstate.mm \ - qiosviewcontroller.mm \ - qioscontext.mm \ - qiosinputcontext.mm \ - qiostheme.mm \ - qiosglobal.mm \ - qiosservices.mm \ - quiview.mm \ - qiosclipboard.mm \ - quiaccessibilityelement.mm \ - qiosplatformaccessibility.mm \ - qiostextresponder.mm \ - qiosmenu.mm \ - qiosfileengineassetslibrary.mm \ - qiosfiledialog.mm - -HEADERS = \ - qiosintegration.h \ - qioseventdispatcher.h \ - qioswindow.h \ - qiosscreen.h \ - qiosbackingstore.h \ - qiosapplicationdelegate.h \ - qiosapplicationstate.h \ - qiosviewcontroller.h \ - qioscontext.h \ - qiosinputcontext.h \ - qiostheme.h \ - qiosglobal.h \ - qiosservices.h \ - quiview.h \ - qiosclipboard.h \ - quiaccessibilityelement.h \ - qiosplatformaccessibility.h \ - qiostextresponder.h \ - qiosmenu.h \ - qiosfileenginefactory.h \ - qiosfileengineassetslibrary.h \ - qiosfiledialog.h - -OTHER_FILES = \ - quiview_textinput.mm \ - quiview_accessibility.mm - -PLUGIN_TYPE = platforms -PLUGIN_CLASS_NAME = QIOSIntegrationPlugin -!equals(TARGET, $$QT_DEFAULT_QPA_PLUGIN): PLUGIN_EXTENDS = - -load(qt_plugin) +TEMPLATE = subdirs +SUBDIRS = kernel.pro optional diff --git a/src/plugins/platforms/ios/kernel.pro b/src/plugins/platforms/ios/kernel.pro new file mode 100644 index 0000000000..84035877c5 --- /dev/null +++ b/src/plugins/platforms/ios/kernel.pro @@ -0,0 +1,58 @@ +TARGET = qios + +QT += core-private gui-private platformsupport-private +LIBS += -framework Foundation -framework UIKit -framework QuartzCore + +OBJECTIVE_SOURCES = \ + plugin.mm \ + qiosintegration.mm \ + qioseventdispatcher.mm \ + qioswindow.mm \ + qiosscreen.mm \ + qiosbackingstore.mm \ + qiosapplicationdelegate.mm \ + qiosapplicationstate.mm \ + qiosviewcontroller.mm \ + qioscontext.mm \ + qiosinputcontext.mm \ + qiostheme.mm \ + qiosglobal.mm \ + qiosservices.mm \ + quiview.mm \ + qiosclipboard.mm \ + quiaccessibilityelement.mm \ + qiosplatformaccessibility.mm \ + qiostextresponder.mm \ + qiosmenu.mm \ + qiosfiledialog.mm + +HEADERS = \ + qiosintegration.h \ + qioseventdispatcher.h \ + qioswindow.h \ + qiosscreen.h \ + qiosbackingstore.h \ + qiosapplicationdelegate.h \ + qiosapplicationstate.h \ + qiosviewcontroller.h \ + qioscontext.h \ + qiosinputcontext.h \ + qiostheme.h \ + qiosglobal.h \ + qiosservices.h \ + quiview.h \ + qiosclipboard.h \ + quiaccessibilityelement.h \ + qiosplatformaccessibility.h \ + qiostextresponder.h \ + qiosmenu.h \ + qiosfiledialog.h + +OTHER_FILES = \ + quiview_textinput.mm \ + quiview_accessibility.mm + +PLUGIN_TYPE = platforms +PLUGIN_CLASS_NAME = QIOSIntegrationPlugin +!equals(TARGET, $$QT_DEFAULT_QPA_PLUGIN): PLUGIN_EXTENDS = - +load(qt_plugin) diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro new file mode 100644 index 0000000000..f4588dda03 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/nsphotolibrarysupport.pro @@ -0,0 +1,22 @@ +TARGET = qiosnsphotolibrarysupport + +QT += core gui gui-private +LIBS += -framework UIKit -framework AssetsLibrary + +HEADERS = \ + qiosfileengineassetslibrary.h \ + qiosfileenginefactory.h \ + qiosimagepickercontroller.h + +OBJECTIVE_SOURCES = \ + plugin.mm \ + qiosfileengineassetslibrary.mm \ + qiosimagepickercontroller.mm \ + +OTHER_FILES = \ + plugin.json + +PLUGIN_CLASS_NAME = QIosOptionalPlugin_NSPhotoLibrary +PLUGIN_EXTENDS = - +PLUGIN_TYPE = platforms/darwin +load(qt_plugin) diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json new file mode 100644 index 0000000000..4491fb3d59 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.json @@ -0,0 +1,3 @@ +{ + "Keys": [ "NSPhotoLibrarySupport" ] +} diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm new file mode 100644 index 0000000000..2ec0d33a41 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/plugin.mm @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../qiosoptionalplugininterface.h" +#include "../../qiosfiledialog.h" + +#include "qiosimagepickercontroller.h" +#include "qiosfileenginefactory.h" + +QT_BEGIN_NAMESPACE + +class QIosOptionalPlugin_NSPhotoLibrary : public QObject, QIosOptionalPluginInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID QIosOptionalPluginInterface_iid FILE "plugin.json") + Q_INTERFACES(QIosOptionalPluginInterface) + +public: + explicit QIosOptionalPlugin_NSPhotoLibrary(QObject* = 0) {}; + ~QIosOptionalPlugin_NSPhotoLibrary() {} + + UIViewController* createImagePickerController(QIOSFileDialog *fileDialog) const override + { + return [[[QIOSImagePickerController alloc] initWithQIOSFileDialog:fileDialog] autorelease]; + } + +private: + QIOSFileEngineFactory m_fileEngineFactory; + +}; + +QT_END_NAMESPACE + +#include "plugin.moc" diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h new file mode 100644 index 0000000000..0e29a1003e --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSFILEENGINEASSETSLIBRARY_H +#define QIOSFILEENGINEASSETSLIBRARY_H + +#include + +Q_FORWARD_DECLARE_OBJC_CLASS(ALAsset); +class QIOSAssetData; + +class QIOSFileEngineAssetsLibrary : public QAbstractFileEngine +{ +public: + QIOSFileEngineAssetsLibrary(const QString &fileName); + ~QIOSFileEngineAssetsLibrary(); + + bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE; + bool close() Q_DECL_OVERRIDE; + FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE; + qint64 size() const Q_DECL_OVERRIDE; + qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; + qint64 pos() const Q_DECL_OVERRIDE; + bool seek(qint64 pos) Q_DECL_OVERRIDE; + QString fileName(FileName file) const Q_DECL_OVERRIDE; + void setFileName(const QString &file) Q_DECL_OVERRIDE; + QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; + +#ifndef QT_NO_FILESYSTEMITERATOR + Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; + Iterator *endEntryList() Q_DECL_OVERRIDE; +#endif + + void setError(QFile::FileError error, const QString &str) { QAbstractFileEngine::setError(error, str); } + +private: + QString m_fileName; + QString m_assetUrl; + qint64 m_offset; + mutable QIOSAssetData *m_data; + + ALAsset *loadAsset() const; +}; + +#endif // QIOSFILEENGINEASSETSLIBRARY_H + diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm new file mode 100644 index 0000000000..2e88c37c01 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm @@ -0,0 +1,469 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qiosfileengineassetslibrary.h" + +#import +#import + +#include +#include +#include +#include +#include + +static QThreadStorage g_iteratorCurrentUrl; +static QThreadStorage > g_assetDataCache; + +static const int kBufferSize = 10; +static ALAsset *kNoAsset = 0; + +static bool ensureAuthorizationDialogNotBlocked() +{ + if ([ALAssetsLibrary authorizationStatus] != ALAuthorizationStatusNotDetermined) + return true; + + if (static_cast(QObjectPrivate::get(qApp))->in_exec) + return true; + + if ([NSThread isMainThread]) { + // The dialog is about to show, but since main has not finished, the dialog will be held + // back until the launch completes. This is problematic since we cannot successfully return + // back to the caller before the asset is ready, which also includes showing the dialog. To + // work around this, we create an event loop to that will complete the launch (return from the + // applicationDidFinishLaunching callback). But this will only work if we're on the main thread. + QEventLoop loop; + QTimer::singleShot(1, &loop, &QEventLoop::quit); + loop.exec(); + } else { + NSLog(@"QIOSFileEngine: unable to show assets authorization dialog from non-gui thread before QApplication is executing."); + return false; + } + + return true; +} + +// ------------------------------------------------------------------------- + +class QIOSAssetEnumerator +{ +public: + QIOSAssetEnumerator(ALAssetsLibrary *assetsLibrary, ALAssetsGroupType type) + : m_semWriteAsset(dispatch_semaphore_create(kBufferSize)) + , m_semReadAsset(dispatch_semaphore_create(0)) + , m_stop(false) + , m_assetsLibrary([assetsLibrary retain]) + , m_type(type) + , m_buffer(QVector(kBufferSize)) + , m_readIndex(0) + , m_writeIndex(0) + , m_nextAssetReady(false) + { + if (!ensureAuthorizationDialogNotBlocked()) + writeAsset(kNoAsset); + else + startEnumerate(); + } + + ~QIOSAssetEnumerator() + { + m_stop = true; + + // Flush and autorelease remaining assets in the buffer + while (hasNext()) + next(); + + // Documentation states that we need to balance out calls to 'wait' + // and 'signal'. Since the enumeration function always will be one 'wait' + // ahead, we need to signal m_semProceedToNextAsset one last time. + dispatch_semaphore_signal(m_semWriteAsset); + dispatch_release(m_semReadAsset); + dispatch_release(m_semWriteAsset); + + [m_assetsLibrary autorelease]; + } + + bool hasNext() + { + if (!m_nextAssetReady) { + dispatch_semaphore_wait(m_semReadAsset, DISPATCH_TIME_FOREVER); + m_nextAssetReady = true; + } + return m_buffer[m_readIndex] != kNoAsset; + } + + ALAsset *next() + { + Q_ASSERT(m_nextAssetReady); + Q_ASSERT(m_buffer[m_readIndex]); + + ALAsset *asset = [m_buffer[m_readIndex] autorelease]; + dispatch_semaphore_signal(m_semWriteAsset); + + m_readIndex = (m_readIndex + 1) % kBufferSize; + m_nextAssetReady = false; + return asset; + } + +private: + dispatch_semaphore_t m_semWriteAsset; + dispatch_semaphore_t m_semReadAsset; + std::atomic_bool m_stop; + + ALAssetsLibrary *m_assetsLibrary; + ALAssetsGroupType m_type; + QVector m_buffer; + int m_readIndex; + int m_writeIndex; + bool m_nextAssetReady; + + void writeAsset(ALAsset *asset) + { + dispatch_semaphore_wait(m_semWriteAsset, DISPATCH_TIME_FOREVER); + m_buffer[m_writeIndex] = [asset retain]; + dispatch_semaphore_signal(m_semReadAsset); + m_writeIndex = (m_writeIndex + 1) % kBufferSize; + } + + void startEnumerate() + { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [m_assetsLibrary enumerateGroupsWithTypes:m_type usingBlock:^(ALAssetsGroup *group, BOOL *stopEnumerate) { + + if (!group) { + writeAsset(kNoAsset); + return; + } + + if (m_stop) { + *stopEnumerate = true; + return; + } + + [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stopEnumerate) { + Q_UNUSED(index); + if (!asset || ![[asset valueForProperty:ALAssetPropertyType] isEqual:ALAssetTypePhoto]) + return; + + writeAsset(asset); + *stopEnumerate = m_stop; + }]; + } failureBlock:^(NSError *error) { + NSLog(@"QIOSFileEngine: %@", error); + writeAsset(kNoAsset); + }]; + }); + } + +}; + +// ------------------------------------------------------------------------- + +class QIOSAssetData : public QObject +{ +public: + QIOSAssetData(const QString &assetUrl, QIOSFileEngineAssetsLibrary *engine) + : m_asset(0) + , m_assetUrl(assetUrl) + , m_assetLibrary(0) + { + if (!ensureAuthorizationDialogNotBlocked()) + return; + + if (QIOSAssetData *assetData = g_assetDataCache.localData()) { + // It's a common pattern that QFiles pointing to the same path are created and destroyed + // several times during a single event loop cycle. To avoid loading the same asset + // over and over, we check if the last loaded asset has not been destroyed yet, and try to + // reuse its data. + if (assetData->m_assetUrl == assetUrl) { + m_assetLibrary = [assetData->m_assetLibrary retain]; + m_asset = [assetData->m_asset retain]; + return; + } + } + + // We can only load images from the asset library async. And this might take time, since it + // involves showing the authorization dialog. But the QFile API is synchronuous, so we need to + // wait until we have access to the data. [ALAssetLibrary assetForUrl:] will shedule a block on + // the current thread. But instead of spinning the event loop to force the block to execute, we + // wrap the call inside a synchronuous dispatch queue so that it executes on another thread. + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSURL *url = [NSURL URLWithString:assetUrl.toNSString()]; + m_assetLibrary = [[ALAssetsLibrary alloc] init]; + [m_assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) { + + if (!asset) { + // When an asset couldn't be loaded, chances are that it belongs to ALAssetsGroupPhotoStream. + // Such assets can be stored in the cloud and might need to be downloaded first. Unfortunately, + // forcing that to happen is hidden behind private APIs ([ALAsset requestDefaultRepresentation]). + // As a work-around, we search for it instead, since that will give us a pointer to the asset. + QIOSAssetEnumerator e(m_assetLibrary, ALAssetsGroupPhotoStream); + while (e.hasNext()) { + ALAsset *a = e.next(); + QString url = QUrl::fromNSURL([a valueForProperty:ALAssetPropertyAssetURL]).toString(); + if (url == assetUrl) { + asset = a; + break; + } + } + } + + if (!asset) + engine->setError(QFile::OpenError, QLatin1String("could not open image")); + + m_asset = [asset retain]; + dispatch_semaphore_signal(semaphore); + } failureBlock:^(NSError *error) { + engine->setError(QFile::OpenError, QString::fromNSString(error.localizedDescription)); + dispatch_semaphore_signal(semaphore); + }]; + }); + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + dispatch_release(semaphore); + + g_assetDataCache.setLocalData(this); + } + + ~QIOSAssetData() + { + [m_assetLibrary release]; + [m_asset release]; + if (g_assetDataCache.localData() == this) + g_assetDataCache.setLocalData(0); + } + + ALAsset *m_asset; + +private: + QString m_assetUrl; + ALAssetsLibrary *m_assetLibrary; +}; + +// ------------------------------------------------------------------------- + +#ifndef QT_NO_FILESYSTEMITERATOR + +class QIOSFileEngineIteratorAssetsLibrary : public QAbstractFileEngineIterator +{ +public: + QIOSAssetEnumerator *m_enumerator; + + QIOSFileEngineIteratorAssetsLibrary( + QDir::Filters filters, const QStringList &nameFilters) + : QAbstractFileEngineIterator(filters, nameFilters) + , m_enumerator(new QIOSAssetEnumerator([[[ALAssetsLibrary alloc] init] autorelease], ALAssetsGroupAll)) + { + } + + ~QIOSFileEngineIteratorAssetsLibrary() + { + delete m_enumerator; + g_iteratorCurrentUrl.setLocalData(QString()); + } + + QString next() Q_DECL_OVERRIDE + { + // Cache the URL that we are about to return, since QDir will immediately create a + // new file engine on the file and ask if it exists. Unless we do this, we end up + // creating a new ALAsset just to verify its existence, which will be especially + // costly for assets belonging to ALAssetsGroupPhotoStream. + ALAsset *asset = m_enumerator->next(); + QString url = QUrl::fromNSURL([asset valueForProperty:ALAssetPropertyAssetURL]).toString(); + g_iteratorCurrentUrl.setLocalData(url); + return url; + } + + bool hasNext() const Q_DECL_OVERRIDE + { + return m_enumerator->hasNext(); + } + + QString currentFileName() const Q_DECL_OVERRIDE + { + return g_iteratorCurrentUrl.localData(); + } + + QFileInfo currentFileInfo() const Q_DECL_OVERRIDE + { + return QFileInfo(currentFileName()); + } +}; + +#endif + +// ------------------------------------------------------------------------- + +QIOSFileEngineAssetsLibrary::QIOSFileEngineAssetsLibrary(const QString &fileName) + : m_offset(0) + , m_data(0) +{ + setFileName(fileName); +} + +QIOSFileEngineAssetsLibrary::~QIOSFileEngineAssetsLibrary() +{ + close(); +} + +ALAsset *QIOSFileEngineAssetsLibrary::loadAsset() const +{ + if (!m_data) + m_data = new QIOSAssetData(m_assetUrl, const_cast(this)); + return m_data->m_asset; +} + +bool QIOSFileEngineAssetsLibrary::open(QIODevice::OpenMode openMode) +{ + if (openMode & (QIODevice::WriteOnly | QIODevice::Text)) + return false; + return loadAsset(); +} + +bool QIOSFileEngineAssetsLibrary::close() +{ + if (m_data) { + // Delete later, so that we can reuse the asset if a QFile is + // opened with the same path during the same event loop cycle. + m_data->deleteLater(); + m_data = 0; + } + return true; +} + +QAbstractFileEngine::FileFlags QIOSFileEngineAssetsLibrary::fileFlags(QAbstractFileEngine::FileFlags type) const +{ + QAbstractFileEngine::FileFlags flags = 0; + const bool isDir = (m_assetUrl == QLatin1String("assets-library://")); + const bool exists = isDir || m_assetUrl == g_iteratorCurrentUrl.localData() || loadAsset(); + + if (!exists) + return flags; + + if (type & FlagsMask) + flags |= ExistsFlag; + if (type & PermsMask) { + ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus]; + if (status != ALAuthorizationStatusRestricted && status != ALAuthorizationStatusDenied) + flags |= ReadOwnerPerm | ReadUserPerm | ReadGroupPerm | ReadOtherPerm; + } + if (type & TypesMask) + flags |= isDir ? DirectoryType : FileType; + + return flags; +} + +qint64 QIOSFileEngineAssetsLibrary::size() const +{ + if (ALAsset *asset = loadAsset()) + return [[asset defaultRepresentation] size]; + return 0; +} + +qint64 QIOSFileEngineAssetsLibrary::read(char *data, qint64 maxlen) +{ + ALAsset *asset = loadAsset(); + if (!asset) + return -1; + + qint64 bytesRead = qMin(maxlen, size() - m_offset); + if (!bytesRead) + return 0; + + NSError *error = 0; + [[asset defaultRepresentation] getBytes:(uint8_t *)data fromOffset:m_offset length:bytesRead error:&error]; + + if (error) { + setError(QFile::ReadError, QString::fromNSString(error.localizedDescription)); + return -1; + } + + m_offset += bytesRead; + return bytesRead; +} + +qint64 QIOSFileEngineAssetsLibrary::pos() const +{ + return m_offset; +} + +bool QIOSFileEngineAssetsLibrary::seek(qint64 pos) +{ + if (pos >= size()) + return false; + m_offset = pos; + return true; +} + +QString QIOSFileEngineAssetsLibrary::fileName(FileName file) const +{ + Q_UNUSED(file); + return m_fileName; +} + +void QIOSFileEngineAssetsLibrary::setFileName(const QString &file) +{ + if (m_data) + close(); + m_fileName = file; + // QUrl::fromLocalFile() will remove double slashes. Since the asset url is + // passed around as a file name in the app (and converted to/from a file url, e.g + // in QFileDialog), we need to ensure that m_assetUrl ends up being valid. + int index = file.indexOf(QLatin1String("/asset")); + if (index == -1) + m_assetUrl = QLatin1String("assets-library://"); + else + m_assetUrl = QLatin1String("assets-library:/") + file.mid(index); +} + +QStringList QIOSFileEngineAssetsLibrary::entryList(QDir::Filters filters, const QStringList &filterNames) const +{ + return QAbstractFileEngine::entryList(filters, filterNames); +} + +#ifndef QT_NO_FILESYSTEMITERATOR + +QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::beginEntryList( + QDir::Filters filters, const QStringList &filterNames) +{ + return new QIOSFileEngineIteratorAssetsLibrary(filters, filterNames); +} + +QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::endEntryList() +{ + return 0; +} + +#endif diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h new file mode 100644 index 0000000000..29f543caae --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOSFILEENGINEFACTORY_H +#define QIOSFILEENGINEFACTORY_H + +#include +#include +#include "qiosfileengineassetslibrary.h" + +class QIOSFileEngineFactory : public QAbstractFileEngineHandler +{ +public: + QAbstractFileEngine* create(const QString &fileName) const + { + static QLatin1String assetsScheme("assets-library:"); + + if (fileName.toLower().startsWith(assetsScheme)) + return new QIOSFileEngineAssetsLibrary(fileName); + + return 0; + } +}; + +#endif // QIOSFILEENGINEFACTORY_H diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h new file mode 100644 index 0000000000..df3f6b9fa3 --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.h @@ -0,0 +1,42 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import + +#include "../../qiosfiledialog.h" + +@interface QIOSImagePickerController : UIImagePickerController { + QIOSFileDialog *m_fileDialog; +} +- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog; +@end diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm new file mode 100644 index 0000000000..f9662b964a --- /dev/null +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosimagepickercontroller.mm @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#import + +#include "qiosimagepickercontroller.h" + +@implementation QIOSImagePickerController + +- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog +{ + self = [super init]; + if (self) { + m_fileDialog = fileDialog; + [self setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; + [self setDelegate:self]; + } + return self; +} + +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + Q_UNUSED(picker); + NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; + QUrl fileUrl = QUrl::fromLocalFile(QString::fromNSString([url description])); + m_fileDialog->selectedFilesChanged(QList() << fileUrl); + emit m_fileDialog->accept(); +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker +{ + Q_UNUSED(picker) + emit m_fileDialog->reject(); +} + +@end diff --git a/src/plugins/platforms/ios/optional/optional.pro b/src/plugins/platforms/ios/optional/optional.pro new file mode 100644 index 0000000000..5e3421a025 --- /dev/null +++ b/src/plugins/platforms/ios/optional/optional.pro @@ -0,0 +1,2 @@ +TEMPLATE = subdirs +SUBDIRS = nsphotolibrarysupport diff --git a/src/plugins/platforms/ios/qiosfiledialog.h b/src/plugins/platforms/ios/qiosfiledialog.h index b4bf85edd9..668cf18caf 100644 --- a/src/plugins/platforms/ios/qiosfiledialog.h +++ b/src/plugins/platforms/ios/qiosfiledialog.h @@ -66,6 +66,8 @@ private: QList m_selection; QEventLoop m_eventLoop; UIViewController *m_viewController; + + bool showImagePickerDialog(QWindow *parent); }; QT_END_NAMESPACE diff --git a/src/plugins/platforms/ios/qiosfiledialog.mm b/src/plugins/platforms/ios/qiosfiledialog.mm index 7c32784e9d..a70eb11ef8 100644 --- a/src/plugins/platforms/ios/qiosfiledialog.mm +++ b/src/plugins/platforms/ios/qiosfiledialog.mm @@ -31,52 +31,18 @@ ** ****************************************************************************/ -#include "qiosfiledialog.h" - #import #include #include +#include -@interface QIOSImagePickerController : UIImagePickerController { - QIOSFileDialog *m_fileDialog; -} -@end - -@implementation QIOSImagePickerController - -- (id)initWithQIOSFileDialog:(QIOSFileDialog *)fileDialog -{ - self = [super init]; - if (self) { - m_fileDialog = fileDialog; - [self setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; - [self setDelegate:self]; - } - return self; -} - -- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info -{ - Q_UNUSED(picker); - NSURL *url = [info objectForKey:UIImagePickerControllerReferenceURL]; - QUrl fileUrl = QUrl::fromLocalFile(QString::fromNSString([url description])); - m_fileDialog->selectedFilesChanged(QList() << fileUrl); - emit m_fileDialog->accept(); -} - -- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker -{ - Q_UNUSED(picker) - emit m_fileDialog->reject(); -} - -@end - -// -------------------------------------------------------------------------- +#include "qiosfiledialog.h" +#include "qiosintegration.h" +#include "qiosoptionalplugininterface.h" QIOSFileDialog::QIOSFileDialog() - : m_viewController(0) + : m_viewController(Q_NULLPTR) { } @@ -98,17 +64,36 @@ bool QIOSFileDialog::show(Qt::WindowFlags windowFlags, Qt::WindowModality window bool acceptOpen = options()->acceptMode() == QFileDialogOptions::AcceptOpen; QString directory = options()->initialDirectory().toLocalFile(); - if (acceptOpen && directory.startsWith(QLatin1String("assets-library:"))) { - m_viewController = [[QIOSImagePickerController alloc] initWithQIOSFileDialog:this]; - UIWindow *window = parent ? reinterpret_cast(parent->winId()).window - : [UIApplication sharedApplication].keyWindow; - [window.rootViewController presentViewController:m_viewController animated:YES completion:nil]; - return true; - } + if (acceptOpen && directory.startsWith(QLatin1String("assets-library:"))) + return showImagePickerDialog(parent); return false; } +bool QIOSFileDialog::showImagePickerDialog(QWindow *parent) +{ + if (!m_viewController) { + QFactoryLoader *plugins = QIOSIntegration::instance()->optionalPlugins(); + for (int i = 0; i < plugins->metaData().size(); ++i) { + QIosOptionalPluginInterface *plugin = qobject_cast(plugins->instance(i)); + m_viewController = [plugin->createImagePickerController(this) retain]; + if (m_viewController) + break; + } + } + + if (!m_viewController) { + qWarning() << "QIOSFileDialog: Could not resolve Qt plugin that gives access to photos on iOS"; + return false; + } + + UIWindow *window = parent ? reinterpret_cast(parent->winId()).window + : [UIApplication sharedApplication].keyWindow; + [window.rootViewController presentViewController:m_viewController animated:YES completion:nil]; + + return true; +} + void QIOSFileDialog::hide() { // QFileDialog will remember the last directory set, and open subsequent dialogs in the same @@ -120,6 +105,8 @@ void QIOSFileDialog::hide() emit directoryEntered(QUrl::fromLocalFile(QDir::currentPath())); [m_viewController dismissViewControllerAnimated:YES completion:nil]; + [m_viewController release]; + m_viewController = Q_NULLPTR; m_eventLoop.exit(); } diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/qiosfileengineassetslibrary.h deleted file mode 100644 index 37bbc7bf23..0000000000 --- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** 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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QIOSFILEENGINEASSETSLIBRARY_H -#define QIOSFILEENGINEASSETSLIBRARY_H - -#include - -Q_FORWARD_DECLARE_OBJC_CLASS(ALAsset); -class QIOSAssetData; - -class QIOSFileEngineAssetsLibrary : public QAbstractFileEngine -{ -public: - QIOSFileEngineAssetsLibrary(const QString &fileName); - ~QIOSFileEngineAssetsLibrary(); - - bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE; - bool close() Q_DECL_OVERRIDE; - FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE; - qint64 size() const Q_DECL_OVERRIDE; - qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; - qint64 pos() const Q_DECL_OVERRIDE; - bool seek(qint64 pos) Q_DECL_OVERRIDE; - QString fileName(FileName file) const Q_DECL_OVERRIDE; - void setFileName(const QString &file) Q_DECL_OVERRIDE; - QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; - -#ifndef QT_NO_FILESYSTEMITERATOR - Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; - Iterator *endEntryList() Q_DECL_OVERRIDE; -#endif - - void setError(QFile::FileError error, const QString &str) { QAbstractFileEngine::setError(error, str); } - -private: - QString m_fileName; - QString m_assetUrl; - qint64 m_offset; - mutable QIOSAssetData *m_data; - - ALAsset *loadAsset() const; -}; - -#endif // QIOSFILEENGINEASSETSLIBRARY_H - diff --git a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm deleted file mode 100644 index bb12c164d6..0000000000 --- a/src/plugins/platforms/ios/qiosfileengineassetslibrary.mm +++ /dev/null @@ -1,469 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** 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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qiosfileengineassetslibrary.h" - -#import -#import - -#include -#include -#include -#include -#include - -static QThreadStorage g_iteratorCurrentUrl; -static QThreadStorage > g_assetDataCache; - -static const int kBufferSize = 10; -static ALAsset *kNoAsset = 0; - -static bool ensureAuthorizationDialogNotBlocked() -{ - if ([ALAssetsLibrary authorizationStatus] != ALAuthorizationStatusNotDetermined) - return true; - - if (static_cast(QObjectPrivate::get(qApp))->in_exec) - return true; - - if ([NSThread isMainThread]) { - // The dialog is about to show, but since main has not finished, the dialog will be held - // back until the launch completes. This is problematic since we cannot successfully return - // back to the caller before the asset is ready, which also includes showing the dialog. To - // work around this, we create an event loop to that will complete the launch (return from the - // applicationDidFinishLaunching callback). But this will only work if we're on the main thread. - QEventLoop loop; - QTimer::singleShot(1, &loop, &QEventLoop::quit); - loop.exec(); - } else { - NSLog(@"QIOSFileEngine: unable to show assets authorization dialog from non-gui thread before QApplication is executing."); - return false; - } - - return true; -} - -// ------------------------------------------------------------------------- - -class QIOSAssetEnumerator -{ -public: - QIOSAssetEnumerator(ALAssetsLibrary *assetsLibrary, ALAssetsGroupType type) - : m_semWriteAsset(dispatch_semaphore_create(kBufferSize)) - , m_semReadAsset(dispatch_semaphore_create(0)) - , m_stop(false) - , m_assetsLibrary([assetsLibrary retain]) - , m_type(type) - , m_buffer(QVector(kBufferSize)) - , m_readIndex(0) - , m_writeIndex(0) - , m_nextAssetReady(false) - { - if (!ensureAuthorizationDialogNotBlocked()) - writeAsset(kNoAsset); - else - startEnumerate(); - } - - ~QIOSAssetEnumerator() - { - m_stop = true; - - // Flush and autorelease remaining assets in the buffer - while (hasNext()) - next(); - - // Documentation states that we need to balance out calls to 'wait' - // and 'signal'. Since the enumeration function always will be one 'wait' - // ahead, we need to signal m_semProceedToNextAsset one last time. - dispatch_semaphore_signal(m_semWriteAsset); - dispatch_release(m_semReadAsset); - dispatch_release(m_semWriteAsset); - - [m_assetsLibrary autorelease]; - } - - bool hasNext() - { - if (!m_nextAssetReady) { - dispatch_semaphore_wait(m_semReadAsset, DISPATCH_TIME_FOREVER); - m_nextAssetReady = true; - } - return m_buffer[m_readIndex] != kNoAsset; - } - - ALAsset *next() - { - Q_ASSERT(m_nextAssetReady); - Q_ASSERT(m_buffer[m_readIndex]); - - ALAsset *asset = [m_buffer[m_readIndex] autorelease]; - dispatch_semaphore_signal(m_semWriteAsset); - - m_readIndex = (m_readIndex + 1) % kBufferSize; - m_nextAssetReady = false; - return asset; - } - -private: - dispatch_semaphore_t m_semWriteAsset; - dispatch_semaphore_t m_semReadAsset; - std::atomic_bool m_stop; - - ALAssetsLibrary *m_assetsLibrary; - ALAssetsGroupType m_type; - QVector m_buffer; - int m_readIndex; - int m_writeIndex; - bool m_nextAssetReady; - - void writeAsset(ALAsset *asset) - { - dispatch_semaphore_wait(m_semWriteAsset, DISPATCH_TIME_FOREVER); - m_buffer[m_writeIndex] = [asset retain]; - dispatch_semaphore_signal(m_semReadAsset); - m_writeIndex = (m_writeIndex + 1) % kBufferSize; - } - - void startEnumerate() - { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - [m_assetsLibrary enumerateGroupsWithTypes:m_type usingBlock:^(ALAssetsGroup *group, BOOL *stopEnumerate) { - - if (!group) { - writeAsset(kNoAsset); - return; - } - - if (m_stop) { - *stopEnumerate = true; - return; - } - - [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stopEnumerate) { - Q_UNUSED(index); - if (!asset || ![[asset valueForProperty:ALAssetPropertyType] isEqual:ALAssetTypePhoto]) - return; - - writeAsset(asset); - *stopEnumerate = m_stop; - }]; - } failureBlock:^(NSError *error) { - NSLog(@"QIOSFileEngine: %@", error); - writeAsset(kNoAsset); - }]; - }); - } - -}; - -// ------------------------------------------------------------------------- - -class QIOSAssetData : public QObject -{ -public: - QIOSAssetData(const QString &assetUrl, QIOSFileEngineAssetsLibrary *engine) - : m_asset(0) - , m_assetUrl(assetUrl) - , m_assetLibrary(0) - { - if (!ensureAuthorizationDialogNotBlocked()) - return; - - if (QIOSAssetData *assetData = g_assetDataCache.localData()) { - // It's a common pattern that QFiles pointing to the same path are created and destroyed - // several times during a single event loop cycle. To avoid loading the same asset - // over and over, we check if the last loaded asset has not been destroyed yet, and try to - // reuse its data. - if (assetData->m_assetUrl == assetUrl) { - m_assetLibrary = [assetData->m_assetLibrary retain]; - m_asset = [assetData->m_asset retain]; - return; - } - } - - // We can only load images from the asset library async. And this might take time, since it - // involves showing the authorization dialog. But the QFile API is synchronuous, so we need to - // wait until we have access to the data. [ALAssetLibrary assetForUrl:] will shedule a block on - // the current thread. But instead of spinning the event loop to force the block to execute, we - // wrap the call inside a synchronuous dispatch queue so that it executes on another thread. - dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - NSURL *url = [NSURL URLWithString:assetUrl.toNSString()]; - m_assetLibrary = [[ALAssetsLibrary alloc] init]; - [m_assetLibrary assetForURL:url resultBlock:^(ALAsset *asset) { - - if (!asset) { - // When an asset couldn't be loaded, chances are that it belongs to ALAssetsGroupPhotoStream. - // Such assets can be stored in the cloud and might need to be downloaded first. Unfortunately, - // forcing that to happen is hidden behind private APIs ([ALAsset requestDefaultRepresentation]). - // As a work-around, we search for it instead, since that will give us a pointer to the asset. - QIOSAssetEnumerator e(m_assetLibrary, ALAssetsGroupPhotoStream); - while (e.hasNext()) { - ALAsset *a = e.next(); - QString url = QUrl::fromNSURL([a valueForProperty:ALAssetPropertyAssetURL]).toString(); - if (url == assetUrl) { - asset = a; - break; - } - } - } - - if (!asset) - engine->setError(QFile::OpenError, QLatin1String("could not open image")); - - m_asset = [asset retain]; - dispatch_semaphore_signal(semaphore); - } failureBlock:^(NSError *error) { - engine->setError(QFile::OpenError, QString::fromNSString(error.localizedDescription)); - dispatch_semaphore_signal(semaphore); - }]; - }); - - dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); - dispatch_release(semaphore); - - g_assetDataCache.setLocalData(this); - } - - ~QIOSAssetData() - { - [m_assetLibrary release]; - [m_asset release]; - if (g_assetDataCache.localData() == this) - g_assetDataCache.setLocalData(0); - } - - ALAsset *m_asset; - -private: - QString m_assetUrl; - ALAssetsLibrary *m_assetLibrary; -}; - -// ------------------------------------------------------------------------- - -#ifndef QT_NO_FILESYSTEMITERATOR - -class QIOSFileEngineIteratorAssetsLibrary : public QAbstractFileEngineIterator -{ -public: - QIOSAssetEnumerator *m_enumerator; - - QIOSFileEngineIteratorAssetsLibrary( - QDir::Filters filters, const QStringList &nameFilters) - : QAbstractFileEngineIterator(filters, nameFilters) - , m_enumerator(new QIOSAssetEnumerator([[[ALAssetsLibrary alloc] init] autorelease], ALAssetsGroupAll)) - { - } - - ~QIOSFileEngineIteratorAssetsLibrary() - { - delete m_enumerator; - g_iteratorCurrentUrl.setLocalData(QString()); - } - - QString next() Q_DECL_OVERRIDE - { - // Cache the URL that we are about to return, since QDir will immediately create a - // new file engine on the file and ask if it exists. Unless we do this, we end up - // creating a new ALAsset just to verify its existence, which will be especially - // costly for assets belonging to ALAssetsGroupPhotoStream. - ALAsset *asset = m_enumerator->next(); - QString url = QUrl::fromNSURL([asset valueForProperty:ALAssetPropertyAssetURL]).toString(); - g_iteratorCurrentUrl.setLocalData(url); - return url; - } - - bool hasNext() const Q_DECL_OVERRIDE - { - return m_enumerator->hasNext(); - } - - QString currentFileName() const Q_DECL_OVERRIDE - { - return g_iteratorCurrentUrl.localData(); - } - - QFileInfo currentFileInfo() const Q_DECL_OVERRIDE - { - return QFileInfo(currentFileName()); - } -}; - -#endif - -// ------------------------------------------------------------------------- - -QIOSFileEngineAssetsLibrary::QIOSFileEngineAssetsLibrary(const QString &fileName) - : m_offset(0) - , m_data(0) -{ - setFileName(fileName); -} - -QIOSFileEngineAssetsLibrary::~QIOSFileEngineAssetsLibrary() -{ - close(); -} - -ALAsset *QIOSFileEngineAssetsLibrary::loadAsset() const -{ - if (!m_data) - m_data = new QIOSAssetData(m_assetUrl, const_cast(this)); - return m_data->m_asset; -} - -bool QIOSFileEngineAssetsLibrary::open(QIODevice::OpenMode openMode) -{ - if (openMode & (QIODevice::WriteOnly | QIODevice::Text)) - return false; - return loadAsset(); -} - -bool QIOSFileEngineAssetsLibrary::close() -{ - if (m_data) { - // Delete later, so that we can reuse the asset if a QFile is - // opened with the same path during the same event loop cycle. - m_data->deleteLater(); - m_data = 0; - } - return true; -} - -QAbstractFileEngine::FileFlags QIOSFileEngineAssetsLibrary::fileFlags(QAbstractFileEngine::FileFlags type) const -{ - QAbstractFileEngine::FileFlags flags = 0; - const bool isDir = (m_assetUrl == QLatin1String("assets-library://")); - const bool exists = isDir || m_assetUrl == g_iteratorCurrentUrl.localData() || loadAsset(); - - if (!exists) - return flags; - - if (type & FlagsMask) - flags |= ExistsFlag; - if (type & PermsMask) { - ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus]; - if (status != ALAuthorizationStatusRestricted && status != ALAuthorizationStatusDenied) - flags |= ReadOwnerPerm | ReadUserPerm | ReadGroupPerm | ReadOtherPerm; - } - if (type & TypesMask) - flags |= isDir ? DirectoryType : FileType; - - return flags; -} - -qint64 QIOSFileEngineAssetsLibrary::size() const -{ - if (ALAsset *asset = loadAsset()) - return [[asset defaultRepresentation] size]; - return 0; -} - -qint64 QIOSFileEngineAssetsLibrary::read(char *data, qint64 maxlen) -{ - ALAsset *asset = loadAsset(); - if (!asset) - return -1; - - qint64 bytesRead = qMin(maxlen, size() - m_offset); - if (!bytesRead) - return 0; - - NSError *error = 0; - [[asset defaultRepresentation] getBytes:(uint8_t *)data fromOffset:m_offset length:bytesRead error:&error]; - - if (error) { - setError(QFile::ReadError, QString::fromNSString(error.localizedDescription)); - return -1; - } - - m_offset += bytesRead; - return bytesRead; -} - -qint64 QIOSFileEngineAssetsLibrary::pos() const -{ - return m_offset; -} - -bool QIOSFileEngineAssetsLibrary::seek(qint64 pos) -{ - if (pos >= size()) - return false; - m_offset = pos; - return true; -} - -QString QIOSFileEngineAssetsLibrary::fileName(FileName file) const -{ - Q_UNUSED(file); - return m_fileName; -} - -void QIOSFileEngineAssetsLibrary::setFileName(const QString &file) -{ - if (m_data) - close(); - m_fileName = file; - // QUrl::fromLocalFile() will remove double slashes. Since the asset url is - // passed around as a file name in the app (and converted to/from a file url, e.g - // in QFileDialog), we need to ensure that m_assetUrl ends up being valid. - int index = file.indexOf(QLatin1String("/asset")); - if (index == -1) - m_assetUrl = QLatin1String("assets-library://"); - else - m_assetUrl = QLatin1String("assets-library:/") + file.mid(index); -} - -QStringList QIOSFileEngineAssetsLibrary::entryList(QDir::Filters filters, const QStringList &filterNames) const -{ - return QAbstractFileEngine::entryList(filters, filterNames); -} - -#ifndef QT_NO_FILESYSTEMITERATOR - -QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::beginEntryList( - QDir::Filters filters, const QStringList &filterNames) -{ - return new QIOSFileEngineIteratorAssetsLibrary(filters, filterNames); -} - -QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::endEntryList() -{ - return 0; -} - -#endif diff --git a/src/plugins/platforms/ios/qiosfileenginefactory.h b/src/plugins/platforms/ios/qiosfileenginefactory.h deleted file mode 100644 index a8604c77d1..0000000000 --- a/src/plugins/platforms/ios/qiosfileenginefactory.h +++ /dev/null @@ -1,55 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the plugins of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL21$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** 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 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QIOSFILEENGINEFACTORY_H -#define QIOSFILEENGINEFACTORY_H - -#include -#include -#include "qiosfileengineassetslibrary.h" - -class QIOSFileEngineFactory : public QAbstractFileEngineHandler -{ -public: - QAbstractFileEngine* create(const QString &fileName) const - { - static QLatin1String assetsScheme("assets-library:"); - - if (fileName.toLower().startsWith(assetsScheme)) - return new QIOSFileEngineAssetsLibrary(fileName); - - return 0; - } -}; - -#endif // QIOSFILEENGINEFACTORY_H diff --git a/src/plugins/platforms/ios/qiosintegration.h b/src/plugins/platforms/ios/qiosintegration.h index 7d23fe1d62..25eb8990cb 100644 --- a/src/plugins/platforms/ios/qiosintegration.h +++ b/src/plugins/platforms/ios/qiosintegration.h @@ -38,8 +38,9 @@ #include #include +#include + #include "qiosapplicationstate.h" -#include "qiosfileenginefactory.h" QT_BEGIN_NAMESPACE @@ -91,6 +92,8 @@ public: void setDebugWindowManagement(bool); bool debugWindowManagement() const; + QFactoryLoader *optionalPlugins() { return m_optionalPlugins; } + private: QPlatformFontDatabase *m_fontDatabase; QPlatformClipboard *m_clipboard; @@ -99,7 +102,7 @@ private: QIOSApplicationState m_applicationState; QIOSServices *m_platformServices; mutable QPlatformAccessibility *m_accessibility; - QIOSFileEngineFactory m_fileEngineFactory; + QFactoryLoader *m_optionalPlugins; bool m_debugWindowManagement; }; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 85b5c477cc..d33c8cf47c 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -43,6 +43,7 @@ #include "qiosinputcontext.h" #include "qiostheme.h" #include "qiosservices.h" +#include "qiosoptionalplugininterface.h" #include @@ -68,6 +69,7 @@ QIOSIntegration::QIOSIntegration() , m_inputContext(0) , m_platformServices(new QIOSServices) , m_accessibility(0) + , m_optionalPlugins(new QFactoryLoader(QIosOptionalPluginInterface_iid, QLatin1String("/platforms/darwin"))) , m_debugWindowManagement(false) { if (![UIApplication sharedApplication]) { @@ -112,6 +114,9 @@ QIOSIntegration::QIOSIntegration() m_touchDevice->setCapabilities(touchCapabilities); QWindowSystemInterface::registerTouchDevice(m_touchDevice); QMacInternalPasteboardMime::initializeMimeTypes(); + + for (int i = 0; i < m_optionalPlugins->metaData().size(); ++i) + qobject_cast(m_optionalPlugins->instance(i))->initPlugin(); } QIOSIntegration::~QIOSIntegration() @@ -134,6 +139,9 @@ QIOSIntegration::~QIOSIntegration() delete m_accessibility; m_accessibility = 0; + + delete m_optionalPlugins; + m_optionalPlugins = 0; } bool QIOSIntegration::hasCapability(Capability cap) const diff --git a/src/plugins/platforms/ios/qiosoptionalplugininterface.h b/src/plugins/platforms/ios/qiosoptionalplugininterface.h new file mode 100644 index 0000000000..bcb8978e02 --- /dev/null +++ b/src/plugins/platforms/ios/qiosoptionalplugininterface.h @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** 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 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIOPLUGININTERFACE_H +#define QIOPLUGININTERFACE_H + +#include + +#include "qiosfiledialog.h" + +QT_BEGIN_NAMESPACE + +Q_FORWARD_DECLARE_OBJC_CLASS(UIViewController); + +#define QIosOptionalPluginInterface_iid "org.qt-project.Qt.QPA.ios.optional" + +class QIosOptionalPluginInterface +{ +public: + virtual ~QIosOptionalPluginInterface() {} + virtual void initPlugin() const {}; + virtual UIViewController* createImagePickerController(QIOSFileDialog *) const { return Q_NULLPTR; }; +}; + +Q_DECLARE_INTERFACE(QIosOptionalPluginInterface, QIosOptionalPluginInterface_iid) + +QT_END_NAMESPACE + +#endif // QIOPLUGININTERFACE_H -- cgit v1.2.3 From 78ee77f49122ac525590715a0a034965e3e59adf Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 4 Oct 2016 15:04:04 +0200 Subject: iOS: link photo lib plugin based on Info.plist contents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the application's Info.plist contains the key 'NSPhotoLibraryUsageDescription', we know that we can safely link in qiosnsphotolibrarysupport without violating AppStore requirements. This is a simple feature that doesn't introduce additional qmake API for doing app deployment with optional iOS QPA plugins. [ChangeLog][iOS] Starting from iOS 10, Apple requires all apps that need access to photos to have the key 'NSPhotoLibraryUsageDescription' in the Info.plist. Therefore, to get the same support in Qt (when, e.g., using a file dialog), the Info.plist assigned to QMAKE_INFO_PLIST will need this key as well. Change-Id: I7a93afe24b589cad96d5a1d9e2a155ad1671178a Reviewed-by: Tor Arne Vestbø Reviewed-by: Jake Petroules --- mkspecs/macx-ios-clang/features/default_post.prf | 8 ++++++++ qmake/doc/src/qmake-manual.qdoc | 6 ++++++ src/widgets/dialogs/qfiledialog.cpp | 3 +++ 3 files changed, 17 insertions(+) diff --git a/mkspecs/macx-ios-clang/features/default_post.prf b/mkspecs/macx-ios-clang/features/default_post.prf index 4c8a6eaae6..93e9e10ec3 100644 --- a/mkspecs/macx-ios-clang/features/default_post.prf +++ b/mkspecs/macx-ios-clang/features/default_post.prf @@ -80,3 +80,11 @@ macx-xcode { QMAKE_CXXFLAGS += $$arch_flags QMAKE_LFLAGS += $$arch_flags } + +!xcodebuild:equals(TEMPLATE, app):!isEmpty(QMAKE_INFO_PLIST) { + # Only link in photo library support if Info.plist contains + # NSPhotoLibraryUsageDescription. Otherwise it will be rejected from AppStore. + plist_path = $$absolute_path($$QMAKE_INFO_PLIST, $$_PRO_FILE_PWD_) + system("/usr/libexec/PlistBuddy -c 'Print NSPhotoLibraryUsageDescription' $$system_quote($$plist_path) &>/dev/null"): \ + QTPLUGIN += qiosnsphotolibrarysupport +} diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index 7386af881e..ccb79f4a9f 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -1813,6 +1813,12 @@ which qmake will replace with the actual executable name. Other variables include @ICON@, @TYPEINFO@, @LIBRARY@, and @SHORT_VERSION@. + If building for iOS, and the \c{.plist} file contains the key + \c NSPhotoLibraryUsageDescription, qmake will include an additional plugin + to the build that adds photo access support (to, e.g., + \l{QFileDialog::setDirectory()}{QFile/QFileDialog}). See Info.plist + documentation from Apple for more information regarding this key. + \note Most of the time, the default \c{Info.plist} is good enough. \section1 QMAKE_LFLAGS diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 61f5f7b0d2..f8e4299397 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -896,6 +896,9 @@ void QFileDialogPrivate::_q_goToUrl(const QUrl &url) {QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last()}, a native image picker dialog will be used for accessing the user's photo album. The filename returned can be loaded using QFile and related APIs. + For this to be enabled, the Info.plist assigned to QMAKE_INFO_PLIST in the + project file must contain the key \c NSPhotoLibraryUsageDescription. See + Info.plist documentation from Apple for more information regarding this key. This feature was added in Qt 5.5. */ void QFileDialog::setDirectory(const QString &directory) -- cgit v1.2.3 From aa2e2a8d5e4712d93879098675c0a46df0fd7a41 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 25 Oct 2016 11:56:33 +0200 Subject: Android: Fix synthesized oblique for non-latin scripts In 5e3e34731b7880ac775e8f1fa156ce016e6820f1, a default implementation of QPlatformFontDatabase::fallbacksForFamily() was added, but this implementation included only the fonts with a matching style in the returned list. The result of this was that if a font face for a specific language did not have e.g. an italic font, then we would show missing glyph boxes instead. On Android, it would be impossible to show any italic text in Chinese, Japanese, Hebrew, or Arabic. [ChangeLog][QtGui][Text] Fixed synthesized oblique for non-latin text on platforms using the basic font database, such as Android. Task-number: QTBUG-51223 Change-Id: I494d8ad87292b65d4380a2e600c1c0dc7fc8f937 Reviewed-by: Lars Knoll Reviewed-by: Konstantin Ritt --- src/gui/text/qfontdatabase.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 04081a5ca7..f1b2e84a1e 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -805,7 +805,8 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo Q_UNUSED(family); Q_UNUSED(styleHint); - QStringList retList; + QStringList preferredFallbacks; + QStringList otherFallbacks; size_t writingSystem = std::find(scriptForWritingSystem, scriptForWritingSystem + QFontDatabase::WritingSystemsCount, @@ -826,18 +827,18 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo QtFontFoundry *foundry = f->foundries[j]; for (int k = 0; k < foundry->count; ++k) { - if (style == foundry->styles[k]->key.style) { - if (foundry->name.isEmpty()) - retList.append(f->name); - else - retList.append(f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']')); - break; - } + QString name = foundry->name.isEmpty() + ? f->name + : f->name + QLatin1String(" [") + foundry->name + QLatin1Char(']'); + if (style == foundry->styles[k]->key.style) + preferredFallbacks.append(name); + else + otherFallbacks.append(name); } } } - return retList; + return preferredFallbacks + otherFallbacks; } static void initializeDb(); -- cgit v1.2.3 From b9af823ef7a4131bc61b07620e7825d757df69db Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Oct 2016 13:09:37 +0200 Subject: qiosfileengineassetslibrary: replace Q_DECL_OVERRIDE with override Change-Id: Iba67e1a1fa86dff3c82543597351b597be69ed1f Reviewed-by: Jake Petroules --- .../qiosfileengineassetslibrary.h | 24 +++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h index 0e29a1003e..89696751c6 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h @@ -45,20 +45,20 @@ public: QIOSFileEngineAssetsLibrary(const QString &fileName); ~QIOSFileEngineAssetsLibrary(); - bool open(QIODevice::OpenMode openMode) Q_DECL_OVERRIDE; - bool close() Q_DECL_OVERRIDE; - FileFlags fileFlags(FileFlags type) const Q_DECL_OVERRIDE; - qint64 size() const Q_DECL_OVERRIDE; - qint64 read(char *data, qint64 maxlen) Q_DECL_OVERRIDE; - qint64 pos() const Q_DECL_OVERRIDE; - bool seek(qint64 pos) Q_DECL_OVERRIDE; - QString fileName(FileName file) const Q_DECL_OVERRIDE; - void setFileName(const QString &file) Q_DECL_OVERRIDE; - QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const Q_DECL_OVERRIDE; + bool open(QIODevice::OpenMode openMode) override; + bool close() override; + FileFlags fileFlags(FileFlags type) const override; + qint64 size() const override; + qint64 read(char *data, qint64 maxlen) override; + qint64 pos() const override; + bool seek(qint64 pos) override; + QString fileName(FileName file) const override; + void setFileName(const QString &file) override; + QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const override; #ifndef QT_NO_FILESYSTEMITERATOR - Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) Q_DECL_OVERRIDE; - Iterator *endEntryList() Q_DECL_OVERRIDE; + Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override; + Iterator *endEntryList() override; #endif void setError(QFile::FileError error, const QString &str) { QAbstractFileEngine::setError(error, str); } -- cgit v1.2.3 From e8b55a6d2a6e44337b75dd0d116b1b020a437631 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Wed, 19 Oct 2016 20:22:10 +0200 Subject: Document qGuiApp and tweap qApp Change-Id: I2cd865da0e081251a2702c11cb83dde35444693a Reviewed-by: Edward Welbourne --- src/gui/kernel/qguiapplication.cpp | 10 ++++++++++ src/widgets/kernel/qapplication.cpp | 9 +++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 9cbcd714ab..950385f0ce 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -344,6 +344,16 @@ void QWindowGeometrySpecification::applyTo(QWindow *window) const static QWindowGeometrySpecification windowGeometrySpecification = Q_WINDOW_GEOMETRY_SPECIFICATION_INITIALIZER; +/*! + \macro qGuiApp + \relates QGuiApplication + + A global pointer referring to the unique application object. + Only valid for use when that object is a QGuiApplication. + + \sa QCoreApplication::instance(), qApp +*/ + /*! \class QGuiApplication \brief The QGuiApplication class manages the GUI application's control diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index b64d6e2159..93ee820c98 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -4229,13 +4229,10 @@ void QApplication::beep() \relates QApplication A global pointer referring to the unique application object. It is - equivalent to the pointer returned by the QCoreApplication::instance() - function except that, in GUI applications, it is a pointer to a - QApplication instance. + equivalent to QCoreApplication::instance(), but cast as a QApplication pointer, + so only valid when the unique application object is a QApplication. - Only one application object can be created. - - \sa QCoreApplication::instance() + \sa QCoreApplication::instance(), qGuiApp */ /*! -- cgit v1.2.3 From 4e196159077a820e99bc8bd306d31d0ccaa17c57 Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Wed, 26 Oct 2016 11:19:19 +0200 Subject: qmacmime: convert UTF-16 using QTextCodec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current implementation of QMacPasteboardMimeUnicodeText didn't contain any logic to handle unicode text with a byte order mark (BOM). According to the docs (*), 'public.utf16-plain-text' can have an optional BOM. Because of that, Qt would fail encoding UTF-16 text from the pasteboard if it had a BOM. Additionally, perhaps because of a bug in iOS 10, UTF-16 text placed on the pasteboard by Qt ends up being encoded wrong by native apps, unless the text has a BOM. Rather than hard-coding UTF-16 encoding/decoding in qmacmime, we now leave it to QTextCodec. QTextCodec will add a BOM by default, and can handle decoding of UTF-16 both with, and without, a BOM. *: https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html Task-number: QTBUG-56229 Change-Id: I3a08deb0262350c67e5622cf23eb3c3a4907ec39 Reviewed-by: Tor Arne Vestbø --- src/platformsupport/clipboard/qmacmime.mm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/platformsupport/clipboard/qmacmime.mm b/src/platformsupport/clipboard/qmacmime.mm index 2e3257cfcf..cdb5d6b08e 100644 --- a/src/platformsupport/clipboard/qmacmime.mm +++ b/src/platformsupport/clipboard/qmacmime.mm @@ -405,8 +405,7 @@ QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, Q if (flavor == QLatin1String("public.utf8-plain-text")) { ret = QString::fromUtf8(firstData); } else if (flavor == QLatin1String("public.utf16-plain-text")) { - ret = QString(reinterpret_cast(firstData.constData()), - firstData.size() / sizeof(QChar)); + ret = QTextCodec::codecForName("UTF-16")->toUnicode(firstData); } else { qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype)); } @@ -420,7 +419,7 @@ QList QMacPasteboardMimeUnicodeText::convertFromMime(const QString & if (flavor == QLatin1String("public.utf8-plain-text")) ret.append(string.toUtf8()); else if (flavor == QLatin1String("public.utf16-plain-text")) - ret.append(QByteArray((char*)string.utf16(), string.length()*2)); + ret.append(QTextCodec::codecForName("UTF-16")->fromUnicode(string)); return ret; } -- cgit v1.2.3 From 456f0e0f1a4fb422b029c5abd30e2e622435f76a Mon Sep 17 00:00:00 2001 From: Vyacheslav Koscheev Date: Thu, 27 Oct 2016 11:06:09 +0700 Subject: Compilation fix If qreal is float, then android-clang compilation was breaking here Change-Id: Ieccc357ecbbea5cbb22a5808dd0791795240a985 Reviewed-by: Marc Mutz --- src/gui/text/qfontengine_ft.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index 1711865e59..199e207578 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -1790,7 +1790,7 @@ void QFontEngineFT::unlockAlphaMapForGlyph() static inline bool is2dRotation(const QTransform &t) { return qFuzzyCompare(t.m11(), t.m22()) && qFuzzyCompare(t.m12(), -t.m21()) - && qFuzzyCompare(t.m11()*t.m22() - t.m12()*t.m21(), 1.0); + && qFuzzyCompare(t.m11()*t.m22() - t.m12()*t.m21(), qreal(1.0)); } QFontEngineFT::Glyph *QFontEngineFT::loadGlyphFor(glyph_t g, -- cgit v1.2.3 From 1bd53131d83cdf595f95f82f0c049d2d68957159 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 27 Oct 2016 12:51:43 +0200 Subject: configure: Determine MSVC version by evaluating macro _MSC_FULL_VER The previously used regular expression failed for messages in local languages, particularly for the French message containing a non-breaking space. Task-number: QTBUG-56388 Change-Id: Ie757617f1b3a31820d0ed274c4b157d544ac1ea6 Reviewed-by: Oswald Buddenhagen --- tools/configure/environment.cpp | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index 60616f35e7..153a141d7a 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -172,25 +173,23 @@ QString Environment::gccVersion() QString Environment::msvcVersion() { int returnValue = 0; - // Extract version from standard error output of "cl /?" - const QString command = QFile::decodeName(qgetenv("ComSpec")) - + QLatin1String(" /c ") + QLatin1String(compilerInfo(CC_MSVC2015)->executable) - + QLatin1String(" /? 2>&1"); - SetEnvironmentVariable(L"CL", NULL); // May contain /nologo, which suppresses the version. - QString version = execute(command, &returnValue); - if (returnValue != 0) { - cout << "Could not get cl version" << returnValue << qPrintable(version) << '\n';; - version.clear(); - } else { - QRegExp versionRegexp(QStringLiteral("^.*\\b(\\d{2,2}\\.\\d{2,2}\\.\\d{5,5})\\b.*$")); - Q_ASSERT(versionRegexp.isValid()); - if (versionRegexp.exactMatch(version)) { - version = versionRegexp.cap(1); - } else { - cout << "Unable to determine cl version from the output of \"" - << qPrintable(command) << "\"\n"; - } + QString tempSourceName; + { // QTemporaryFile needs to go out of scope, otherwise cl.exe refuses to open it. + QTemporaryFile tempSource(QDir::tempPath() + QLatin1String("/XXXXXX.cpp")); + tempSource.setAutoRemove(false); + if (!tempSource.open()) + return QString(); + tempSource.write("_MSC_FULL_VER\n"); + tempSourceName = tempSource.fileName(); } + QString version = execute(QLatin1String("cl /nologo /EP \"") + + QDir::toNativeSeparators(tempSourceName) + QLatin1Char('"'), + &returnValue).trimmed(); + QFile::remove(tempSourceName); + if (returnValue || version.size() < 9 || !version.at(0).isDigit()) + return QString(); + version.insert(4, QLatin1Char('.')); + version.insert(2, QLatin1Char('.')); return version; } -- cgit v1.2.3 From d19f01acbf9547762150a479793b84898f1a115e Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 18 Oct 2016 13:02:34 +0200 Subject: nsphotolibrarysupport: add missing namespace macros Change-Id: Ib2014dc64dfcc1ea8de63a1668907ace6d26c530 Reviewed-by: Jake Petroules --- .../ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h | 5 +++++ .../optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm | 4 ++++ .../ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h index 89696751c6..d4dc77b1a3 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.h @@ -37,6 +37,9 @@ #include Q_FORWARD_DECLARE_OBJC_CLASS(ALAsset); + +QT_BEGIN_NAMESPACE + class QIOSAssetData; class QIOSFileEngineAssetsLibrary : public QAbstractFileEngine @@ -72,5 +75,7 @@ private: ALAsset *loadAsset() const; }; +QT_END_NAMESPACE + #endif // QIOSFILEENGINEASSETSLIBRARY_H diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm index 2e88c37c01..110348d32b 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileengineassetslibrary.mm @@ -42,6 +42,8 @@ #include #include +QT_BEGIN_NAMESPACE + static QThreadStorage g_iteratorCurrentUrl; static QThreadStorage > g_assetDataCache; @@ -466,4 +468,6 @@ QAbstractFileEngine::Iterator *QIOSFileEngineAssetsLibrary::endEntryList() return 0; } +QT_END_NAMESPACE + #endif diff --git a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h index 29f543caae..f41de5f8ec 100644 --- a/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h +++ b/src/plugins/platforms/ios/optional/nsphotolibrarysupport/qiosfileenginefactory.h @@ -38,6 +38,8 @@ #include #include "qiosfileengineassetslibrary.h" +QT_BEGIN_NAMESPACE + class QIOSFileEngineFactory : public QAbstractFileEngineHandler { public: @@ -52,4 +54,6 @@ public: } }; +QT_END_NAMESPACE + #endif // QIOSFILEENGINEFACTORY_H -- cgit v1.2.3 From 0e2d38b4477ffec6941d0f88cfa7bf92a8b79843 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Mon, 24 Oct 2016 19:16:13 +0300 Subject: QAbstractSocket: avoid unspecified behavior in writing on TCP Passing zero as size parameter to QAbstractSocketEngine::write() has unspecified behavior, at least for TCP sockets. This could happen on flush() when writeBuffer is empty or on writeData() with size 0. Avoid by explicitly checking against zero size. Change-Id: I070630d244ce6c3de3da94f84c2cded2c7a4b081 Reviewed-by: Edward Welbourne --- src/network/socket/qabstractsocket.cpp | 4 ++-- src/network/socket/qnativesocketengine.cpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 3d665270fd..f28dc6698a 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -881,7 +881,7 @@ bool QAbstractSocketPrivate::flush() const char *ptr = writeBuffer.readPointer(); // Attempt to write it all in one chunk. - qint64 written = socketEngine->write(ptr, nextSize); + qint64 written = nextSize ? socketEngine->write(ptr, nextSize) : Q_INT64_C(0); if (written < 0) { #if defined (QABSTRACTSOCKET_DEBUG) qDebug() << "QAbstractSocketPrivate::flush() write error, aborting." << socketEngine->errorString(); @@ -2477,7 +2477,7 @@ qint64 QAbstractSocket::writeData(const char *data, qint64 size) if (!d->isBuffered && d->socketType == TcpSocket && d->socketEngine && d->writeBuffer.isEmpty()) { // This code is for the new Unbuffered QTcpSocket use case - qint64 written = d->socketEngine->write(data, size); + qint64 written = size ? d->socketEngine->write(data, size) : Q_INT64_C(0); if (written < 0) { d->setError(d->socketEngine->error(), d->socketEngine->errorString()); return written; diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp index 805acde860..86d13d82a2 100644 --- a/src/network/socket/qnativesocketengine.cpp +++ b/src/network/socket/qnativesocketengine.cpp @@ -846,6 +846,10 @@ qint64 QNativeSocketEngine::writeDatagram(const char *data, qint64 size, const Q /*! Writes a block of \a size bytes from \a data to the socket. Returns the number of bytes written, or -1 if an error occurred. + + Passing zero as the \a size parameter on a connected UDP socket + will send an empty datagram. For other socket types results are + unspecified. */ qint64 QNativeSocketEngine::write(const char *data, qint64 size) { -- cgit v1.2.3 From af3e697ad60358d5a68b8692ee4d2e4f92ab65f8 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 13 Sep 2016 08:34:06 +0200 Subject: QWindowsXPStyle: Use qreal scale factors in theme drawing helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This improves support for fractional scale factors. Task-number: QTBUG-49374 Change-Id: Ied6579ee831f3ea29f238baaffa67374ea6823d9 Reviewed-by: Morten Johan Sørvig --- src/widgets/styles/qwindowsxpstyle.cpp | 36 ++++++++++++++++---------------- src/widgets/styles/qwindowsxpstyle_p_p.h | 4 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp index 3017707117..e85d0360f9 100644 --- a/src/widgets/styles/qwindowsxpstyle.cpp +++ b/src/widgets/styles/qwindowsxpstyle.cpp @@ -803,7 +803,7 @@ bool QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData) bool translucentToplevel = false; const QPaintDevice *paintDevice = painter->device(); - const qreal aditionalDevicePixelRatio = themeData.widget ? themeData.widget->devicePixelRatio() : 1; + const qreal aditionalDevicePixelRatio = themeData.widget ? themeData.widget->devicePixelRatioF() : qreal(1); if (paintDevice->devType() == QInternal::Widget) { const QWidget *window = static_cast(paintDevice)->window(); translucentToplevel = window->testAttribute(Qt::WA_TranslucentBackground); @@ -832,28 +832,28 @@ bool QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData) const HDC dc = canDrawDirectly ? hdcForWidgetBackingStore(themeData.widget) : HDC(0); const bool result = dc - ? drawBackgroundDirectly(dc, themeData, qRound(aditionalDevicePixelRatio)) - : drawBackgroundThruNativeBuffer(themeData, qRound(aditionalDevicePixelRatio)); + ? drawBackgroundDirectly(dc, themeData, aditionalDevicePixelRatio) + : drawBackgroundThruNativeBuffer(themeData, aditionalDevicePixelRatio); painter->restore(); return result; } -static inline QRect scaleRect(const QRect &r, int factor) +static inline QRectF scaleRect(const QRectF &r, qreal factor) { return r.isValid() && factor > 1 - ? QRect(r.topLeft() * factor, r.size() * factor) + ? QRectF(r.topLeft() * factor, r.size() * factor) : r; } -static QRegion scaleRegion(const QRegion ®ion, int factor) +static QRegion scaleRegion(const QRegion ®ion, qreal factor) { - if (region.isEmpty() || factor == 1) + if (region.isEmpty() || qFuzzyCompare(factor, qreal(1))) return region; if (region.rectCount() == 1) - return QRegion(scaleRect(region.boundingRect(), factor)); + return QRegion(scaleRect(QRectF(region.boundingRect()), factor).toRect()); QRegion result; foreach (const QRect &rect, region.rects()) - result += QRect(rect.topLeft() * factor, rect.size() * factor); + result += QRectF(QPointF(rect.topLeft()) * factor, QSizeF(rect.size() * factor)).toRect(); return result; } @@ -862,13 +862,12 @@ static QRegion scaleRegion(const QRegion ®ion, int factor) Do not use this if you need to perform other transformations on the resulting data. */ -bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeData, int additionalDevicePixelRatio) +bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal additionalDevicePixelRatio) { QPainter *painter = themeData.painter; - QPoint redirectionDelta(int(painter->deviceMatrix().dx()), - int(painter->deviceMatrix().dy())); - QRect area = scaleRect(themeData.rect, additionalDevicePixelRatio).translated(redirectionDelta); + const QPointF redirectionDelta(painter->deviceMatrix().dx(), painter->deviceMatrix().dy()); + const QRect area = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio).translated(redirectionDelta).toRect(); QRegion sysRgn = painter->paintEngine()->systemClip(); if (sysRgn.isEmpty()) @@ -876,7 +875,7 @@ bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeDa else sysRgn &= area; if (painter->hasClipping()) - sysRgn &= scaleRegion(painter->clipRegion(), additionalDevicePixelRatio).translated(redirectionDelta); + sysRgn &= scaleRegion(painter->clipRegion(), additionalDevicePixelRatio).translated(redirectionDelta.toPoint()); HRGN hrgn = qt_hrgn_from_qregion(sysRgn); SelectClipRgn(dc, hrgn); @@ -948,15 +947,16 @@ bool QWindowsXPStylePrivate::drawBackgroundDirectly(HDC dc, XPThemeData &themeDa engine). */ bool QWindowsXPStylePrivate::drawBackgroundThruNativeBuffer(XPThemeData &themeData, - int additionalDevicePixelRatio) + qreal additionalDevicePixelRatio) { QPainter *painter = themeData.painter; - QRect rect = scaleRect(themeData.rect, additionalDevicePixelRatio); + QRectF rectF = scaleRect(QRectF(themeData.rect), additionalDevicePixelRatio); if ((themeData.rotate + 90) % 180 == 0) { // Catch 90,270,etc.. degree flips. - rect = QRect(0, 0, rect.height(), rect.width()); + rectF = QRectF(0, 0, rectF.height(), rectF.width()); } - rect.moveTo(0,0); + rectF.moveTo(0, 0); + QRect rect = rectF.toRect(); int partId = themeData.partId; int stateId = themeData.stateId; int w = rect.width(); diff --git a/src/widgets/styles/qwindowsxpstyle_p_p.h b/src/widgets/styles/qwindowsxpstyle_p_p.h index 51541ed218..5a6a23511f 100644 --- a/src/widgets/styles/qwindowsxpstyle_p_p.h +++ b/src/widgets/styles/qwindowsxpstyle_p_p.h @@ -388,8 +388,8 @@ public: void setTransparency(QWidget *widget, XPThemeData &themeData); bool drawBackground(XPThemeData &themeData); - bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, int aditionalDevicePixelRatio); - bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, int aditionalDevicePixelRatio); + bool drawBackgroundThruNativeBuffer(XPThemeData &themeData, qreal aditionalDevicePixelRatio); + bool drawBackgroundDirectly(HDC dc, XPThemeData &themeData, qreal aditionalDevicePixelRatio); bool hasAlphaChannel(const QRect &rect); bool fixAlphaChannel(const QRect &rect); -- cgit v1.2.3 From 8d9c42e36217e14efa69974c2cdc8d90f465a959 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 27 Oct 2016 09:49:24 +0200 Subject: xcb: Avoid crash when requesting non-supported stereo formats Introduced in the 5.7 branch by 5f39a0ef8d037ed8d1fa19d5514308ed4a2ca161. Add also a warning in the GLX backend instead of just dereferencing the null pointer. Task-number: QTBUG-55291 Change-Id: I1f2930768b39a04ee443a68d0ac7dc9ecf26cb9c Reviewed-by: Louai Al-Khanji --- src/platformsupport/glxconvenience/qglxconvenience.cpp | 5 +++++ src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp index 7dc29fae6d..4225bebf37 100644 --- a/src/platformsupport/glxconvenience/qglxconvenience.cpp +++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp @@ -386,5 +386,10 @@ bool qglx_reduceFormat(QSurfaceFormat *format) return true; } + if (format->stereo()) { + format->setStereo(false); + return true; + } + return false; } diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp index 8ae83b8084..a8d51d5e8c 100644 --- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp +++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxwindow.cpp @@ -59,6 +59,10 @@ const xcb_visualtype_t *QXcbGlxWindow::createVisual() if (!scr) return Q_NULLPTR; XVisualInfo *visualInfo = qglx_findVisualInfo(DISPLAY_FROM_XCB(scr), scr->screenNumber(), &m_format); + if (!visualInfo) { + qWarning() << "No XVisualInfo for format" << m_format; + return Q_NULLPTR; + } const xcb_visualtype_t *xcb_visualtype = scr->visualForId(visualInfo->visualid); XFree(visualInfo); return xcb_visualtype; -- cgit v1.2.3 From f577a01f5e8d9678d268917ca727a6e9a3e819a6 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 27 Oct 2016 12:29:26 +0200 Subject: eglfs: Cast to EGLNativeDisplayType in EGLDevice backend When compiling with EGL native types being the Xlib types (uncommon since we disable this both for Mesa and NVIDIA embedded, but can happen with other vendor's headers), the types for EGLDeviceEXT (void*) and EGLNativeDisplayType (Display, i.e. _XDisplay*) won't match, breaking compilation. At runtime we won't hit that path, so all we need to ensure is that the code compiles. Do this via a cast. When the native types are generic, both types are void* so the cast has no effect. Change-Id: Ib54f569d4494906f74107f08b47bd6b521d700db Reviewed-by: Louai Al-Khanji --- .../eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp index 743f714cf0..f6e86bf0bc 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms_egldevice/qeglfskmsegldevice.cpp @@ -71,7 +71,7 @@ void QEglFSKmsEglDevice::close() EGLNativeDisplayType QEglFSKmsEglDevice::nativeDisplay() const { - return static_cast(m_integration)->eglDevice(); + return reinterpret_cast(static_cast(m_integration)->eglDevice()); } QEglFSKmsScreen *QEglFSKmsEglDevice::createScreen(QEglFSKmsIntegration *integration, QEglFSKmsDevice *device, QEglFSKmsOutput output, QPoint position) -- cgit v1.2.3 From f9280ba45ed6e492871cd25026a1bce7a17042dc Mon Sep 17 00:00:00 2001 From: Gabriel de Dietrich Date: Mon, 24 Oct 2016 13:49:41 -0700 Subject: QNSColorPanelDelegate: Don't restore stolen view on dealloc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We may not be playing nice with Cocoa's internals when we decide to reparent NSColorPanel's contents to add QColorDialog's own OK/Cancel buttons. In order to reduce issues, we should avoid poking at things during the application's shutdown sequence. Simply releasing the stolen view should be enough at that point. A similar pattern exists in QNSFontPanelDelegate. Change-Id: I678c236e0c57c4d08a1109a479d965f924288c54 Task-number: QTBUG-56448 Reviewed-by: Tor Arne Vestbø Reviewed-by: Timur Pocheptsov Reviewed-by: Erik Verbruggen --- src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm | 2 +- src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm index ed17ef8fe9..3c924bec94 100644 --- a/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoacolordialoghelper.mm @@ -116,7 +116,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSColorPanelDelegate); - (void)dealloc { - [self restoreOriginalContentView]; + [mStolenContentView release]; [mColorPanel setDelegate:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; diff --git a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm index d1802fe4f9..5b27dc1da9 100644 --- a/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm +++ b/src/plugins/platforms/cocoa/qcocoafontdialoghelper.mm @@ -144,7 +144,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSFontPanelDelegate); - (void)dealloc { - [self restoreOriginalContentView]; + [mStolenContentView release]; [mFontPanel setDelegate:nil]; [[NSFontManager sharedFontManager] setDelegate:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; -- cgit v1.2.3 From d245db2f8350a949a83a75ff36f5d9d8ec75db9a Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Wed, 12 Oct 2016 18:29:40 +0300 Subject: QWidgetPrivate: remove unused declarations of methods ... such as beginSharedPainter() and endSharedPainter() Change-Id: I0e76dd172c2f3bce169f58e4c62bd47c73c99dcd Reviewed-by: Edward Welbourne Reviewed-by: Marc Mutz Reviewed-by: Thiago Macieira --- src/widgets/kernel/qwidget_p.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 37f2c0e5c7..dbc9d86172 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -395,9 +395,6 @@ public: const QRegion &rgn, const QPoint &offset, int flags, QPainter *sharedPainter, QWidgetBackingStore *backingStore); - - QPainter *beginSharedPainter(); - bool endSharedPainter(); #ifndef QT_NO_GRAPHICSVIEW static QGraphicsProxyWidget * nearestGraphicsProxyWidget(const QWidget *origin); #endif -- cgit v1.2.3 From 431bc3321f85a23ae41944a53df3934ce4c3a381 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 24 Oct 2016 11:12:03 +0200 Subject: Doc: CSS: Add styling for content generated with \legalese command Even though the \legalese command is no longer used in Qt 5 documentation as it doesn't support collating legalese texts across modules, it may still be useful for stand-alone doc projects. Add CSS rules so the \legalese text is styled similarly to code blocks, to make it stand out from the rest of the content. Change-Id: I533d8e2375ea2f8054c0671ff34dfa6f0dfe01d1 Reviewed-by: Leena Miettinen Reviewed-by: Venugopal Shivashankar --- doc/global/template/style/offline-simple.css | 2 +- doc/global/template/style/offline.css | 8 ++++++-- doc/global/template/style/online.css | 6 +++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/global/template/style/offline-simple.css b/doc/global/template/style/offline-simple.css index 84d206b2d0..a805b924a3 100644 --- a/doc/global/template/style/offline-simple.css +++ b/doc/global/template/style/offline-simple.css @@ -1,4 +1,4 @@ -pre { +pre, .LegaleseLeft { background-color: #f0f0f0; font-family: Courier, monospace; font-weight: 600; diff --git a/doc/global/template/style/offline.css b/doc/global/template/style/offline.css index 612c1087d5..b943dbb7ac 100644 --- a/doc/global/template/style/offline.css +++ b/doc/global/template/style/offline.css @@ -424,7 +424,7 @@ table styles /* table with border alternative colours*/ -table, pre { +table, pre, .LegaleseLeft { -moz-border-radius: 7px 7px 7px 7px; -webkit-border-radius: 7px 7px 7px 7px; border-radius: 7px 7px 7px 7px; @@ -481,6 +481,10 @@ table, pre { margin: 0px } +.LegaleseLeft { + font-family: monospace; + white-space: pre-wrap; +} /* table bodless & white*/ .borderless { @@ -543,7 +547,7 @@ ol.a > li{ text-align: left } -.cpp { +.cpp, .LegaleseLeft { display: block; margin: 10px; overflow: auto; diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css index be278a27da..c0caa84027 100644 --- a/doc/global/template/style/online.css +++ b/doc/global/template/style/online.css @@ -1364,7 +1364,7 @@ div.qt_commercial { border-top:5px solid #5caa15; margin-bottom:50px } -pre { +pre, .LegaleseLeft { background-color:#404244; color:#fff; display:block; @@ -1375,6 +1375,10 @@ pre { padding:25px; margin-top:0.75em } +.mainContent .LegaleseLeft p { + color:#fff; + white-space: pre-wrap +} .copy_text { background-color:#46a2da; color:#fff; -- cgit v1.2.3 From dbf35d75714fac1e836e697650e32365a2a3493e Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 7 Apr 2016 11:05:04 +0200 Subject: Doc: Fix a typo in QtConcurrent example snippet And use different wording to describe QtConcurrent::filtered(), as it doesn't modify the sequence it operates on. Change-Id: I768c0d121e027c5de36ba7bd548c2d4c2a7f1bd9 Reviewed-by: Martin Smith --- .../doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp b/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp index 86ca09a421..77233bdbf7 100644 --- a/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp +++ b/src/concurrent/doc/snippets/code/src_concurrent_qtconcurrentfilter.cpp @@ -103,9 +103,9 @@ QSet dictionary = QtConcurrent::blockingFilteredReduced(strings, allLow //! [7] // keep only images with an alpha channel QList images = ...; -QFuture alphaImages = QtConcurrent::filter(strings, &QImage::hasAlphaChannel); +QFuture alphaImages = QtConcurrent::filter(images, &QImage::hasAlphaChannel); -// keep only gray scale images +// retrieve gray scale images QList images = ...; QFuture grayscaleImages = QtConcurrent::filtered(images, &QImage::isGrayscale); -- cgit v1.2.3 From 4c00246fea63c348a2992f5a54499f2928bf0605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Somers?= Date: Tue, 25 Oct 2016 16:27:58 +0200 Subject: Fixed crash taking null central widget When no central widget has been set, calling takeCentralWidget should just return a null pointer instead of crashing. [ChangeLog][QtWidgets][QMainWindow] Fixed crash using takeCentralWidget when the central widget was not set. Task-number: QTBUG-56628 Change-Id: I240ccf4caa41d2716a78851571fbfbf444a4922e Reviewed-by: Giuseppe D'Angelo --- src/widgets/widgets/qmainwindow.cpp | 6 ++++-- tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp index 50ba7f97ec..e454e3e991 100644 --- a/src/widgets/widgets/qmainwindow.cpp +++ b/src/widgets/widgets/qmainwindow.cpp @@ -664,8 +664,10 @@ QWidget *QMainWindow::takeCentralWidget() { Q_D(QMainWindow); QWidget *oldcentralwidget = d->layout->centralWidget(); - oldcentralwidget->setParent(0); - d->layout->setCentralWidget(0); + if (oldcentralwidget) { + oldcentralwidget->setParent(0); + d->layout->setCentralWidget(0); + } return oldcentralwidget; } diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index 6282028746..ece011d145 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -864,6 +864,10 @@ void tst_QMainWindow::takeCentralWidget() { QVERIFY(!mw.centralWidget()); + // verify that we don't crash when trying to take a non-set + // central widget but just return a null pointer instead + QVERIFY(!mw.takeCentralWidget()); + mw.setCentralWidget(w1); QWidget *oldCentralWidget = mw.takeCentralWidget(); -- cgit v1.2.3 From d16d56a05ee9219ba6b7985b56a7bd69fb248875 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 28 Oct 2016 15:38:59 +0200 Subject: MSVC: Fix installation of PDB files for static libraries Commit 3d3d65f5 separated the PDB files for compiling and linking. Only the PDB file the linker produces would be installed. However, this does not work for static libraries as the LIB tool does not create a PDB file from the compiler's PDB file. This patch turns the separation between PDB files off for static libraries. Task-number: QTBUG-56594 Change-Id: I08dcb7889c67b2f6370efa1ee19be8558355bbc9 Reviewed-by: Oswald Buddenhagen --- qmake/generators/win32/msvc_nmake.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index ae139c23be..41bec4c36d 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -409,14 +409,21 @@ void NmakeMakefileGenerator::init() project->values("QMAKE_DISTCLEAN").append(tgt + ".lib"); } if (project->isActiveConfig("debug_info")) { - // Add the compiler's PDB file. - QString pdbfile = var("OBJECTS_DIR") + project->first("TARGET") + ".vc.pdb"; + QString pdbfile; + QString distPdbFile = tgt + ".pdb"; + if (project->isActiveConfig("staticlib")) { + // For static libraries, the compiler's pdb file and the dist pdb file are the same. + pdbfile = distPdbFile; + } else { + // Use $${TARGET}.vc.pdb in the OBJECTS_DIR for the compiler and + // $${TARGET}.pdb (the default) for the linker. + pdbfile = var("OBJECTS_DIR") + project->first("TARGET") + ".vc.pdb"; + } QString escapedPdbFile = escapeFilePath(pdbfile); project->values("QMAKE_CFLAGS").append("/Fd" + escapedPdbFile); project->values("QMAKE_CXXFLAGS").append("/Fd" + escapedPdbFile); project->values("QMAKE_CLEAN").append(pdbfile); - // Add the linker's PDB file to the distclean target. - project->values("QMAKE_DISTCLEAN").append(tgt + ".pdb"); + project->values("QMAKE_DISTCLEAN").append(distPdbFile); } if (project->isActiveConfig("debug")) { project->values("QMAKE_CLEAN").append(tgt + ".ilk"); -- cgit v1.2.3 From f2f39946d2911fe1157d3f71094cc7acf06e2f46 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Fri, 28 Oct 2016 11:57:38 +0200 Subject: Fix a mis-merge in af0d0b9 "-framework AudioToolbox" was lost. Task-number: QTBUG-56784 Change-Id: Ibd536c53e7e1456077559c021a70407339f33971 Reviewed-by: Richard Moe Gustavsen --- src/plugins/platforms/ios/kernel.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/ios/kernel.pro b/src/plugins/platforms/ios/kernel.pro index d8235ee011..955f8d9642 100644 --- a/src/plugins/platforms/ios/kernel.pro +++ b/src/plugins/platforms/ios/kernel.pro @@ -1,7 +1,7 @@ TARGET = qios QT += core-private gui-private platformsupport-private -LIBS += -framework Foundation -framework UIKit -framework QuartzCore +LIBS += -framework Foundation -framework UIKit -framework QuartzCore -framework AudioToolbox OBJECTIVE_SOURCES = \ plugin.mm \ -- cgit v1.2.3 From 5545e5aa6e265469d278e1fb576a737535784422 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Mon, 17 Oct 2016 16:14:40 +0200 Subject: Doc: Template: Add CSS rules for bordered images 9f45d2ab added a documentation macro for bordered images - Add the corresponding CSS rules to apply a drop shadow for such images. Change-Id: I18c4fbd7498db7b9391f33e568219e67b329e618 Reviewed-by: Venugopal Shivashankar --- doc/global/template/style/offline.css | 6 +++++- doc/global/template/style/online.css | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/global/template/style/offline.css b/doc/global/template/style/offline.css index 612c1087d5..6621b6bbcb 100644 --- a/doc/global/template/style/offline.css +++ b/doc/global/template/style/offline.css @@ -18,8 +18,12 @@ img { height: auto; } -.content { +.content .border img { + box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5) +} +.content .border .player { + box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5) } .content .indexboxcont li { diff --git a/doc/global/template/style/online.css b/doc/global/template/style/online.css index be278a27da..080b45749d 100644 --- a/doc/global/template/style/online.css +++ b/doc/global/template/style/online.css @@ -1280,6 +1280,12 @@ li a.active { margin-top:0.75em; max-width:100% } +.context .border img { + box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5) + } +.context .border .player { + box-shadow:3px 3px 8px 3px rgba(200,200,200,0.5) + } .context table { vertical-align:initial } -- cgit v1.2.3 From 401172a1986f834cf2010c3af988b3234c47abe2 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Thu, 6 Oct 2016 11:52:36 +0200 Subject: Doc: Fix typos: handing > handling Change-Id: Iecc64cba620ec639d06684e30264171052f21e10 Reviewed-by: Nico Vertriest --- examples/widgets/doc/src/calculator.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/widgets/doc/src/calculator.qdoc b/examples/widgets/doc/src/calculator.qdoc index 8d00bc7512..ea5051ce0a 100644 --- a/examples/widgets/doc/src/calculator.qdoc +++ b/examples/widgets/doc/src/calculator.qdoc @@ -261,7 +261,7 @@ \snippet widgets/calculator/calculator.cpp 20 - Like in \c additiveOperatorClicked(), we start by handing any + Like in \c additiveOperatorClicked(), we start by handling any pending multiplicative and additive operators. Then we display \c sumSoFar and reset the variable to zero. Resetting the variable to zero is necessary to avoid counting the value twice. -- cgit v1.2.3 From f9ec707e4960bf7d5298ee2ba8f22d7506ef54a7 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Tue, 18 Oct 2016 10:56:11 -0700 Subject: windows: Disable OpenGL proper on Intel 945 Change-Id: I77fbf5bafcd6b0fe5040513ef6b0d049600f9b33 Task-number: QTBUG-40991 Reviewed-by: Friedemann Kleint --- src/plugins/platforms/windows/openglblacklists/default.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/platforms/windows/openglblacklists/default.json b/src/plugins/platforms/windows/openglblacklists/default.json index 1e00da52eb..dd99e674ec 100644 --- a/src/plugins/platforms/windows/openglblacklists/default.json +++ b/src/plugins/platforms/windows/openglblacklists/default.json @@ -102,6 +102,18 @@ "features": [ "disable_desktopgl", "disable_d3d11", "disable_d3d9" ] + }, + { + "id": 9, + "description": "Intel 945 crash (QTBUG-40991)", + "vendor_id": "0x8086", + "device_id": [ "0x27A2" ], + "os": { + "type": "win" + }, + "features": [ + "disable_desktopgl" + ] } ] } -- cgit v1.2.3 From ca5d4137aa352d61d796c82b06e2d8f19a07cf10 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Thu, 27 Oct 2016 12:37:02 +0200 Subject: minimalegl: Reorder includes to avoid EGL native type clashes Some of the qminimaleglscreen.h includes are not even necessary. With the inclusion of egl.h (or qt_egl_p.h in 5.7 and up) isolated to this header, all we need to ensure is that the sources that include it place the include at a suitable place. This is not the only possible solution, there are alternatives (each with its own caveat), but this is likely the least intrusive. Task-number: QTBUG-56559 Change-Id: I17db031c8e401d9895a417ba3568ad1e4ba30f72 Reviewed-by: Louai Al-Khanji --- src/plugins/platforms/minimalegl/qminimaleglintegration.cpp | 3 ++- src/plugins/platforms/minimalegl/qminimaleglintegration.h | 2 -- src/plugins/platforms/minimalegl/qminimaleglwindow.h | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp index 1bcb22618e..5328a8b353 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp @@ -52,7 +52,8 @@ #include #include -#include +// this is where EGL headers are pulled in, make sure it is last +#include "qminimaleglscreen.h" QT_BEGIN_NAMESPACE diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.h b/src/plugins/platforms/minimalegl/qminimaleglintegration.h index 7a2c23ced4..8ceeb7b193 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglintegration.h +++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.h @@ -34,8 +34,6 @@ #ifndef QMINIMALEGLINTEGRATION_H #define QMINIMALEGLINTEGRATION_H -#include "qminimaleglscreen.h" - #include #include diff --git a/src/plugins/platforms/minimalegl/qminimaleglwindow.h b/src/plugins/platforms/minimalegl/qminimaleglwindow.h index ba7f999602..4edeaf4da9 100644 --- a/src/plugins/platforms/minimalegl/qminimaleglwindow.h +++ b/src/plugins/platforms/minimalegl/qminimaleglwindow.h @@ -35,7 +35,6 @@ #define QMINIMALEGLWINDOW_H #include "qminimaleglintegration.h" -#include "qminimaleglscreen.h" #include -- cgit v1.2.3 From 694702e09d9b17d91db282784f009178cfb1059b Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Fri, 14 Oct 2016 15:37:19 +0200 Subject: Mark the entire widget dirty when changing flush paths This augments 2a7cee47e5e84c73e32a6953e145771196645f1a Task-number: QTBUG-56534 Task-number: QTBUG-54241 Change-Id: I635478c43e353b0e435d3ac30e4cc608a5a2a6a5 Reviewed-by: Friedemann Kleint Reviewed-by: Paul Olav Tvete --- src/widgets/kernel/qwidgetbackingstore.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/widgets/kernel/qwidgetbackingstore.cpp b/src/widgets/kernel/qwidgetbackingstore.cpp index 557e71014e..e00dbaba14 100644 --- a/src/widgets/kernel/qwidgetbackingstore.cpp +++ b/src/widgets/kernel/qwidgetbackingstore.cpp @@ -106,6 +106,7 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion ®ion, QBack if (widget != tlw) offset += widget->mapTo(tlw, QPoint()); + QRegion effectiveRegion = region; #ifndef QT_NO_OPENGL const bool compositionWasActive = widget->d_func()->renderToTextureComposeActive; if (!widgetTextures) { @@ -119,6 +120,11 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion ®ion, QBack } else { widget->d_func()->renderToTextureComposeActive = true; } + // When changing the composition status, make sure the dirty region covers + // the entire widget. Just having e.g. the shown/hidden render-to-texture + // widget's area marked as dirty is incorrect when changing flush paths. + if (compositionWasActive != widget->d_func()->renderToTextureComposeActive) + effectiveRegion = widget->rect(); // re-test since we may have been forced to this path via the dummy texture list above if (widgetTextures) { @@ -130,12 +136,12 @@ void QWidgetBackingStore::qt_flush(QWidget *widget, const QRegion ®ion, QBack const bool translucentBackground = widget->testAttribute(Qt::WA_TranslucentBackground); // Use the tlw's context, not widget's. The difference is important with native child // widgets where tlw != widget. - backingStore->handle()->composeAndFlush(widget->windowHandle(), region, offset, widgetTextures, + backingStore->handle()->composeAndFlush(widget->windowHandle(), effectiveRegion, offset, widgetTextures, tlw->d_func()->shareContext(), translucentBackground); widget->window()->d_func()->sendComposeStatus(widget->window(), true); } else #endif - backingStore->flush(region, widget->windowHandle(), offset); + backingStore->flush(effectiveRegion, widget->windowHandle(), offset); } #ifndef QT_NO_PAINT_DEBUG -- cgit v1.2.3