From c1c59ec07372374748d69589d367294f6f57caf8 Mon Sep 17 00:00:00 2001 From: Boris Zbarsky Date: Tue, 6 Jun 2017 00:49:32 -0400 Subject: [PATCH 01/71] Bug 1369619. Use ReadSegments in the SRI case in FetchDriver::OnDataAvailable. r=bkelly This avoids some buffer copies and is arguably more readble. --- dom/fetch/FetchDriver.cpp | 84 ++++++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/dom/fetch/FetchDriver.cpp b/dom/fetch/FetchDriver.cpp index 6e13e294583a..4fccb249d093 100644 --- a/dom/fetch/FetchDriver.cpp +++ b/dom/fetch/FetchDriver.cpp @@ -657,6 +657,53 @@ public: } }; +struct SRIVerifierAndOutputHolder { + SRIVerifierAndOutputHolder(SRICheckDataVerifier* aVerifier, + nsIOutputStream* aOutputStream) + : mVerifier(aVerifier) + , mOutputStream(aOutputStream) + {} + + SRICheckDataVerifier* mVerifier; + nsIOutputStream* mOutputStream; + +private: + SRIVerifierAndOutputHolder() = delete; +}; + +// Just like NS_CopySegmentToStream, but also sends the data into an +// SRICheckDataVerifier. +nsresult +CopySegmentToStreamAndSRI(nsIInputStream* aInStr, + void* aClosure, + const char* aBuffer, + uint32_t aOffset, + uint32_t aCount, + uint32_t* aCountWritten) +{ + auto holder = static_cast(aClosure); + MOZ_DIAGNOSTIC_ASSERT(holder && holder->mVerifier && holder->mOutputStream, + "Bogus holder"); + nsresult rv = + holder->mVerifier->Update(aCount, + reinterpret_cast(aBuffer)); + NS_ENSURE_SUCCESS(rv, rv); + + // The rest is just like NS_CopySegmentToStream. + *aCountWritten = 0; + while (aCount) { + uint32_t n = 0; + rv = holder->mOutputStream->Write(aBuffer, aCount, &n); + if (NS_FAILED(rv)) { + return rv; + } + aBuffer += n; + aCount -= n; + *aCountWritten += n; + } + return NS_OK; +} + } // anonymous namespace NS_IMETHODIMP @@ -692,39 +739,10 @@ FetchDriver::OnDataAvailable(nsIRequest* aRequest, !mRequest->GetIntegrity().IsEmpty()) { MOZ_ASSERT(mSRIDataVerifier); - uint32_t aWrite; - nsTArray buffer; - nsresult rv; - buffer.SetCapacity(aCount); - while (aCount > 0) { - rv = aInputStream->Read(reinterpret_cast(buffer.Elements()), - aCount, &aRead); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - - rv = mSRIDataVerifier->Update(aRead, (uint8_t*)buffer.Elements()); - NS_ENSURE_SUCCESS(rv, rv); - - while (aRead > 0) { - rv = mPipeOutputStream->Write(reinterpret_cast(buffer.Elements()), - aRead, &aWrite); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - - if (aRead < aWrite) { - return NS_ERROR_FAILURE; - } - - aRead -= aWrite; - } - - - aCount -= aWrite; - } - - return NS_OK; + SRIVerifierAndOutputHolder holder(mSRIDataVerifier, mPipeOutputStream); + nsresult rv = aInputStream->ReadSegments(CopySegmentToStreamAndSRI, + &holder, aCount, &aRead); + return rv; } nsresult rv = aInputStream->ReadSegments(NS_CopySegmentToStream, From 9ddfa24f9c9db1eb11ea005d1b6ed63f27ebe526 Mon Sep 17 00:00:00 2001 From: Timothy Nikkel Date: Tue, 6 Jun 2017 00:41:40 -0500 Subject: [PATCH 02/71] Bug 1368440. Drop the layerized version of animated images when they are discarded so we don't show an out of date version of the image. r=aosmond --- image/RasterImage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/image/RasterImage.cpp b/image/RasterImage.cpp index 27241ec65987..8585272ab49c 100644 --- a/image/RasterImage.cpp +++ b/image/RasterImage.cpp @@ -471,6 +471,7 @@ RasterImage::OnSurfaceDiscardedInternal(bool aAnimatedFramesDiscarded) if (aAnimatedFramesDiscarded && mAnimationState) { MOZ_ASSERT(gfxPrefs::ImageMemAnimatedDiscardable()); + mImageContainer = nullptr; gfx::IntRect rect = mAnimationState->UpdateState(mAnimationFinished, this, mSize); NotifyProgress(NoProgress, rect); @@ -1086,6 +1087,7 @@ RasterImage::Discard() SurfaceCache::RemoveImage(ImageKey(this)); if (mAnimationState) { + mImageContainer = nullptr; gfx::IntRect rect = mAnimationState->UpdateState(mAnimationFinished, this, mSize); NotifyProgress(NoProgress, rect); From 6d15f6b2944083ea8c543068991bcf6624780104 Mon Sep 17 00:00:00 2001 From: Morris Tseng Date: Tue, 6 Jun 2017 14:11:41 +0800 Subject: [PATCH 03/71] Bug 1367747 - Create nsDisplayBorder when there are borders to draw. r=mstange MozReview-Commit-ID: H5PYj8ErRto --- layout/tables/nsTableFrame.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp index 510711f6b0f6..6eee08573d8d 100644 --- a/layout/tables/nsTableFrame.cpp +++ b/layout/tables/nsTableFrame.cpp @@ -1516,8 +1516,11 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder, aLists.BorderBackground()->AppendNewToTop( new (aBuilder) nsDisplayTableBorderCollapse(aBuilder, table)); } else { - aLists.BorderBackground()->AppendNewToTop( - new (aBuilder) nsDisplayBorder(aBuilder, table)); + const nsStyleBorder* borderStyle = aFrame->StyleBorder(); + if (borderStyle->HasBorder()) { + aLists.BorderBackground()->AppendNewToTop( + new (aBuilder) nsDisplayBorder(aBuilder, table)); + } } } } From c9eb1ea54c3dd6cca39614097e5ff207cb6b5efe Mon Sep 17 00:00:00 2001 From: Morris Tseng Date: Tue, 6 Jun 2017 14:11:41 +0800 Subject: [PATCH 04/71] Bug 1367747 - Create nsDisplayTableBorderCollapse when there is collapse border to draw. r=mstange MozReview-Commit-ID: 29g6HqAn0ej --- layout/tables/nsTableFrame.cpp | 98 +++++++++++++++++++++++++--------- layout/tables/nsTableFrame.h | 33 ++++++++++++ 2 files changed, 107 insertions(+), 24 deletions(-) diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp index 6eee08573d8d..1d35bd27dc71 100644 --- a/layout/tables/nsTableFrame.cpp +++ b/layout/tables/nsTableFrame.cpp @@ -1428,6 +1428,74 @@ PaintRowGroupBackgroundByColIdx(nsTableRowGroupFrame* aRowGroup, } } +static inline bool FrameHasBorder(nsIFrame* f) +{ + if (!f->StyleVisibility()->IsVisible()) { + return false; + } + + if (f->StyleBorder()->HasBorder()) { + return true; + } + + return false; +} + +void nsTableFrame::CalcHasBCBorders() +{ + if (!IsBorderCollapse()) { + SetHasBCBorders(false); + return; + } + + if (FrameHasBorder(this)) { + SetHasBCBorders(true); + return; + } + + // Check col and col group has borders. + for (nsIFrame* f : this->GetChildList(kColGroupList)) { + if (FrameHasBorder(f)) { + SetHasBCBorders(true); + return; + } + + nsTableColGroupFrame *colGroup = static_cast(f); + for (nsTableColFrame* col = colGroup->GetFirstColumn(); col; col = col->GetNextCol()) { + if (FrameHasBorder(col)) { + SetHasBCBorders(true); + return; + } + } + } + + // check row group, row and cell has borders. + RowGroupArray rowGroups; + OrderRowGroups(rowGroups); + for (nsTableRowGroupFrame* rowGroup : rowGroups) { + if (FrameHasBorder(rowGroup)) { + SetHasBCBorders(true); + return; + } + + for (nsTableRowFrame* row = rowGroup->GetFirstRow(); row; row = row->GetNextRow()) { + if (FrameHasBorder(row)) { + SetHasBCBorders(true); + return; + } + + for (nsTableCellFrame* cell = row->GetFirstCell(); cell; cell = cell->GetNextCell()) { + if (FrameHasBorder(cell)) { + SetHasBCBorders(true); + return; + } + } + } + } + + SetHasBCBorders(false); +} + /* static */ void nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder, nsFrame* aFrame, @@ -1513,8 +1581,10 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder, nsTableFrame* table = static_cast(aFrame); // In the collapsed border model, overlay all collapsed borders. if (table->IsBorderCollapse()) { - aLists.BorderBackground()->AppendNewToTop( - new (aBuilder) nsDisplayTableBorderCollapse(aBuilder, table)); + if (table->HasBCBorders()) { + aLists.BorderBackground()->AppendNewToTop( + new (aBuilder) nsDisplayTableBorderCollapse(aBuilder, table)); + } } else { const nsStyleBorder* borderStyle = aFrame->StyleBorder(); if (borderStyle->HasBorder()) { @@ -1528,28 +1598,6 @@ nsTableFrame::DisplayGenericTablePart(nsDisplayListBuilder* aBuilder, aFrame->DisplayOutline(aBuilder, aLists); } -static inline bool FrameHasBorderOrBackground(nsTableFrame* tableFrame, nsIFrame* f) -{ - if (!f->StyleVisibility()->IsVisible()) { - return false; - } - if (f->StyleBorder()->HasBorder()) { - return true; - } - if (!f->StyleBackground()->IsTransparent(f) || - f->StyleDisplay()->mAppearance) { - - nsTableCellFrame *cellFrame = do_QueryFrame(f); - // We could also return false here if the current frame is the root - // of a pseudo stacking context - if (cellFrame && !tableFrame->IsBorderCollapse()) { - return false; - } - return true; - } - return false; -} - // table paint code is concerned primarily with borders and bg color // SEC: TODO: adjust the rect for captions void @@ -4268,6 +4316,7 @@ nsTableFrame::AddBCDamageArea(const TableArea& aValue) #endif SetNeedToCalcBCBorders(true); + SetNeedToCalcHasBCBorders(true); // Get the property BCPropertyData* value = GetOrCreateBCProperty(); if (value) { @@ -4308,6 +4357,7 @@ nsTableFrame::SetFullBCDamageArea() NS_ASSERTION(IsBorderCollapse(), "invalid SetFullBCDamageArea call"); SetNeedToCalcBCBorders(true); + SetNeedToCalcHasBCBorders(true); BCPropertyData* value = GetOrCreateBCProperty(); if (value) { diff --git a/layout/tables/nsTableFrame.h b/layout/tables/nsTableFrame.h index c1450093a354..c614f0667391 100644 --- a/layout/tables/nsTableFrame.h +++ b/layout/tables/nsTableFrame.h @@ -763,6 +763,13 @@ public: bool NeedToCollapse() const; void SetNeedToCollapse(bool aValue); + bool NeedToCalcHasBCBorders() const; + void SetNeedToCalcHasBCBorders(bool aValue); + + void CalcHasBCBorders(); + bool HasBCBorders(); + void SetHasBCBorders(bool aValue); + /** The GeometryDirty bit is similar to the NS_FRAME_IS_DIRTY frame * state bit, which implies that all descendants are dirty. The * GeometryDirty still implies that all the parts of the table are @@ -903,6 +910,8 @@ protected: uint32_t mIStartContBCBorder:8; uint32_t mNeedToCollapse:1; // rows, cols that have visibility:collapse need to be collapsed uint32_t mResizedColumns:1; // have we resized columns since last reflow? + uint32_t mNeedToCalcHasBCBorders:1; + uint32_t mHasBCBorders:1; } mBits; std::map mDeletedRowIndexRanges; // maintains ranges of row @@ -1000,6 +1009,30 @@ inline void nsTableFrame::SetNeedToCalcBCBorders(bool aValue) mBits.mNeedToCalcBCBorders = (unsigned)aValue; } +inline bool nsTableFrame::NeedToCalcHasBCBorders() const +{ + return (bool)mBits.mNeedToCalcHasBCBorders; +} + +inline void nsTableFrame::SetNeedToCalcHasBCBorders(bool aValue) +{ + mBits.mNeedToCalcHasBCBorders = (unsigned)aValue; +} + +inline bool nsTableFrame::HasBCBorders() +{ + if (NeedToCalcHasBCBorders()) { + CalcHasBCBorders(); + SetNeedToCalcHasBCBorders(false); + } + return (bool)mBits.mHasBCBorders; +} + +inline void nsTableFrame::SetHasBCBorders(bool aValue) +{ + mBits.mHasBCBorders = (unsigned)aValue; +} + inline nscoord nsTableFrame::GetContinuousIStartBCBorderWidth() const { From 4956d679078766fba6766b424dce89800f47e06d Mon Sep 17 00:00:00 2001 From: Christoph Kerschbaumer Date: Tue, 6 Jun 2017 09:12:13 +0200 Subject: [PATCH 05/71] Bug 1367531: CSP should only check host (not including path) when performing frame ancestors checks. r=dveditz --- dom/security/nsCSPParser.cpp | 5 +++++ dom/security/nsCSPParser.h | 4 ++++ dom/security/nsCSPUtils.cpp | 6 ++++++ dom/security/nsCSPUtils.h | 6 +++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dom/security/nsCSPParser.cpp b/dom/security/nsCSPParser.cpp index 7b9f7f415965..f46331cf7641 100644 --- a/dom/security/nsCSPParser.cpp +++ b/dom/security/nsCSPParser.cpp @@ -135,6 +135,7 @@ nsCSPParser::nsCSPParser(cspTokens& aTokens, , mUnsafeInlineKeywordSrc(nullptr) , mChildSrc(nullptr) , mFrameSrc(nullptr) + , mParsingFrameAncestorsDir(false) , mTokens(aTokens) , mSelfURI(aSelfURI) , mPolicy(nullptr) @@ -813,6 +814,7 @@ nsCSPParser::sourceExpression() if (nsCSPHostSrc *cspHost = hostSource()) { // Do not forget to set the parsed scheme. cspHost->setScheme(parsedScheme); + cspHost->setWithinFrameAncestorsDir(mParsingFrameAncestorsDir); return cspHost; } // Error was reported in hostSource() @@ -1220,6 +1222,9 @@ nsCSPParser::directive() mStrictDynamic = false; mUnsafeInlineKeywordSrc = nullptr; + mParsingFrameAncestorsDir = + CSP_IsDirective(mCurDir[0], nsIContentSecurityPolicy::FRAME_ANCESTORS_DIRECTIVE); + // Try to parse all the srcs by handing the array off to directiveValue nsTArray srcs; directiveValue(srcs); diff --git a/dom/security/nsCSPParser.h b/dom/security/nsCSPParser.h index 590dd70273a0..d5f1be94fcc3 100644 --- a/dom/security/nsCSPParser.h +++ b/dom/security/nsCSPParser.h @@ -251,6 +251,10 @@ class nsCSPParser { nsCSPChildSrcDirective* mChildSrc; nsCSPDirective* mFrameSrc; + // cache variable to let nsCSPHostSrc know that it's within + // the frame-ancestors directive. + bool mParsingFrameAncestorsDir; + cspTokens mTokens; nsIURI* mSelfURI; nsCSPPolicy* mPolicy; diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp index 14eaba261942..ecc2a7412165 100644 --- a/dom/security/nsCSPUtils.cpp +++ b/dom/security/nsCSPUtils.cpp @@ -522,6 +522,7 @@ nsCSPSchemeSrc::toString(nsAString& outStr) const nsCSPHostSrc::nsCSPHostSrc(const nsAString& aHost) : mHost(aHost) , mGeneratedFromSelfKeyword(false) + , mWithinFrameAncstorsDir(false) { ToLowerCase(mHost); } @@ -705,6 +706,11 @@ nsCSPHostSrc::permits(nsIURI* aUri, const nsAString& aNonce, bool aWasRedirected rv = url->GetFilePath(uriPath); NS_ENSURE_SUCCESS(rv, false); + if (mWithinFrameAncstorsDir) { + // no path matching for frame-ancestors to not leak any path information. + return true; + } + nsString decodedUriPath; CSP_PercentDecodeStr(NS_ConvertUTF8toUTF16(uriPath), decodedUriPath); diff --git a/dom/security/nsCSPUtils.h b/dom/security/nsCSPUtils.h index b2d1ec5c6c01..4665637f8903 100644 --- a/dom/security/nsCSPUtils.h +++ b/dom/security/nsCSPUtils.h @@ -257,7 +257,10 @@ class nsCSPHostSrc : public nsCSPBaseSrc { void appendPath(const nsAString &aPath); inline void setGeneratedFromSelfKeyword() const - { mGeneratedFromSelfKeyword = true;} + { mGeneratedFromSelfKeyword = true; } + + inline void setWithinFrameAncestorsDir(bool aValue) const + { mWithinFrameAncstorsDir = aValue; } inline void getScheme(nsAString& outStr) const { outStr.Assign(mScheme); }; @@ -277,6 +280,7 @@ class nsCSPHostSrc : public nsCSPBaseSrc { nsString mPort; nsString mPath; mutable bool mGeneratedFromSelfKeyword; + mutable bool mWithinFrameAncstorsDir; }; /* =============== nsCSPKeywordSrc ============ */ From b6b3bb161d9be05b2edb219e1beb412c89613a52 Mon Sep 17 00:00:00 2001 From: Christoph Kerschbaumer Date: Tue, 6 Jun 2017 09:12:32 +0200 Subject: [PATCH 06/71] Bug 1367531: Update CSP frame ancestors test to make sure paths are ignored. r=dveditz --- dom/security/test/csp/file_frameancestors_main.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dom/security/test/csp/file_frameancestors_main.js b/dom/security/test/csp/file_frameancestors_main.js index 6ea1c2326466..ef95b7ee5354 100644 --- a/dom/security/test/csp/file_frameancestors_main.js +++ b/dom/security/test/csp/file_frameancestors_main.js @@ -9,7 +9,10 @@ function setupFrames() { b: 'http://example.com/tests/dom/security/test/csp/file_frameancestors.sjs' }; - var host = { a: 'http://mochi.test:8888', b: 'http://example.com:80' }; + // In both cases (base.a, base.b) the path starts with /tests/. Let's make sure this + // path within the CSP policy is completely ignored when enforcing frame ancestors. + // To test this behavior we use /foo/ and /bar/ as dummy values for the path. + var host = { a: 'http://mochi.test:8888/foo/', b: 'http://example.com:80/bar/' }; var innerframeuri = null; var elt = null; From aac2227dbce407744652265db0d1699ce26d3163 Mon Sep 17 00:00:00 2001 From: Franziskus Kiefer Date: Tue, 6 Jun 2017 09:57:53 +0200 Subject: [PATCH 07/71] Bug 1345368 - land NSS NSS_3_31_BETA1 UPGRADE_NSS_RELEASE, r=me --HG-- extra : amend_source : efb47ffa2b6e521ae515e1ab10c63eab63e1daf0 --- security/nss/TAG-INFO | 2 +- .../automation/taskcluster/docker/setup.sh | 3 - .../taskcluster/graph/src/extend.js | 40 ++++-- .../taskcluster/graph/src/try_syntax.js | 17 ++- .../automation/taskcluster/windows/build.sh | 6 +- .../taskcluster/windows/build_gyp.sh | 34 +++++ .../taskcluster/windows/releng.manifest | 16 +++ .../automation/taskcluster/windows/setup.sh | 18 +-- .../automation/taskcluster/windows/setup32.sh | 10 ++ .../automation/taskcluster/windows/setup64.sh | 10 ++ security/nss/build.sh | 5 +- security/nss/coreconf/config.gypi | 2 + security/nss/coreconf/coreconf.dep | 1 + security/nss/cpputil/scoped_ptrs.h | 2 + security/nss/fuzz/config/clone_libfuzzer.sh | 2 +- .../nss/gtests/freebl_gtest/ecl_unittest.cc | 124 ++++++++++++++++++ .../nss/gtests/freebl_gtest/freebl_gtest.gyp | 2 + .../nss/gtests/freebl_gtest/mpi_unittest.cc | 5 - .../gtests/freebl_gtest/prng_kat_unittest.cc | 5 +- security/nss/lib/ckfw/builtins/builtins.gyp | 12 +- security/nss/lib/ckfw/builtins/certdata.py | 18 +++ security/nss/lib/dev/devslot.c | 14 +- security/nss/lib/dev/devtoken.c | 11 +- security/nss/lib/freebl/ecl/ecp_jm.c | 11 ++ security/nss/lib/pk11wrap/dev3hack.c | 4 +- .../nss/lib/softoken/legacydb/legacydb.gyp | 2 +- security/nss/lib/softoken/softoken.gyp | 2 +- 27 files changed, 322 insertions(+), 56 deletions(-) create mode 100644 security/nss/automation/taskcluster/windows/build_gyp.sh create mode 100644 security/nss/automation/taskcluster/windows/setup32.sh create mode 100644 security/nss/automation/taskcluster/windows/setup64.sh create mode 100644 security/nss/gtests/freebl_gtest/ecl_unittest.cc create mode 100755 security/nss/lib/ckfw/builtins/certdata.py diff --git a/security/nss/TAG-INFO b/security/nss/TAG-INFO index 08c8b315f419..048bc04adca4 100644 --- a/security/nss/TAG-INFO +++ b/security/nss/TAG-INFO @@ -1 +1 @@ -29290a4a9bd0 +NSS_3_31_BETA1 diff --git a/security/nss/automation/taskcluster/docker/setup.sh b/security/nss/automation/taskcluster/docker/setup.sh index d5975ca05acd..3ba4e854eff1 100644 --- a/security/nss/automation/taskcluster/docker/setup.sh +++ b/security/nss/automation/taskcluster/docker/setup.sh @@ -47,9 +47,6 @@ echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" > apt-get -y update apt-get install -y --no-install-recommends ${apt_packages[@]} -# 32-bit builds -ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include - # Download clang. curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig diff --git a/security/nss/automation/taskcluster/graph/src/extend.js b/security/nss/automation/taskcluster/graph/src/extend.js index 2c5aff89759a..d9f6938c04ab 100644 --- a/security/nss/automation/taskcluster/graph/src/extend.js +++ b/security/nss/automation/taskcluster/graph/src/extend.js @@ -42,7 +42,8 @@ queue.filter(task => { if (task.tests == "bogo" || task.tests == "interop") { // No windows - if (task.platform == "windows2012-64") { + if (task.platform == "windows2012-64" || + task.platform == "windows2012-32") { return false; } @@ -53,8 +54,7 @@ queue.filter(task => { } // Only old make builds have -Ddisable_libpkix=0 and can run chain tests. - if (task.tests == "chains" && task.collection != "make" && - task.platform != "windows2012-64") { + if (task.tests == "chains" && task.collection != "make") { return false; } @@ -65,7 +65,6 @@ queue.filter(task => { } } - // Don't run additional hardware tests on ARM (we don't have anything there). if (task.group == "Cipher" && task.platform == "aarch64" && task.env && (task.env.NSS_DISABLE_PCLMUL == "1" || task.env.NSS_DISABLE_HW_AES == "1" @@ -154,13 +153,34 @@ export default async function main() { features: ["allowPtrace"], }, "--ubsan --asan"); + await scheduleWindows("Windows 2012 64 (debug, make)", { + platform: "windows2012-64", + collection: "make", + env: {USE_64: "1"} + }, "build.sh"); + + await scheduleWindows("Windows 2012 32 (debug, make)", { + platform: "windows2012-32", + collection: "make" + }, "build.sh"); + await scheduleWindows("Windows 2012 64 (opt)", { - env: {BUILD_OPT: "1"} - }); + platform: "windows2012-64", + }, "build_gyp.sh --opt"); await scheduleWindows("Windows 2012 64 (debug)", { + platform: "windows2012-64", collection: "debug" - }); + }, "build_gyp.sh"); + + await scheduleWindows("Windows 2012 32 (opt)", { + platform: "windows2012-32", + }, "build_gyp.sh --opt -m32"); + + await scheduleWindows("Windows 2012 32 (debug)", { + platform: "windows2012-32", + collection: "debug" + }, "build_gyp.sh -m32"); await scheduleFuzzing(); await scheduleFuzzing32(); @@ -575,10 +595,9 @@ async function scheduleTestBuilds(base, args = "") { /*****************************************************************************/ -async function scheduleWindows(name, base) { +async function scheduleWindows(name, base, build_script) { base = merge(base, { workerType: "nss-win2012r2", - platform: "windows2012-64", env: { PATH: "c:\\mozilla-build\\python;c:\\mozilla-build\\msys\\local\\bin;" + "c:\\mozilla-build\\7zip;c:\\mozilla-build\\info-zip;" + @@ -588,7 +607,6 @@ async function scheduleWindows(name, base) { "c:\\mozilla-build\\wget", DOMSUF: "localdomain", HOST: "localhost", - USE_64: "1" } }); @@ -596,7 +614,7 @@ async function scheduleWindows(name, base) { let build_base = merge(base, { command: [ WINDOWS_CHECKOUT_CMD, - "bash -c nss/automation/taskcluster/windows/build.sh" + `bash -c 'nss/automation/taskcluster/windows/${build_script}'` ], artifacts: [{ expires: 24 * 7, diff --git a/security/nss/automation/taskcluster/graph/src/try_syntax.js b/security/nss/automation/taskcluster/graph/src/try_syntax.js index eddb7c21a809..7748e068a0bf 100644 --- a/security/nss/automation/taskcluster/graph/src/try_syntax.js +++ b/security/nss/automation/taskcluster/graph/src/try_syntax.js @@ -22,8 +22,10 @@ function parseOptions(opts) { } // Parse platforms. - let allPlatforms = ["linux", "linux64", "linux64-asan", "win64", - "linux64-make", "linux-make", "linux-fuzz", "linux64-fuzz", "aarch64"]; + let allPlatforms = ["linux", "linux64", "linux64-asan", + "win", "win64", "win-make", "win64-make", + "linux64-make", "linux-make", "linux-fuzz", + "linux64-fuzz", "aarch64"]; let platforms = intersect(opts.platform.split(/\s*,\s*/), allPlatforms); // If the given value is nonsense or "none" default to all platforms. @@ -85,6 +87,9 @@ function filter(opts) { if (task.group && task.group.toLowerCase() == "ssl" && test == "ssl") { return true; } + if (task.group && task.group.toLowerCase() == "cipher" && test == "cipher") { + return true; + } return task.symbol.toLowerCase().startsWith(test); }); @@ -109,7 +114,10 @@ function filter(opts) { "linux64-fuzz": "linux64", "linux64-make": "linux64", "linux-make": "linux32", - "win64": "windows2012-64" + "win64-make": "windows2012-64", + "win-make": "windows2012-32", + "win64": "windows2012-64", + "win": "windows2012-32" }; // Check the platform name. @@ -118,7 +126,8 @@ function filter(opts) { // Additional checks. if (platform == "linux64-asan") { keep &= coll("asan"); - } else if (platform == "linux64-make" || platform == "linux-make") { + } else if (platform == "linux64-make" || platform == "linux-make" || + platform == "win64-make" || platform == "win-make") { keep &= coll("make"); } else if (platform == "linux64-fuzz" || platform == "linux-fuzz") { keep &= coll("fuzz"); diff --git a/security/nss/automation/taskcluster/windows/build.sh b/security/nss/automation/taskcluster/windows/build.sh index 6c8a474708a4..46136153d0e3 100644 --- a/security/nss/automation/taskcluster/windows/build.sh +++ b/security/nss/automation/taskcluster/windows/build.sh @@ -3,7 +3,11 @@ set -v -e -x # Set up the toolchain. -source $(dirname $0)/setup.sh +if [ "$USE_64" = 1 ]; then + source $(dirname $0)/setup64.sh +else + source $(dirname $0)/setup32.sh +fi # Clone NSPR. hg_clone https://hg.mozilla.org/projects/nspr nspr default diff --git a/security/nss/automation/taskcluster/windows/build_gyp.sh b/security/nss/automation/taskcluster/windows/build_gyp.sh new file mode 100644 index 000000000000..cc829ca99a7f --- /dev/null +++ b/security/nss/automation/taskcluster/windows/build_gyp.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +set -v -e -x + +# Set up the toolchain. +if [[ "$@" == *"-m32"* ]]; then + source $(dirname $0)/setup32.sh +else + source $(dirname $0)/setup64.sh +fi + +# Install GYP. +cd gyp +python -m virtualenv test-env +test-env/Scripts/python setup.py install +test-env/Scripts/python -m pip install --upgrade pip +test-env/Scripts/pip install --upgrade setuptools +cd .. + +export GYP_MSVS_OVERRIDE_PATH="${VSPATH}" +export GYP_MSVS_VERSION="2015" +export GYP="${PWD}/gyp/test-env/Scripts/gyp" + +# Fool GYP. +touch "${VSPATH}/VC/vcvarsall.bat" + +# Clone NSPR. +hg_clone https://hg.mozilla.org/projects/nspr nspr default + +# Build with gyp. +GYP=${GYP} ./nss/build.sh -g -v "$@" + +# Package. +7z a public/build/dist.7z dist diff --git a/security/nss/automation/taskcluster/windows/releng.manifest b/security/nss/automation/taskcluster/windows/releng.manifest index 403be2b04627..68d2c1d9e618 100644 --- a/security/nss/automation/taskcluster/windows/releng.manifest +++ b/security/nss/automation/taskcluster/windows/releng.manifest @@ -6,5 +6,21 @@ "algorithm": "sha512", "filename": "vs2015u3.zip", "unpack": true + }, + { + "version": "Ninja 1.7.1", + "size": 184821, + "digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b", + "algorithm": "sha512", + "filename": "ninja171.zip", + "unpack": true + }, + { + "size": 13063963, + "visibility": "public", + "digest": "47a19f8f863eab3414abab2b9e9bd901ab896c799b3d9254b456b2f59374b085b99de805e21069a0819f01eecb3f43f7e2395a8c644c04bcbfa5711261cca29d", + "algorithm": "sha512", + "filename": "gyp-2017-05-23.zip", + "unpack": true } ] diff --git a/security/nss/automation/taskcluster/windows/setup.sh b/security/nss/automation/taskcluster/windows/setup.sh index 32732774a488..7def50db4f51 100644 --- a/security/nss/automation/taskcluster/windows/setup.sh +++ b/security/nss/automation/taskcluster/windows/setup.sh @@ -2,6 +2,13 @@ set -v -e -x +export VSPATH="$(pwd)/vs2015u3" +export NINJA_PATH="$(pwd)/ninja/bin" + +export WINDOWSSDKDIR="${VSPATH}/SDK" +export VS90COMNTOOLS="${VSPATH}/VC" +export INCLUDE="${VSPATH}/VC/include:${VSPATH}/SDK/Include/10.0.14393.0/ucrt:${VSPATH}/SDK/Include/10.0.14393.0/shared:${VSPATH}/SDK/Include/10.0.14393.0/um" + # Usage: hg_clone repo dir [revision=@] hg_clone() { repo=$1 @@ -16,15 +23,4 @@ hg_clone() { } hg_clone https://hg.mozilla.org/build/tools tools default - tools/scripts/tooltool/tooltool_wrapper.sh $(dirname $0)/releng.manifest https://api.pub.build.mozilla.org/tooltool/ non-existant-file.sh /c/mozilla-build/python/python.exe /c/builds/tooltool.py --authentication-file /c/builds/relengapi.tok -c /c/builds/tooltool_cache -VSPATH="$(pwd)/vs2015u3" - -export WINDOWSSDKDIR="${VSPATH}/SDK" -export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT" -export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64" - -export PATH="${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" - -export INCLUDE="${VSPATH}/VC/include:${VSPATH}/SDK/Include/10.0.14393.0/ucrt:${VSPATH}/SDK/Include/10.0.14393.0/shared:${VSPATH}/SDK/Include/10.0.14393.0/um" -export LIB="${VSPATH}/VC/lib/amd64:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x64:${VSPATH}/SDK/lib/10.0.14393.0/um/x64" diff --git a/security/nss/automation/taskcluster/windows/setup32.sh b/security/nss/automation/taskcluster/windows/setup32.sh new file mode 100644 index 000000000000..bcddabfa39be --- /dev/null +++ b/security/nss/automation/taskcluster/windows/setup32.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -v -e -x + +source $(dirname $0)/setup.sh + +export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT" +export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x86" +export PATH="${NINJA_PATH}:${VSPATH}/VC/bin/amd64_x86:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x86:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x86:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" +export LIB="${VSPATH}/VC/lib:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x86:${VSPATH}/SDK/lib/10.0.14393.0/um/x86" diff --git a/security/nss/automation/taskcluster/windows/setup64.sh b/security/nss/automation/taskcluster/windows/setup64.sh new file mode 100644 index 000000000000..f308298c18dd --- /dev/null +++ b/security/nss/automation/taskcluster/windows/setup64.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -v -e -x + +source $(dirname $0)/setup.sh + +export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT" +export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64" +export PATH="${NINJA_PATH}:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" +export LIB="${VSPATH}/VC/lib/amd64:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x64:${VSPATH}/SDK/lib/10.0.14393.0/um/x64" diff --git a/security/nss/build.sh b/security/nss/build.sh index ae191b3c821c..0a9ce762ed89 100755 --- a/security/nss/build.sh +++ b/security/nss/build.sh @@ -15,6 +15,7 @@ set -e cwd=$(cd $(dirname $0); pwd -P) source "$cwd"/coreconf/nspr.sh source "$cwd"/coreconf/sanitizers.sh +GYP=${GYP:-gyp} # Usage info show_help() @@ -183,7 +184,7 @@ if [[ "$rebuild_nspr" = 1 && "$no_local_nspr" = 0 ]]; then mv -f "$nspr_config".new "$nspr_config" fi if [ "$rebuild_gyp" = 1 ]; then - if ! hash gyp 2> /dev/null; then + if ! hash ${GYP} 2> /dev/null; then echo "Please install gyp" 1>&2 exit 1 fi @@ -194,7 +195,7 @@ if [ "$rebuild_gyp" = 1 ]; then set_nspr_path "$obj_dir/include/nspr:$obj_dir/lib" fi - run_verbose run_scanbuild gyp -f ninja "${gyp_params[@]}" "$cwd"/nss.gyp + run_verbose run_scanbuild ${GYP} -f ninja "${gyp_params[@]}" "$cwd"/nss.gyp mv -f "$gyp_config".new "$gyp_config" fi diff --git a/security/nss/coreconf/config.gypi b/security/nss/coreconf/config.gypi index 0fd31ec678f7..9ea528ae4b72 100644 --- a/security/nss/coreconf/config.gypi +++ b/security/nss/coreconf/config.gypi @@ -480,6 +480,7 @@ 'PreprocessorDefinitions': [ 'WIN32', ], + 'AdditionalOptions': [ '/EHsc' ], }, }, }], @@ -494,6 +495,7 @@ 'WIN64', '_AMD64_', ], + 'AdditionalOptions': [ '/EHsc' ], }, }, }], diff --git a/security/nss/coreconf/coreconf.dep b/security/nss/coreconf/coreconf.dep index 5182f75552c8..590d1bfaeee3 100644 --- a/security/nss/coreconf/coreconf.dep +++ b/security/nss/coreconf/coreconf.dep @@ -10,3 +10,4 @@ */ #error "Do not include this header file." + diff --git a/security/nss/cpputil/scoped_ptrs.h b/security/nss/cpputil/scoped_ptrs.h index c5f81906fb1b..0436cd20ed7f 100644 --- a/security/nss/cpputil/scoped_ptrs.h +++ b/security/nss/cpputil/scoped_ptrs.h @@ -34,6 +34,7 @@ struct ScopedDelete { SECKEY_DestroyPrivateKeyList(list); } void operator()(PK11URI* uri) { PK11URI_DestroyURI(uri); } + void operator()(PLArenaPool* arena) { PORT_FreeArena(arena, PR_FALSE); } }; template @@ -62,6 +63,7 @@ SCOPED(SECKEYPublicKey); SCOPED(SECKEYPrivateKey); SCOPED(SECKEYPrivateKeyList); SCOPED(PK11URI); +SCOPED(PLArenaPool); #undef SCOPED diff --git a/security/nss/fuzz/config/clone_libfuzzer.sh b/security/nss/fuzz/config/clone_libfuzzer.sh index 2edd8c2121b1..f1dc2e14bbf7 100755 --- a/security/nss/fuzz/config/clone_libfuzzer.sh +++ b/security/nss/fuzz/config/clone_libfuzzer.sh @@ -1,6 +1,6 @@ #!/bin/sh -LIBFUZZER_REVISION=8837e6cbbc842ab7524b06a2f7360c36add316b3 +LIBFUZZER_REVISION=56bd1d43451cca4b6a11d3be316bb77ab159b09d d=$(dirname $0) $d/git-copy.sh https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer $LIBFUZZER_REVISION $d/../libFuzzer diff --git a/security/nss/gtests/freebl_gtest/ecl_unittest.cc b/security/nss/gtests/freebl_gtest/ecl_unittest.cc new file mode 100644 index 000000000000..fbad0246f997 --- /dev/null +++ b/security/nss/gtests/freebl_gtest/ecl_unittest.cc @@ -0,0 +1,124 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this file, +// You can obtain one at http://mozilla.org/MPL/2.0/. + +#include "gtest/gtest.h" + +#include + +#include "blapi.h" +#include "scoped_ptrs.h" +#include "secerr.h" + +namespace nss_test { + +class ECLTest : public ::testing::Test { + protected: + const ECCurveName GetCurveName(std::string name) { + if (name == "P256") return ECCurve_NIST_P256; + if (name == "P384") return ECCurve_NIST_P384; + if (name == "P521") return ECCurve_NIST_P521; + return ECCurve_pastLastCurve; + } + std::vector hexStringToBytes(std::string s) { + std::vector bytes; + for (size_t i = 0; i < s.length(); i += 2) { + bytes.push_back(std::stoul(s.substr(i, 2), nullptr, 16)); + } + return bytes; + } + std::string bytesToHexString(std::vector bytes) { + std::stringstream s; + for (auto b : bytes) { + s << std::setfill('0') << std::setw(2) << std::uppercase << std::hex + << static_cast(b); + } + return s.str(); + } + void ecName2params(const std::string curve, SECItem *params) { + SECOidData *oidData = nullptr; + + switch (GetCurveName(curve)) { + case ECCurve_NIST_P256: + oidData = SECOID_FindOIDByTag(SEC_OID_ANSIX962_EC_PRIME256V1); + break; + case ECCurve_NIST_P384: + oidData = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP384R1); + break; + case ECCurve_NIST_P521: + oidData = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP521R1); + break; + default: + FAIL(); + } + ASSERT_NE(oidData, nullptr); + + if (SECITEM_AllocItem(nullptr, params, (2 + oidData->oid.len)) == nullptr) { + FAIL() << "Couldn't allocate memory for OID."; + } + params->data[0] = SEC_ASN1_OBJECT_ID; + params->data[1] = oidData->oid.len; + memcpy(params->data + 2, oidData->oid.data, oidData->oid.len); + } + + void TestECDH_Derive(const std::string p, const std::string secret, + const std::string group_name, const std::string result, + const SECStatus expected_status) { + ECParams ecParams = {0}; + ScopedSECItem ecEncodedParams(SECITEM_AllocItem(nullptr, nullptr, 0U)); + ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); + + ASSERT_TRUE(arena && ecEncodedParams); + + ecName2params(group_name, ecEncodedParams.get()); + EC_FillParams(arena.get(), ecEncodedParams.get(), &ecParams); + + std::vector p_bytes = hexStringToBytes(p); + ASSERT_GT(p_bytes.size(), 0U); + SECItem public_value = {siBuffer, p_bytes.data(), + static_cast(p_bytes.size())}; + + std::vector secret_bytes = hexStringToBytes(secret); + ASSERT_GT(secret_bytes.size(), 0U); + SECItem secret_value = {siBuffer, secret_bytes.data(), + static_cast(secret_bytes.size())}; + + ScopedSECItem derived_secret(SECITEM_AllocItem(nullptr, nullptr, 0U)); + + SECStatus rv = ECDH_Derive(&public_value, &ecParams, &secret_value, false, + derived_secret.get()); + ASSERT_EQ(expected_status, rv); + if (expected_status != SECSuccess) { + // Abort when we expect an error. + return; + } + + std::string derived_result = bytesToHexString(std::vector( + derived_secret->data, derived_secret->data + derived_secret->len)); + std::cout << "derived secret: " << derived_result << std::endl; + EXPECT_EQ(derived_result, result); + } +}; + +TEST_F(ECLTest, TestECDH_DeriveP256) { + TestECDH_Derive( + "045ce5c643dffa402bc1837bbcbc223e51d06f20200470d341adfa9deed1bba10e850a16" + "368b673732a5c220a778990b22a0e74cdc3b22c7410b9dd552a5635497", + "971", "P256", "0", SECFailure); +} +TEST_F(ECLTest, TestECDH_DeriveP521) { + TestECDH_Derive( + "04" + "00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b" + "5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66" + "011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee" + "72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", + "01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5186" + "8783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f7", + "P521", + "01BC33425E72A12779EACB2EDCC5B63D1281F7E86DBC7BF99A7ABD0CFE367DE4666D6EDB" + "B8525BFFE5222F0702C3096DEC0884CE572F5A15C423FDF44D01DD99C61D", + SECSuccess); +} + +} // nss_test diff --git a/security/nss/gtests/freebl_gtest/freebl_gtest.gyp b/security/nss/gtests/freebl_gtest/freebl_gtest.gyp index 9a0449553ca5..99f10fbd26ae 100644 --- a/security/nss/gtests/freebl_gtest/freebl_gtest.gyp +++ b/security/nss/gtests/freebl_gtest/freebl_gtest.gyp @@ -13,6 +13,7 @@ 'sources': [ 'mpi_unittest.cc', 'dh_unittest.cc', + 'ecl_unittest.cc', '<(DEPTH)/gtests/common/gtests.cc' ], 'dependencies': [ @@ -65,6 +66,7 @@ 'target_defaults': { 'include_dirs': [ '<(DEPTH)/lib/freebl/mpi', + '<(DEPTH)/lib/freebl/', ], # For test builds we have to set MPI defines. 'conditions': [ diff --git a/security/nss/gtests/freebl_gtest/mpi_unittest.cc b/security/nss/gtests/freebl_gtest/mpi_unittest.cc index 059183fb6df4..4fed1a40e018 100644 --- a/security/nss/gtests/freebl_gtest/mpi_unittest.cc +++ b/security/nss/gtests/freebl_gtest/mpi_unittest.cc @@ -2,15 +2,10 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at http://mozilla.org/MPL/2.0/. -#include "secdert.h" -#include "secitem.h" -#include "secport.h" - #include "gtest/gtest.h" #include #include -#include #ifdef __MACH__ #include diff --git a/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc b/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc index 6e3c9320fe93..7bc9beea35db 100644 --- a/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc +++ b/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc @@ -34,7 +34,7 @@ bool contains(std::string& s, const char* to_find) { } std::string trim(std::string str) { - std::string whitespace = " \t"; + std::string whitespace = " \t\r\n"; const auto strBegin = str.find_first_not_of(whitespace); if (strBegin == std::string::npos) { return ""; @@ -46,7 +46,8 @@ std::string trim(std::string str) { std::vector hex_string_to_bytes(std::string s) { std::vector bytes; - for (size_t i = 0; i < s.length() - 1; i += 2) { + assert(s.length() % 2 == 0); + for (size_t i = 0; i < s.length(); i += 2) { bytes.push_back(std::stoul(s.substr(i, 2), nullptr, 16)); } return bytes; diff --git a/security/nss/lib/ckfw/builtins/builtins.gyp b/security/nss/lib/ckfw/builtins/builtins.gyp index d85442585746..f8dbc1170453 100644 --- a/security/nss/lib/ckfw/builtins/builtins.gyp +++ b/security/nss/lib/ckfw/builtins/builtins.gyp @@ -19,7 +19,7 @@ 'btoken.c', 'ckbiver.c', 'constants.c', - '<(INTERMEDIATE_DIR)/certdata.c' + '<(certdata_c)', ], 'dependencies': [ '<(DEPTH)/exports.gyp:nss_exports', @@ -30,23 +30,25 @@ { 'msvs_cygwin_shell': 0, 'action': [ - 'perl', - 'certdata.perl', + 'python', + 'certdata.py', 'certdata.txt', '<@(_outputs)', ], 'inputs': [ + 'certdata.py', 'certdata.perl', 'certdata.txt' ], 'outputs': [ - '<(INTERMEDIATE_DIR)/certdata.c' + '<(certdata_c)' ], 'action_name': 'generate_certdata_c' } ], 'variables': { - 'mapfile': 'nssckbi.def' + 'mapfile': 'nssckbi.def', + 'certdata_c': '<(INTERMEDIATE_DIR)/certdata.c', } } ], diff --git a/security/nss/lib/ckfw/builtins/certdata.py b/security/nss/lib/ckfw/builtins/certdata.py new file mode 100755 index 000000000000..077824793bdd --- /dev/null +++ b/security/nss/lib/ckfw/builtins/certdata.py @@ -0,0 +1,18 @@ +#!/usr/bin/env python +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import subprocess +import os +import sys + +def main(): + args = [os.path.realpath(x) for x in sys.argv[1:]] + script = os.path.dirname(os.path.abspath(__file__))+'/certdata.perl' + subprocess.check_call([os.environ.get('PERL', 'perl'), script] + args, + env=os.environ) + +if __name__ == '__main__': + main() diff --git a/security/nss/lib/dev/devslot.c b/security/nss/lib/dev/devslot.c index c3c05be9a953..7e8bfcd64441 100644 --- a/security/nss/lib/dev/devslot.c +++ b/security/nss/lib/dev/devslot.c @@ -31,6 +31,7 @@ nssSlot_Destroy( { if (slot) { if (PR_ATOMIC_DECREMENT(&slot->base.refCount) == 0) { + PK11_FreeSlot(slot->pk11slot); PZ_DestroyLock(slot->base.lock); return nssArena_Destroy(slot->base.arena); } @@ -224,10 +225,17 @@ NSS_IMPLEMENT NSSToken * nssSlot_GetToken( NSSSlot *slot) { - if (nssSlot_IsTokenPresent(slot)) { - return nssToken_AddRef(slot->token); + NSSToken *rvToken = NULL; + nssSlot_EnterMonitor(slot); + + /* Even if a token should be present, check `slot->token` too as it + * might be gone already. This would happen mostly on shutdown. */ + if (nssSlot_IsTokenPresent(slot) && slot->token) { + rvToken = nssToken_AddRef(slot->token); } - return (NSSToken *)NULL; + + nssSlot_ExitMonitor(slot); + return rvToken; } NSS_IMPLEMENT PRStatus diff --git a/security/nss/lib/dev/devtoken.c b/security/nss/lib/dev/devtoken.c index 40f2acaaecf9..0d4c3b5a7283 100644 --- a/security/nss/lib/dev/devtoken.c +++ b/security/nss/lib/dev/devtoken.c @@ -29,11 +29,16 @@ nssToken_Destroy( { if (tok) { if (PR_ATOMIC_DECREMENT(&tok->base.refCount) == 0) { + PK11_FreeSlot(tok->pk11slot); PZ_DestroyLock(tok->base.lock); nssTokenObjectCache_Destroy(tok->cache); - /* The token holds the first/last reference to the slot. - * When the token is actually destroyed, that ref must go too. - */ + + /* We're going away, let the nssSlot know in case it's held + * alive by someone else. Usually we should hold the last ref. */ + nssSlot_EnterMonitor(tok->slot); + tok->slot->token = NULL; + nssSlot_ExitMonitor(tok->slot); + (void)nssSlot_Destroy(tok->slot); return nssArena_Destroy(tok->base.arena); } diff --git a/security/nss/lib/freebl/ecl/ecp_jm.c b/security/nss/lib/freebl/ecl/ecp_jm.c index a1106cea83a3..bd13fa050830 100644 --- a/security/nss/lib/freebl/ecl/ecp_jm.c +++ b/security/nss/lib/freebl/ecl/ecp_jm.c @@ -127,6 +127,17 @@ ec_GFp_pt_add_jm_aff(const mp_int *px, const mp_int *py, const mp_int *pz, MP_CHECKOK(group->meth->field_mul(A, qx, A, group->meth)); MP_CHECKOK(group->meth->field_mul(B, qy, B, group->meth)); + /* Check P == Q */ + if (mp_cmp(A, px) == 0) { + if (mp_cmp(B, py) == 0) { + /* If Px == Qx && Py == Qy, double P. */ + return ec_GFp_pt_dbl_jm(px, py, pz, paz4, rx, ry, rz, raz4, + scratch, group); + } + /* If Px == Qx && Py != Qy, return point at infinity. */ + return ec_GFp_pt_set_inf_jac(rx, ry, rz); + } + /* C = A - px, D = B - py */ MP_CHECKOK(group->meth->field_sub(A, px, C, group->meth)); MP_CHECKOK(group->meth->field_sub(B, py, D, group->meth)); diff --git a/security/nss/lib/pk11wrap/dev3hack.c b/security/nss/lib/pk11wrap/dev3hack.c index 27325a55a9f2..39afd67430d1 100644 --- a/security/nss/lib/pk11wrap/dev3hack.c +++ b/security/nss/lib/pk11wrap/dev3hack.c @@ -114,7 +114,7 @@ nssSlot_CreateFromPK11SlotInfo(NSSTrustDomain *td, PK11SlotInfo *nss3slot) rvSlot->base.refCount = 1; rvSlot->base.lock = PZ_NewLock(nssILockOther); rvSlot->base.arena = arena; - rvSlot->pk11slot = nss3slot; + rvSlot->pk11slot = PK11_ReferenceSlot(nss3slot); rvSlot->epv = nss3slot->functionList; rvSlot->slotID = nss3slot->slotID; /* Grab the slot name from the PKCS#11 fixed-length buffer */ @@ -150,7 +150,7 @@ nssToken_CreateFromPK11SlotInfo(NSSTrustDomain *td, PK11SlotInfo *nss3slot) return NULL; } rvToken->base.arena = arena; - rvToken->pk11slot = nss3slot; + rvToken->pk11slot = PK11_ReferenceSlot(nss3slot); rvToken->epv = nss3slot->functionList; rvToken->defaultSession = nssSession_ImportNSS3Session(td->arena, nss3slot->session, diff --git a/security/nss/lib/softoken/legacydb/legacydb.gyp b/security/nss/lib/softoken/legacydb/legacydb.gyp index 6431fb5c1e45..34c0235bdd08 100644 --- a/security/nss/lib/softoken/legacydb/legacydb.gyp +++ b/security/nss/lib/softoken/legacydb/legacydb.gyp @@ -57,7 +57,7 @@ 'defines': [ 'SHLIB_SUFFIX=\"<(dll_suffix)\"', 'SHLIB_PREFIX=\"<(dll_prefix)\"', - 'LG_LIB_NAME=\"libnssdbm3.so\"' + 'LG_LIB_NAME=\"<(dll_prefix)nssdbm3.<(dll_suffix)\"' ] }, 'variables': { diff --git a/security/nss/lib/softoken/softoken.gyp b/security/nss/lib/softoken/softoken.gyp index f32bacf4b08b..ba917cfc8569 100644 --- a/security/nss/lib/softoken/softoken.gyp +++ b/security/nss/lib/softoken/softoken.gyp @@ -91,7 +91,7 @@ 'defines': [ 'SHLIB_SUFFIX=\"<(dll_suffix)\"', 'SHLIB_PREFIX=\"<(dll_prefix)\"', - 'SOFTOKEN_LIB_NAME=\"libsoftokn3.so\"', + 'SOFTOKEN_LIB_NAME=\"<(dll_prefix)softokn3.<(dll_suffix)\"', 'SHLIB_VERSION=\"3\"' ] }, From 73308cbbe9faadc65cf5b2ac55d3f087fddbdc1e Mon Sep 17 00:00:00 2001 From: Franziskus Kiefer Date: Tue, 6 Jun 2017 09:59:42 +0200 Subject: [PATCH 08/71] Bug 1345368 - adapt to new NSS certdata.py, r=ted UPGRADE_NSS_RELEASE --HG-- extra : amend_source : c7940c9f9a87339f2667ac70933cef0e16793704 --- security/generate_certdata.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/security/generate_certdata.py b/security/generate_certdata.py index a732ccaa825c..645857cb2135 100644 --- a/security/generate_certdata.py +++ b/security/generate_certdata.py @@ -4,8 +4,12 @@ # and moz.build `GENERATED_FILES` semantics. import buildconfig +import os import subprocess def main(output, *inputs): - output.write(subprocess.check_output([buildconfig.substs['PERL']] + list(inputs))) + env=dict(os.environ) + env['PERL'] = buildconfig.substs['PERL'] + output.write(subprocess.check_output([buildconfig.substs['PYTHON'], + inputs[0], inputs[2]], env=env)) return None From bcbfa5c7e98ffc233bcb24e25e341c76173b1e39 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Tue, 6 Jun 2017 09:46:15 +0100 Subject: [PATCH 09/71] Bug 1370069 - Fix several issues with incremental atom sweeping r=sfink --- js/public/HashTable.h | 1 + js/src/gc/GCRuntime.h | 1 + js/src/jit-test/tests/gc/bug-1370069.js | 6 ++++ js/src/jsatom.cpp | 47 +++++++++++++++++-------- js/src/jsgc.cpp | 45 +++++++++++++++-------- 5 files changed, 71 insertions(+), 29 deletions(-) create mode 100644 js/src/jit-test/tests/gc/bug-1370069.js diff --git a/js/public/HashTable.h b/js/public/HashTable.h index 29a3956fd3b9..c45c2839cdf0 100644 --- a/js/public/HashTable.h +++ b/js/public/HashTable.h @@ -1789,6 +1789,7 @@ class HashTable : private AllocPolicy { mozilla::ReentrancyGuard g(*this); MOZ_ASSERT(table); + MOZ_ASSERT_IF(!p.isValid(), p.table_ == this); MOZ_ASSERT(!p.found()); MOZ_ASSERT(!(p.keyHash & sCollisionBit)); diff --git a/js/src/gc/GCRuntime.h b/js/src/gc/GCRuntime.h index df7219183553..056b12a0cd73 100644 --- a/js/src/gc/GCRuntime.h +++ b/js/src/gc/GCRuntime.h @@ -1005,6 +1005,7 @@ class GCRuntime SliceBudget& budget, AllocKind kind); static IncrementalProgress sweepAtomsTable(GCRuntime* gc, FreeOp* fop, Zone* zone, SliceBudget& budget, AllocKind kind); + void startSweepingAtomsTable(); IncrementalProgress sweepAtomsTable(SliceBudget& budget); static IncrementalProgress finalizeAllocKind(GCRuntime* gc, FreeOp* fop, Zone* zone, SliceBudget& budget, AllocKind kind); diff --git a/js/src/jit-test/tests/gc/bug-1370069.js b/js/src/jit-test/tests/gc/bug-1370069.js new file mode 100644 index 000000000000..dd4daabf8a02 --- /dev/null +++ b/js/src/jit-test/tests/gc/bug-1370069.js @@ -0,0 +1,6 @@ +// |jit-test| error:SyntaxError +try { + eval("}"); +} catch (exc) {} +gczeal(17, 1); +6.900653737167637, (yield); diff --git a/js/src/jsatom.cpp b/js/src/jsatom.cpp index 02ead72d1a85..867bd0bc5048 100644 --- a/js/src/jsatom.cpp +++ b/js/src/jsatom.cpp @@ -170,6 +170,19 @@ JSRuntime::finishAtoms() emptyString = nullptr; } +static inline void +TracePinnedAtoms(JSTracer* trc, const AtomSet& atoms) +{ + for (auto r = atoms.all(); !r.empty(); r.popFront()) { + const AtomStateEntry& entry = r.front(); + if (entry.isPinned()) { + JSAtom* atom = entry.asPtrUnbarriered(); + TraceRoot(trc, &atom, "interned_atom"); + MOZ_ASSERT(entry.asPtrUnbarriered() == atom); + } + } +} + void js::TraceAtoms(JSTracer* trc, AutoLockForExclusiveAccess& lock) { @@ -178,15 +191,9 @@ js::TraceAtoms(JSTracer* trc, AutoLockForExclusiveAccess& lock) if (rt->atomsAreFinished()) return; - for (AtomSet::Enum e(rt->atoms(lock)); !e.empty(); e.popFront()) { - const AtomStateEntry& entry = e.front(); - if (!entry.isPinned()) - continue; - - JSAtom* atom = entry.asPtrUnbarriered(); - TraceRoot(trc, &atom, "interned_atom"); - MOZ_ASSERT(entry.asPtrUnbarriered() == atom); - } + TracePinnedAtoms(trc, rt->atoms(lock)); + if (rt->atomsAddedWhileSweeping()) + TracePinnedAtoms(trc, *rt->atomsAddedWhileSweeping()); } void @@ -250,6 +257,17 @@ JSRuntime::transformToPermanentAtoms(JSContext* cx) return true; } +static inline AtomSet::Ptr +LookupAtomState(JSRuntime* rt, const AtomHasher::Lookup& lookup) +{ + MOZ_ASSERT(rt->currentThreadHasExclusiveAccess()); + + AtomSet::Ptr p = rt->unsafeAtoms().lookup(lookup); // Safe because we hold the lock. + if (!p && rt->atomsAddedWhileSweeping()) + p = rt->atomsAddedWhileSweeping()->lookup(lookup); + return p; +} + bool AtomIsPinned(JSContext* cx, JSAtom* atom) { @@ -267,7 +285,7 @@ AtomIsPinned(JSContext* cx, JSAtom* atom) AutoLockForExclusiveAccess lock(cx); - p = cx->runtime()->atoms(lock).lookup(lookup); + p = LookupAtomState(cx->runtime(), lookup); if (!p) return false; @@ -285,7 +303,7 @@ AtomIsPinnedInRuntime(JSRuntime* rt, JSAtom* atom) AtomHasher::Lookup lookup(atom); - AtomSet::Ptr p = rt->unsafeAtoms().lookup(lookup); + AtomSet::Ptr p = LookupAtomState(rt, lookup); MOZ_ASSERT(p); return p->isPinned(); @@ -362,7 +380,7 @@ AtomizeAndCopyChars(JSContext* cx, const CharT* tbchars, size_t length, PinningB // is dead. if (!p) { if (AtomSet::AddPtr p2 = atoms.lookupForAdd(lookup)) { - JSAtom* atom = p2->asPtr(cx); + JSAtom* atom = p2->asPtrUnbarriered(); if (!IsAboutToBeFinalizedUnbarriered(&atom)) p = p2; } @@ -400,7 +418,8 @@ AtomizeAndCopyChars(JSContext* cx, const CharT* tbchars, size_t length, PinningB // We have held the lock since looking up p, and the operations we've done // since then can't GC; therefore the atoms table has not been modified and // p is still valid. - if (!atoms.add(p, AtomStateEntry(atom, bool(pin)))) { + AtomSet* addSet = atomsAddedWhileSweeping ? atomsAddedWhileSweeping : &atoms; + if (!addSet->add(p, AtomStateEntry(atom, bool(pin)))) { ReportOutOfMemory(cx); /* SystemAllocPolicy does not report OOM. */ return nullptr; } @@ -440,7 +459,7 @@ js::AtomizeString(JSContext* cx, JSString* str, AutoLockForExclusiveAccess lock(cx); - p = cx->atoms(lock).lookup(lookup); + p = LookupAtomState(cx->runtime(), lookup); MOZ_ASSERT(p); /* Non-static atom must exist in atom state set. */ MOZ_ASSERT(p->asPtrUnbarriered() == &atom); MOZ_ASSERT(pin == PinAtom); diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 5607d7a8ad43..a0de23eefbaa 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -5276,6 +5276,9 @@ GCRuntime::beginSweepingSweepGroup() joinTask(task, PhaseKind::SWEEP_WEAK_CACHES, lock); } + if (sweepingAtoms) + startSweepingAtomsTable(); + // Queue all GC things in all zones for sweeping, either on the foreground // or on the background thread. @@ -5493,6 +5496,27 @@ GCRuntime::mergeSweptObjectArenas(GCRuntime* gc, FreeOp* fop, Zone* zone, SliceB return Finished; } +void +GCRuntime::startSweepingAtomsTable() +{ + auto& maybeAtoms = maybeAtomsToSweep.ref(); + MOZ_ASSERT(maybeAtoms.isNothing()); + + AtomSet* atomsTable = rt->atomsForSweeping(); + if (!atomsTable) + return; + + // Create a secondary table to hold new atoms added while we're sweeping + // the main table incrementally. + if (!rt->createAtomsAddedWhileSweepingTable()) { + atomsTable->sweep(); + return; + } + + // Initialize remaining atoms to sweep. + maybeAtoms.emplace(*atomsTable); +} + /* static */ IncrementalProgress GCRuntime::sweepAtomsTable(GCRuntime* gc, FreeOp* fop, Zone* zone, SliceBudget& budget, AllocKind kind) @@ -5503,33 +5527,22 @@ GCRuntime::sweepAtomsTable(GCRuntime* gc, FreeOp* fop, Zone* zone, SliceBudget& return gc->sweepAtomsTable(budget); } + IncrementalProgress GCRuntime::sweepAtomsTable(SliceBudget& budget) { gcstats::AutoPhase ap(stats(), gcstats::PhaseKind::SWEEP_ATOMS_TABLE); auto& maybeAtoms = maybeAtomsToSweep.ref(); - MOZ_ASSERT_IF(maybeAtoms.isSome(), !maybeAtoms.ref().empty()); - - AtomSet* atomsTable = rt->atomsForSweeping(); - if (!atomsTable) + if (!maybeAtoms) return Finished; - if (maybeAtoms.isNothing()) { - // Create a secondary table to hold new atoms added while we're sweeping - // the main table incrementally. - if (!rt->createAtomsAddedWhileSweepingTable()) { - atomsTable->sweep(); - return Finished; - } - - // Initialize remaining atoms to sweep. - maybeAtoms.emplace(*atomsTable); - } + MOZ_ASSERT(rt->atomsAddedWhileSweeping()); // Sweep the table incrementally until we run out of work or budget. auto& atomsToSweep = *maybeAtoms; while (!atomsToSweep.empty()) { + budget.step(); if (budget.isOverBudget()) return NotFinished; @@ -5541,6 +5554,8 @@ GCRuntime::sweepAtomsTable(SliceBudget& budget) // Add any new atoms from the secondary table. AutoEnterOOMUnsafeRegion oomUnsafe; + AtomSet* atomsTable = rt->atomsForSweeping(); + MOZ_ASSERT(atomsTable); for (auto r = rt->atomsAddedWhileSweeping()->all(); !r.empty(); r.popFront()) { if (!atomsTable->putNew(AtomHasher::Lookup(r.front().asPtrUnbarriered()), r.front())) oomUnsafe.crash("Adding atom from secondary table after sweep"); From eff2b27ea33b4165dc6fec13341fc85e9c27c8c3 Mon Sep 17 00:00:00 2001 From: Tim Taubert Date: Thu, 1 Jun 2017 15:30:30 +0200 Subject: [PATCH 10/71] Bug 1362058 - Update FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS histogram metadata r=chutten --- toolkit/components/telemetry/Histograms.json | 4 +++- toolkit/components/telemetry/histogram-whitelists.json | 3 --- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index 6778a4dca025..2792f5bc1e9d 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -6599,11 +6599,13 @@ "description": "Count of messages sent by SessionRestore from child frames to the parent and that cannot be transmitted as they eat up too much memory." }, "FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS": { + "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"], "record_in_processes": ["main", "content"], - "expires_in_version": "default", + "expires_in_version": "61", "kind": "exponential", "high": 30000000, "n_buckets": 20, + "bug_numbers": [1362058], "description": "Session restore: Number of characters in DOM Storage for a tab. Pages without DOM Storage or with an empty DOM Storage are ignored." }, "FX_SESSION_RESTORE_AUTO_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS": { diff --git a/toolkit/components/telemetry/histogram-whitelists.json b/toolkit/components/telemetry/histogram-whitelists.json index 02bbfd9ec480..60500cbde8a5 100644 --- a/toolkit/components/telemetry/histogram-whitelists.json +++ b/toolkit/components/telemetry/histogram-whitelists.json @@ -253,7 +253,6 @@ "FX_GESTURE_INSTALL_SNAPSHOT_OF_PAGE", "FX_NEW_WINDOW_MS", "FX_PAGE_LOAD_MS", - "FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS", "FX_SESSION_RESTORE_NUMBER_OF_EAGER_TABS_RESTORED", "FX_SESSION_RESTORE_NUMBER_OF_TABS_RESTORED", "FX_SESSION_RESTORE_NUMBER_OF_WINDOWS_RESTORED", @@ -931,7 +930,6 @@ "FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS", "FX_SESSION_RESTORE_COLLECT_DATA_MS", "FX_SESSION_RESTORE_CORRUPT_FILE", - "FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS", "FX_SESSION_RESTORE_FILE_SIZE_BYTES", "FX_SESSION_RESTORE_MANUAL_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS", "FX_SESSION_RESTORE_NUMBER_OF_EAGER_TABS_RESTORED", @@ -1746,7 +1744,6 @@ "FX_SESSION_RESTORE_AUTO_RESTORE_DURATION_UNTIL_EAGER_TABS_RESTORED_MS", "FX_SESSION_RESTORE_COLLECT_DATA_MS", "FX_SESSION_RESTORE_FILE_SIZE_BYTES", - "FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS", "DATA_STORAGE_ENTRIES", "TRANSLATED_PAGES_BY_LANGUAGE", "MOZ_SQLITE_OTHER_WRITE_B", From 71b086f56bbbc832b85c4d0d674ba11fe876f12d Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Fri, 2 Jun 2017 19:34:05 +0200 Subject: [PATCH 11/71] Bug 1364520: Remove the jitTop optimization; r=jandem MozReview-Commit-ID: 1ifOuh90QEK --HG-- extra : rebase_source : 4609aefd9e92c9f438bb9e955ea6dadc2750fc19 --- js/public/ProfilingFrameIterator.h | 7 +---- js/src/gdb/mozilla/unwind.py | 7 ++--- js/src/jit/Bailouts.cpp | 20 +++++++------ js/src/jit/Bailouts.h | 2 +- js/src/jit/BaselineIC.cpp | 4 +-- js/src/jit/CodeGenerator.cpp | 10 +++---- js/src/jit/IonCacheIRCompiler.cpp | 6 ++-- js/src/jit/JitFrames.cpp | 15 +++++----- js/src/jit/MacroAssembler-inl.h | 14 ++++----- js/src/jit/MacroAssembler.cpp | 9 +++--- js/src/jit/MacroAssembler.h | 12 ++++---- js/src/jit/VMFunctions.cpp | 7 ++--- js/src/jit/arm/Trampoline-arm.cpp | 8 ++--- js/src/jit/arm64/Trampoline-arm64.cpp | 8 ++--- js/src/jit/mips32/Trampoline-mips32.cpp | 4 +-- js/src/jit/mips64/Trampoline-mips64.cpp | 4 +-- js/src/jit/x64/Trampoline-x64.cpp | 8 ++--- js/src/jit/x86/Trampoline-x86.cpp | 8 ++--- js/src/jscntxt.cpp | 1 - js/src/jscntxt.h | 19 +++++------- js/src/vm/GeckoProfiler.cpp | 35 +++++++++++++--------- js/src/vm/GeckoProfiler.h | 4 --- js/src/vm/Stack.cpp | 38 ++++------------------- js/src/vm/Stack.h | 40 +++++++++++++++---------- js/src/wasm/WasmStubs.cpp | 4 --- 25 files changed, 134 insertions(+), 160 deletions(-) diff --git a/js/public/ProfilingFrameIterator.h b/js/public/ProfilingFrameIterator.h index 550ac518a193..09c22670d0e4 100644 --- a/js/public/ProfilingFrameIterator.h +++ b/js/public/ProfilingFrameIterator.h @@ -37,7 +37,7 @@ struct ForEachTrackedOptimizationAttemptOp; struct ForEachTrackedOptimizationTypeInfoOp; // This iterator can be used to walk the stack of a thread suspended at an -// arbitrary pc. To provide acurate results, profiling must have been enabled +// arbitrary pc. To provide accurate results, profiling must have been enabled // (via EnableRuntimeProfilingStack) before executing the callstack being // unwound. // @@ -50,11 +50,6 @@ class MOZ_NON_PARAM JS_PUBLIC_API(ProfilingFrameIterator) uint32_t sampleBufferGen_; js::Activation* activation_; - // When moving past a JitActivation, we need to save the prevJitTop - // from it to use as the exit-frame pointer when the next caller jit - // activation (if any) comes around. - void* savedPrevJitTop_; - static const unsigned StorageSpace = 8 * sizeof(void*); alignas(void*) unsigned char storage_[StorageSpace]; diff --git a/js/src/gdb/mozilla/unwind.py b/js/src/gdb/mozilla/unwind.py index 6020c2d6b40a..f80b69421644 100644 --- a/js/src/gdb/mozilla/unwind.py +++ b/js/src/gdb/mozilla/unwind.py @@ -434,17 +434,16 @@ class UnwinderState(object): elif self.activation is None: cx = self.get_tls_context() self.activation = cx['jitActivation'] - jittop = cx['jitTop'] else: - jittop = self.activation['prevJitTop_'] self.activation = self.activation['prevJitActivation_'] - if jittop == 0: + exitFP = self.activation['exitFP_'] + if exitFP == 0: return None exit_sp = pending_frame.read_register(self.SP_REGISTER) frame_type = self.typecache.JitFrame_Exit - return self.create_frame(pc, exit_sp, jittop, frame_type, pending_frame) + return self.create_frame(pc, exit_sp, exitFP, frame_type, pending_frame) # A wrapper for unwind_entry_frame_registers that handles # architecture-independent boilerplate. diff --git a/js/src/jit/Bailouts.cpp b/js/src/jit/Bailouts.cpp index 79ce2bcb383c..7f6c6a9c2a17 100644 --- a/js/src/jit/Bailouts.cpp +++ b/js/src/jit/Bailouts.cpp @@ -33,10 +33,11 @@ jit::Bailout(BailoutStack* sp, BaselineBailoutInfo** bailoutInfo) MOZ_ASSERT(bailoutInfo); // We don't have an exit frame. - MOZ_ASSERT(IsInRange(FAKE_JIT_TOP_FOR_BAILOUT, 0, 0x1000) && - IsInRange(FAKE_JIT_TOP_FOR_BAILOUT + sizeof(CommonFrameLayout), 0, 0x1000), - "Fake jitTop pointer should be within the first page."); - cx->jitTop = FAKE_JIT_TOP_FOR_BAILOUT; + MOZ_ASSERT(IsInRange(FAKE_EXITFP_FOR_BAILOUT, 0, 0x1000) && + IsInRange(FAKE_EXITFP_FOR_BAILOUT + sizeof(CommonFrameLayout), 0, 0x1000), + "Fake exitfp pointer should be within the first page."); + + cx->activation()->asJit()->setExitFP(FAKE_EXITFP_FOR_BAILOUT); JitActivationIterator jitActivations(cx); BailoutFrameInfo bailoutData(jitActivations, sp); @@ -108,7 +109,7 @@ jit::InvalidationBailout(InvalidationBailoutStack* sp, size_t* frameSizeOut, JSContext* cx = TlsContext.get(); // We don't have an exit frame. - cx->jitTop = FAKE_JIT_TOP_FOR_BAILOUT; + cx->activation()->asJit()->setExitFP(FAKE_EXITFP_FOR_BAILOUT); JitActivationIterator jitActivations(cx); BailoutFrameInfo bailoutData(jitActivations, sp); @@ -192,9 +193,10 @@ jit::ExceptionHandlerBailout(JSContext* cx, const InlineFrameIterator& frame, // operation callback like a timeout handler. MOZ_ASSERT_IF(!excInfo.propagatingIonExceptionForDebugMode(), cx->isExceptionPending()); - uint8_t* prevJitTop = cx->jitTop; - auto restoreJitTop = mozilla::MakeScopeExit([&]() { cx->jitTop = prevJitTop; }); - cx->jitTop = FAKE_JIT_TOP_FOR_BAILOUT; + JitActivation* act = cx->activation()->asJit(); + uint8_t* prevExitFP = act->exitFP(); + auto restoreExitFP = mozilla::MakeScopeExit([&]() { act->setExitFP(prevExitFP); }); + act->setExitFP(FAKE_EXITFP_FOR_BAILOUT); gc::AutoSuppressGC suppress(cx); @@ -303,7 +305,7 @@ jit::CheckFrequentBailouts(JSContext* cx, JSScript* script, BailoutKind bailoutK void BailoutFrameInfo::attachOnJitActivation(const JitActivationIterator& jitActivations) { - MOZ_ASSERT(jitActivations.jitTop() == FAKE_JIT_TOP_FOR_BAILOUT); + MOZ_ASSERT(jitActivations.exitFP() == FAKE_EXITFP_FOR_BAILOUT); activation_ = jitActivations->asJit(); activation_->setBailoutData(this); } diff --git a/js/src/jit/Bailouts.h b/js/src/jit/Bailouts.h index 747f59b7d5e6..391b9a9b6852 100644 --- a/js/src/jit/Bailouts.h +++ b/js/src/jit/Bailouts.h @@ -102,7 +102,7 @@ static const uint32_t BAILOUT_RETURN_OVERRECURSED = 2; // This address is a magic number made to cause crashes while indicating that we // are making an attempt to mark the stack during a bailout. -static uint8_t * const FAKE_JIT_TOP_FOR_BAILOUT = reinterpret_cast(0xba1); +static uint8_t* const FAKE_EXITFP_FOR_BAILOUT = reinterpret_cast(0xba1); // BailoutStack is an architecture specific pointer to the stack, given by the // bailout handler. diff --git a/js/src/jit/BaselineIC.cpp b/js/src/jit/BaselineIC.cpp index bd2eb838acaa..b932f8e97078 100644 --- a/js/src/jit/BaselineIC.cpp +++ b/js/src/jit/BaselineIC.cpp @@ -3460,7 +3460,7 @@ ICCall_Native::Compiler::generateStubCode(MacroAssembler& masm) masm.push(scratch); masm.push(ICTailCallReg); masm.loadJSContext(scratch); - masm.enterFakeExitFrameForNative(scratch, isConstructing_); + masm.enterFakeExitFrameForNative(scratch, scratch, isConstructing_); // Execute call. masm.setupUnalignedABICall(scratch); @@ -3558,7 +3558,7 @@ ICCall_ClassHook::Compiler::generateStubCode(MacroAssembler& masm) masm.push(scratch); masm.push(ICTailCallReg); masm.loadJSContext(scratch); - masm.enterFakeExitFrameForNative(scratch, isConstructing_); + masm.enterFakeExitFrameForNative(scratch, scratch, isConstructing_); // Execute call. masm.setupUnalignedABICall(scratch); diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp index 63327ae093d9..09c6f8f0cc4a 100644 --- a/js/src/jit/CodeGenerator.cpp +++ b/js/src/jit/CodeGenerator.cpp @@ -3918,7 +3918,7 @@ CodeGenerator::visitCallNative(LCallNative* call) // Construct native exit frame. uint32_t safepointOffset = masm.buildFakeExitFrame(tempReg); - masm.enterFakeExitFrameForNative(argContextReg, call->mir()->isConstructing()); + masm.enterFakeExitFrameForNative(argContextReg, tempReg, call->mir()->isConstructing()); markSafepointAt(safepointOffset, call); @@ -4047,7 +4047,7 @@ CodeGenerator::visitCallDOMNative(LCallDOMNative* call) // Construct native exit frame. uint32_t safepointOffset = masm.buildFakeExitFrame(argJSContext); masm.loadJSContext(argJSContext); - masm.enterFakeExitFrame(argJSContext, IonDOMMethodExitFrameLayoutToken); + masm.enterFakeExitFrame(argJSContext, argJSContext, IonDOMMethodExitFrameLayoutToken); markSafepointAt(safepointOffset, call); @@ -7945,7 +7945,7 @@ JitRuntime::generateLazyLinkStub(JSContext* cx) Register temp0 = regs.takeAny(); masm.loadJSContext(temp0); - masm.enterFakeExitFrame(temp0, LazyLinkExitFrameLayoutToken); + masm.enterFakeExitFrame(temp0, temp0, LazyLinkExitFrameLayoutToken); masm.PushStubCode(); masm.setupUnalignedABICall(temp0); @@ -11569,7 +11569,7 @@ CodeGenerator::visitGetDOMProperty(LGetDOMProperty* ins) uint32_t safepointOffset = masm.buildFakeExitFrame(JSContextReg); masm.loadJSContext(JSContextReg); - masm.enterFakeExitFrame(JSContextReg, IonDOMExitFrameLayoutGetterToken); + masm.enterFakeExitFrame(JSContextReg, JSContextReg, IonDOMExitFrameLayoutGetterToken); markSafepointAt(safepointOffset, ins); @@ -11667,7 +11667,7 @@ CodeGenerator::visitSetDOMProperty(LSetDOMProperty* ins) uint32_t safepointOffset = masm.buildFakeExitFrame(JSContextReg); masm.loadJSContext(JSContextReg); - masm.enterFakeExitFrame(JSContextReg, IonDOMExitFrameLayoutSetterToken); + masm.enterFakeExitFrame(JSContextReg, JSContextReg, IonDOMExitFrameLayoutSetterToken); markSafepointAt(safepointOffset, ins); diff --git a/js/src/jit/IonCacheIRCompiler.cpp b/js/src/jit/IonCacheIRCompiler.cpp index 9c4fa6edb043..9806fdacb3de 100644 --- a/js/src/jit/IonCacheIRCompiler.cpp +++ b/js/src/jit/IonCacheIRCompiler.cpp @@ -945,7 +945,7 @@ IonCacheIRCompiler::emitCallNativeGetterResult() if (!masm.icBuildOOLFakeExitFrame(GetReturnAddressToIonCode(cx_), save)) return false; - masm.enterFakeExitFrame(argJSContext, IonOOLNativeExitFrameLayoutToken); + masm.enterFakeExitFrame(argJSContext, scratch, IonOOLNativeExitFrameLayoutToken); // Construct and execute call. masm.setupUnalignedABICall(scratch); @@ -1002,7 +1002,7 @@ IonCacheIRCompiler::emitCallProxyGetResult() if (!masm.icBuildOOLFakeExitFrame(GetReturnAddressToIonCode(cx_), save)) return false; - masm.enterFakeExitFrame(argJSContext, IonOOLProxyExitFrameLayoutToken); + masm.enterFakeExitFrame(argJSContext, scratch, IonOOLProxyExitFrameLayoutToken); // Make the call. masm.setupUnalignedABICall(scratch); @@ -1766,7 +1766,7 @@ IonCacheIRCompiler::emitCallNativeSetter() if (!masm.icBuildOOLFakeExitFrame(GetReturnAddressToIonCode(cx_), save)) return false; - masm.enterFakeExitFrame(argJSContext, IonOOLNativeExitFrameLayoutToken); + masm.enterFakeExitFrame(argJSContext, scratch, IonOOLNativeExitFrameLayoutToken); // Make the call. masm.setupUnalignedABICall(scratch); diff --git a/js/src/jit/JitFrames.cpp b/js/src/jit/JitFrames.cpp index 8eecfbf28eeb..264ef25302bc 100644 --- a/js/src/jit/JitFrames.cpp +++ b/js/src/jit/JitFrames.cpp @@ -107,7 +107,7 @@ JitFrameIterator::JitFrameIterator() } JitFrameIterator::JitFrameIterator(JSContext* cx) - : current_(cx->jitTop), + : current_(cx->activation()->asJit()->exitFP()), type_(JitFrame_Exit), returnAddressToFp_(nullptr), frameSize_(0), @@ -122,7 +122,7 @@ JitFrameIterator::JitFrameIterator(JSContext* cx) } JitFrameIterator::JitFrameIterator(const ActivationIterator& activations) - : current_(activations.jitTop()), + : current_(activations->asJit()->exitFP()), type_(JitFrame_Exit), returnAddressToFp_(nullptr), frameSize_(0), @@ -948,7 +948,7 @@ HandleException(ResumeFromException* rfe) ++iter; if (current) { - // Unwind the frame by updating jitTop. This is necessary so that + // Unwind the frame by updating exitFP. This is necessary so that // (1) debugger exception unwind and leave frame hooks don't see this // frame when they use ScriptFrameIter, and (2) ScriptFrameIter does // not crash when accessing an IonScript that's destroyed by the @@ -972,7 +972,7 @@ EnsureBareExitFrame(JSContext* cx, JitFrameLayout* frame) { ExitFrameLayout* exitFrame = reinterpret_cast(frame); - if (cx->jitTop == (uint8_t*)frame) { + if (cx->activation()->asJit()->exitFP() == (uint8_t*)frame) { // If we already called this function for the current frame, do // nothing. MOZ_ASSERT(exitFrame->isBareExit()); @@ -985,11 +985,12 @@ EnsureBareExitFrame(JSContext* cx, JitFrameLayout* frame) ++iter; MOZ_ASSERT(iter.current() == frame, "|frame| must be the top JS frame"); - MOZ_ASSERT((uint8_t*)exitFrame->footer() >= cx->jitTop, - "Must have space for ExitFooterFrame before jitTop"); + MOZ_ASSERT(!!cx->activation()->asJit()->exitFP()); + MOZ_ASSERT((uint8_t*)exitFrame->footer() >= cx->activation()->asJit()->exitFP(), + "Must have space for ExitFooterFrame before exitFP"); #endif - cx->jitTop = (uint8_t*)frame; + cx->activation()->asJit()->setExitFP((uint8_t*)frame); *exitFrame->footer()->addressOfJitCode() = ExitFrameLayout::BareToken(); MOZ_ASSERT(exitFrame->isBareExit()); } diff --git a/js/src/jit/MacroAssembler-inl.h b/js/src/jit/MacroAssembler-inl.h index 0d0ba916b9f3..e73c8419fe90 100644 --- a/js/src/jit/MacroAssembler-inl.h +++ b/js/src/jit/MacroAssembler-inl.h @@ -291,9 +291,9 @@ MacroAssembler::PushStubCode() } void -MacroAssembler::enterExitFrame(Register cxreg, const VMFunction* f) +MacroAssembler::enterExitFrame(Register cxreg, Register scratch, const VMFunction* f) { - linkExitFrame(cxreg); + linkExitFrame(cxreg, scratch); // Push the JitCode pointer. (Keep the code alive, when on the stack) PushStubCode(); // Push VMFunction pointer, to mark arguments. @@ -301,18 +301,18 @@ MacroAssembler::enterExitFrame(Register cxreg, const VMFunction* f) } void -MacroAssembler::enterFakeExitFrame(Register cxreg, enum ExitFrameTokenValues token) +MacroAssembler::enterFakeExitFrame(Register cxreg, Register scratch, enum ExitFrameTokenValues token) { - linkExitFrame(cxreg); + linkExitFrame(cxreg, scratch); Push(Imm32(token)); Push(ImmPtr(nullptr)); } void -MacroAssembler::enterFakeExitFrameForNative(Register cxreg, bool isConstructing) +MacroAssembler::enterFakeExitFrameForNative(Register cxreg, Register scratch, bool isConstructing) { - enterFakeExitFrame(cxreg, isConstructing ? ConstructNativeExitFrameLayoutToken - : CallNativeExitFrameLayoutToken); + enterFakeExitFrame(cxreg, scratch, isConstructing ? ConstructNativeExitFrameLayoutToken + : CallNativeExitFrameLayoutToken); } void diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp index 8fea6a88f0ee..aef22f7684dd 100644 --- a/js/src/jit/MacroAssembler.cpp +++ b/js/src/jit/MacroAssembler.cpp @@ -1510,7 +1510,7 @@ void MacroAssembler::generateBailoutTail(Register scratch, Register bailoutInfo) { loadJSContext(scratch); - enterExitFrame(scratch); + enterExitFrame(scratch, scratch); Label baseline; @@ -1572,7 +1572,7 @@ MacroAssembler::generateBailoutTail(Register scratch, Register bailoutInfo) push(Address(bailoutInfo, offsetof(BaselineBailoutInfo, resumeAddr))); // No GC things to mark on the stack, push a bare token. loadJSContext(scratch); - enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); // If monitorStub is non-null, handle resumeAddr appropriately. Label noMonitor; @@ -2822,9 +2822,10 @@ MacroAssembler::callWithABI(wasm::BytecodeOffset callOffset, wasm::SymbolicAddre // Exit frame footer. void -MacroAssembler::linkExitFrame(Register cxreg) +MacroAssembler::linkExitFrame(Register cxreg, Register scratch) { - storeStackPtr(Address(cxreg, offsetof(JSContext, jitTop))); + loadPtr(Address(cxreg, JSContext::offsetOfActivation()), scratch); + storeStackPtr(Address(scratch, JitActivation::offsetOfExitFP())); } void diff --git a/js/src/jit/MacroAssembler.h b/js/src/jit/MacroAssembler.h index 26b9a4e9ce7e..4297d499341c 100644 --- a/js/src/jit/MacroAssembler.h +++ b/js/src/jit/MacroAssembler.h @@ -698,22 +698,22 @@ class MacroAssembler : public MacroAssemblerSpecific inline bool hasSelfReference() const; // Push stub code and the VMFunction pointer. - inline void enterExitFrame(Register cxreg, const VMFunction* f = nullptr); + inline void enterExitFrame(Register cxreg, Register scratch, const VMFunction* f = nullptr); // Push an exit frame token to identify which fake exit frame this footer // corresponds to. - inline void enterFakeExitFrame(Register cxreg, enum ExitFrameTokenValues token); + inline void enterFakeExitFrame(Register cxreg, Register scratch, enum ExitFrameTokenValues token); // Push an exit frame token for a native call. - inline void enterFakeExitFrameForNative(Register cxreg, bool isConstructing); + inline void enterFakeExitFrameForNative(Register cxreg, Register scratch, bool isConstructing); // Pop ExitFrame footer in addition to the extra frame. inline void leaveExitFrame(size_t extraFrame = 0); private: - // Save the top of the stack into JSontext::jitTop of the current thread, - // which should be the location of the latest exit frame. - void linkExitFrame(Register cxreg); + // Save the top of the stack into JitActivation::exitFP of the current + // thread, which should be the location of the latest exit frame. + void linkExitFrame(Register cxreg, Register scratch); // Patch the value of PushStubCode with the pointer to the finalized code. void linkSelfReference(JitCode* code); diff --git a/js/src/jit/VMFunctions.cpp b/js/src/jit/VMFunctions.cpp index b7f0e14d563d..dbc4ca3fa62e 100644 --- a/js/src/jit/VMFunctions.cpp +++ b/js/src/jit/VMFunctions.cpp @@ -810,8 +810,8 @@ bool DebugEpilogueOnBaselineReturn(JSContext* cx, BaselineFrame* frame, jsbytecode* pc) { if (!DebugEpilogue(cx, frame, pc, true)) { - // DebugEpilogue popped the frame by updating jitTop, so run the stop event - // here before we enter the exception handler. + // DebugEpilogue popped the frame by updating exitFP, so run the stop + // event here before we enter the exception handler. TraceLoggerThread* logger = TraceLoggerForCurrentThread(cx); TraceLogStopEvent(logger, TraceLogger_Baseline); TraceLogStopEvent(logger, TraceLogger_Scripts); @@ -837,9 +837,8 @@ DebugEpilogue(JSContext* cx, BaselineFrame* frame, jsbytecode* pc, bool ok) frame->setOverridePc(script->lastPC()); if (!ok) { - // Pop this frame by updating jitTop, so that the exception handling + // Pop this frame by updating exitFP, so that the exception handling // code will start at the previous frame. - JitFrameLayout* prefix = frame->framePrefix(); EnsureBareExitFrame(cx, prefix); return false; diff --git a/js/src/jit/arm/Trampoline-arm.cpp b/js/src/jit/arm/Trampoline-arm.cpp index b14c4f843b08..9870685a4dc1 100644 --- a/js/src/jit/arm/Trampoline-arm.cpp +++ b/js/src/jit/arm/Trampoline-arm.cpp @@ -288,7 +288,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) masm.push(Imm32(0)); // Fake return address. // No GC things to mark on the stack, push a bare token. masm.loadJSContext(scratch); - masm.enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); masm.push(framePtr); // BaselineFrame masm.push(r0); // jitcode @@ -777,8 +777,8 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) MacroAssembler masm(cx); AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask); - // Wrapper register set is a superset of Volatile register set. - JS_STATIC_ASSERT((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0); + static_assert((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0, + "Wrapper register set must be a superset of Volatile register set."); // The context is the first argument; r0 is the first argument register. Register cxreg = r0; @@ -795,7 +795,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) masm.pushReturnAddress(); masm.loadJSContext(cxreg); - masm.enterExitFrame(cxreg, &f); + masm.enterExitFrame(cxreg, regs.getAny(), &f); // Save the base of the argument set stored on the stack. Register argsBase = InvalidReg; diff --git a/js/src/jit/arm64/Trampoline-arm64.cpp b/js/src/jit/arm64/Trampoline-arm64.cpp index 6cfd3fa668c5..1592751ce3fe 100644 --- a/js/src/jit/arm64/Trampoline-arm64.cpp +++ b/js/src/jit/arm64/Trampoline-arm64.cpp @@ -190,7 +190,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) masm.asVIXL().Push(x19, xzr); // Push xzr for a fake return address. // No GC things to mark: push a bare token. masm.loadJSContext(r19); - masm.enterFakeExitFrame(r19, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(r19, r19, ExitFrameLayoutBareToken); masm.push(BaselineFrameReg, reg_code); @@ -567,8 +567,8 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // the function call. AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask); - // Wrapper register set is a superset of the Volatile register set. - JS_STATIC_ASSERT((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0); + static_assert((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0, + "Wrapper register set must be a superset of the Volatile register set."); // Unlike on other platforms, it is the responsibility of the VM *callee* to // push the return address, while the caller must ensure that the address @@ -588,7 +588,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // // We're aligned to an exit frame, so link it up. masm.loadJSContext(reg_cx); - masm.enterExitFrame(reg_cx, &f); + masm.enterExitFrame(reg_cx, regs.getAny(), &f); // Save the current stack pointer as the base for copying arguments. Register argsBase = InvalidReg; diff --git a/js/src/jit/mips32/Trampoline-mips32.cpp b/js/src/jit/mips32/Trampoline-mips32.cpp index 7a245f2da9a1..b12ddd185a3e 100644 --- a/js/src/jit/mips32/Trampoline-mips32.cpp +++ b/js/src/jit/mips32/Trampoline-mips32.cpp @@ -255,7 +255,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) // No GC things to mark, push a bare token. masm.loadJSContext(scratch); - masm.enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); masm.reserveStack(2 * sizeof(uintptr_t)); masm.storePtr(framePtr, Address(StackPointer, sizeof(uintptr_t))); // BaselineFrame @@ -738,7 +738,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // We're aligned to an exit frame, so link it up. masm.loadJSContext(cxreg); - masm.enterExitFrame(cxreg, &f); + masm.enterExitFrame(cxreg, regs.getAny(), &f); // Save the base of the argument set stored on the stack. Register argsBase = InvalidReg; diff --git a/js/src/jit/mips64/Trampoline-mips64.cpp b/js/src/jit/mips64/Trampoline-mips64.cpp index 11d7e6b6e3cb..5a047052cb7e 100644 --- a/js/src/jit/mips64/Trampoline-mips64.cpp +++ b/js/src/jit/mips64/Trampoline-mips64.cpp @@ -272,7 +272,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) // No GC things to mark, push a bare token. masm.loadJSContext(scratch); - masm.enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); masm.reserveStack(2 * sizeof(uintptr_t)); masm.storePtr(framePtr, Address(StackPointer, sizeof(uintptr_t))); // BaselineFrame @@ -708,7 +708,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // We're aligned to an exit frame, so link it up. masm.loadJSContext(cxreg); - masm.enterExitFrame(cxreg, &f); + masm.enterExitFrame(cxreg, regs.getAny(), &f); // Save the base of the argument set stored on the stack. Register argsBase = InvalidReg; diff --git a/js/src/jit/x64/Trampoline-x64.cpp b/js/src/jit/x64/Trampoline-x64.cpp index 4e1a42a2faa7..2b1a1dd35496 100644 --- a/js/src/jit/x64/Trampoline-x64.cpp +++ b/js/src/jit/x64/Trampoline-x64.cpp @@ -231,7 +231,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) masm.push(Imm32(0)); // Fake return address. // No GC things to mark, push a bare token. masm.loadJSContext(scratch); - masm.enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); regs.add(valuesSize); @@ -667,8 +667,8 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // the function call. AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask); - // Wrapper register set is a superset of Volatile register set. - JS_STATIC_ASSERT((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0); + static_assert((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0, + "Wrapper register set must be a superset of Volatile register set"); // The context is the first argument. Register cxreg = IntArgReg0; @@ -682,7 +682,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // // We're aligned to an exit frame, so link it up. masm.loadJSContext(cxreg); - masm.enterExitFrame(cxreg, &f); + masm.enterExitFrame(cxreg, regs.getAny(), &f); // Save the current stack pointer as the base for copying arguments. Register argsBase = InvalidReg; diff --git a/js/src/jit/x86/Trampoline-x86.cpp b/js/src/jit/x86/Trampoline-x86.cpp index c225d6f5ebff..b3879caacbee 100644 --- a/js/src/jit/x86/Trampoline-x86.cpp +++ b/js/src/jit/x86/Trampoline-x86.cpp @@ -226,7 +226,7 @@ JitRuntime::generateEnterJIT(JSContext* cx, EnterJitType type) masm.push(Imm32(0)); // No GC things to mark on the stack, push a bare token. masm.loadJSContext(scratch); - masm.enterFakeExitFrame(scratch, ExitFrameLayoutBareToken); + masm.enterFakeExitFrame(scratch, scratch, ExitFrameLayoutBareToken); masm.push(framePtr); masm.push(jitcode); @@ -697,8 +697,8 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // the function call. AllocatableGeneralRegisterSet regs(Register::Codes::WrapperMask); - // Wrapper register set is a superset of Volatile register set. - JS_STATIC_ASSERT((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0); + static_assert((Register::Codes::VolatileMask & ~Register::Codes::WrapperMask) == 0, + "Wrapper register set must be a superset of Volatile register set."); // The context is the first argument. Register cxreg = regs.takeAny(); @@ -711,7 +711,7 @@ JitRuntime::generateVMWrapper(JSContext* cx, const VMFunction& f) // // We're aligned to an exit frame, so link it up. masm.loadJSContext(cxreg); - masm.enterExitFrame(cxreg, &f); + masm.enterExitFrame(cxreg, regs.getAny(), &f); // Save the current stack pointer as the base for copying arguments. Register argsBase = InvalidReg; diff --git a/js/src/jscntxt.cpp b/js/src/jscntxt.cpp index affb7b5e9307..19d956923310 100644 --- a/js/src/jscntxt.cpp +++ b/js/src/jscntxt.cpp @@ -1392,7 +1392,6 @@ JSContext::JSContext(JSRuntime* runtime, const JS::ContextOptions& options) handlingJitInterrupt_(false), osrTempData_(nullptr), ionReturnOverride_(MagicValue(JS_ARG_POISON)), - jitTop(nullptr), jitStackLimit(UINTPTR_MAX), jitStackLimitNoInterrupt(UINTPTR_MAX), getIncumbentGlobalCallback(nullptr), diff --git a/js/src/jscntxt.h b/js/src/jscntxt.h index 29eef845d84e..2b262a6a5bda 100644 --- a/js/src/jscntxt.h +++ b/js/src/jscntxt.h @@ -309,12 +309,6 @@ struct JSContext : public JS::RootingContext, JSRuntime* runtime() { return runtime_; } - static size_t offsetOfActivation() { - return offsetof(JSContext, activation_); - } - static size_t offsetOfProfilingActivation() { - return offsetof(JSContext, profilingActivation_); - } static size_t offsetOfCompartment() { return offsetof(JSContext, compartment_); } @@ -388,12 +382,19 @@ struct JSContext : public JS::RootingContext, js::Activation* activation() const { return activation_; } + static size_t offsetOfActivation() { + return offsetof(JSContext, activation_); + } + js::Activation* profilingActivation() const { return profilingActivation_; } void* addressOfProfilingActivation() { return (void*) &profilingActivation_; } + static size_t offsetOfProfilingActivation() { + return offsetof(JSContext, profilingActivation_); + } private: /* Space for interpreter frames. */ @@ -910,12 +911,6 @@ struct JSContext : public JS::RootingContext, ionReturnOverride_ = v; } - /* - * If Baseline or Ion code is on the stack, and has called into C++, this - * will be aligned to an exit frame. - */ - js::ThreadLocalData jitTop; - mozilla::Atomic jitStackLimit; // Like jitStackLimit, but not reset to trigger interrupts. diff --git a/js/src/vm/GeckoProfiler.cpp b/js/src/vm/GeckoProfiler.cpp index 498678441bf3..38cc3c2dc349 100644 --- a/js/src/vm/GeckoProfiler.cpp +++ b/js/src/vm/GeckoProfiler.cpp @@ -61,6 +61,23 @@ GeckoProfiler::setEventMarker(void (*fn)(const char*)) eventMarker_ = fn; } +/* Get a pointer to the top-most profiling frame, given the exit frame pointer. */ +static void* +GetTopProfilingJitFrame(Activation* act) +{ + if (!act || !act->isJit()) + return nullptr; + + // For null exitFrame, there is no previous exit frame, just return. + uint8_t* exitFP = act->asJit()->exitFP(); + if (!exitFP) + return nullptr; + + jit::JitProfilingFrameIterator iter(exitFP); + MOZ_ASSERT(!iter.done()); + return iter.fp(); +} + bool GeckoProfiler::enable(bool enabled) { @@ -119,14 +136,16 @@ GeckoProfiler::enable(bool enabled) if (target.context()->jitActivation) { // Walk through all activations, and set their lastProfilingFrame appropriately. if (enabled) { - void* lastProfilingFrame = GetTopProfilingJitFrame(target.context()->jitTop); + Activation* act = target.context()->activation(); + void* lastProfilingFrame = GetTopProfilingJitFrame(act); + jit::JitActivation* jitActivation = target.context()->jitActivation; while (jitActivation) { jitActivation->setLastProfilingFrame(lastProfilingFrame); jitActivation->setLastProfilingCallSite(nullptr); - lastProfilingFrame = GetTopProfilingJitFrame(jitActivation->prevJitTop()); jitActivation = jitActivation->prevJitActivation(); + lastProfilingFrame = GetTopProfilingJitFrame(jitActivation); } } else { jit::JitActivation* jitActivation = target.context()->jitActivation; @@ -544,15 +563,3 @@ AutoSuppressProfilerSampling::~AutoSuppressProfilerSampling() if (previouslyEnabled_) cx_->enableProfilerSampling(); } - -void* -js::GetTopProfilingJitFrame(uint8_t* exitFramePtr) -{ - // For null exitFrame, there is no previous exit frame, just return. - if (!exitFramePtr) - return nullptr; - - jit::JitProfilingFrameIterator iter(exitFramePtr); - MOZ_ASSERT(!iter.done()); - return iter.fp(); -} diff --git a/js/src/vm/GeckoProfiler.h b/js/src/vm/GeckoProfiler.h index 5991e5f55b10..80cb4071441e 100644 --- a/js/src/vm/GeckoProfiler.h +++ b/js/src/vm/GeckoProfiler.h @@ -294,10 +294,6 @@ class GeckoProfilerInstrumentation void disable() { profiler_ = nullptr; } }; - -/* Get a pointer to the top-most profiling frame, given the exit frame pointer. */ -void* GetTopProfilingJitFrame(uint8_t* exitFramePtr); - } /* namespace js */ #endif /* vm_GeckoProfiler_h */ diff --git a/js/src/vm/Stack.cpp b/js/src/vm/Stack.cpp index 6edb73e3bbe8..235691a8b5a3 100644 --- a/js/src/vm/Stack.cpp +++ b/js/src/vm/Stack.cpp @@ -1019,7 +1019,7 @@ FrameIter::updatePcQuadratic() jit::BaselineFrame* frame = data_.jitFrames_.baselineFrame(); jit::JitActivation* activation = data_.activations_->asJit(); - // ActivationIterator::jitTop_ may be invalid, so create a new + // activation's exitFP may be invalid, so create a new // activation iterator. data_.activations_ = ActivationIterator(data_.cx_); while (data_.activations_.activation() != activation) @@ -1405,7 +1405,7 @@ ActivationEntryMonitor::ActivationEntryMonitor(JSContext* cx, jit::CalleeToken e jit::JitActivation::JitActivation(JSContext* cx, bool active) : Activation(cx, Jit), - prevJitTop_(cx->jitTop), + exitFP_(nullptr), prevJitActivation_(cx->jitActivation), active_(active), rematerializedFrames_(nullptr), @@ -1425,11 +1425,8 @@ jit::JitActivation::~JitActivation() if (active_) { if (isProfiling()) unregisterProfiling(); - - cx_->jitTop = prevJitTop_; cx_->jitActivation = prevJitActivation_; } else { - MOZ_ASSERT(cx_->jitTop == prevJitTop_); MOZ_ASSERT(cx_->jitActivation == prevJitActivation_); } @@ -1444,13 +1441,6 @@ jit::JitActivation::~JitActivation() js_delete(rematerializedFrames_); } -bool -jit::JitActivation::isProfiling() const -{ - // All JitActivations can be profiled. - return true; -} - void jit::JitActivation::setBailoutData(jit::BailoutFrameInfo* bailoutData) { @@ -1478,18 +1468,14 @@ jit::JitActivation::setActive(JSContext* cx, bool active) if (active) { *((volatile bool*) active_) = true; - MOZ_ASSERT(prevJitTop_ == cx->jitTop); MOZ_ASSERT(prevJitActivation_ == cx->jitActivation); cx->jitActivation = this; registerProfiling(); - } else { unregisterProfiling(); - cx->jitTop = prevJitTop_; cx->jitActivation = prevJitActivation_; - *((volatile bool*) active_) = false; } } @@ -1761,8 +1747,7 @@ Activation::unregisterProfiling() } ActivationIterator::ActivationIterator(JSContext* cx) - : jitTop_(cx->jitTop) - , activation_(cx->activation_) + : activation_(cx->activation_) { MOZ_ASSERT(cx == TlsContext.get()); settle(); @@ -1781,7 +1766,6 @@ ActivationIterator::ActivationIterator(JSContext* cx, const CooperatingContext& // Tolerate a null target context, in case we are iterating over the // activations for a zone group that is not in use by any thread. - jitTop_ = target.context() ? target.context()->jitTop.ref() : nullptr; activation_ = target.context() ? target.context()->activation_.ref() : nullptr; settle(); @@ -1791,8 +1775,6 @@ ActivationIterator& ActivationIterator::operator++() { MOZ_ASSERT(activation_); - if (activation_->isJit() && activation_->asJit()->isActive()) - jitTop_ = activation_->asJit()->prevJitTop(); activation_ = activation_->prev(); settle(); return *this; @@ -1801,8 +1783,7 @@ ActivationIterator::operator++() void ActivationIterator::settle() { - // Stop at the next active activation. No need to update jitTop_, since - // we don't iterate over an active jit activation. + // Stop at the next active activation. while (!done() && activation_->isJit() && !activation_->asJit()->isActive()) activation_ = activation_->prev(); } @@ -1811,8 +1792,7 @@ JS::ProfilingFrameIterator::ProfilingFrameIterator(JSContext* cx, const Register uint32_t sampleBufferGen) : cx_(cx), sampleBufferGen_(sampleBufferGen), - activation_(nullptr), - savedPrevJitTop_(nullptr) + activation_(nullptr) { if (!cx->runtime()->geckoProfiler().enabled()) MOZ_CRASH("ProfilingFrameIterator called when geckoProfiler not enabled for runtime."); @@ -1888,9 +1868,6 @@ JS::ProfilingFrameIterator::iteratorConstruct(const RegisterState& state) if (activation_->isWasm()) { new (storage()) wasm::ProfilingFrameIterator(*activation_->asWasm(), state); - // Set savedPrevJitTop_ to the actual jitTop_ from the runtime. - AutoNoteSingleThreadedRegion anstr; - savedPrevJitTop_ = activation_->cx()->jitTop; return; } @@ -1910,8 +1887,7 @@ JS::ProfilingFrameIterator::iteratorConstruct() } MOZ_ASSERT(activation_->asJit()->isActive()); - MOZ_ASSERT(savedPrevJitTop_ != nullptr); - new (storage()) jit::JitProfilingFrameIterator(savedPrevJitTop_); + new (storage()) jit::JitProfilingFrameIterator(activation_->asJit()->exitFP()); } void @@ -1925,8 +1901,6 @@ JS::ProfilingFrameIterator::iteratorDestroy() return; } - // Save prevjitTop for later use - savedPrevJitTop_ = activation_->asJit()->prevJitTop(); jitIter().~JitProfilingFrameIterator(); } diff --git a/js/src/vm/Stack.h b/js/src/vm/Stack.h index a212ed24d985..c7ee4ec0d1be 100644 --- a/js/src/vm/Stack.h +++ b/js/src/vm/Stack.h @@ -1455,8 +1455,6 @@ class InterpreterActivation : public Activation // Iterates over a thread's activation list. class ActivationIterator { - uint8_t* jitTop_; - protected: Activation* activation_; @@ -1479,10 +1477,6 @@ class ActivationIterator Activation* activation() const { return activation_; } - uint8_t* jitTop() const { - MOZ_ASSERT(activation_->isJit()); - return jitTop_; - } bool done() const { return activation_ == nullptr; } @@ -1495,12 +1489,15 @@ class BailoutFrameInfo; // A JitActivation is used for frames running in Baseline or Ion. class JitActivation : public Activation { - uint8_t* prevJitTop_; + // If Baseline or Ion code is on the stack, and has called into C++, this + // will be aligned to an ExitFrame. + uint8_t* exitFP_; + JitActivation* prevJitActivation_; bool active_; // Rematerialized Ion frames which has info copied out of snapshots. Maps - // frame pointers (i.e. jitTop) to a vector of rematerializations of all + // frame pointers (i.e. exitFP_) to a vector of rematerializations of all // inline frames associated with that frame. // // This table is lazily initialized by calling getRematerializedFrame. @@ -1552,20 +1549,28 @@ class JitActivation : public Activation } void setActive(JSContext* cx, bool active = true); - bool isProfiling() const; - - uint8_t* prevJitTop() const { - return prevJitTop_; + bool isProfiling() const { + // All JitActivations can be profiled. + return true; } + JitActivation* prevJitActivation() const { return prevJitActivation_; } - static size_t offsetOfPrevJitTop() { - return offsetof(JitActivation, prevJitTop_); - } static size_t offsetOfPrevJitActivation() { return offsetof(JitActivation, prevJitActivation_); } + + void setExitFP(uint8_t* fp) { + exitFP_ = fp; + } + uint8_t* exitFP() const { + return exitFP_; + } + static size_t offsetOfExitFP() { + return offsetof(JitActivation, exitFP_); + } + static size_t offsetOfActiveUint8() { MOZ_ASSERT(sizeof(bool) == 1); return offsetof(JitActivation, active_); @@ -1678,6 +1683,11 @@ class JitActivationIterator : public ActivationIterator settle(); return *this; } + + uint8_t* exitFP() const { + MOZ_ASSERT(activation_->isJit()); + return activation_->asJit()->exitFP(); + } }; } // namespace jit diff --git a/js/src/wasm/WasmStubs.cpp b/js/src/wasm/WasmStubs.cpp index daf84ae20551..e5ee544fcfd6 100644 --- a/js/src/wasm/WasmStubs.cpp +++ b/js/src/wasm/WasmStubs.cpp @@ -777,10 +777,6 @@ wasm::GenerateImportJitExit(MacroAssembler& masm, const FuncImport& fi, Label* t masm.loadPtr(Address(cx, 0), cx); masm.loadPtr(Address(cx, JSContext::offsetOfActivation()), act); - // cx->jitTop = act->prevJitTop_; - masm.loadPtr(Address(act, JitActivation::offsetOfPrevJitTop()), tmp); - masm.storePtr(tmp, Address(cx, offsetof(JSContext, jitTop))); - // cx->jitActivation = act->prevJitActivation_; masm.loadPtr(Address(act, JitActivation::offsetOfPrevJitActivation()), tmp); masm.storePtr(tmp, Address(cx, offsetof(JSContext, jitActivation))); From 9b3954758387a365d278354d521b75bca70fe5e2 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Tue, 6 Jun 2017 12:16:25 +0200 Subject: [PATCH 12/71] Bug 1364346 part 3 - Optimize Array.prototype.unshift by taking advantage of shifted elements. r=anba --HG-- extra : rebase_source : 793e3dbf21745b1f13661f4856c582a86987a493 --- .../jit-test/tests/basic/shifted-elements7.js | 47 +++++++++++ js/src/jsarray.cpp | 18 +++-- js/src/vm/NativeObject-inl.h | 9 ++- js/src/vm/NativeObject.cpp | 81 +++++++++++++++++++ js/src/vm/NativeObject.h | 15 ++++ 5 files changed, 161 insertions(+), 9 deletions(-) create mode 100644 js/src/jit-test/tests/basic/shifted-elements7.js diff --git a/js/src/jit-test/tests/basic/shifted-elements7.js b/js/src/jit-test/tests/basic/shifted-elements7.js new file mode 100644 index 000000000000..3adcb61be89d --- /dev/null +++ b/js/src/jit-test/tests/basic/shifted-elements7.js @@ -0,0 +1,47 @@ +function test1() { + var a = []; + for (var i = 0; i < 100; i++) + a.unshift("foo" + i); + for (var i = 99; i >= 0; i--) { + assertEq(a.shift(), "foo" + i); + a.unshift("foo" + (i - 1)); + } + assertEq(a.length, 100); +} +test1(); + +function sum(arr) { + var res = 0; + for (var i = 0; i < arr.length; i++) + res += arr[i]; + return res; +} +function test2() { + var a = []; + for (var i = 0; i < 200; i++) + a.push(i); + for (var i = 0; i < 100; i++) + a.shift(); + for (var i = 0; i < 200; i++) + a.unshift(i); + assertEq(a.length, 300); + assertEq(sum(a), 34850); +} +test2(); + +function test3() { + var a = []; + for (var i = 0; i < 200; i++) + a.push(i); + var toAdd = []; + var step = 1; + for (var i = 0; i < 2500; i += step) { + for (var j = 0; j < step; j++) + toAdd.unshift(i + j); + a.unshift(...toAdd); + step = Math.max((i / 16)|0, 1); + } + assertEq(a.length, 41463); + assertEq(sum(a), 26657756); +} +test3(); diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp index 2a77a16f08a6..85bae218a626 100644 --- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -2504,15 +2504,17 @@ js::array_unshift(JSContext* cx, unsigned argc, Value* vp) NativeObject* nobj = &obj->as(); if (nobj->is() && !nobj->as().lengthIsWritable()) break; - DenseElementResult result = nobj->ensureDenseElements(cx, uint32_t(length), args.length()); - if (result != DenseElementResult::Success) { - if (result == DenseElementResult::Failure) - return false; - MOZ_ASSERT(result == DenseElementResult::Incomplete); - break; + if (!nobj->tryUnshiftDenseElements(args.length())) { + DenseElementResult result = nobj->ensureDenseElements(cx, uint32_t(length), args.length()); + if (result != DenseElementResult::Success) { + if (result == DenseElementResult::Failure) + return false; + MOZ_ASSERT(result == DenseElementResult::Incomplete); + break; + } + if (length > 0) + nobj->moveDenseElements(args.length(), 0, uint32_t(length)); } - if (length > 0) - nobj->moveDenseElements(args.length(), 0, uint32_t(length)); for (uint32_t i = 0; i < args.length(); i++) nobj->setDenseElementWithType(cx, i, args[i]); optimized = true; diff --git a/js/src/vm/NativeObject-inl.h b/js/src/vm/NativeObject-inl.h index 4bbde4795414..c7dcd755e77f 100644 --- a/js/src/vm/NativeObject-inl.h +++ b/js/src/vm/NativeObject-inl.h @@ -181,6 +181,14 @@ NativeObject::tryShiftDenseElements(uint32_t count) return false; } + shiftDenseElementsUnchecked(count); + return true; +} + +inline void +NativeObject::shiftDenseElementsUnchecked(uint32_t count) +{ + ObjectElements* header = getElementsHeader(); MOZ_ASSERT(count > 0); MOZ_ASSERT(count < header->initializedLength); @@ -195,7 +203,6 @@ NativeObject::tryShiftDenseElements(uint32_t count) elements_ += count; ObjectElements* newHeader = getElementsHeader(); memmove(newHeader, header, sizeof(ObjectElements)); - return true; } inline void diff --git a/js/src/vm/NativeObject.cpp b/js/src/vm/NativeObject.cpp index d82f115fae69..fb152110187c 100644 --- a/js/src/vm/NativeObject.cpp +++ b/js/src/vm/NativeObject.cpp @@ -749,6 +749,87 @@ NativeObject::maybeMoveShiftedElements() moveShiftedElements(); } +bool +NativeObject::tryUnshiftDenseElements(uint32_t count) +{ + MOZ_ASSERT(count > 0); + + ObjectElements* header = getElementsHeader(); + uint32_t numShifted = header->numShiftedElements(); + + if (count > numShifted) { + // We need more elements than are easily available. Try to make space + // for more elements than we need (and shift the remaining ones) so + // that unshifting more elements later will be fast. + + // Don't bother reserving elements if the number of elements is small. + // Note that there's no technical reason for using this particular + // limit. + if (header->initializedLength <= 10 || + header->isCopyOnWrite() || + header->isFrozen() || + header->hasNonwritableArrayLength() || + MOZ_UNLIKELY(count > ObjectElements::MaxShiftedElements)) + { + return false; + } + + MOZ_ASSERT(header->capacity >= header->initializedLength); + uint32_t unusedCapacity = header->capacity - header->initializedLength; + + // Determine toShift, the number of extra elements we want to make + // available. + uint32_t toShift = count - numShifted; + MOZ_ASSERT(toShift <= ObjectElements::MaxShiftedElements, + "count <= MaxShiftedElements so toShift <= MaxShiftedElements"); + + // Give up if we need to allocate more elements. + if (toShift > unusedCapacity) + return false; + + // Move more elements than we need, so that other unshift calls will be + // fast. We just have to make sure we don't exceed unusedCapacity. + toShift = Min(toShift + unusedCapacity / 2, unusedCapacity); + + // Ensure |numShifted + toShift| does not exceed MaxShiftedElements. + if (numShifted + toShift > ObjectElements::MaxShiftedElements) + toShift = ObjectElements::MaxShiftedElements - numShifted; + + MOZ_ASSERT(count <= numShifted + toShift); + MOZ_ASSERT(numShifted + toShift <= ObjectElements::MaxShiftedElements); + MOZ_ASSERT(toShift <= unusedCapacity); + + // Now move/unshift the elements. + uint32_t initLen = header->initializedLength; + setDenseInitializedLength(initLen + toShift); + for (uint32_t i = 0; i < toShift; i++) + initDenseElement(initLen + i, UndefinedValue()); + moveDenseElements(toShift, 0, initLen); + + // Shift the elements we just prepended. + shiftDenseElementsUnchecked(toShift); + + // We can now fall-through to the fast path below. + header = getElementsHeader(); + MOZ_ASSERT(header->numShiftedElements() == numShifted + toShift); + + numShifted = header->numShiftedElements(); + MOZ_ASSERT(count <= numShifted); + } + + elements_ -= count; + ObjectElements* newHeader = getElementsHeader(); + memmove(newHeader, header, sizeof(ObjectElements)); + + newHeader->unshiftShiftedElements(count); + + // Initialize to |undefined| to ensure pre-barriers don't see garbage. + for (uint32_t i = 0; i < count; i++) + initDenseElement(i, UndefinedValue()); + + return true; +} + // Given a requested capacity (in elements) and (potentially) the length of an // array for which elements are being allocated, compute an actual allocation // amount (in elements). (Allocation amounts include space for an diff --git a/js/src/vm/NativeObject.h b/js/src/vm/NativeObject.h index fd67997c17ce..0fa08ee6c0ec 100644 --- a/js/src/vm/NativeObject.h +++ b/js/src/vm/NativeObject.h @@ -283,6 +283,16 @@ class ObjectElements capacity -= count; initializedLength -= count; } + void unshiftShiftedElements(uint32_t count) { + MOZ_ASSERT(count > 0); + MOZ_ASSERT(!(flags & (NONWRITABLE_ARRAY_LENGTH | FROZEN | COPY_ON_WRITE))); + uint32_t numShifted = numShiftedElements(); + MOZ_ASSERT(count <= numShifted); + numShifted -= count; + flags = (numShifted << NumShiftedElementsShift) | (flags & FlagsMask); + capacity += count; + initializedLength += count; + } void clearShiftedElements() { flags &= FlagsMask; MOZ_ASSERT(numShiftedElements() == 0); @@ -955,6 +965,8 @@ class NativeObject : public ShapedObject getSlotAddressUnchecked(i)->HeapSlot::~HeapSlot(); } + inline void shiftDenseElementsUnchecked(uint32_t count); + public: static bool rollbackProperties(JSContext* cx, HandleNativeObject obj, uint32_t slotSpan); @@ -1074,6 +1086,9 @@ class NativeObject : public ShapedObject // Try to shift |count| dense elements, see the "Shifted elements" comment. inline bool tryShiftDenseElements(uint32_t count); + // Try to make space for |count| dense elements at the start of the array. + bool tryUnshiftDenseElements(uint32_t count); + // Move the elements header and all shifted elements to the start of the // allocated elements space, so that numShiftedElements is 0 afterwards. void moveShiftedElements(); From 39b3dcd8207e5bf03080b1904c43e47590b2ec21 Mon Sep 17 00:00:00 2001 From: Kai Engert Date: Tue, 6 Jun 2017 12:19:16 +0200 Subject: [PATCH 13/71] Bug 1350291, landing final NSPR 4.15 RTM tag, no code change, just version number, r=me UPGRADE_NSPR_RELEASE, DONTBUILD --HG-- extra : amend_source : 05aeb0bcaaaaab1d793158910126a4d6063b8e22 --- nsprpub/TAG-INFO | 2 +- nsprpub/config/prdepend.h | 1 - nsprpub/pr/include/prinit.h | 4 ++-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/nsprpub/TAG-INFO b/nsprpub/TAG-INFO index 366912a76ffd..85ce0468c7ff 100644 --- a/nsprpub/TAG-INFO +++ b/nsprpub/TAG-INFO @@ -1 +1 @@ -NSPR_4_15_BETA2 +NSPR_4_15_RTM diff --git a/nsprpub/config/prdepend.h b/nsprpub/config/prdepend.h index 6c66b37ca0fc..e49e92677e3e 100644 --- a/nsprpub/config/prdepend.h +++ b/nsprpub/config/prdepend.h @@ -10,4 +10,3 @@ */ #error "Do not include this header file." - diff --git a/nsprpub/pr/include/prinit.h b/nsprpub/pr/include/prinit.h index 3b8c4bd63b56..d3f2b7b2c083 100644 --- a/nsprpub/pr/include/prinit.h +++ b/nsprpub/pr/include/prinit.h @@ -31,11 +31,11 @@ PR_BEGIN_EXTERN_C ** The format of the version string is ** ".[.] []" */ -#define PR_VERSION "4.15 Beta" +#define PR_VERSION "4.15" #define PR_VMAJOR 4 #define PR_VMINOR 15 #define PR_VPATCH 0 -#define PR_BETA PR_TRUE +#define PR_BETA PR_FALSE /* ** PRVersionCheck From 9f3d7e39e8f79d2946d79bbe99753b53fc82ca65 Mon Sep 17 00:00:00 2001 From: UK92 Date: Tue, 6 Jun 2017 12:23:22 +0200 Subject: [PATCH 14/71] Bug 1370250 - Remove unused browser/themes/windows/content-contextmenu.svg. r=dao MozReview-Commit-ID: HZRKSkpZrWi --- .../themes/windows/content-contextmenu.svg | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 browser/themes/windows/content-contextmenu.svg diff --git a/browser/themes/windows/content-contextmenu.svg b/browser/themes/windows/content-contextmenu.svg deleted file mode 100644 index b72b24708dfe..000000000000 --- a/browser/themes/windows/content-contextmenu.svg +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 4a30be9019bc0e087d5b4e0124c29e4b7fd56433 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Tue, 6 Jun 2017 11:25:57 +0100 Subject: [PATCH 15/71] Bug 1370252 - Fix spurious jit-tests failures with incremental zeal mode r=sfink --- js/src/jit-test/tests/basic/external-strings-cgc.js | 1 + js/src/jit-test/tests/gc/bug-1271110.js | 2 ++ js/src/jit-test/tests/gc/bug-1301496.js | 1 + js/src/jit-test/tests/gc/bug-1322648.js | 1 + js/src/jit-test/tests/gc/bug-1323868.js | 1 + js/src/jit-test/tests/gc/bug-1340010.js | 1 + js/src/jit-test/tests/gc/bug1283169.js | 1 + js/src/jit-test/tests/gc/gcparam.js | 2 ++ js/src/jit-test/tests/gc/weak-marking-01.js | 2 ++ js/src/jit-test/tests/gc/weak-marking-02.js | 2 ++ js/src/jit-test/tests/parser/bug-1263355-14.js | 1 + js/src/jsgc.cpp | 11 ++++++++--- 12 files changed, 23 insertions(+), 3 deletions(-) diff --git a/js/src/jit-test/tests/basic/external-strings-cgc.js b/js/src/jit-test/tests/basic/external-strings-cgc.js index 900610bb71a8..5519f688202f 100644 --- a/js/src/jit-test/tests/basic/external-strings-cgc.js +++ b/js/src/jit-test/tests/basic/external-strings-cgc.js @@ -1,3 +1,4 @@ +gczeal(0); startgc(1, "shrinking"); for (var i=0; i<100; i++) { gcslice(100000); diff --git a/js/src/jit-test/tests/gc/bug-1271110.js b/js/src/jit-test/tests/gc/bug-1271110.js index b3b68a277e2b..e9505fcb1a86 100644 --- a/js/src/jit-test/tests/gc/bug-1271110.js +++ b/js/src/jit-test/tests/gc/bug-1271110.js @@ -1,6 +1,8 @@ if (!('oomTest' in this)) quit(); +gczeal(0); + var x1 = []; var x2 = []; var x3 = []; diff --git a/js/src/jit-test/tests/gc/bug-1301496.js b/js/src/jit-test/tests/gc/bug-1301496.js index 7200ab98c952..79fa0448fb40 100644 --- a/js/src/jit-test/tests/gc/bug-1301496.js +++ b/js/src/jit-test/tests/gc/bug-1301496.js @@ -1,5 +1,6 @@ if (helperThreadCount() == 0) quit(); +gczeal(0); startgc(1, 'shrinking'); offThreadCompileScript(""); // Adapted from randomly chosen test: js/src/jit-test/tests/parser/bug-1263355-13.js diff --git a/js/src/jit-test/tests/gc/bug-1322648.js b/js/src/jit-test/tests/gc/bug-1322648.js index cd421865a7d9..51cb607ca5fe 100644 --- a/js/src/jit-test/tests/gc/bug-1322648.js +++ b/js/src/jit-test/tests/gc/bug-1322648.js @@ -1,5 +1,6 @@ if (helperThreadCount() == 0) quit(); +gczeal(0); print = function(s) {} startgc(1); offThreadCompileScript(""); diff --git a/js/src/jit-test/tests/gc/bug-1323868.js b/js/src/jit-test/tests/gc/bug-1323868.js index c7e8c9b08b4e..5ce91c588047 100644 --- a/js/src/jit-test/tests/gc/bug-1323868.js +++ b/js/src/jit-test/tests/gc/bug-1323868.js @@ -1,5 +1,6 @@ if (helperThreadCount() == 0) quit(); +gczeal(0); startgc(8301); offThreadCompileScript("(({a,b,c}))"); gcparam("maxBytes", gcparam("gcBytes")); diff --git a/js/src/jit-test/tests/gc/bug-1340010.js b/js/src/jit-test/tests/gc/bug-1340010.js index 80ae1fdc5dbc..1b38999120a6 100644 --- a/js/src/jit-test/tests/gc/bug-1340010.js +++ b/js/src/jit-test/tests/gc/bug-1340010.js @@ -2,6 +2,7 @@ if (helperThreadCount() === 0) quit(); if (!('deterministicgc' in this)) quit(); +gczeal(0); gc(); function weighted(wa) { diff --git a/js/src/jit-test/tests/gc/bug1283169.js b/js/src/jit-test/tests/gc/bug1283169.js index aa6802bb086a..da6156ee765b 100644 --- a/js/src/jit-test/tests/gc/bug1283169.js +++ b/js/src/jit-test/tests/gc/bug1283169.js @@ -1,4 +1,5 @@ if (helperThreadCount() === 0) quit(0); +gczeal(0); startgc(45); offThreadCompileScript("print(1)"); diff --git a/js/src/jit-test/tests/gc/gcparam.js b/js/src/jit-test/tests/gc/gcparam.js index c9320f72cda1..c218e7459d69 100644 --- a/js/src/jit-test/tests/gc/gcparam.js +++ b/js/src/jit-test/tests/gc/gcparam.js @@ -1,3 +1,5 @@ +gczeal(0); + function testGetParam(key) { gcparam(key); } diff --git a/js/src/jit-test/tests/gc/weak-marking-01.js b/js/src/jit-test/tests/gc/weak-marking-01.js index 7a100f6e1026..e2b4e1a1cfd8 100644 --- a/js/src/jit-test/tests/gc/weak-marking-01.js +++ b/js/src/jit-test/tests/gc/weak-marking-01.js @@ -3,6 +3,8 @@ // everything in functions because it seems like the toplevel script hangs onto // its object literals. +gczeal(0); + // All reachable keys should be found, and the rest should be swept. function basicSweeping() { var wm1 = new WeakMap(); diff --git a/js/src/jit-test/tests/gc/weak-marking-02.js b/js/src/jit-test/tests/gc/weak-marking-02.js index c3d9a0516576..ec4d60a3af9b 100644 --- a/js/src/jit-test/tests/gc/weak-marking-02.js +++ b/js/src/jit-test/tests/gc/weak-marking-02.js @@ -7,6 +7,8 @@ // in the WeakMap, and the actual "delegate" object in the target compartment // is the thing whose liveness is checked. +gczeal(0); + var g2 = newGlobal(); g2.eval('function genObj(name) { return {"name": name} }'); diff --git a/js/src/jit-test/tests/parser/bug-1263355-14.js b/js/src/jit-test/tests/parser/bug-1263355-14.js index 38b3777c360b..e667bafc11a1 100644 --- a/js/src/jit-test/tests/parser/bug-1263355-14.js +++ b/js/src/jit-test/tests/parser/bug-1263355-14.js @@ -1,3 +1,4 @@ +gczeal(0); function g() { for (var j = 0; j < 999; ++j) { try { diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index a0de23eefbaa..d869c75e26e1 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -991,9 +991,14 @@ GCRuntime::setZeal(uint8_t zeal, uint32_t frequency) if (verifyPreData) VerifyBarriers(rt, PreBarrierVerifier); - if (zeal == 0 && hasZealMode(ZealMode::GenerationalGC)) { - evictNursery(JS::gcreason::DEBUG_GC); - nursery().leaveZealMode(); + if (zeal == 0) { + if (hasZealMode(ZealMode::GenerationalGC)) { + evictNursery(JS::gcreason::DEBUG_GC); + nursery().leaveZealMode(); + } + + if (isIncrementalGCInProgress()) + finishGC(JS::gcreason::DEBUG_GC); } ZealMode zealMode = ZealMode(zeal); From 422260f4ea8d96767429dba27b2dcc4cae100535 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Tue, 6 Jun 2017 11:25:57 +0100 Subject: [PATCH 16/71] Bug 1341367 - Make the sense of HashTable::Ptr::isValid match its name r=luke --- js/public/HashTable.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/js/public/HashTable.h b/js/public/HashTable.h index c45c2839cdf0..57f53adc98b5 100644 --- a/js/public/HashTable.h +++ b/js/public/HashTable.h @@ -915,11 +915,11 @@ class HashTable : private AllocPolicy {} bool isValid() const { - return !entry_; + return !!entry_; } bool found() const { - if (isValid()) + if (!isValid()) return false; #ifdef JS_DEBUG MOZ_ASSERT(generation == table_->generation()); @@ -1789,12 +1789,12 @@ class HashTable : private AllocPolicy { mozilla::ReentrancyGuard g(*this); MOZ_ASSERT(table); - MOZ_ASSERT_IF(!p.isValid(), p.table_ == this); + MOZ_ASSERT_IF(p.isValid(), p.table_ == this); MOZ_ASSERT(!p.found()); MOZ_ASSERT(!(p.keyHash & sCollisionBit)); // Check for error from ensureHash() here. - if (p.isValid()) + if (!p.isValid()) return false; // Changing an entry from removed to live does not affect whether we @@ -1860,7 +1860,7 @@ class HashTable : private AllocPolicy MOZ_MUST_USE bool relookupOrAdd(AddPtr& p, const Lookup& l, Args&&... args) { // Check for error from ensureHash() here. - if (p.isValid()) + if (!p.isValid()) return false; #ifdef JS_DEBUG From 4474d8cea0aac26beb3a6c256d0c9ed41c0d7f95 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Tue, 6 Jun 2017 11:25:58 +0100 Subject: [PATCH 17/71] Bug 1369712 - Fix removing the gray roots tracer r=mccr8 --- js/src/jsapi.cpp | 2 +- js/src/jsgc.cpp | 4 ++++ xpcom/base/CycleCollectedJSRuntime.cpp | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 2422618d13ad..9bd33baf7f47 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1330,7 +1330,7 @@ JS_AddExtraGCRootsTracer(JSContext* cx, JSTraceDataOp traceOp, void* data) JS_PUBLIC_API(void) JS_RemoveExtraGCRootsTracer(JSContext* cx, JSTraceDataOp traceOp, void* data) { - return cx->runtime()->gc.removeBlackRootsTracer(traceOp, data); + cx->runtime()->gc.removeBlackRootsTracer(traceOp, data); } JS_PUBLIC_API(void) diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index d869c75e26e1..0133c71707a3 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1436,12 +1436,16 @@ void GCRuntime::removeBlackRootsTracer(JSTraceDataOp traceOp, void* data) { // Can be called from finalizers + mozilla::DebugOnly removed = false; for (size_t i = 0; i < blackRootTracers.ref().length(); i++) { Callback* e = &blackRootTracers.ref()[i]; if (e->op == traceOp && e->data == data) { blackRootTracers.ref().erase(e); + removed = true; + break; } } + MOZ_ASSERT(removed); } void diff --git a/xpcom/base/CycleCollectedJSRuntime.cpp b/xpcom/base/CycleCollectedJSRuntime.cpp index db567fa48cdf..cceae0a0d402 100644 --- a/xpcom/base/CycleCollectedJSRuntime.cpp +++ b/xpcom/base/CycleCollectedJSRuntime.cpp @@ -557,7 +557,7 @@ void CycleCollectedJSRuntime::Shutdown(JSContext* cx) { JS_RemoveExtraGCRootsTracer(cx, TraceBlackJS, this); - JS_RemoveExtraGCRootsTracer(cx, TraceGrayJS, this); + JS_SetGrayGCRootsTracer(cx, nullptr, nullptr); } CycleCollectedJSRuntime::~CycleCollectedJSRuntime() From 903f23a4073f9cd4aba101230b712bfe61cd55df Mon Sep 17 00:00:00 2001 From: Eugen Sawin Date: Thu, 1 Jun 2017 00:02:56 +0200 Subject: [PATCH 18/71] Bug 1369689 - [1.0] Make page load time logs depend on web progress events instead of throbber activity. r=snorp --- .../android/base/java/org/mozilla/gecko/Tabs.java | 5 +++++ .../mozilla/gecko/toolbar/ToolbarDisplayLayout.java | 13 ------------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/Tabs.java b/mobile/android/base/java/org/mozilla/gecko/Tabs.java index 98a411d0e4e9..c9fadba095d3 100644 --- a/mobile/android/base/java/org/mozilla/gecko/Tabs.java +++ b/mobile/android/base/java/org/mozilla/gecko/Tabs.java @@ -44,6 +44,7 @@ import android.database.sqlite.SQLiteException; import android.graphics.Color; import android.net.Uri; import android.os.Handler; +import android.os.SystemClock; import android.provider.Browser; import android.support.annotation.UiThread; import android.support.v4.content.ContextCompat; @@ -645,10 +646,14 @@ public class Tabs implements BundleEventListener { return; } if ((state & GeckoAppShell.WPL_STATE_START) != 0) { + Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() + + " - page load start"); final boolean restoring = message.getBoolean("restoring"); tab.handleDocumentStart(restoring, message.getString("uri")); notifyListeners(tab, Tabs.TabEvents.START); } else if ((state & GeckoAppShell.WPL_STATE_STOP) != 0) { + Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() + + " - page load stop"); tab.handleDocumentStop(message.getBoolean("success")); notifyListeners(tab, Tabs.TabEvents.STOP); } diff --git a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java b/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java index 55d543355022..7f3f7e1c560e 100644 --- a/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java +++ b/mobile/android/base/java/org/mozilla/gecko/toolbar/ToolbarDisplayLayout.java @@ -31,7 +31,6 @@ import org.mozilla.gecko.widget.themed.ThemedLinearLayout; import org.mozilla.gecko.widget.themed.ThemedTextView; import android.content.Context; -import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.v4.view.ViewCompat; import android.text.Spannable; @@ -444,18 +443,6 @@ public class ToolbarDisplayLayout extends ThemedLinearLayout { } mUiMode = uiMode; - - // The "page load start" and "page load stop" log messages in this method - // are needed by S1/S2 tests (http://mrcote.info/phonedash/#). - // See discussion in Bug 804457. Bug 805124 tracks paring these down. - if (mUiMode == UIMode.PROGRESS) { - Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() + - " - page load start"); - } else { - Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() + - " - page load stop"); - } - updatePageActions(); } From 8ed95790fb118fbb3775c73516d693d9c7cfc5f6 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:38 +0800 Subject: [PATCH 19/71] Bug 1366502 - Rename mImageClientTypeContainer into mImageClientContainerType. r=sotaro MozReview-Commit-ID: LcSHVkBbM6G --- gfx/layers/wr/WebRenderImageLayer.cpp | 14 +++++++------- gfx/layers/wr/WebRenderImageLayer.h | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gfx/layers/wr/WebRenderImageLayer.cpp b/gfx/layers/wr/WebRenderImageLayer.cpp index a8c158798027..18f1e0fcb394 100644 --- a/gfx/layers/wr/WebRenderImageLayer.cpp +++ b/gfx/layers/wr/WebRenderImageLayer.cpp @@ -24,7 +24,7 @@ using namespace gfx; WebRenderImageLayer::WebRenderImageLayer(WebRenderLayerManager* aLayerManager) : ImageLayer(aLayerManager, static_cast(this)) - , mImageClientTypeContainer(CompositableType::UNKNOWN) + , mImageClientContainerType(CompositableType::UNKNOWN) { MOZ_COUNT_CTOR(WebRenderImageLayer); } @@ -48,20 +48,20 @@ WebRenderImageLayer::~WebRenderImageLayer() CompositableType WebRenderImageLayer::GetImageClientType() { - if (mImageClientTypeContainer != CompositableType::UNKNOWN) { - return mImageClientTypeContainer; + if (mImageClientContainerType != CompositableType::UNKNOWN) { + return mImageClientContainerType; } if (mContainer->IsAsync()) { - mImageClientTypeContainer = CompositableType::IMAGE_BRIDGE; - return mImageClientTypeContainer; + mImageClientContainerType = CompositableType::IMAGE_BRIDGE; + return mImageClientContainerType; } AutoLockImage autoLock(mContainer); - mImageClientTypeContainer = autoLock.HasImage() + mImageClientContainerType = autoLock.HasImage() ? CompositableType::IMAGE : CompositableType::UNKNOWN; - return mImageClientTypeContainer; + return mImageClientContainerType; } already_AddRefed diff --git a/gfx/layers/wr/WebRenderImageLayer.h b/gfx/layers/wr/WebRenderImageLayer.h index 5dfa51238447..343cea9d9f2d 100644 --- a/gfx/layers/wr/WebRenderImageLayer.h +++ b/gfx/layers/wr/WebRenderImageLayer.h @@ -43,7 +43,7 @@ protected: wr::MaybeExternalImageId mExternalImageId; Maybe mKey; RefPtr mImageClient; - CompositableType mImageClientTypeContainer; + CompositableType mImageClientContainerType; Maybe mPipelineId; }; From c23ae2a1b20bfc2b5e559ef0c82e1d3a0168d1b0 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:38 +0800 Subject: [PATCH 20/71] Bug 1366502 - Update the thread checking for WR image functions. r=sotaro With the video pipeline, we could call the WR image functions in compositor thread. MozReview-Commit-ID: LtaihkLnbL3 --- gfx/webrender_bindings/src/bindings.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs index 9cc0934583f9..acb270c8dcd7 100644 --- a/gfx/webrender_bindings/src/bindings.rs +++ b/gfx/webrender_bindings/src/bindings.rs @@ -1366,7 +1366,7 @@ pub extern "C" fn wr_dp_push_image(state: &mut WrState, tile_spacing: WrSize, image_rendering: WrImageRendering, key: WrImageKey) { - assert!(unsafe { !is_in_render_thread() }); + assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); state.frame_builder .dl_builder @@ -1388,7 +1388,7 @@ pub extern "C" fn wr_dp_push_yuv_planar_image(state: &mut WrState, image_key_2: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() }); + assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); state.frame_builder .dl_builder @@ -1408,7 +1408,7 @@ pub extern "C" fn wr_dp_push_yuv_NV12_image(state: &mut WrState, image_key_1: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() }); + assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); state.frame_builder .dl_builder @@ -1427,7 +1427,7 @@ pub extern "C" fn wr_dp_push_yuv_interleaved_image(state: &mut WrState, image_key_0: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() }); + assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); state.frame_builder .dl_builder From dc5be30b454ce0ac67c029d05f55836f98752ea9 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:38 +0800 Subject: [PATCH 21/71] Bug 1366502 - Move the various of image key and WR command settings from WebRenderCompositableHolder into textureHosts. r=sotaro It's awful to put all combination of image key and WR command settings in the same place. Make the settings go back to textureHosts. Each textureHost should implement GetWRImageKeys() and PushExternalImage() function. MozReview-Commit-ID: 5Bmiuv5HgmX --- gfx/layers/wr/WebRenderCompositableHolder.cpp | 96 ++----------------- gfx/layers/wr/WebRenderCompositableHolder.h | 7 -- 2 files changed, 10 insertions(+), 93 deletions(-) diff --git a/gfx/layers/wr/WebRenderCompositableHolder.cpp b/gfx/layers/wr/WebRenderCompositableHolder.cpp index 442513a47207..84df12666d8a 100644 --- a/gfx/layers/wr/WebRenderCompositableHolder.cpp +++ b/gfx/layers/wr/WebRenderCompositableHolder.cpp @@ -12,9 +12,6 @@ #include "mozilla/webrender/WebRenderAPI.h" namespace mozilla { - -using namespace gfx; - namespace layers { WebRenderCompositableHolder::AsyncImagePipelineHolder::AsyncImagePipelineHolder() @@ -157,45 +154,6 @@ WebRenderCompositableHolder::UpdateAsyncImagePipeline(const wr::PipelineId& aPip holder->mMixBlendMode = aMixBlendMode; } -void -WebRenderCompositableHolder::GetImageKeys(nsTArray& aKeys, size_t aChannelNumber) -{ - MOZ_ASSERT(aChannelNumber > 0); - for (size_t i = 0; i < aChannelNumber; ++i) { - wr::ImageKey key = GetImageKey(); - aKeys.AppendElement(key); - } -} - -void -WebRenderCompositableHolder::GetImageKeysForExternalImage(nsTArray& aKeys) -{ - MOZ_ASSERT(aKeys.IsEmpty()); - - // XXX (Jerry): Remove the hardcode image format setting. -#if defined(XP_WIN) - // Use libyuv to convert the buffer to rgba format. So, use 1 image key here. - GetImageKeys(aKeys, 1); -#elif defined(XP_MACOSX) - if (gfxVars::CanUseHardwareVideoDecoding()) { - // Use the hardware MacIOSurface with YCbCr interleaved format. It uses 1 - // image key. - GetImageKeys(aKeys, 1); - } else { - // Use libyuv. - GetImageKeys(aKeys, 1); - } -#elif defined(MOZ_WIDGET_GTK) - // Use libyuv. - GetImageKeys(aKeys, 1); -#elif defined(ANDROID) - // Use libyuv. - GetImageKeys(aKeys, 1); -#endif - - MOZ_ASSERT(!aKeys.IsEmpty()); -} - bool WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, TextureHost* aTexture, nsTArray& aKeys) { @@ -205,23 +163,23 @@ WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, T WebRenderTextureHost* wrTexture = aTexture->AsWebRenderTextureHost(); if (wrTexture) { - GetImageKeysForExternalImage(aKeys); + wrTexture->GetWRImageKeys(aKeys, std::bind(&WebRenderCompositableHolder::GetImageKey, this)); MOZ_ASSERT(!aKeys.IsEmpty()); Range keys(&aKeys[0], aKeys.Length()); wrTexture->AddWRImage(aApi, keys, wrTexture->GetExternalImageKey()); return true; } else { - RefPtr dSurf = aTexture->GetAsSurface(); + RefPtr dSurf = aTexture->GetAsSurface(); if (!dSurf) { NS_ERROR("TextureHost does not return DataSourceSurface"); return false; } - DataSourceSurface::MappedSurface map; + gfx::DataSourceSurface::MappedSurface map; if (!dSurf->Map(gfx::DataSourceSurface::MapType::READ, &map)) { NS_ERROR("DataSourceSurface failed to map"); return false; } - IntSize size = dSurf->GetSize(); + gfx::IntSize size = dSurf->GetSize(); wr::ImageDescriptor descriptor(size, map.mStride, dSurf->GetFormat()); auto slice = Range(map.mData, size.height * map.mStride); @@ -233,41 +191,6 @@ WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, T return false; } -void -WebRenderCompositableHolder::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - nsTArray& aKeys) -{ - // XXX (Jerry): Remove the hardcode image format setting. The format of - // textureClient could change from time to time. So, we just set the most - // usable format here. -#if defined(XP_WIN) - // Use libyuv to convert the buffer to rgba format. - MOZ_ASSERT(aKeys.Length() == 1); - aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); -#elif defined(XP_MACOSX) - if (gfx::gfxVars::CanUseHardwareVideoDecoding()) { - // Use the hardware MacIOSurface with YCbCr interleaved format. - MOZ_ASSERT(aKeys.Length() == 1); - aBuilder.PushYCbCrInterleavedImage(aBounds, aClip, aKeys[0], WrYuvColorSpace::Rec601, aFilter); - } else { - // Use libyuv to convert the buffer to rgba format. - MOZ_ASSERT(aKeys.Length() == 1); - aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); - } -#elif defined(MOZ_WIDGET_GTK) - // Use libyuv to convert the buffer to rgba format. - MOZ_ASSERT(aKeys.Length() == 1); - aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); -#elif defined(ANDROID) - // Use libyuv to convert the buffer to rgba format. - MOZ_ASSERT(aKeys.Length() == 1); - aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); -#endif -} - bool WebRenderCompositableHolder::UpdateImageKeys(wr::WebRenderAPI* aApi, bool& aUseExternalImage, @@ -365,11 +288,12 @@ WebRenderCompositableHolder::ApplyAsyncImages(wr::WebRenderAPI* aApi) if (useExternalImage) { MOZ_ASSERT(holder->mCurrentTexture->AsWebRenderTextureHost()); - PushExternalImage(builder, - wr::ToWrRect(rect), - clip, - holder->mFilter, - keys); + Range range_keys(&keys[0], keys.Length()); + holder->mCurrentTexture->PushExternalImage(builder, + wr::ToWrRect(rect), + clip, + holder->mFilter, + range_keys); HoldExternalImage(pipelineId, epoch, holder->mCurrentTexture->AsWebRenderTextureHost()); } else { MOZ_ASSERT(keys.Length() == 1); diff --git a/gfx/layers/wr/WebRenderCompositableHolder.h b/gfx/layers/wr/WebRenderCompositableHolder.h index 7d437bc3993c..848c7daa59fd 100644 --- a/gfx/layers/wr/WebRenderCompositableHolder.h +++ b/gfx/layers/wr/WebRenderCompositableHolder.h @@ -93,14 +93,7 @@ private: key.mHandle = GetNextResourceId(); return key; } - void GetImageKeys(nsTArray& aKeys, size_t aChannelNumber); - void GetImageKeysForExternalImage(nsTArray& aKeys); bool GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, TextureHost* aTexture, nsTArray& aKeys); - void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - nsTArray& aKeys); struct ForwardingTextureHost { ForwardingTextureHost(const wr::Epoch& aEpoch, TextureHost* aTexture) From 77ae26621d2bd2125aa312b306c15913ab4cdcba Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:39 +0800 Subject: [PATCH 22/71] Bug 1366502 - Add GetWRImageKeys() and PushExternalImage() in textureHost. r=sotaro These 2 functions are used for WR. The GetWRImageKeys() will return the proper image keys according to the textureHost format. The PushExternalImage() will put all necessary WR commands into DisplayListBuilder for the textureHost rendering. MozReview-Commit-ID: FwCDxwsCMMy --- gfx/layers/composite/TextureHost.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index cfd08a15cb28..823478e14829 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -6,6 +6,7 @@ #ifndef MOZILLA_GFX_TEXTUREHOST_H #define MOZILLA_GFX_TEXTUREHOST_H +#include #include // for size_t #include // for uint64_t, uint32_t, uint8_t #include "gfxTypes.h" @@ -38,6 +39,7 @@ class Shmem; } // namespace ipc namespace wr { +class DisplayListBuilder; class WebRenderAPI; } @@ -596,6 +598,18 @@ public: virtual MacIOSurfaceTextureHostOGL* AsMacIOSurfaceTextureHost() { return nullptr; } virtual WebRenderTextureHost* AsWebRenderTextureHost() { return nullptr; } + // Create all necessary image keys for this textureHost rendering. + // @param aImageKeys - [out] The set of ImageKeys used for this textureHost + // composing. + // @param aImageKeyAllocator - [in] The function which is used for creating + // the new ImageKey. + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) + { + MOZ_ASSERT(aImageKeys.IsEmpty()); + MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this TextureHost type."); + } + // Add all necessary textureHost informations to WebrenderAPI. Then, WR could // use these informations to compose this textureHost. virtual void AddWRImage(wr::WebRenderAPI* aAPI, @@ -605,6 +619,16 @@ public: MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this TextureHost type."); } + // Put all necessary WR commands into DisplayListBuilder for this textureHost rendering. + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aKeys) + { + MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this TextureHost type."); + } + protected: void ReadUnlock(); From 620a1df76ef0cfdb1b38ecf8435e717941ac608d Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:39 +0800 Subject: [PATCH 23/71] Bug 1366502 - Update BufferTextureHost and RenderBufferTextureHost for video pipeline. r=sotaro WR supports the planar-ycbcr image format. We turn to use the planar-ycbcr image to get rid of the software-ycbcr-to-rgb color format conversion(using libyuv) in gecko. The BufferTextureHost will use 3 image keys for SurfaceFormat::YUV format. The RenderBufferTextureHost will also use 3 DataSourceSurfaces to represent the 3 channel data in planar-ycbcr format. MozReview-Commit-ID: 3mMreSzKnMv --- gfx/layers/composite/TextureHost.cpp | 84 ++++++++++--- gfx/layers/composite/TextureHost.h | 9 ++ .../RenderBufferTextureHost.cpp | 115 +++++++++++------- .../RenderBufferTextureHost.h | 10 +- 4 files changed, 159 insertions(+), 59 deletions(-) diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index b6ba6bd4898d..50cc479b297e 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -556,31 +556,81 @@ BufferTextureHost::Unlock() mLocked = false; } +void +BufferTextureHost::GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) +{ + MOZ_ASSERT(aImageKeys.IsEmpty()); + + if (GetFormat() != gfx::SurfaceFormat::YUV) { + // 1 image key + aImageKeys.AppendElement(aImageKeyAllocator()); + MOZ_ASSERT(aImageKeys.Length() == 1); + } else { + // 3 image key + aImageKeys.AppendElement(aImageKeyAllocator()); + aImageKeys.AppendElement(aImageKeyAllocator()); + aImageKeys.AppendElement(aImageKeyAllocator()); + MOZ_ASSERT(aImageKeys.Length() == 3); + } +} + void BufferTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) { - MOZ_ASSERT(aImageKeys.length() == 1); - // XXX handling YUV - gfx::SurfaceFormat wrFormat = - (GetFormat() == gfx::SurfaceFormat::YUV) ? gfx::SurfaceFormat::B8G8R8A8 - : GetFormat(); - gfx::SurfaceFormat format = GetFormat(); - uint32_t wrStride = 0; + if (GetFormat() != gfx::SurfaceFormat::YUV) { + MOZ_ASSERT(aImageKeys.length() == 1); - if (format == gfx::SurfaceFormat::YUV) { - // XXX this stride is used until yuv image rendering by webrender is used. - // Software converted RGB buffers strides are aliened to 16 - wrStride = gfx::GetAlignedStride<16>(GetSize().width, BytesPerPixel(gfx::SurfaceFormat::B8G8R8A8)); + wr::ImageDescriptor descriptor(GetSize(), + ImageDataSerializer::ComputeRGBStride(GetFormat(), GetSize().width), + GetFormat()); + aAPI->AddExternalImageBuffer(aImageKeys[0], descriptor, aExtID); } else { - wrStride = ImageDataSerializer::ComputeRGBStride(format, GetSize().width); - } + MOZ_ASSERT(aImageKeys.length() == 3); - wr::ImageDescriptor descriptor(GetSize(), wrStride, wrFormat); - aAPI->AddExternalImageBuffer(aImageKeys[0], - descriptor, - aExtID); + const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); + wr::ImageDescriptor yDescriptor(desc.ySize(), desc.ySize().width, gfx::SurfaceFormat::A8); + wr::ImageDescriptor cbcrDescriptor(desc.cbCrSize(), desc.cbCrSize().width, gfx::SurfaceFormat::A8); + aAPI->AddExternalImage(aImageKeys[0], + yDescriptor, + aExtID, + WrExternalImageBufferType::ExternalBuffer, + 0); + aAPI->AddExternalImage(aImageKeys[1], + cbcrDescriptor, + aExtID, + WrExternalImageBufferType::ExternalBuffer, + 1); + aAPI->AddExternalImage(aImageKeys[2], + cbcrDescriptor, + aExtID, + WrExternalImageBufferType::ExternalBuffer, + 2); + } +} + +void +BufferTextureHost::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) +{ + if (GetFormat() != gfx::SurfaceFormat::YUV) { + MOZ_ASSERT(aImageKeys.length() == 1); + aBuilder.PushImage(aBounds, aClip, aFilter, aImageKeys[0]); + } else { + MOZ_ASSERT(aImageKeys.length() == 3); + aBuilder.PushYCbCrPlanarImage(aBounds, + aClip, + aImageKeys[0], + aImageKeys[1], + aImageKeys[2], + WrYuvColorSpace::Rec601, + aFilter); + } } void diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 823478e14829..9f60e77620cc 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -716,10 +716,19 @@ public: const BufferDescriptor& GetBufferDescriptor() const { return mDescriptor; } + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) override; + virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) override; + protected: bool Upload(nsIntRegion *aRegion = nullptr); bool MaybeUpload(nsIntRegion *aRegion = nullptr); diff --git a/gfx/webrender_bindings/RenderBufferTextureHost.cpp b/gfx/webrender_bindings/RenderBufferTextureHost.cpp index 6310a60d8b07..e118add30404 100644 --- a/gfx/webrender_bindings/RenderBufferTextureHost.cpp +++ b/gfx/webrender_bindings/RenderBufferTextureHost.cpp @@ -43,67 +43,100 @@ RenderBufferTextureHost::~RenderBufferTextureHost() MOZ_COUNT_DTOR_INHERITED(RenderBufferTextureHost, RenderTextureHost); } -already_AddRefed -RenderBufferTextureHost::GetAsSurface() -{ - RefPtr result; - if (mFormat == gfx::SurfaceFormat::YUV) { - result = layers::ImageDataSerializer::DataSourceSurfaceFromYCbCrDescriptor( - GetBuffer(), mDescriptor.get_YCbCrDescriptor()); - if (NS_WARN_IF(!result)) { - return nullptr; - } - } else { - result = - gfx::Factory::CreateWrappingDataSourceSurface(GetBuffer(), - layers::ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()), - mSize, mFormat); - } - return result.forget(); -} - bool RenderBufferTextureHost::Lock() { - MOZ_ASSERT(!mLocked); + if (!mLocked) { + if (mFormat != gfx::SurfaceFormat::YUV) { + mSurface = gfx::Factory::CreateWrappingDataSourceSurface(GetBuffer(), + layers::ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()), + mSize, + mFormat); + if (NS_WARN_IF(!mSurface)) { + return false; + } + if (NS_WARN_IF(!mSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mMap))) { + mSurface = nullptr; + return false; + } + } else { + const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); - // XXX temporal workaround for YUV handling - if (!mSurface) { - mSurface = GetAsSurface(); - if (!mSurface) { - return false; + mYSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetYChannel(GetBuffer(), desc), + desc.ySize().width, + desc.ySize(), + gfx::SurfaceFormat::A8); + mCbSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetCbChannel(GetBuffer(), desc), + desc.cbCrSize().width, + desc.cbCrSize(), + gfx::SurfaceFormat::A8); + mCrSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetCrChannel(GetBuffer(), desc), + desc.cbCrSize().width, + desc.cbCrSize(), + gfx::SurfaceFormat::A8); + if (NS_WARN_IF(!mYSurface || !mCbSurface || !mCrSurface)) { + mYSurface = mCbSurface = mCrSurface = nullptr; + return false; + } + if (NS_WARN_IF(!mYSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mYMap) || + !mCbSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mCbMap) || + !mCrSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mCrMap))) { + mYSurface = mCbSurface = mCrSurface = nullptr; + return false; + } } + mLocked = true; } - if (NS_WARN_IF(!mSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mMap))) { - mSurface = nullptr; - return false; - } - - mLocked = true; return true; } void RenderBufferTextureHost::Unlock() { - MOZ_ASSERT(mLocked); - mLocked = false; - if (mSurface) { - mSurface->Unmap(); + if (mLocked) { + if (mSurface) { + mSurface->Unmap(); + mSurface = nullptr; + } else if (mYSurface) { + mYSurface->Unmap(); + mCbSurface->Unmap(); + mCrSurface->Unmap(); + mYSurface = mCbSurface = mCrSurface = nullptr; + } + mLocked = false; } - mSurface = nullptr; } RenderBufferTextureHost::RenderBufferData RenderBufferTextureHost::GetBufferDataForRender(uint8_t aChannelIndex) { - // TODO: handle multiple channel bufferTextureHost(e.g. yuv textureHost) - MOZ_ASSERT(aChannelIndex < 1); - + MOZ_ASSERT(mFormat != gfx::SurfaceFormat::YUV || aChannelIndex < 3); + MOZ_ASSERT(mFormat == gfx::SurfaceFormat::YUV || aChannelIndex < 1); MOZ_ASSERT(mLocked); - MOZ_ASSERT(mSurface); - return RenderBufferData(mMap.mData, mMap.mStride * mSurface->GetSize().height); + + if (mFormat != gfx::SurfaceFormat::YUV) { + MOZ_ASSERT(mSurface); + + return RenderBufferData(mMap.mData, mMap.mStride * mSurface->GetSize().height); + } else { + MOZ_ASSERT(mYSurface && mCbSurface && mCrSurface); + + switch (aChannelIndex) { + case 0: + return RenderBufferData(mYMap.mData, mYMap.mStride * mYSurface->GetSize().height); + break; + case 1: + return RenderBufferData(mCbMap.mData, mCbMap.mStride * mCbSurface->GetSize().height); + break; + case 2: + return RenderBufferData(mCrMap.mData, mCrMap.mStride * mCrSurface->GetSize().height); + break; + default: + MOZ_ASSERT_UNREACHABLE("unexpected to be called"); + return RenderBufferData(nullptr, 0); + } + } } } // namespace wr diff --git a/gfx/webrender_bindings/RenderBufferTextureHost.h b/gfx/webrender_bindings/RenderBufferTextureHost.h index eb68b7a443d1..a2d91a7549c6 100644 --- a/gfx/webrender_bindings/RenderBufferTextureHost.h +++ b/gfx/webrender_bindings/RenderBufferTextureHost.h @@ -42,7 +42,6 @@ public: private: virtual ~RenderBufferTextureHost(); - already_AddRefed GetAsSurface(); uint8_t* GetBuffer() const { return mBuffer; @@ -52,8 +51,17 @@ private: layers::BufferDescriptor mDescriptor; gfx::IntSize mSize; gfx::SurfaceFormat mFormat; + RefPtr mSurface; gfx::DataSourceSurface::MappedSurface mMap; + + RefPtr mYSurface; + RefPtr mCbSurface; + RefPtr mCrSurface; + gfx::DataSourceSurface::MappedSurface mYMap; + gfx::DataSourceSurface::MappedSurface mCbMap; + gfx::DataSourceSurface::MappedSurface mCrMap; + bool mLocked; }; From 2b0dbd66c3d6d2783dafe23f6b2c6862d17c5d29 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:39 +0800 Subject: [PATCH 24/71] Bug 1366502 - Update MacIOSurfaceTextureHostOGL for video pipeline. r=sotaro MozReview-Commit-ID: 5cu8cYoTMxT --- .../opengl/MacIOSurfaceTextureHostOGL.cpp | 83 ++++++++++++++++++- .../opengl/MacIOSurfaceTextureHostOGL.h | 9 ++ 2 files changed, 91 insertions(+), 1 deletion(-) diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp index eba8f08f0485..7ca9bc89ebe6 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp +++ b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp @@ -114,6 +114,41 @@ MacIOSurfaceTextureHostOGL::gl() const return mProvider ? mProvider->GetGLContext() : nullptr; } +void +MacIOSurfaceTextureHostOGL::GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) +{ + MOZ_ASSERT(aImageKeys.IsEmpty()); + + switch (GetFormat()) { + case gfx::SurfaceFormat::R8G8B8X8: + case gfx::SurfaceFormat::R8G8B8A8: + case gfx::SurfaceFormat::B8G8R8A8: + case gfx::SurfaceFormat::B8G8R8X8: { + // 1 image key + aImageKeys.AppendElement(aImageKeyAllocator()); + MOZ_ASSERT(aImageKeys.Length() == 1); + break; + } + case gfx::SurfaceFormat::YUV422: { + // 1 image key + aImageKeys.AppendElement(aImageKeyAllocator()); + MOZ_ASSERT(aImageKeys.Length() == 1); + break; + } + case gfx::SurfaceFormat::NV12: { + // 2 image key + aImageKeys.AppendElement(aImageKeyAllocator()); + aImageKeys.AppendElement(aImageKeyAllocator()); + MOZ_ASSERT(aImageKeys.Length() == 2); + break; + } + default: { + MOZ_ASSERT_UNREACHABLE("unexpected to be called"); + } + } +} + void MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -123,7 +158,9 @@ MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, switch (GetFormat()) { case gfx::SurfaceFormat::R8G8B8X8: - case gfx::SurfaceFormat::R8G8B8A8: { + case gfx::SurfaceFormat::R8G8B8A8: + case gfx::SurfaceFormat::B8G8R8A8: + case gfx::SurfaceFormat::B8G8R8X8: { MOZ_ASSERT(aImageKeys.length() == 1); MOZ_ASSERT(mSurface->GetPlaneCount() == 0); wr::ImageDescriptor descriptor(GetSize(), GetFormat()); @@ -174,5 +211,49 @@ MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, } } +void +MacIOSurfaceTextureHostOGL::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) +{ + switch (GetFormat()) { + case gfx::SurfaceFormat::R8G8B8X8: + case gfx::SurfaceFormat::R8G8B8A8: + case gfx::SurfaceFormat::B8G8R8A8: + case gfx::SurfaceFormat::B8G8R8X8: { + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); + aBuilder.PushImage(aBounds, aClip, aFilter, aImageKeys[0]); + break; + } + case gfx::SurfaceFormat::YUV422: { + MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(mSurface->GetPlaneCount() == 0); + aBuilder.PushYCbCrInterleavedImage(aBounds, + aClip, + aImageKeys[0], + WrYuvColorSpace::Rec601, + aFilter); + break; + } + case gfx::SurfaceFormat::NV12: { + MOZ_ASSERT(aImageKeys.length() == 2); + MOZ_ASSERT(mSurface->GetPlaneCount() == 2); + aBuilder.PushNV12Image(aBounds, + aClip, + aImageKeys[0], + aImageKeys[1], + WrYuvColorSpace::Rec601, + aFilter); + break; + } + default: { + MOZ_ASSERT_UNREACHABLE("unexpected to be called"); + } + } +} + } // namespace layers } // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h index 38364cf74f3a..6050e1d00964 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h +++ b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h @@ -62,10 +62,19 @@ public: return mSurface; } + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) override; + virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) override; + protected: GLTextureSource* CreateTextureSourceForPlane(size_t aPlane); From 5d9cc402f03486f6fa5c2683e42fd228da5fe3f4 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:39 +0800 Subject: [PATCH 25/71] Bug 1366502 - Update TextureD3D11 for video pipeline. v2. r=sotaro Update for DXGITextureHostD3D11 and DXGIYCbCrTextureHostD3D11. MozReview-Commit-ID: CQqzHK3jqz7 --- gfx/layers/d3d11/TextureD3D11.cpp | 34 +++++++++++++++++++++++++++++++ gfx/layers/d3d11/TextureD3D11.h | 18 ++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index d4cc385a7fbe..3398af76e793 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -863,6 +863,13 @@ DXGITextureHostD3D11::BindTextureSource(CompositableTextureSourceRef& aTexture) return !!aTexture; } +void +DXGITextureHostD3D11::GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) +{ + MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this DXGITextureHostD3D11 type."); +} + void DXGITextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -871,6 +878,16 @@ DXGITextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this DXGITextureHostD3D11 type."); } +void +DXGITextureHostD3D11::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) +{ + MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this DXGITextureHostD3D11 type."); +} + DXGIYCbCrTextureHostD3D11::DXGIYCbCrTextureHostD3D11(TextureFlags aFlags, const SurfaceDescriptorDXGIYCbCr& aDescriptor) : TextureHost(aFlags) @@ -1004,6 +1021,13 @@ DXGIYCbCrTextureHostD3D11::BindTextureSource(CompositableTextureSourceRef& aText return !!aTexture; } +void +DXGIYCbCrTextureHostD3D11::GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) +{ + MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this DXGIYCbCrTextureHostD3D11 type."); +} + void DXGIYCbCrTextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -1012,6 +1036,16 @@ DXGIYCbCrTextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this DXGIYCbCrTextureHostD3D11 type."); } +void +DXGIYCbCrTextureHostD3D11::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) +{ + MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this DXGIYCbCrTextureHostD3D11 type."); +} + bool DataTextureSourceD3D11::Update(DataSourceSurface* aSurface, nsIntRegion* aDestRegion, diff --git a/gfx/layers/d3d11/TextureD3D11.h b/gfx/layers/d3d11/TextureD3D11.h index 1322884e128a..f9e2e661bc36 100644 --- a/gfx/layers/d3d11/TextureD3D11.h +++ b/gfx/layers/d3d11/TextureD3D11.h @@ -322,10 +322,19 @@ public: return nullptr; } + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) override; + virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) override; + protected: bool LockInternal(); void UnlockInternal(); @@ -371,10 +380,19 @@ public: return nullptr; } + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) override; + virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) override; + protected: RefPtr GetDevice(); From ef71dedff259f3eceaec809ed0cec6b731b3636e Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:40 +0800 Subject: [PATCH 26/71] Bug 1366502 - Update WebRenderTextureHost for video pipeline. r=sotaro MozReview-Commit-ID: 8ODLYyXzHjO --- gfx/layers/wr/WebRenderTextureHost.cpp | 23 +++++++++++++++++++++++ gfx/layers/wr/WebRenderTextureHost.h | 9 +++++++++ 2 files changed, 32 insertions(+) diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp index 21401d98ccfb..42bb77412be8 100644 --- a/gfx/layers/wr/WebRenderTextureHost.cpp +++ b/gfx/layers/wr/WebRenderTextureHost.cpp @@ -156,6 +156,14 @@ WebRenderTextureHost::GetRGBStride() return ImageDataSerializer::ComputeRGBStride(format, GetSize().width); } +void +WebRenderTextureHost::GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) +{ + MOZ_ASSERT(aImageKeys.IsEmpty()); + mWrappedTextureHost->GetWRImageKeys(aImageKeys, aImageKeyAllocator); +} + void WebRenderTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -167,5 +175,20 @@ WebRenderTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, mWrappedTextureHost->AddWRImage(aAPI, aImageKeys, aExtID); } +void +WebRenderTextureHost::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) +{ + MOZ_ASSERT(aImageKeys.length() > 0); + mWrappedTextureHost->PushExternalImage(aBuilder, + aBounds, + aClip, + aFilter, + aImageKeys); +} + } // namespace layers } // namespace mozilla diff --git a/gfx/layers/wr/WebRenderTextureHost.h b/gfx/layers/wr/WebRenderTextureHost.h index bd1762ef8dff..1e153e0cf390 100644 --- a/gfx/layers/wr/WebRenderTextureHost.h +++ b/gfx/layers/wr/WebRenderTextureHost.h @@ -65,10 +65,19 @@ public: bool IsWrappingNativeHandle() { return mIsWrappingNativeHandle; } + virtual void GetWRImageKeys(nsTArray& aImageKeys, + const std::function& aImageKeyAllocator) override; + virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; + virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + Range& aImageKeys) override; + protected: void CreateRenderTextureHost(const SurfaceDescriptor& aDesc, TextureHost* aTexture); From 3c7cfd03afd006975cde331de61cef2242355a4e Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:40 +0800 Subject: [PATCH 27/71] Bug 1366502 - Make sure the RenderTextureHost is released in render thread. r=sotaro. The RenderTextureHost might calls some thread-specific functions(e.g. OpenGL calls) in ~RenderTextureHost(). Add a checking here to prevent this problem. MozReview-Commit-ID: 62QlavmXOig --- gfx/webrender_bindings/RenderTextureHost.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gfx/webrender_bindings/RenderTextureHost.cpp b/gfx/webrender_bindings/RenderTextureHost.cpp index 97073080e2f2..17e624d46bd8 100644 --- a/gfx/webrender_bindings/RenderTextureHost.cpp +++ b/gfx/webrender_bindings/RenderTextureHost.cpp @@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "RenderTextureHost.h" +#include "RenderThread.h" namespace mozilla { namespace wr { @@ -15,6 +16,7 @@ RenderTextureHost::RenderTextureHost() RenderTextureHost::~RenderTextureHost() { + MOZ_ASSERT(RenderThread::IsInRenderThread()); MOZ_COUNT_DTOR(RenderTextureHost); } From 719611f82bfc4dc4105c2e611517e779a97d6113 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:40 +0800 Subject: [PATCH 28/71] Bug 1366502 - Update the thread model for RegisterExternalImage(), UnregisterExternalImage() and GetRenderTexture() call. v2. r=sotaro If we call UnregisterExternalImage() at non-render-thread and decrease the RenderTextureHost's ref-count to zero, the RenderTextureHost will be released in non-render-thread. That will cause some problems if we use some thread-specific functions in ~RenderTextureHost(). This patch uses a message loop in UnregisterExternalImage() to resolve this problem. MozReview-Commit-ID: CDazxGkE1cK --- gfx/layers/wr/WebRenderTextureHost.cpp | 2 +- gfx/webrender_bindings/RenderThread.cpp | 33 ++++++++++++++++++++++--- gfx/webrender_bindings/RenderThread.h | 7 +++++- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp index 42bb77412be8..22ffd40ab674 100644 --- a/gfx/layers/wr/WebRenderTextureHost.cpp +++ b/gfx/layers/wr/WebRenderTextureHost.cpp @@ -67,7 +67,7 @@ WebRenderTextureHost::CreateRenderTextureHost(const layers::SurfaceDescriptor& a gfxCriticalError() << "No WR implement for texture type:" << aDesc.type(); } - wr::RenderThread::Get()->RegisterExternalImage(wr::AsUint64(mExternalImageId), texture); + wr::RenderThread::Get()->RegisterExternalImage(wr::AsUint64(mExternalImageId), texture.forget()); } bool diff --git a/gfx/webrender_bindings/RenderThread.cpp b/gfx/webrender_bindings/RenderThread.cpp index 6b1d5031a7c2..a41c6b8c9959 100644 --- a/gfx/webrender_bindings/RenderThread.cpp +++ b/gfx/webrender_bindings/RenderThread.cpp @@ -275,11 +275,13 @@ RenderThread::DecPendingFrameCount(wr::WindowId aWindowId) } void -RenderThread::RegisterExternalImage(uint64_t aExternalImageId, RenderTextureHost* aTexture) +RenderThread::RegisterExternalImage(uint64_t aExternalImageId, already_AddRefed aTexture) { MutexAutoLock lock(mRenderTextureMapLock); - MOZ_ASSERT(!mRenderTextures.Get(aExternalImageId)); - mRenderTextures.Put(aExternalImageId, aTexture); + + MOZ_ASSERT(!mRenderTextures.Get(aExternalImageId).get()); + RefPtr texture(aTexture); + mRenderTextures.Put(aExternalImageId, Move(texture)); } void @@ -287,12 +289,35 @@ RenderThread::UnregisterExternalImage(uint64_t aExternalImageId) { MutexAutoLock lock(mRenderTextureMapLock); MOZ_ASSERT(mRenderTextures.Get(aExternalImageId).get()); - mRenderTextures.Remove(aExternalImageId); + if (!IsInRenderThread()) { + // The RenderTextureHost should be released in render thread. So, post the + // deletion task here. + // The shmem and raw buffer are owned by compositor ipc channel. It's + // possible that RenderTextureHost is still exist after the shmem/raw buffer + // deletion. Then the buffer in RenderTextureHost becomes invalid. It's fine + // for this situation. Gecko will only release the buffer if WR doesn't need + // it. So, no one will access the invalid buffer in RenderTextureHost. + RefPtr texture = mRenderTextures.Get(aExternalImageId); + mRenderTextures.Remove(aExternalImageId); + Loop()->PostTask(NewRunnableMethod>( + this, &RenderThread::DeferredRenderTextureHostDestroy, Move(texture) + )); + } else { + mRenderTextures.Remove(aExternalImageId); + } +} + +void +RenderThread::DeferredRenderTextureHostDestroy(RefPtr) +{ + // Do nothing. Just decrease the ref-count of RenderTextureHost. } RenderTextureHost* RenderThread::GetRenderTexture(WrExternalImageId aExternalImageId) { + MOZ_ASSERT(IsInRenderThread()); + MutexAutoLock lock(mRenderTextureMapLock); MOZ_ASSERT(mRenderTextures.Get(aExternalImageId.mHandle).get()); return mRenderTextures.Get(aExternalImageId.mHandle).get(); diff --git a/gfx/webrender_bindings/RenderThread.h b/gfx/webrender_bindings/RenderThread.h index fb4f031abbe8..718b291f050d 100644 --- a/gfx/webrender_bindings/RenderThread.h +++ b/gfx/webrender_bindings/RenderThread.h @@ -105,10 +105,13 @@ public: void Pause(wr::WindowId aWindowId); bool Resume(wr::WindowId aWindowId); - void RegisterExternalImage(uint64_t aExternalImageId, RenderTextureHost* aTexture); + /// Can be called from any thread. + void RegisterExternalImage(uint64_t aExternalImageId, already_AddRefed aTexture); + /// Can be called from any thread. void UnregisterExternalImage(uint64_t aExternalImageId); + /// Can only be called from the render thread. RenderTextureHost* GetRenderTexture(WrExternalImageId aExternalImageId); /// Can be called from any thread. @@ -121,6 +124,8 @@ public: private: explicit RenderThread(base::Thread* aThread); + void DeferredRenderTextureHostDestroy(RefPtr aTexture); + ~RenderThread(); base::Thread* const mThread; From 6c0b9a57354188f136c6a2e720df43e911b3d4a3 Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:40 +0800 Subject: [PATCH 29/71] Bug 1366502 - update reftest list. r=sotaro We use gpu for yuv color conversion now. There are some precision problems in gpu path. Mark them fails-if and update the fuzzy-test value. MozReview-Commit-ID: 6tunOCj3OHB --- dom/media/test/reftest/reftest.list | 4 ++-- layout/reftests/webm-video/reftest.list | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/dom/media/test/reftest/reftest.list b/dom/media/test/reftest/reftest.list index ac57f5843509..74236c3aaff5 100644 --- a/dom/media/test/reftest/reftest.list +++ b/dom/media/test/reftest/reftest.list @@ -1,2 +1,2 @@ -skip-if(Android) fuzzy-if(OSX,22,49977) skip-if(winWidget) HTTP(..) == short.mp4.firstframe.html short.mp4.firstframe-ref.html -skip-if(Android) fuzzy-if(OSX,23,51392) fuzzy-if(winWidget,59,76797) HTTP(..) == short.mp4.lastframe.html short.mp4.lastframe-ref.html +skip-if(Android) fuzzy-if(OSX,22,49977) skip-if(winWidget) fuzzy-if(webrender,70,600) HTTP(..) == short.mp4.firstframe.html short.mp4.firstframe-ref.html +skip-if(Android) fuzzy-if(OSX,23,51392) fuzzy-if(winWidget,59,76797) fuzzy-if(webrender,60,1800) HTTP(..) == short.mp4.lastframe.html short.mp4.lastframe-ref.html diff --git a/layout/reftests/webm-video/reftest.list b/layout/reftests/webm-video/reftest.list index 438a6c7ceb4c..c374ddfde6eb 100644 --- a/layout/reftests/webm-video/reftest.list +++ b/layout/reftests/webm-video/reftest.list @@ -41,15 +41,15 @@ random-if(winWidget) random-if(cocoaWidget) skip-if(Android) == bug686957.html b # wouldn't be fair of us to make a W3C testsuite implicitly depend on any # particular (non-spec-mandated) video codec. default-preferences test-pref(gfx.ycbcr.accurate-conversion,true) -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-001.html object-fit-contain-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-002.html object-fit-contain-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-001.html object-fit-cover-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-002.html object-fit-cover-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-001.html object-fit-fill-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-002.html object-fit-fill-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-001.html object-fit-none-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-002.html object-fit-none-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-001.html object-fit-scale-down-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-002.html object-fit-scale-down-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-001.html object-fit-contain-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-002.html object-fit-contain-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-001.html object-fit-cover-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-002.html object-fit-cover-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-001.html object-fit-fill-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-002.html object-fit-fill-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-001.html object-fit-none-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-002.html object-fit-none-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-001.html object-fit-scale-down-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-002.html object-fit-scale-down-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures fails-if(layersGPUAccelerated) skip-if(Android) fails fails-if(styloVsGecko) skip-if(webrender) == object-position-webm-001.html object-position-webm-001-ref.html # Bug 1098417 for across-the-board failure, Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures, Bug 1358055 for webrender failures fails-if(layersGPUAccelerated) skip-if(Android) fails fails-if(styloVsGecko) skip-if(webrender) == object-position-webm-002.html object-position-webm-002-ref.html # Bug 1098417 for across-the-board failure, Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures, Bug 1358055 for webrender failures From 148f24bb566001e349eb311120e4439c1aaf569d Mon Sep 17 00:00:00 2001 From: JerryShih Date: Tue, 6 Jun 2017 19:18:41 +0800 Subject: [PATCH 30/71] Bug 1366502 - Make sure all wrapped textureHosts doesn't use TextureFlags::DEALLOCATE_CLIENT flag. v2. r=sotaro MozReview-Commit-ID: KjZIGRzRomT --- gfx/layers/wr/WebRenderTextureHost.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp index 22ffd40ab674..4826bbec9412 100644 --- a/gfx/layers/wr/WebRenderTextureHost.cpp +++ b/gfx/layers/wr/WebRenderTextureHost.cpp @@ -27,6 +27,15 @@ WebRenderTextureHost::WebRenderTextureHost(const SurfaceDescriptor& aDesc, , mExternalImageId(aExternalImageId) , mIsWrappingNativeHandle(false) { + // The wrapped textureHost will be used in WebRender, and the WebRender could + // run at another thread. It's hard to control the life-time when gecko + // receives PTextureParent destroy message. It's possible that textureHost is + // still used by WebRender. So, we only accept the textureHost without + // DEALLOCATE_CLIENT flag here. If the buffer deallocation is controlled by + // parent, we could do something to make sure the wrapped textureHost is not + // used by WebRender and then release it. + MOZ_ASSERT(!(aFlags & TextureFlags::DEALLOCATE_CLIENT)); + MOZ_COUNT_CTOR(WebRenderTextureHost); mWrappedTextureHost = aTexture; From 558a57a17190a21ba002924e56bf120825ec8088 Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Tue, 6 Jun 2017 12:04:29 +0000 Subject: [PATCH 31/71] Bug 1368992 - JS bytecode cache: Do not attempt to encode bytecode if the compilation failed. r=mrbkap --- dom/base/test/file_js_cache_syntax_error.html | 10 ++++++++++ dom/base/test/file_js_cache_syntax_error.js | 1 + dom/base/test/mochitest.ini | 2 ++ dom/base/test/test_script_loader_js_cache.html | 17 +++++++++++++++++ dom/script/ScriptLoader.cpp | 2 +- 5 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 dom/base/test/file_js_cache_syntax_error.html create mode 100644 dom/base/test/file_js_cache_syntax_error.js diff --git a/dom/base/test/file_js_cache_syntax_error.html b/dom/base/test/file_js_cache_syntax_error.html new file mode 100644 index 000000000000..cc4a9b2daac5 --- /dev/null +++ b/dom/base/test/file_js_cache_syntax_error.html @@ -0,0 +1,10 @@ + + + + + Do not save bytecode on compilation errors + + + + + diff --git a/dom/base/test/file_js_cache_syntax_error.js b/dom/base/test/file_js_cache_syntax_error.js new file mode 100644 index 000000000000..fcf587ae703e --- /dev/null +++ b/dom/base/test/file_js_cache_syntax_error.js @@ -0,0 +1 @@ +var // SyntaxError: missing variable name. diff --git a/dom/base/test/mochitest.ini b/dom/base/test/mochitest.ini index 3a8a75cb313b..d50e70f5d3b8 100644 --- a/dom/base/test/mochitest.ini +++ b/dom/base/test/mochitest.ini @@ -760,6 +760,8 @@ support-files = file_js_cache.js file_js_cache_save_after_load.html file_js_cache_save_after_load.js + file_js_cache_syntax_error.html + file_js_cache_syntax_error.js [test_setInterval_uncatchable_exception.html] skip-if = debug == false [test_settimeout_extra_arguments.html] diff --git a/dom/base/test/test_script_loader_js_cache.html b/dom/base/test/test_script_loader_js_cache.html index 618207feca92..95a0b1571c03 100644 --- a/dom/base/test/test_script_loader_js_cache.html +++ b/dom/base/test/test_script_loader_js_cache.html @@ -191,6 +191,23 @@ }, "Save bytecode after the initialization of the page"); + promise_test(async function() { + // (see above) + await SpecialPowers.pushPrefEnv({set: [ + ['dom.script_loader.bytecode_cache.enabled', true], + ['dom.expose_test_interfaces', true], + ['dom.script_loader.bytecode_cache.strategy', -1] + ]}); + + // The test page loads a script which contains a syntax error, we should + // not attempt to encode any bytecode for it. + var stateMachineResult = + WaitForScriptTagEvent("file_js_cache_syntax_error.html"); + assert_equals(await stateMachineResult, "source_exec", + "Check the lack of bytecode encoding"); + + }, "Do not save bytecode on compilation errors"); + done(); diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp index 437071b48b44..c0efe1aa3f4f 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp @@ -2132,7 +2132,7 @@ ScriptLoader::EvaluateScript(ScriptLoadRequest* aRequest) } // Queue the current script load request to later save the bytecode. - if (NS_SUCCEEDED(rv) && encodeBytecode) { + if (script && encodeBytecode) { aRequest->mScript = script; HoldJSObjects(aRequest); TRACE_FOR_TEST(aRequest->mElement, "scriptloader_encode"); From 0dcf9ed317422b5f6d5cfd50d1e362805b642562 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Tue, 6 Jun 2017 14:06:55 +0200 Subject: [PATCH 32/71] Backed out changeset 952cf10f8d8a (bug 1345368) --- security/generate_certdata.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/security/generate_certdata.py b/security/generate_certdata.py index 645857cb2135..a732ccaa825c 100644 --- a/security/generate_certdata.py +++ b/security/generate_certdata.py @@ -4,12 +4,8 @@ # and moz.build `GENERATED_FILES` semantics. import buildconfig -import os import subprocess def main(output, *inputs): - env=dict(os.environ) - env['PERL'] = buildconfig.substs['PERL'] - output.write(subprocess.check_output([buildconfig.substs['PYTHON'], - inputs[0], inputs[2]], env=env)) + output.write(subprocess.check_output([buildconfig.substs['PERL']] + list(inputs))) return None From 1d8c14f2b0fad24064f59babde2c16a083b60d71 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Tue, 6 Jun 2017 14:08:08 +0200 Subject: [PATCH 33/71] Backed out changeset b5195ecbebe6 (bug 1345368) for failing xpcshell's security/manager/ssl/tests/unit/test_broken_fips.js on Windows. r=backout UPGRADE_NSS_RELEASE --- security/nss/TAG-INFO | 2 +- .../automation/taskcluster/docker/setup.sh | 3 + .../taskcluster/graph/src/extend.js | 40 ++---- .../taskcluster/graph/src/try_syntax.js | 17 +-- .../automation/taskcluster/windows/build.sh | 6 +- .../taskcluster/windows/build_gyp.sh | 34 ----- .../taskcluster/windows/releng.manifest | 16 --- .../automation/taskcluster/windows/setup.sh | 18 ++- .../automation/taskcluster/windows/setup32.sh | 10 -- .../automation/taskcluster/windows/setup64.sh | 10 -- security/nss/build.sh | 5 +- security/nss/coreconf/config.gypi | 2 - security/nss/coreconf/coreconf.dep | 1 - security/nss/cpputil/scoped_ptrs.h | 2 - security/nss/fuzz/config/clone_libfuzzer.sh | 2 +- .../nss/gtests/freebl_gtest/ecl_unittest.cc | 124 ------------------ .../nss/gtests/freebl_gtest/freebl_gtest.gyp | 2 - .../nss/gtests/freebl_gtest/mpi_unittest.cc | 5 + .../gtests/freebl_gtest/prng_kat_unittest.cc | 5 +- security/nss/lib/ckfw/builtins/builtins.gyp | 12 +- security/nss/lib/ckfw/builtins/certdata.py | 18 --- security/nss/lib/dev/devslot.c | 14 +- security/nss/lib/dev/devtoken.c | 11 +- security/nss/lib/freebl/ecl/ecp_jm.c | 11 -- security/nss/lib/pk11wrap/dev3hack.c | 4 +- .../nss/lib/softoken/legacydb/legacydb.gyp | 2 +- security/nss/lib/softoken/softoken.gyp | 2 +- 27 files changed, 56 insertions(+), 322 deletions(-) delete mode 100644 security/nss/automation/taskcluster/windows/build_gyp.sh delete mode 100644 security/nss/automation/taskcluster/windows/setup32.sh delete mode 100644 security/nss/automation/taskcluster/windows/setup64.sh delete mode 100644 security/nss/gtests/freebl_gtest/ecl_unittest.cc delete mode 100755 security/nss/lib/ckfw/builtins/certdata.py diff --git a/security/nss/TAG-INFO b/security/nss/TAG-INFO index 048bc04adca4..08c8b315f419 100644 --- a/security/nss/TAG-INFO +++ b/security/nss/TAG-INFO @@ -1 +1 @@ -NSS_3_31_BETA1 +29290a4a9bd0 diff --git a/security/nss/automation/taskcluster/docker/setup.sh b/security/nss/automation/taskcluster/docker/setup.sh index 3ba4e854eff1..d5975ca05acd 100644 --- a/security/nss/automation/taskcluster/docker/setup.sh +++ b/security/nss/automation/taskcluster/docker/setup.sh @@ -47,6 +47,9 @@ echo "deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu xenial main" > apt-get -y update apt-get install -y --no-install-recommends ${apt_packages[@]} +# 32-bit builds +ln -s /usr/include/x86_64-linux-gnu/zconf.h /usr/include + # Download clang. curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz curl -LO http://releases.llvm.org/4.0.0/clang+llvm-4.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz.sig diff --git a/security/nss/automation/taskcluster/graph/src/extend.js b/security/nss/automation/taskcluster/graph/src/extend.js index d9f6938c04ab..2c5aff89759a 100644 --- a/security/nss/automation/taskcluster/graph/src/extend.js +++ b/security/nss/automation/taskcluster/graph/src/extend.js @@ -42,8 +42,7 @@ queue.filter(task => { if (task.tests == "bogo" || task.tests == "interop") { // No windows - if (task.platform == "windows2012-64" || - task.platform == "windows2012-32") { + if (task.platform == "windows2012-64") { return false; } @@ -54,7 +53,8 @@ queue.filter(task => { } // Only old make builds have -Ddisable_libpkix=0 and can run chain tests. - if (task.tests == "chains" && task.collection != "make") { + if (task.tests == "chains" && task.collection != "make" && + task.platform != "windows2012-64") { return false; } @@ -65,6 +65,7 @@ queue.filter(task => { } } + // Don't run additional hardware tests on ARM (we don't have anything there). if (task.group == "Cipher" && task.platform == "aarch64" && task.env && (task.env.NSS_DISABLE_PCLMUL == "1" || task.env.NSS_DISABLE_HW_AES == "1" @@ -153,34 +154,13 @@ export default async function main() { features: ["allowPtrace"], }, "--ubsan --asan"); - await scheduleWindows("Windows 2012 64 (debug, make)", { - platform: "windows2012-64", - collection: "make", - env: {USE_64: "1"} - }, "build.sh"); - - await scheduleWindows("Windows 2012 32 (debug, make)", { - platform: "windows2012-32", - collection: "make" - }, "build.sh"); - await scheduleWindows("Windows 2012 64 (opt)", { - platform: "windows2012-64", - }, "build_gyp.sh --opt"); + env: {BUILD_OPT: "1"} + }); await scheduleWindows("Windows 2012 64 (debug)", { - platform: "windows2012-64", collection: "debug" - }, "build_gyp.sh"); - - await scheduleWindows("Windows 2012 32 (opt)", { - platform: "windows2012-32", - }, "build_gyp.sh --opt -m32"); - - await scheduleWindows("Windows 2012 32 (debug)", { - platform: "windows2012-32", - collection: "debug" - }, "build_gyp.sh -m32"); + }); await scheduleFuzzing(); await scheduleFuzzing32(); @@ -595,9 +575,10 @@ async function scheduleTestBuilds(base, args = "") { /*****************************************************************************/ -async function scheduleWindows(name, base, build_script) { +async function scheduleWindows(name, base) { base = merge(base, { workerType: "nss-win2012r2", + platform: "windows2012-64", env: { PATH: "c:\\mozilla-build\\python;c:\\mozilla-build\\msys\\local\\bin;" + "c:\\mozilla-build\\7zip;c:\\mozilla-build\\info-zip;" + @@ -607,6 +588,7 @@ async function scheduleWindows(name, base, build_script) { "c:\\mozilla-build\\wget", DOMSUF: "localdomain", HOST: "localhost", + USE_64: "1" } }); @@ -614,7 +596,7 @@ async function scheduleWindows(name, base, build_script) { let build_base = merge(base, { command: [ WINDOWS_CHECKOUT_CMD, - `bash -c 'nss/automation/taskcluster/windows/${build_script}'` + "bash -c nss/automation/taskcluster/windows/build.sh" ], artifacts: [{ expires: 24 * 7, diff --git a/security/nss/automation/taskcluster/graph/src/try_syntax.js b/security/nss/automation/taskcluster/graph/src/try_syntax.js index 7748e068a0bf..eddb7c21a809 100644 --- a/security/nss/automation/taskcluster/graph/src/try_syntax.js +++ b/security/nss/automation/taskcluster/graph/src/try_syntax.js @@ -22,10 +22,8 @@ function parseOptions(opts) { } // Parse platforms. - let allPlatforms = ["linux", "linux64", "linux64-asan", - "win", "win64", "win-make", "win64-make", - "linux64-make", "linux-make", "linux-fuzz", - "linux64-fuzz", "aarch64"]; + let allPlatforms = ["linux", "linux64", "linux64-asan", "win64", + "linux64-make", "linux-make", "linux-fuzz", "linux64-fuzz", "aarch64"]; let platforms = intersect(opts.platform.split(/\s*,\s*/), allPlatforms); // If the given value is nonsense or "none" default to all platforms. @@ -87,9 +85,6 @@ function filter(opts) { if (task.group && task.group.toLowerCase() == "ssl" && test == "ssl") { return true; } - if (task.group && task.group.toLowerCase() == "cipher" && test == "cipher") { - return true; - } return task.symbol.toLowerCase().startsWith(test); }); @@ -114,10 +109,7 @@ function filter(opts) { "linux64-fuzz": "linux64", "linux64-make": "linux64", "linux-make": "linux32", - "win64-make": "windows2012-64", - "win-make": "windows2012-32", - "win64": "windows2012-64", - "win": "windows2012-32" + "win64": "windows2012-64" }; // Check the platform name. @@ -126,8 +118,7 @@ function filter(opts) { // Additional checks. if (platform == "linux64-asan") { keep &= coll("asan"); - } else if (platform == "linux64-make" || platform == "linux-make" || - platform == "win64-make" || platform == "win-make") { + } else if (platform == "linux64-make" || platform == "linux-make") { keep &= coll("make"); } else if (platform == "linux64-fuzz" || platform == "linux-fuzz") { keep &= coll("fuzz"); diff --git a/security/nss/automation/taskcluster/windows/build.sh b/security/nss/automation/taskcluster/windows/build.sh index 46136153d0e3..6c8a474708a4 100644 --- a/security/nss/automation/taskcluster/windows/build.sh +++ b/security/nss/automation/taskcluster/windows/build.sh @@ -3,11 +3,7 @@ set -v -e -x # Set up the toolchain. -if [ "$USE_64" = 1 ]; then - source $(dirname $0)/setup64.sh -else - source $(dirname $0)/setup32.sh -fi +source $(dirname $0)/setup.sh # Clone NSPR. hg_clone https://hg.mozilla.org/projects/nspr nspr default diff --git a/security/nss/automation/taskcluster/windows/build_gyp.sh b/security/nss/automation/taskcluster/windows/build_gyp.sh deleted file mode 100644 index cc829ca99a7f..000000000000 --- a/security/nss/automation/taskcluster/windows/build_gyp.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env bash - -set -v -e -x - -# Set up the toolchain. -if [[ "$@" == *"-m32"* ]]; then - source $(dirname $0)/setup32.sh -else - source $(dirname $0)/setup64.sh -fi - -# Install GYP. -cd gyp -python -m virtualenv test-env -test-env/Scripts/python setup.py install -test-env/Scripts/python -m pip install --upgrade pip -test-env/Scripts/pip install --upgrade setuptools -cd .. - -export GYP_MSVS_OVERRIDE_PATH="${VSPATH}" -export GYP_MSVS_VERSION="2015" -export GYP="${PWD}/gyp/test-env/Scripts/gyp" - -# Fool GYP. -touch "${VSPATH}/VC/vcvarsall.bat" - -# Clone NSPR. -hg_clone https://hg.mozilla.org/projects/nspr nspr default - -# Build with gyp. -GYP=${GYP} ./nss/build.sh -g -v "$@" - -# Package. -7z a public/build/dist.7z dist diff --git a/security/nss/automation/taskcluster/windows/releng.manifest b/security/nss/automation/taskcluster/windows/releng.manifest index 68d2c1d9e618..403be2b04627 100644 --- a/security/nss/automation/taskcluster/windows/releng.manifest +++ b/security/nss/automation/taskcluster/windows/releng.manifest @@ -6,21 +6,5 @@ "algorithm": "sha512", "filename": "vs2015u3.zip", "unpack": true - }, - { - "version": "Ninja 1.7.1", - "size": 184821, - "digest": "e4f9a1ae624a2630e75264ba37d396d9c7407d6e6aea3763056210ba6e1387908bd31cf4037a6a3661a418e86c4d2761e0c333e6a3bd0d66549d2b0d72d3f43b", - "algorithm": "sha512", - "filename": "ninja171.zip", - "unpack": true - }, - { - "size": 13063963, - "visibility": "public", - "digest": "47a19f8f863eab3414abab2b9e9bd901ab896c799b3d9254b456b2f59374b085b99de805e21069a0819f01eecb3f43f7e2395a8c644c04bcbfa5711261cca29d", - "algorithm": "sha512", - "filename": "gyp-2017-05-23.zip", - "unpack": true } ] diff --git a/security/nss/automation/taskcluster/windows/setup.sh b/security/nss/automation/taskcluster/windows/setup.sh index 7def50db4f51..32732774a488 100644 --- a/security/nss/automation/taskcluster/windows/setup.sh +++ b/security/nss/automation/taskcluster/windows/setup.sh @@ -2,13 +2,6 @@ set -v -e -x -export VSPATH="$(pwd)/vs2015u3" -export NINJA_PATH="$(pwd)/ninja/bin" - -export WINDOWSSDKDIR="${VSPATH}/SDK" -export VS90COMNTOOLS="${VSPATH}/VC" -export INCLUDE="${VSPATH}/VC/include:${VSPATH}/SDK/Include/10.0.14393.0/ucrt:${VSPATH}/SDK/Include/10.0.14393.0/shared:${VSPATH}/SDK/Include/10.0.14393.0/um" - # Usage: hg_clone repo dir [revision=@] hg_clone() { repo=$1 @@ -23,4 +16,15 @@ hg_clone() { } hg_clone https://hg.mozilla.org/build/tools tools default + tools/scripts/tooltool/tooltool_wrapper.sh $(dirname $0)/releng.manifest https://api.pub.build.mozilla.org/tooltool/ non-existant-file.sh /c/mozilla-build/python/python.exe /c/builds/tooltool.py --authentication-file /c/builds/relengapi.tok -c /c/builds/tooltool_cache +VSPATH="$(pwd)/vs2015u3" + +export WINDOWSSDKDIR="${VSPATH}/SDK" +export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT" +export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64" + +export PATH="${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" + +export INCLUDE="${VSPATH}/VC/include:${VSPATH}/SDK/Include/10.0.14393.0/ucrt:${VSPATH}/SDK/Include/10.0.14393.0/shared:${VSPATH}/SDK/Include/10.0.14393.0/um" +export LIB="${VSPATH}/VC/lib/amd64:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x64:${VSPATH}/SDK/lib/10.0.14393.0/um/x64" diff --git a/security/nss/automation/taskcluster/windows/setup32.sh b/security/nss/automation/taskcluster/windows/setup32.sh deleted file mode 100644 index bcddabfa39be..000000000000 --- a/security/nss/automation/taskcluster/windows/setup32.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -set -v -e -x - -source $(dirname $0)/setup.sh - -export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT" -export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x86" -export PATH="${NINJA_PATH}:${VSPATH}/VC/bin/amd64_x86:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x86:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x86/Microsoft.VC140.CRT:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x86:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" -export LIB="${VSPATH}/VC/lib:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x86:${VSPATH}/SDK/lib/10.0.14393.0/um/x86" diff --git a/security/nss/automation/taskcluster/windows/setup64.sh b/security/nss/automation/taskcluster/windows/setup64.sh deleted file mode 100644 index f308298c18dd..000000000000 --- a/security/nss/automation/taskcluster/windows/setup64.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -set -v -e -x - -source $(dirname $0)/setup.sh - -export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT" -export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64" -export PATH="${NINJA_PATH}:${VSPATH}/VC/bin/amd64:${VSPATH}/VC/bin:${VSPATH}/SDK/bin/x64:${VSPATH}/VC/redist/x64/Microsoft.VC140.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${PATH}" -export LIB="${VSPATH}/VC/lib/amd64:${VSPATH}/SDK/lib/10.0.14393.0/ucrt/x64:${VSPATH}/SDK/lib/10.0.14393.0/um/x64" diff --git a/security/nss/build.sh b/security/nss/build.sh index 0a9ce762ed89..ae191b3c821c 100755 --- a/security/nss/build.sh +++ b/security/nss/build.sh @@ -15,7 +15,6 @@ set -e cwd=$(cd $(dirname $0); pwd -P) source "$cwd"/coreconf/nspr.sh source "$cwd"/coreconf/sanitizers.sh -GYP=${GYP:-gyp} # Usage info show_help() @@ -184,7 +183,7 @@ if [[ "$rebuild_nspr" = 1 && "$no_local_nspr" = 0 ]]; then mv -f "$nspr_config".new "$nspr_config" fi if [ "$rebuild_gyp" = 1 ]; then - if ! hash ${GYP} 2> /dev/null; then + if ! hash gyp 2> /dev/null; then echo "Please install gyp" 1>&2 exit 1 fi @@ -195,7 +194,7 @@ if [ "$rebuild_gyp" = 1 ]; then set_nspr_path "$obj_dir/include/nspr:$obj_dir/lib" fi - run_verbose run_scanbuild ${GYP} -f ninja "${gyp_params[@]}" "$cwd"/nss.gyp + run_verbose run_scanbuild gyp -f ninja "${gyp_params[@]}" "$cwd"/nss.gyp mv -f "$gyp_config".new "$gyp_config" fi diff --git a/security/nss/coreconf/config.gypi b/security/nss/coreconf/config.gypi index 9ea528ae4b72..0fd31ec678f7 100644 --- a/security/nss/coreconf/config.gypi +++ b/security/nss/coreconf/config.gypi @@ -480,7 +480,6 @@ 'PreprocessorDefinitions': [ 'WIN32', ], - 'AdditionalOptions': [ '/EHsc' ], }, }, }], @@ -495,7 +494,6 @@ 'WIN64', '_AMD64_', ], - 'AdditionalOptions': [ '/EHsc' ], }, }, }], diff --git a/security/nss/coreconf/coreconf.dep b/security/nss/coreconf/coreconf.dep index 590d1bfaeee3..5182f75552c8 100644 --- a/security/nss/coreconf/coreconf.dep +++ b/security/nss/coreconf/coreconf.dep @@ -10,4 +10,3 @@ */ #error "Do not include this header file." - diff --git a/security/nss/cpputil/scoped_ptrs.h b/security/nss/cpputil/scoped_ptrs.h index 0436cd20ed7f..c5f81906fb1b 100644 --- a/security/nss/cpputil/scoped_ptrs.h +++ b/security/nss/cpputil/scoped_ptrs.h @@ -34,7 +34,6 @@ struct ScopedDelete { SECKEY_DestroyPrivateKeyList(list); } void operator()(PK11URI* uri) { PK11URI_DestroyURI(uri); } - void operator()(PLArenaPool* arena) { PORT_FreeArena(arena, PR_FALSE); } }; template @@ -63,7 +62,6 @@ SCOPED(SECKEYPublicKey); SCOPED(SECKEYPrivateKey); SCOPED(SECKEYPrivateKeyList); SCOPED(PK11URI); -SCOPED(PLArenaPool); #undef SCOPED diff --git a/security/nss/fuzz/config/clone_libfuzzer.sh b/security/nss/fuzz/config/clone_libfuzzer.sh index f1dc2e14bbf7..2edd8c2121b1 100755 --- a/security/nss/fuzz/config/clone_libfuzzer.sh +++ b/security/nss/fuzz/config/clone_libfuzzer.sh @@ -1,6 +1,6 @@ #!/bin/sh -LIBFUZZER_REVISION=56bd1d43451cca4b6a11d3be316bb77ab159b09d +LIBFUZZER_REVISION=8837e6cbbc842ab7524b06a2f7360c36add316b3 d=$(dirname $0) $d/git-copy.sh https://chromium.googlesource.com/chromium/llvm-project/llvm/lib/Fuzzer $LIBFUZZER_REVISION $d/../libFuzzer diff --git a/security/nss/gtests/freebl_gtest/ecl_unittest.cc b/security/nss/gtests/freebl_gtest/ecl_unittest.cc deleted file mode 100644 index fbad0246f997..000000000000 --- a/security/nss/gtests/freebl_gtest/ecl_unittest.cc +++ /dev/null @@ -1,124 +0,0 @@ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this file, -// You can obtain one at http://mozilla.org/MPL/2.0/. - -#include "gtest/gtest.h" - -#include - -#include "blapi.h" -#include "scoped_ptrs.h" -#include "secerr.h" - -namespace nss_test { - -class ECLTest : public ::testing::Test { - protected: - const ECCurveName GetCurveName(std::string name) { - if (name == "P256") return ECCurve_NIST_P256; - if (name == "P384") return ECCurve_NIST_P384; - if (name == "P521") return ECCurve_NIST_P521; - return ECCurve_pastLastCurve; - } - std::vector hexStringToBytes(std::string s) { - std::vector bytes; - for (size_t i = 0; i < s.length(); i += 2) { - bytes.push_back(std::stoul(s.substr(i, 2), nullptr, 16)); - } - return bytes; - } - std::string bytesToHexString(std::vector bytes) { - std::stringstream s; - for (auto b : bytes) { - s << std::setfill('0') << std::setw(2) << std::uppercase << std::hex - << static_cast(b); - } - return s.str(); - } - void ecName2params(const std::string curve, SECItem *params) { - SECOidData *oidData = nullptr; - - switch (GetCurveName(curve)) { - case ECCurve_NIST_P256: - oidData = SECOID_FindOIDByTag(SEC_OID_ANSIX962_EC_PRIME256V1); - break; - case ECCurve_NIST_P384: - oidData = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP384R1); - break; - case ECCurve_NIST_P521: - oidData = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP521R1); - break; - default: - FAIL(); - } - ASSERT_NE(oidData, nullptr); - - if (SECITEM_AllocItem(nullptr, params, (2 + oidData->oid.len)) == nullptr) { - FAIL() << "Couldn't allocate memory for OID."; - } - params->data[0] = SEC_ASN1_OBJECT_ID; - params->data[1] = oidData->oid.len; - memcpy(params->data + 2, oidData->oid.data, oidData->oid.len); - } - - void TestECDH_Derive(const std::string p, const std::string secret, - const std::string group_name, const std::string result, - const SECStatus expected_status) { - ECParams ecParams = {0}; - ScopedSECItem ecEncodedParams(SECITEM_AllocItem(nullptr, nullptr, 0U)); - ScopedPLArenaPool arena(PORT_NewArena(DER_DEFAULT_CHUNKSIZE)); - - ASSERT_TRUE(arena && ecEncodedParams); - - ecName2params(group_name, ecEncodedParams.get()); - EC_FillParams(arena.get(), ecEncodedParams.get(), &ecParams); - - std::vector p_bytes = hexStringToBytes(p); - ASSERT_GT(p_bytes.size(), 0U); - SECItem public_value = {siBuffer, p_bytes.data(), - static_cast(p_bytes.size())}; - - std::vector secret_bytes = hexStringToBytes(secret); - ASSERT_GT(secret_bytes.size(), 0U); - SECItem secret_value = {siBuffer, secret_bytes.data(), - static_cast(secret_bytes.size())}; - - ScopedSECItem derived_secret(SECITEM_AllocItem(nullptr, nullptr, 0U)); - - SECStatus rv = ECDH_Derive(&public_value, &ecParams, &secret_value, false, - derived_secret.get()); - ASSERT_EQ(expected_status, rv); - if (expected_status != SECSuccess) { - // Abort when we expect an error. - return; - } - - std::string derived_result = bytesToHexString(std::vector( - derived_secret->data, derived_secret->data + derived_secret->len)); - std::cout << "derived secret: " << derived_result << std::endl; - EXPECT_EQ(derived_result, result); - } -}; - -TEST_F(ECLTest, TestECDH_DeriveP256) { - TestECDH_Derive( - "045ce5c643dffa402bc1837bbcbc223e51d06f20200470d341adfa9deed1bba10e850a16" - "368b673732a5c220a778990b22a0e74cdc3b22c7410b9dd552a5635497", - "971", "P256", "0", SECFailure); -} -TEST_F(ECLTest, TestECDH_DeriveP521) { - TestECDH_Derive( - "04" - "00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b" - "5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66" - "011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee" - "72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", - "01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa5186" - "8783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f7", - "P521", - "01BC33425E72A12779EACB2EDCC5B63D1281F7E86DBC7BF99A7ABD0CFE367DE4666D6EDB" - "B8525BFFE5222F0702C3096DEC0884CE572F5A15C423FDF44D01DD99C61D", - SECSuccess); -} - -} // nss_test diff --git a/security/nss/gtests/freebl_gtest/freebl_gtest.gyp b/security/nss/gtests/freebl_gtest/freebl_gtest.gyp index 99f10fbd26ae..9a0449553ca5 100644 --- a/security/nss/gtests/freebl_gtest/freebl_gtest.gyp +++ b/security/nss/gtests/freebl_gtest/freebl_gtest.gyp @@ -13,7 +13,6 @@ 'sources': [ 'mpi_unittest.cc', 'dh_unittest.cc', - 'ecl_unittest.cc', '<(DEPTH)/gtests/common/gtests.cc' ], 'dependencies': [ @@ -66,7 +65,6 @@ 'target_defaults': { 'include_dirs': [ '<(DEPTH)/lib/freebl/mpi', - '<(DEPTH)/lib/freebl/', ], # For test builds we have to set MPI defines. 'conditions': [ diff --git a/security/nss/gtests/freebl_gtest/mpi_unittest.cc b/security/nss/gtests/freebl_gtest/mpi_unittest.cc index 4fed1a40e018..059183fb6df4 100644 --- a/security/nss/gtests/freebl_gtest/mpi_unittest.cc +++ b/security/nss/gtests/freebl_gtest/mpi_unittest.cc @@ -2,10 +2,15 @@ // License, v. 2.0. If a copy of the MPL was not distributed with this file, // You can obtain one at http://mozilla.org/MPL/2.0/. +#include "secdert.h" +#include "secitem.h" +#include "secport.h" + #include "gtest/gtest.h" #include #include +#include #ifdef __MACH__ #include diff --git a/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc b/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc index 7bc9beea35db..6e3c9320fe93 100644 --- a/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc +++ b/security/nss/gtests/freebl_gtest/prng_kat_unittest.cc @@ -34,7 +34,7 @@ bool contains(std::string& s, const char* to_find) { } std::string trim(std::string str) { - std::string whitespace = " \t\r\n"; + std::string whitespace = " \t"; const auto strBegin = str.find_first_not_of(whitespace); if (strBegin == std::string::npos) { return ""; @@ -46,8 +46,7 @@ std::string trim(std::string str) { std::vector hex_string_to_bytes(std::string s) { std::vector bytes; - assert(s.length() % 2 == 0); - for (size_t i = 0; i < s.length(); i += 2) { + for (size_t i = 0; i < s.length() - 1; i += 2) { bytes.push_back(std::stoul(s.substr(i, 2), nullptr, 16)); } return bytes; diff --git a/security/nss/lib/ckfw/builtins/builtins.gyp b/security/nss/lib/ckfw/builtins/builtins.gyp index f8dbc1170453..d85442585746 100644 --- a/security/nss/lib/ckfw/builtins/builtins.gyp +++ b/security/nss/lib/ckfw/builtins/builtins.gyp @@ -19,7 +19,7 @@ 'btoken.c', 'ckbiver.c', 'constants.c', - '<(certdata_c)', + '<(INTERMEDIATE_DIR)/certdata.c' ], 'dependencies': [ '<(DEPTH)/exports.gyp:nss_exports', @@ -30,25 +30,23 @@ { 'msvs_cygwin_shell': 0, 'action': [ - 'python', - 'certdata.py', + 'perl', + 'certdata.perl', 'certdata.txt', '<@(_outputs)', ], 'inputs': [ - 'certdata.py', 'certdata.perl', 'certdata.txt' ], 'outputs': [ - '<(certdata_c)' + '<(INTERMEDIATE_DIR)/certdata.c' ], 'action_name': 'generate_certdata_c' } ], 'variables': { - 'mapfile': 'nssckbi.def', - 'certdata_c': '<(INTERMEDIATE_DIR)/certdata.c', + 'mapfile': 'nssckbi.def' } } ], diff --git a/security/nss/lib/ckfw/builtins/certdata.py b/security/nss/lib/ckfw/builtins/certdata.py deleted file mode 100755 index 077824793bdd..000000000000 --- a/security/nss/lib/ckfw/builtins/certdata.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -import subprocess -import os -import sys - -def main(): - args = [os.path.realpath(x) for x in sys.argv[1:]] - script = os.path.dirname(os.path.abspath(__file__))+'/certdata.perl' - subprocess.check_call([os.environ.get('PERL', 'perl'), script] + args, - env=os.environ) - -if __name__ == '__main__': - main() diff --git a/security/nss/lib/dev/devslot.c b/security/nss/lib/dev/devslot.c index 7e8bfcd64441..c3c05be9a953 100644 --- a/security/nss/lib/dev/devslot.c +++ b/security/nss/lib/dev/devslot.c @@ -31,7 +31,6 @@ nssSlot_Destroy( { if (slot) { if (PR_ATOMIC_DECREMENT(&slot->base.refCount) == 0) { - PK11_FreeSlot(slot->pk11slot); PZ_DestroyLock(slot->base.lock); return nssArena_Destroy(slot->base.arena); } @@ -225,17 +224,10 @@ NSS_IMPLEMENT NSSToken * nssSlot_GetToken( NSSSlot *slot) { - NSSToken *rvToken = NULL; - nssSlot_EnterMonitor(slot); - - /* Even if a token should be present, check `slot->token` too as it - * might be gone already. This would happen mostly on shutdown. */ - if (nssSlot_IsTokenPresent(slot) && slot->token) { - rvToken = nssToken_AddRef(slot->token); + if (nssSlot_IsTokenPresent(slot)) { + return nssToken_AddRef(slot->token); } - - nssSlot_ExitMonitor(slot); - return rvToken; + return (NSSToken *)NULL; } NSS_IMPLEMENT PRStatus diff --git a/security/nss/lib/dev/devtoken.c b/security/nss/lib/dev/devtoken.c index 0d4c3b5a7283..40f2acaaecf9 100644 --- a/security/nss/lib/dev/devtoken.c +++ b/security/nss/lib/dev/devtoken.c @@ -29,16 +29,11 @@ nssToken_Destroy( { if (tok) { if (PR_ATOMIC_DECREMENT(&tok->base.refCount) == 0) { - PK11_FreeSlot(tok->pk11slot); PZ_DestroyLock(tok->base.lock); nssTokenObjectCache_Destroy(tok->cache); - - /* We're going away, let the nssSlot know in case it's held - * alive by someone else. Usually we should hold the last ref. */ - nssSlot_EnterMonitor(tok->slot); - tok->slot->token = NULL; - nssSlot_ExitMonitor(tok->slot); - + /* The token holds the first/last reference to the slot. + * When the token is actually destroyed, that ref must go too. + */ (void)nssSlot_Destroy(tok->slot); return nssArena_Destroy(tok->base.arena); } diff --git a/security/nss/lib/freebl/ecl/ecp_jm.c b/security/nss/lib/freebl/ecl/ecp_jm.c index bd13fa050830..a1106cea83a3 100644 --- a/security/nss/lib/freebl/ecl/ecp_jm.c +++ b/security/nss/lib/freebl/ecl/ecp_jm.c @@ -127,17 +127,6 @@ ec_GFp_pt_add_jm_aff(const mp_int *px, const mp_int *py, const mp_int *pz, MP_CHECKOK(group->meth->field_mul(A, qx, A, group->meth)); MP_CHECKOK(group->meth->field_mul(B, qy, B, group->meth)); - /* Check P == Q */ - if (mp_cmp(A, px) == 0) { - if (mp_cmp(B, py) == 0) { - /* If Px == Qx && Py == Qy, double P. */ - return ec_GFp_pt_dbl_jm(px, py, pz, paz4, rx, ry, rz, raz4, - scratch, group); - } - /* If Px == Qx && Py != Qy, return point at infinity. */ - return ec_GFp_pt_set_inf_jac(rx, ry, rz); - } - /* C = A - px, D = B - py */ MP_CHECKOK(group->meth->field_sub(A, px, C, group->meth)); MP_CHECKOK(group->meth->field_sub(B, py, D, group->meth)); diff --git a/security/nss/lib/pk11wrap/dev3hack.c b/security/nss/lib/pk11wrap/dev3hack.c index 39afd67430d1..27325a55a9f2 100644 --- a/security/nss/lib/pk11wrap/dev3hack.c +++ b/security/nss/lib/pk11wrap/dev3hack.c @@ -114,7 +114,7 @@ nssSlot_CreateFromPK11SlotInfo(NSSTrustDomain *td, PK11SlotInfo *nss3slot) rvSlot->base.refCount = 1; rvSlot->base.lock = PZ_NewLock(nssILockOther); rvSlot->base.arena = arena; - rvSlot->pk11slot = PK11_ReferenceSlot(nss3slot); + rvSlot->pk11slot = nss3slot; rvSlot->epv = nss3slot->functionList; rvSlot->slotID = nss3slot->slotID; /* Grab the slot name from the PKCS#11 fixed-length buffer */ @@ -150,7 +150,7 @@ nssToken_CreateFromPK11SlotInfo(NSSTrustDomain *td, PK11SlotInfo *nss3slot) return NULL; } rvToken->base.arena = arena; - rvToken->pk11slot = PK11_ReferenceSlot(nss3slot); + rvToken->pk11slot = nss3slot; rvToken->epv = nss3slot->functionList; rvToken->defaultSession = nssSession_ImportNSS3Session(td->arena, nss3slot->session, diff --git a/security/nss/lib/softoken/legacydb/legacydb.gyp b/security/nss/lib/softoken/legacydb/legacydb.gyp index 34c0235bdd08..6431fb5c1e45 100644 --- a/security/nss/lib/softoken/legacydb/legacydb.gyp +++ b/security/nss/lib/softoken/legacydb/legacydb.gyp @@ -57,7 +57,7 @@ 'defines': [ 'SHLIB_SUFFIX=\"<(dll_suffix)\"', 'SHLIB_PREFIX=\"<(dll_prefix)\"', - 'LG_LIB_NAME=\"<(dll_prefix)nssdbm3.<(dll_suffix)\"' + 'LG_LIB_NAME=\"libnssdbm3.so\"' ] }, 'variables': { diff --git a/security/nss/lib/softoken/softoken.gyp b/security/nss/lib/softoken/softoken.gyp index ba917cfc8569..f32bacf4b08b 100644 --- a/security/nss/lib/softoken/softoken.gyp +++ b/security/nss/lib/softoken/softoken.gyp @@ -91,7 +91,7 @@ 'defines': [ 'SHLIB_SUFFIX=\"<(dll_suffix)\"', 'SHLIB_PREFIX=\"<(dll_prefix)\"', - 'SOFTOKEN_LIB_NAME=\"<(dll_prefix)softokn3.<(dll_suffix)\"', + 'SOFTOKEN_LIB_NAME=\"libsoftokn3.so\"', 'SHLIB_VERSION=\"3\"' ] }, From 975bc903fa75614d3b99b470c5e3b47954d27470 Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Tue, 6 Jun 2017 12:24:31 +0000 Subject: [PATCH 34/71] Bug 1369803 - Allow FinishIncrementalEncoding call even if StartIncrementalEncoding call failed. r=shu --- js/src/jsscript.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/src/jsscript.cpp b/js/src/jsscript.cpp index d5ee44127b4b..2ea5ced06d47 100644 --- a/js/src/jsscript.cpp +++ b/js/src/jsscript.cpp @@ -2065,7 +2065,9 @@ ScriptSource::xdrEncodeFunction(JSContext* cx, HandleFunction fun, HandleScriptS bool ScriptSource::xdrFinalizeEncoder(JS::TranscodeBuffer& buffer) { - MOZ_ASSERT(hasEncoder()); + if (!hasEncoder()) + return false; + auto cleanup = mozilla::MakeScopeExit([&] { xdrEncoder_.reset(nullptr); }); From c42d719d38ac227046148a77b0e2d1cca385c19b Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Tue, 6 Jun 2017 15:05:08 +0200 Subject: [PATCH 35/71] Bug 1368576 - Fix addOsrValueTypeBarrier to use type from the TypeSet if it's more precise. r=nbp --- js/src/jit/IonBuilder.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/src/jit/IonBuilder.cpp b/js/src/jit/IonBuilder.cpp index 011311ef93dc..895c3bbebfdc 100644 --- a/js/src/jit/IonBuilder.cpp +++ b/js/src/jit/IonBuilder.cpp @@ -1216,6 +1216,11 @@ IonBuilder::addOsrValueTypeBarrier(uint32_t slot, MInstruction** def_, osrBlock->insertBefore(osrBlock->lastIns(), barrier); osrBlock->rewriteSlot(slot, barrier); def = barrier; + + // If the TypeSet is more precise than |type|, adjust |type| for the + // code below. + if (type == MIRType::Value) + type = barrier->type(); } else if (type == MIRType::Null || type == MIRType::Undefined || type == MIRType::MagicOptimizedArguments) From 493ab5efca0aad11bb7bb23e94fe75ab5aeed6d1 Mon Sep 17 00:00:00 2001 From: Jan de Mooij Date: Tue, 6 Jun 2017 15:06:55 +0200 Subject: [PATCH 36/71] Bug 1368736 - Mark BaselineFrame as debuggee frame in HandleDebugTrap if the breakpoint is on JSOP_DEBUGAFTERYIELD. r=shu --- js/src/jit-test/tests/debug/bug1368736.js | 18 ++++++++++++++++++ js/src/jit/VMFunctions.cpp | 8 ++++++++ 2 files changed, 26 insertions(+) create mode 100644 js/src/jit-test/tests/debug/bug1368736.js diff --git a/js/src/jit-test/tests/debug/bug1368736.js b/js/src/jit-test/tests/debug/bug1368736.js new file mode 100644 index 000000000000..b2a969715860 --- /dev/null +++ b/js/src/jit-test/tests/debug/bug1368736.js @@ -0,0 +1,18 @@ +g = newGlobal(); +hits = 0; +Debugger(g).onDebuggerStatement = function(frame) { + // Set a breakpoint at the JSOP_DEBUGAFTERYIELD op. + frame.script.setBreakpoint(71, {hit: function() { hits++; }}); +} +g.eval(` +function* range() { + debugger; + for (var i = 0; i < 3; i++) { + yield i; + } +} +var iter = range(); +for (var i = 0; i < 3; i++) + assertEq(iter.next().value, i); +`); +assertEq(hits, 2); diff --git a/js/src/jit/VMFunctions.cpp b/js/src/jit/VMFunctions.cpp index dbc4ca3fa62e..37bf0ee0b9d3 100644 --- a/js/src/jit/VMFunctions.cpp +++ b/js/src/jit/VMFunctions.cpp @@ -1060,6 +1060,14 @@ HandleDebugTrap(JSContext* cx, BaselineFrame* frame, uint8_t* retAddr, bool* mus RootedScript script(cx, frame->script()); jsbytecode* pc = script->baselineScript()->icEntryFromReturnAddress(retAddr).pc(script); + if (*pc == JSOP_DEBUGAFTERYIELD) { + // JSOP_DEBUGAFTERYIELD will set the frame's debuggee flag, but if we + // set a breakpoint there we have to do it now. + MOZ_ASSERT(!frame->isDebuggee()); + if (!DebugAfterYield(cx, frame)) + return false; + } + MOZ_ASSERT(frame->isDebuggee()); MOZ_ASSERT(script->stepModeEnabled() || script->hasBreakpointsAt(pc)); From a2e96d0054da13dd23af267939f523ab07d6a9c5 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Tue, 6 Jun 2017 15:30:02 +0200 Subject: [PATCH 37/71] Backed out changeset 8adc00c59534 (bug 1369712) for crashes in xpcshell tests on Linux and OS X, e.g. in test_captive_portal_not_found.js @ JS::HeapObjectPostBarrier. r=backout --- js/src/jsapi.cpp | 2 +- js/src/jsgc.cpp | 4 ---- xpcom/base/CycleCollectedJSRuntime.cpp | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 9bd33baf7f47..2422618d13ad 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -1330,7 +1330,7 @@ JS_AddExtraGCRootsTracer(JSContext* cx, JSTraceDataOp traceOp, void* data) JS_PUBLIC_API(void) JS_RemoveExtraGCRootsTracer(JSContext* cx, JSTraceDataOp traceOp, void* data) { - cx->runtime()->gc.removeBlackRootsTracer(traceOp, data); + return cx->runtime()->gc.removeBlackRootsTracer(traceOp, data); } JS_PUBLIC_API(void) diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 0133c71707a3..d869c75e26e1 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1436,16 +1436,12 @@ void GCRuntime::removeBlackRootsTracer(JSTraceDataOp traceOp, void* data) { // Can be called from finalizers - mozilla::DebugOnly removed = false; for (size_t i = 0; i < blackRootTracers.ref().length(); i++) { Callback* e = &blackRootTracers.ref()[i]; if (e->op == traceOp && e->data == data) { blackRootTracers.ref().erase(e); - removed = true; - break; } } - MOZ_ASSERT(removed); } void diff --git a/xpcom/base/CycleCollectedJSRuntime.cpp b/xpcom/base/CycleCollectedJSRuntime.cpp index cceae0a0d402..db567fa48cdf 100644 --- a/xpcom/base/CycleCollectedJSRuntime.cpp +++ b/xpcom/base/CycleCollectedJSRuntime.cpp @@ -557,7 +557,7 @@ void CycleCollectedJSRuntime::Shutdown(JSContext* cx) { JS_RemoveExtraGCRootsTracer(cx, TraceBlackJS, this); - JS_SetGrayGCRootsTracer(cx, nullptr, nullptr); + JS_RemoveExtraGCRootsTracer(cx, TraceGrayJS, this); } CycleCollectedJSRuntime::~CycleCollectedJSRuntime() From d6f6f61eedde9738f7dadacdd45fc9596694ff53 Mon Sep 17 00:00:00 2001 From: bechen Date: Mon, 5 Jun 2017 17:24:20 +0800 Subject: [PATCH 38/71] Bug 1298307 - Change the cue's startTime/endTime to avoid the videoframe was not created. r=alwu Because the nsVideoFrame's creation is not synchronous to "append to dom tree", there is a small gap that the TextTrackManager wants to render cue but no frame. Change the testcase to not hit the period. MozReview-Commit-ID: 9xhMjRJnoDR --- dom/media/test/test_webvtt_empty_displaystate.html | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dom/media/test/test_webvtt_empty_displaystate.html b/dom/media/test/test_webvtt_empty_displaystate.html index 42c8008dcc93..3572daafd758 100644 --- a/dom/media/test/test_webvtt_empty_displaystate.html +++ b/dom/media/test/test_webvtt_empty_displaystate.html @@ -48,6 +48,10 @@ function runTest() { checkCueEvents(); } + video.onloadedmetadata = function () { + ok(video.duration > 2, "video.duration should larger than 2"); + } + info("--- create the type of track ---"); isnot(window.TextTrack, undefined, "TextTrack should be defined."); @@ -59,7 +63,7 @@ function runTest() { isnot(window.TextTrackCue, undefined, "TextTrackCue should be defined."); isnot(window.VTTCue, undefined, "VTTCue should be defined."); - var cue = new VTTCue(0, 1, "Test cue"); + var cue = new VTTCue(1, 2, "Test cue"); ok(cue instanceof TextTrackCue, "Cue should be an instanceof TextTrackCue."); ok(cue instanceof VTTCue, "Cue should be an instanceof VTTCue."); @@ -76,7 +80,7 @@ function runTest() { if (cueChrome.getActive) { checkCueDisplayState(cue, true /* has display-state */); } else { - ok(false, "The cue start time is 0, should be always active!?"); + info("This is a missing cue, video.currentTime is "+ video.currentTime); } cue.onexit = function () { From 10b72ec89d9bd3224ab5ed9d4fcbd916d05955f0 Mon Sep 17 00:00:00 2001 From: Jim Mathies Date: Tue, 6 Jun 2017 06:09:01 -0500 Subject: [PATCH 39/71] Bug 1309271 - Fire accessibility focus events from focused content elements when focus changes from chrome to content. r=surkov MozReview-Commit-ID: 5Iu2TQ58kGa --- accessible/base/FocusManager.cpp | 25 ++++++++++++++++++++- accessible/ipc/other/DocAccessibleChild.cpp | 8 +++++++ accessible/ipc/other/DocAccessibleChild.h | 2 ++ accessible/ipc/other/PDocAccessible.ipdl | 6 +++++ accessible/ipc/win/DocAccessibleChild.cpp | 8 +++++++ accessible/ipc/win/DocAccessibleChild.h | 4 +++- accessible/ipc/win/PDocAccessible.ipdl | 5 +++++ 7 files changed, 56 insertions(+), 2 deletions(-) diff --git a/accessible/base/FocusManager.cpp b/accessible/base/FocusManager.cpp index e3575415dd61..5350a9a59934 100644 --- a/accessible/base/FocusManager.cpp +++ b/accessible/base/FocusManager.cpp @@ -15,6 +15,7 @@ #include "nsFocusManager.h" #include "mozilla/EventStateManager.h" #include "mozilla/dom/Element.h" +#include "mozilla/dom/TabParent.h" namespace mozilla { namespace a11y { @@ -190,12 +191,34 @@ FocusManager::ActiveItemChanged(Accessible* aItem, bool aCheckIfActive) } mActiveItem = aItem; + // If mActiveItem is null, we might need to shift a11y focus to a remote + // element. + if (!mActiveItem && XRE_IsParentProcess()) { + nsFocusManager* domfm = nsFocusManager::GetFocusManager(); + if (domfm) { + nsIContent* focusedElm = domfm->GetFocusedContent(); + if (focusedElm) { + bool remote = EventStateManager::IsRemoteTarget(focusedElm); + if (remote) { + dom::TabParent* tab = dom::TabParent::GetFrom(focusedElm); + if (tab) { + a11y::DocAccessibleParent* dap = tab->GetTopLevelDocAccessible(); + if (dap) { + Unused << dap->SendRestoreFocus(); + } + } + } + } + } + } + // If active item is changed then fire accessible focus event on it, otherwise // if there's no an active item then fire focus event to accessible having // DOM focus. Accessible* target = FocusedAccessible(); - if (target) + if (target) { DispatchFocusEvent(target->Document(), target); + } } void diff --git a/accessible/ipc/other/DocAccessibleChild.cpp b/accessible/ipc/other/DocAccessibleChild.cpp index c9302669b65e..e37f99a053b6 100644 --- a/accessible/ipc/other/DocAccessibleChild.cpp +++ b/accessible/ipc/other/DocAccessibleChild.cpp @@ -6,6 +6,7 @@ #include "DocAccessibleChild.h" +#include "nsAccessibilityService.h" #include "Accessible-inl.h" #include "ProxyAccessible.h" #include "Relation.h" @@ -2003,5 +2004,12 @@ DocAccessibleChild::RecvDOMNodeID(const uint64_t& aID, nsString* aDOMNodeID) return IPC_OK(); } +mozilla::ipc::IPCResult +DocAccessibleChild::RecvRestoreFocus() +{ + FocusMgr()->ForceFocusEvent(); + return IPC_OK(); +} + } } diff --git a/accessible/ipc/other/DocAccessibleChild.h b/accessible/ipc/other/DocAccessibleChild.h index a20f25e9a144..9734a977192e 100644 --- a/accessible/ipc/other/DocAccessibleChild.h +++ b/accessible/ipc/other/DocAccessibleChild.h @@ -38,6 +38,8 @@ public: MOZ_COUNT_DTOR_INHERITED(DocAccessibleChild, DocAccessibleChildBase); } + virtual mozilla::ipc::IPCResult RecvRestoreFocus() override; + /* * Return the state for the accessible with given ID. */ diff --git a/accessible/ipc/other/PDocAccessible.ipdl b/accessible/ipc/other/PDocAccessible.ipdl index 1885ed786319..4c084bbee125 100644 --- a/accessible/ipc/other/PDocAccessible.ipdl +++ b/accessible/ipc/other/PDocAccessible.ipdl @@ -73,6 +73,12 @@ parent: child: async __delete__(); + /* + * Called as a result of focus shifting from chrome to content + * elements through keyboard navigation. + */ + async RestoreFocus(); + // Accessible nested(inside_sync) sync State(uint64_t aID) returns(uint64_t states); nested(inside_sync) sync NativeState(uint64_t aID) returns(uint64_t states); diff --git a/accessible/ipc/win/DocAccessibleChild.cpp b/accessible/ipc/win/DocAccessibleChild.cpp index 4987131da0a3..1333107b34c2 100644 --- a/accessible/ipc/win/DocAccessibleChild.cpp +++ b/accessible/ipc/win/DocAccessibleChild.cpp @@ -6,6 +6,7 @@ #include "DocAccessibleChild.h" +#include "nsAccessibilityService.h" #include "Accessible-inl.h" #include "mozilla/a11y/PlatformChild.h" #include "mozilla/ClearOnShutdown.h" @@ -307,6 +308,13 @@ DocAccessibleChild::SendBindChildDoc(DocAccessibleChild* aChildDoc, return true; } +ipc::IPCResult +DocAccessibleChild::RecvRestoreFocus() +{ + FocusMgr()->ForceFocusEvent(); + return IPC_OK(); +} + } // namespace a11y } // namespace mozilla diff --git a/accessible/ipc/win/DocAccessibleChild.h b/accessible/ipc/win/DocAccessibleChild.h index 383c6823a123..a32887cba2de 100644 --- a/accessible/ipc/win/DocAccessibleChild.h +++ b/accessible/ipc/win/DocAccessibleChild.h @@ -28,10 +28,12 @@ public: virtual void Shutdown() override; virtual ipc::IPCResult - RecvParentCOMProxy(const IAccessibleHolder& aParentCOMProxy) override; + RecvParentCOMProxy(const IAccessibleHolder& aParentCOMProxy) override; virtual ipc::IPCResult RecvEmulatedWindow(const WindowsHandle& aEmulatedWindowHandle, const IAccessibleHolder& aEmulatedWindowCOMProxy) override; + virtual ipc::IPCResult + RecvRestoreFocus() override; HWND GetNativeWindowHandle() const; IAccessible* GetEmulatedWindowIAccessible() const { return mEmulatedWindowProxy.get(); } diff --git a/accessible/ipc/win/PDocAccessible.ipdl b/accessible/ipc/win/PDocAccessible.ipdl index 50594eabe003..4fb0c41ef68b 100644 --- a/accessible/ipc/win/PDocAccessible.ipdl +++ b/accessible/ipc/win/PDocAccessible.ipdl @@ -74,6 +74,11 @@ child: async ParentCOMProxy(IAccessibleHolder aParentCOMProxy); async EmulatedWindow(WindowsHandle aEmulatedWindowHandle, IAccessibleHolder aEmulatedWindowCOMProxy); + /* + * Called as a result of focus shifting from chrome to content + * elements through keyboard navigation. + */ + async RestoreFocus(); async __delete__(); }; From 760dd32599a7e571884ffe0c8c57979d93d7edf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Mon, 5 Jun 2017 13:23:01 +0200 Subject: [PATCH 40/71] Bug 1343363 - Check RegExp wasn't modified in RegExp.p.@@replace global elem-base optimized path. r=till --- js/src/builtin/RegExpGlobalReplaceOpt.h.js | 4 ++-- .../ecma_6/RegExp/replace-compile-elembase.js | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 js/src/tests/ecma_6/RegExp/replace-compile-elembase.js diff --git a/js/src/builtin/RegExpGlobalReplaceOpt.h.js b/js/src/builtin/RegExpGlobalReplaceOpt.h.js index 0c80fecdef31..0ae85722eebf 100644 --- a/js/src/builtin/RegExpGlobalReplaceOpt.h.js +++ b/js/src/builtin/RegExpGlobalReplaceOpt.h.js @@ -31,7 +31,7 @@ function FUNC_NAME(rx, S, lengthS, replaceValue, fullUnicode var lastIndex = 0; rx.lastIndex = 0; -#if defined(FUNCTIONAL) +#if defined(FUNCTIONAL) || defined(ELEMBASE) // Save the original source and flags, so we can check if the replacer // function recompiled the regexp. var originalSource = UnsafeGetStringFromReservedSlot(rx, REGEXP_SOURCE_SLOT); @@ -109,7 +109,7 @@ function FUNC_NAME(rx, S, lengthS, replaceValue, fullUnicode break; } -#if defined(FUNCTIONAL) +#if defined(FUNCTIONAL) || defined(ELEMBASE) // Ensure the current source and flags match the original regexp, the // replaceValue function may have called RegExp#compile. if (UnsafeGetStringFromReservedSlot(rx, REGEXP_SOURCE_SLOT) !== originalSource || diff --git a/js/src/tests/ecma_6/RegExp/replace-compile-elembase.js b/js/src/tests/ecma_6/RegExp/replace-compile-elembase.js new file mode 100644 index 000000000000..591d27cfe9b4 --- /dev/null +++ b/js/src/tests/ecma_6/RegExp/replace-compile-elembase.js @@ -0,0 +1,22 @@ +(function() { + var rx = /a/g; + var b = { + get a() { + rx.compile("b"); + return "A"; + } + }; + + // Replacer function which is applicable for the elem-base optimization in + // RegExp.prototype.@@replace. + function replacer(a) { + return b[a]; + } + + var result = rx[Symbol.replace]("aaa", replacer); + + assertEq(result, "AAA"); +})(); + +if (typeof reportCompare === "function") + reportCompare(true, true); From 65cd55b48b64a081744a11b067fedd1cf943ce51 Mon Sep 17 00:00:00 2001 From: Petr Sumbera Date: Tue, 30 May 2017 01:36:00 -0700 Subject: [PATCH 41/71] Bug 1354576 - Allow to build NSPR on Solaris again. r=ted --- config/external/nspr/pr/moz.build | 14 ++++++++++++++ config/external/nspr/prcpucfg.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/config/external/nspr/pr/moz.build b/config/external/nspr/pr/moz.build index bbf22223b5f7..d4fee38f7881 100644 --- a/config/external/nspr/pr/moz.build +++ b/config/external/nspr/pr/moz.build @@ -56,6 +56,19 @@ elif CONFIG['OS_TARGET'] == 'Darwin': ] if not CONFIG['MOZ_IOS']: DEFINES['HAVE_CRT_EXTERNS_H'] = True +elif CONFIG['OS_TARGET'] == 'SunOS': + DEFINES.update( + HAVE_FCNTL_FILE_LOCKING=True, + HAVE_SOCKLEN_T=True, + _PR_HAVE_OFF64_T=True, + _PR_INET6=True, + ) + DEFINES['SOLARIS'] = True + SOURCES += ['/nsprpub/pr/src/md/unix/solaris.c'] + if CONFIG['CPU_ARCH'] == 'x86_64': + SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86_64.s'] + elif CONFIG['CPU_ARCH'] == 'x86': + SOURCES += ['/nsprpub/pr/src/md/unix/os_SunOS_x86.s'] elif CONFIG['OS_TARGET'] == 'WINNT': OS_LIBS += [ 'advapi32', @@ -229,6 +242,7 @@ EXPORTS.nspr.md += [ '/nsprpub/pr/include/md/_linux.cfg', '/nsprpub/pr/include/md/_netbsd.cfg', '/nsprpub/pr/include/md/_openbsd.cfg', + '/nsprpub/pr/include/md/_solaris.cfg', '/nsprpub/pr/include/md/_win95.cfg', ] diff --git a/config/external/nspr/prcpucfg.h b/config/external/nspr/prcpucfg.h index 5f79627337a9..8769abeeb85e 100644 --- a/config/external/nspr/prcpucfg.h +++ b/config/external/nspr/prcpucfg.h @@ -22,6 +22,8 @@ #include "md/_openbsd.cfg" #elif defined(__linux__) #include "md/_linux.cfg" +#elif defined(__sun__) +#include "md/_solaris.cfg" #else #error "Unsupported platform!" #endif From 3ec0f179de3b8208ba88376e3b7ee3f3cd9e7cfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Mon, 5 Jun 2017 13:10:45 +0200 Subject: [PATCH 42/71] Bug 1364979 - Don't use Latin-1 when encoding the export name for missing exports. r=jonco --- js/src/frontend/Parser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 019e002d8bcd..e1821492d288 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -2265,7 +2265,7 @@ Parser::moduleBody(ModuleSharedContext* modulesc) DeclaredNamePtr p = modulepc.varScope().lookupDeclaredName(name); if (!p) { JSAutoByteString str; - if (!str.encodeLatin1(context, name)) + if (!AtomToPrintableString(context, name, &str)) return null(); JS_ReportErrorNumberLatin1(context, GetErrorMessage, nullptr, From 9e04639fabb11763199e89b223250835a3a6ae28 Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Tue, 6 Jun 2017 09:57:03 -0400 Subject: [PATCH 43/71] Bug 1352128 - enabled web-platform-tests for win10 on m-c and try. r=grenade MozReview-Commit-ID: Aer6ioMtUDe --- taskcluster/ci/test/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/taskcluster/ci/test/tests.yml b/taskcluster/ci/test/tests.yml index 56cf5a8c38a0..c9ef83568bdc 100644 --- a/taskcluster/ci/test/tests.yml +++ b/taskcluster/ci/test/tests.yml @@ -1511,7 +1511,7 @@ web-platform-tests: checkout: true run-on-projects: by-test-platform: - windows10.*: [] + windows10.*: ['mozilla-central', 'try'] windows7.*: ['mozilla-central', 'try'] default: built-projects mozharness: @@ -1542,7 +1542,7 @@ web-platform-tests-reftests: checkout: true run-on-projects: by-test-platform: - windows10.*: [] + windows10.*: ['mozilla-central', 'try'] windows7.*: ['mozilla-central', 'try'] default: built-projects mozharness: From 81a61480fa9ad4190b54845c3aca099609bb5e77 Mon Sep 17 00:00:00 2001 From: James Graham Date: Sat, 3 Jun 2017 20:34:34 +0100 Subject: [PATCH 44/71] Bug 1352128 - Update web-platform-tests expected data. r=jmaher, a=testonly MozReview-Commit-ID: 1cxaSW7ZPMW --- ...as_complexshapes_beziercurveto_001.htm.ini | 2 + .../cssom-view/CaretPosition-001.html.ini | 5 +- .../meta/cssom-view/elementFromPoint.html.ini | 5 ++ .../cssom-view/elementsFromPoint.html.ini | 7 +++ ...open-features-non-integer-screeny.html.ini | 47 +++++++++++++++++++ .../historical.window.js.ini | 2 + .../the-img-element/usemap-casing.html.ini | 10 ++++ .../the-object-element/usemap-casing.html.ini | 10 ++++ .../module/execorder.html.ini | 7 --- .../cross-origin-iframe.html.ini | 2 - .../intersection-observer/disconnect.html.ini | 2 - .../edge-inclusive-intersection.html.ini | 1 - .../multiple-targets.html.ini | 1 - .../observer-without-js-reference.html.ini | 2 - .../remove-element.html.ini | 1 - .../same-document-root.html.ini | 1 - .../intersection-observer/timestamp.html.ini | 2 - .../unclipped-root.html.ini | 1 - .../zero-area-element-hidden.html.ini | 2 - .../zero-area-element-visible.html.ini | 3 -- .../mediasource-append-buffer.html.ini | 1 - ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...-origin.keep-origin-redirect.http.html.ini | 2 + .../cross-origin.no-redirect.http.html.ini | 2 + ...-origin.swap-origin-redirect.http.html.ini | 2 + ...-origin.keep-origin-redirect.http.html.ini | 2 + .../cross-origin.no-redirect.http.html.ini | 2 + ...-origin.swap-origin-redirect.http.html.ini | 2 + ...nsecure.keep-origin-redirect.http.html.ini | 2 + ...-origin-insecure.no-redirect.http.html.ini | 2 + ...nsecure.swap-origin-redirect.http.html.ini | 2 + ...wngrade.keep-origin-redirect.http.html.ini | 2 + ...origin-downgrade.no-redirect.http.html.ini | 2 + ...wngrade.swap-origin-redirect.http.html.ini | 2 + ...nsecure.swap-origin-redirect.http.html.ini | 2 + ...upgrade.keep-origin-redirect.http.html.ini | 2 + ...e-origin-upgrade.no-redirect.http.html.ini | 2 + ...upgrade.swap-origin-redirect.http.html.ini | 2 + ...-origin.keep-origin-redirect.http.html.ini | 2 + .../cross-origin.no-redirect.http.html.ini | 2 + ...-origin.swap-origin-redirect.http.html.ini | 2 + ...-origin.keep-origin-redirect.http.html.ini | 2 + .../cross-origin.no-redirect.http.html.ini | 2 + ...-origin.swap-origin-redirect.http.html.ini | 2 + ...nsecure.keep-origin-redirect.http.html.ini | 2 + ...-origin-insecure.no-redirect.http.html.ini | 2 + ...nsecure.swap-origin-redirect.http.html.ini | 2 + ...wngrade.keep-origin-redirect.http.html.ini | 2 + ...origin-downgrade.no-redirect.http.html.ini | 2 + ...wngrade.swap-origin-redirect.http.html.ini | 2 + ...nsecure.swap-origin-redirect.http.html.ini | 2 + ...upgrade.keep-origin-redirect.http.html.ini | 2 + ...e-origin-upgrade.no-redirect.http.html.ini | 2 + ...upgrade.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...generic.keep-origin-redirect.http.html.ini | 2 + .../img-tag/generic.no-redirect.http.html.ini | 2 + ...generic.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...nsecure-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + ...rotocol.keep-origin-redirect.http.html.ini | 2 + ...upgrade-protocol.no-redirect.http.html.ini | 2 + ...rotocol.swap-origin-redirect.http.html.ini | 2 + .../service-worker/fetch-event.https.html.ini | 1 + .../fetch-response-taint.https.html.ini | 2 + .../meta/url/a-element-xhtml.xhtml.ini | 2 + .../web-platform/meta/url/a-element.html.ini | 2 + .../meta/url/url-constructor.html.ini | 2 + .../align_middle_position_lt_50.html.ini | 2 + .../enable_controls_reposition.html.ini | 2 + 192 files changed, 428 insertions(+), 27 deletions(-) create mode 100644 testing/web-platform/meta/cssom-view/elementsFromPoint.html.ini create mode 100644 testing/web-platform/meta/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/cross-origin-iframe.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/disconnect.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/observer-without-js-reference.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/timestamp.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/zero-area-element-hidden.html.ini delete mode 100644 testing/web-platform/meta/intersection-observer/zero-area-element-visible.html.ini diff --git a/testing/web-platform/meta/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm.ini b/testing/web-platform/meta/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm.ini index addd4873c7c2..364c03a3d744 100644 --- a/testing/web-platform/meta/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm.ini +++ b/testing/web-platform/meta/2dcontext/building-paths/canvas_complexshapes_beziercurveto_001.htm.ini @@ -25,3 +25,5 @@ if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if not debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/cssom-view/CaretPosition-001.html.ini b/testing/web-platform/meta/cssom-view/CaretPosition-001.html.ini index b6c46e6be4c5..b3f84d8b1bcf 100644 --- a/testing/web-platform/meta/cssom-view/CaretPosition-001.html.ini +++ b/testing/web-platform/meta/cssom-view/CaretPosition-001.html.ini @@ -1,5 +1,8 @@ [CaretPosition-001.html] type: testharness [Element at (400, 900)] - expected: FAIL + expected: + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): PASS + FAIL diff --git a/testing/web-platform/meta/cssom-view/elementFromPoint.html.ini b/testing/web-platform/meta/cssom-view/elementFromPoint.html.ini index 230a47bac3a5..cb0245b80947 100644 --- a/testing/web-platform/meta/cssom-view/elementFromPoint.html.ini +++ b/testing/web-platform/meta/cssom-view/elementFromPoint.html.ini @@ -3,3 +3,8 @@ [Image Maps] expected: FAIL + [Fieldsets] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + diff --git a/testing/web-platform/meta/cssom-view/elementsFromPoint.html.ini b/testing/web-platform/meta/cssom-view/elementsFromPoint.html.ini new file mode 100644 index 000000000000..e1ff63b791b4 --- /dev/null +++ b/testing/web-platform/meta/cssom-view/elementsFromPoint.html.ini @@ -0,0 +1,7 @@ +[elementsFromPoint.html] + type: testharness + [no hit target at x,y] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + diff --git a/testing/web-platform/meta/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini b/testing/web-platform/meta/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini new file mode 100644 index 000000000000..6c86ba7241d9 --- /dev/null +++ b/testing/web-platform/meta/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html.ini @@ -0,0 +1,47 @@ +[open-features-non-integer-screeny.html] + type: testharness + [features "screeny=405.5" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405.32" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405LLl" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405^4" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405*3" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405/5" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405 " should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405e1" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [features "screeny=405e-1" should set "height=405"] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + diff --git a/testing/web-platform/meta/html/browsers/the-window-object/historical.window.js.ini b/testing/web-platform/meta/html/browsers/the-window-object/historical.window.js.ini index 0c0a3f38f3c2..bbfc462890b1 100644 --- a/testing/web-platform/meta/html/browsers/the-window-object/historical.window.js.ini +++ b/testing/web-platform/meta/html/browsers/the-window-object/historical.window.js.ini @@ -10,4 +10,6 @@ if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/usemap-casing.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/usemap-casing.html.ini index f0424be02315..e93c6fee1866 100644 --- a/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/usemap-casing.html.ini +++ b/testing/web-platform/meta/html/semantics/embedded-content/the-img-element/usemap-casing.html.ini @@ -3,3 +3,13 @@ [Image with usemap of #sanityCheck should match the area with map named sanityCheck] expected: FAIL + [Image with usemap of #tÉdz5アパートFi should not match any of the areas] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [Image with usemap of #ΣΣ should not match any of the areas] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + diff --git a/testing/web-platform/meta/html/semantics/embedded-content/the-object-element/usemap-casing.html.ini b/testing/web-platform/meta/html/semantics/embedded-content/the-object-element/usemap-casing.html.ini index b021e4cb129f..a0d1dcb1036a 100644 --- a/testing/web-platform/meta/html/semantics/embedded-content/the-object-element/usemap-casing.html.ini +++ b/testing/web-platform/meta/html/semantics/embedded-content/the-object-element/usemap-casing.html.ini @@ -3,3 +3,13 @@ [Object with usemap of #sanityCheck should match the area with map named sanityCheck] expected: FAIL + [Object with usemap of #tÉdz5アパートFi should not match any of the areas] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + + [Object with usemap of #ΣΣ should not match any of the areas] + expected: + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + diff --git a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini index 7c119b05b9ec..fbc63a1a7a75 100644 --- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini +++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini @@ -1,35 +1,28 @@ [execorder.html] type: testharness expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): OK if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): OK [Unordered module script execution (parsed, unordered #1)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS [Unordered module script execution (parsed, unordered #2)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS [Unordered module script execution (dynamic, unordered #1)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS [Unordered module script execution (dynamic, unordered #2)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS [Interlaced module/non-module script execution (parsed, async-ordered)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS [Interlaced module/non-module script execution (dynamic, async-ordered)] expected: - if e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): PASS if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS diff --git a/testing/web-platform/meta/intersection-observer/cross-origin-iframe.html.ini b/testing/web-platform/meta/intersection-observer/cross-origin-iframe.html.ini deleted file mode 100644 index 8b9e869c5781..000000000000 --- a/testing/web-platform/meta/intersection-observer/cross-origin-iframe.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[cross-origin-iframe.html] - type: testharness diff --git a/testing/web-platform/meta/intersection-observer/disconnect.html.ini b/testing/web-platform/meta/intersection-observer/disconnect.html.ini deleted file mode 100644 index 05d721d3ad8e..000000000000 --- a/testing/web-platform/meta/intersection-observer/disconnect.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[disconnect.html] - type: testharness diff --git a/testing/web-platform/meta/intersection-observer/edge-inclusive-intersection.html.ini b/testing/web-platform/meta/intersection-observer/edge-inclusive-intersection.html.ini index d491fb117dda..356c371e5fe2 100644 --- a/testing/web-platform/meta/intersection-observer/edge-inclusive-intersection.html.ini +++ b/testing/web-platform/meta/intersection-observer/edge-inclusive-intersection.html.ini @@ -1,4 +1,3 @@ [edge-inclusive-intersection.html] type: testharness disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359317 - diff --git a/testing/web-platform/meta/intersection-observer/multiple-targets.html.ini b/testing/web-platform/meta/intersection-observer/multiple-targets.html.ini index 0d7b23d23161..cdaa6d6a3571 100644 --- a/testing/web-platform/meta/intersection-observer/multiple-targets.html.ini +++ b/testing/web-platform/meta/intersection-observer/multiple-targets.html.ini @@ -1,4 +1,3 @@ [multiple-targets.html] type: testharness disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359311 - diff --git a/testing/web-platform/meta/intersection-observer/observer-without-js-reference.html.ini b/testing/web-platform/meta/intersection-observer/observer-without-js-reference.html.ini deleted file mode 100644 index f3cae9b4e79c..000000000000 --- a/testing/web-platform/meta/intersection-observer/observer-without-js-reference.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[observer-without-js-reference.html] - type: testharness diff --git a/testing/web-platform/meta/intersection-observer/remove-element.html.ini b/testing/web-platform/meta/intersection-observer/remove-element.html.ini index 797cb276875c..3f2bff467631 100644 --- a/testing/web-platform/meta/intersection-observer/remove-element.html.ini +++ b/testing/web-platform/meta/intersection-observer/remove-element.html.ini @@ -1,4 +1,3 @@ [remove-element.html] type: testharness disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1363650 - diff --git a/testing/web-platform/meta/intersection-observer/same-document-root.html.ini b/testing/web-platform/meta/intersection-observer/same-document-root.html.ini index 374549420b66..7fa7dfbed932 100644 --- a/testing/web-platform/meta/intersection-observer/same-document-root.html.ini +++ b/testing/web-platform/meta/intersection-observer/same-document-root.html.ini @@ -1,4 +1,3 @@ [same-document-root.html] type: testharness disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1363650 - diff --git a/testing/web-platform/meta/intersection-observer/timestamp.html.ini b/testing/web-platform/meta/intersection-observer/timestamp.html.ini deleted file mode 100644 index b359aec876af..000000000000 --- a/testing/web-platform/meta/intersection-observer/timestamp.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[timestamp.html] - type: testharness diff --git a/testing/web-platform/meta/intersection-observer/unclipped-root.html.ini b/testing/web-platform/meta/intersection-observer/unclipped-root.html.ini index e6325d64fcd8..ace8e035fb3a 100644 --- a/testing/web-platform/meta/intersection-observer/unclipped-root.html.ini +++ b/testing/web-platform/meta/intersection-observer/unclipped-root.html.ini @@ -1,4 +1,3 @@ [unclipped-root.html] type: testharness disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359317 - diff --git a/testing/web-platform/meta/intersection-observer/zero-area-element-hidden.html.ini b/testing/web-platform/meta/intersection-observer/zero-area-element-hidden.html.ini deleted file mode 100644 index 7859492e594b..000000000000 --- a/testing/web-platform/meta/intersection-observer/zero-area-element-hidden.html.ini +++ /dev/null @@ -1,2 +0,0 @@ -[zero-area-element-hidden.html] - type: testharness diff --git a/testing/web-platform/meta/intersection-observer/zero-area-element-visible.html.ini b/testing/web-platform/meta/intersection-observer/zero-area-element-visible.html.ini deleted file mode 100644 index 6ddb827d31ac..000000000000 --- a/testing/web-platform/meta/intersection-observer/zero-area-element-visible.html.ini +++ /dev/null @@ -1,3 +0,0 @@ -[zero-area-element-visible.html] - type: testharness - diff --git a/testing/web-platform/meta/media-source/mediasource-append-buffer.html.ini b/testing/web-platform/meta/media-source/mediasource-append-buffer.html.ini index be263f86e31a..7622c6629af9 100644 --- a/testing/web-platform/meta/media-source/mediasource-append-buffer.html.ini +++ b/testing/web-platform/meta/media-source/mediasource-append-buffer.html.ini @@ -1,4 +1,3 @@ [mediasource-append-buffer.html] type: testharness expected: ERROR - diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index 399f454513c5..6ea9aed527ca 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index b4b445c7e0f0..d2fc6180c5be 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index 6eff653525e0..178a9161432f 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 90aa5093d73d..5d13068ed6f9 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index a5246e10e5f4..6ff88b984bdf 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 0c85df7d0c20..f92918b267da 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index 8bd62518f7a4..05ff68c34176 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index 6c17f43890e2..735877f4025e 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index d04d57018661..75717bb7158d 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index d8c119ffd32d..f13f925bf7db 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 05f6926f7214..54a38d8c33e2 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 5a85979d7f97..37c09357c346 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index 98a7b8010fc3..005efaf6cea6 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index 4e298ad67c44..9becb6bc3e36 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index fb60a41a7c80..175c3fbff5ad 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index b955af1cf85c..7397bd89dd56 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 92218c9ef89e..741717dba4ca 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index a5da6f26c47e..203d8553c9c4 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index ca9693082901..58a482cc3546 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index c41ade9d9f0e..66c22d01dd32 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index f19a14cf078f..45af44496ff8 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 85b669c15832..e48352c6f9f4 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 5bf8f4c9c4d4..bf7329be25f0 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index e9d9bb18b55c..86465c5116bc 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer-when-downgrade/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 62ce411f6233..990f6a8a7386 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 6c4789079119..f6ccbe9cf62e 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 47b4835abe57..249c79845311 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index dd8889bdc5c8..4ba14c20efe1 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 694a27a406df..4b4e57f718f6 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 159fa3bafa58..e72fa356222a 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index df9dff165aab..2801cf4adc59 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 610d0fe94b4e..c1c5233c6700 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 41b580d04609..ff8bbd772a29 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 0ee3d6d8aba5..421c65e07128 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 479bb70ad9a3..8e9586bf777b 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 8d0f103b20eb..f2b4ad501635 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index c4735ba6979b..883babec6c51 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 1738bda4fcc1..b629c830bbb3 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index b2a83bd76166..740de692797a 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 664fc2f61c22..363d3d30be0f 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index b0c41eb00354..b14a7c05d7e0 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index e6f289b51175..cd5b5f6830e4 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 5273acebfff7..9974a105116d 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index d374d1f97f9f..c714ad22afc4 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 874981a16e64..7188de3e1300 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index be57f69b1c9a..e57314ea4556 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 1df917b97900..6f3dc4961c02 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index f1b618307f42..7f9245e59c70 100644 --- a/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/no-referrer/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini index b7206d5cb864..585c5a06c292 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini index 52137b4ad0c7..a146df774e75 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini index ed7dc8560db2..a7ff6c41a594 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini index f3c89700e108..3fb8a01bec83 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini index 1125111a0f43..2353839dc6c2 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini index ab7477d71a85..d8c070d82244 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini index a4827a8c96ca..76a674c08b36 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini index 624040b8861a..a301477f929b 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini index 7dd0271ac489..1ce8d7b1751b 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini index 789937b0c206..e309cd3655f6 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini index 9bf79a18adb6..35238fd51bec 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini index 6459fe118983..9588c71e62ee 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini index 2d924bffbcbe..36c65ae1d956 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini index 78afed17af48..5c288c1703bd 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini index db211e456109..1f5d8ccf01ef 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini index 83670ca8974f..2946459b92aa 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/attr-referrer/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini index 0cbb2f1cb744..cf9696a22428 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini index f00be1d9ecee..60d796998025 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini index 71ba028b44e2..1d0611d9d867 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-http/img-tag/cross-origin.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini index f025dfcfd0f4..e009c6b1fddf 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini index 26485773c1ad..129fe7889771 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini index 9d39d66824d3..a79de9d28654 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/cross-origin/http-https/img-tag/cross-origin.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini index 3a748fd38459..a4d580e514c9 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini index 46d41b071a5b..e21ccb2f1017 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini index d2ef20ca1c25..604c1d41e28d 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-http/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini index 87eea015493c..3f34f2467c59 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini index 05c7e222c888..9ee8da5b2c17 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini index 684070d6898f..026ace0b623a 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-downgrade.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini index b4c52f0afefa..c7a62cacf753 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-insecure.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini index de489498082e..41d6d42c1cdd 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini index 8300ed1cf943..1a0fc34f6f61 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini index 36458866eac4..4a774f523908 100644 --- a/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin-when-cross-origin/http-rp/same-origin/http-https/img-tag/same-origin-upgrade.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 32431064d1bd..3066efd92a81 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index f8e24ca15249..7764641d5f93 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index cb7c70a191cb..8bf9cd7a7427 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 16919bd9514e..6ad8bd2c4e38 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 89263fa9e19b..4fe243485e5d 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 93b02076e217..d0c99604ae91 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index d3c781e157e5..c806fd729e9c 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 8a95b0378a94..03b8d3bb974a 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 3c64607c8f77..8a9deb98fd0e 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index eb6b29539a77..48e00a841159 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 8673d352e8fb..1885d55ec736 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 09af2022cde4..b81d6f051425 100644 --- a/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 375ebefc3bcb..a8159a2f9bcd 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 990e21482d3c..78e081105e35 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 43f8b07e6ad6..ebe309f062e7 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index fd9fc29c59e0..8b980cd7ce44 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index c9bc4d6e0a7b..a9aefed0e923 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index e1805c6fd1fa..0188259c70c5 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index fc5ca3fc7368..740c9fc31286 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index c26d9f5b0e4d..b58ca72310a3 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index a20dfbbb87fb..3c374e69288d 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 2a5e69e3ee70..3bc82e16eecf 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index e9393364cd49..c800521946f8 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 81b2edc91094..6a8e9b8b94be 100644 --- a/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 0d1b9d3ef782..9eba582e1aef 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 65f1191e84a0..4c7fd02d8364 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 396dfe8663a5..0f01d0d4296f 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 1001b33d55db..c0aebe26f7b0 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index c46a3b3eb34f..1d290ac2d656 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 369fdb21a776..8c69c8194275 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index e5d685668bb8..8ea7667194e1 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 6dccc334b134..a94bf85f317b 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index a4c48745ecf8..439155fd8c02 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index d1fcd8fc8a0f..7367dbda890a 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 4892e88d09cc..b1a2419d3ae7 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 1f36022ba8df..a0136f081aa2 100644 --- a/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/origin/meta-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index edb9977080f1..ba5e1a569652 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 7bb926652983..204602861d8b 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index eabe3b2c38f1..099b9246e158 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index a2b1f2063de4..78935798ab70 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index b61a4392478d..ebae38383665 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 363b59ed4da0..c02163f50bd1 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index 21fcda9d76f4..6c6918c2dbb8 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 9371c4c4f502..004b56a2a2cd 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index db13774dcb13..83f6d0c370ba 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index d25d84b9b69f..8f1ffbe1cc64 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index ce9db92dbddd..d5a959ac1a57 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 6e8d1f7b98ba..c72d59b36bf4 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/attr-referrer/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index a7df138a88b9..183d78b1ae03 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 6c0f0cce6415..5cd14aee5d89 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 342e265b6c95..e546e4c8dd31 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 9bd24101b62a..d963d5007dba 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 5aa852a62a52..a4f6f4aca755 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index cf024614783e..19915130e072 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/cross-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini index e171a26e0c5c..0fe70c710bd6 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini index 8e493cb8b826..ce6464bcb883 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini index 93cf20687fd9..0e36342da0ac 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-http/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini index 0433c962d680..2906be660732 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini index 019dc3de0a3b..e58b78f496f6 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini index 9c385a48383a..93d7a3caa4de 100644 --- a/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unsafe-url/http-rp/same-origin/http-https/img-tag/generic.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index 1c80a186c47b..7f8b3f97c93a 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index c77c09069ffc..f5e91a9d5b95 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index 6be9f55cb389..842e87f6381e 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index c59fa11c9e79..02b256e73057 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 21be30c32d42..4d9454fe2758 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 0db6eca48191..5b66ca040b91 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index 8bd62518f7a4..05ff68c34176 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index 6c17f43890e2..735877f4025e 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index d04d57018661..75717bb7158d 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index d8c119ffd32d..f13f925bf7db 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 05f6926f7214..54a38d8c33e2 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 5a85979d7f97..37c09357c346 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/attr-referrer/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index e64d6858cbf6..407f3c6ac77f 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index ad204ceb69b9..1c960d166d6e 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index d35ef35b767d..ce09a7eb2cba 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 039e3fdebcc4..087b53dc22a4 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index 640310614f0b..790206c8f27b 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index de26e6ea68e5..6cf2231e9bf2 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/cross-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini index d9b7a5e5eb5f..f7c886e07d89 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini index f904cceedd2f..7689fdac1b25 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini index 03bcf5e4e825..f6d00d19d0dd 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-http/img-tag/insecure-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and not e10s and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini index 9ebdbd12afc4..c14cb5ae940d 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.keep-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini index e8f36fd1865b..c37d5f13aec0 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.no-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini index 12b5584893e6..74064607103e 100644 --- a/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini +++ b/testing/web-platform/meta/referrer-policy/unset-referrer-policy/http-rp/same-origin/http-https/img-tag/upgrade-protocol.swap-origin-redirect.http.html.ini @@ -21,4 +21,6 @@ if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/service-workers/service-worker/fetch-event.https.html.ini b/testing/web-platform/meta/service-workers/service-worker/fetch-event.https.html.ini index 60e9804cb477..c769686acb9e 100644 --- a/testing/web-platform/meta/service-workers/service-worker/fetch-event.https.html.ini +++ b/testing/web-platform/meta/service-workers/service-worker/fetch-event.https.html.ini @@ -13,4 +13,5 @@ if debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL if not debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/service-workers/service-worker/fetch-response-taint.https.html.ini b/testing/web-platform/meta/service-workers/service-worker/fetch-response-taint.https.html.ini index 257d3cf16d0d..9ee6cebf2b8a 100644 --- a/testing/web-platform/meta/service-workers/service-worker/fetch-response-taint.https.html.ini +++ b/testing/web-platform/meta/service-workers/service-worker/fetch-response-taint.https.html.ini @@ -10,6 +10,8 @@ if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL [fetching url:"https://www1.web-platform.test:8443/?url=https%3A%2F%2Fweb-platform.test%3A8443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed.] expected: FAIL diff --git a/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini b/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini index d104ff7200cf..1e2c448fb1cb 100644 --- a/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini +++ b/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini @@ -532,6 +532,8 @@ if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL [Parsing: against ] expected: FAIL diff --git a/testing/web-platform/meta/url/a-element.html.ini b/testing/web-platform/meta/url/a-element.html.ini index a117aa6e1dbc..415a112f6d77 100644 --- a/testing/web-platform/meta/url/a-element.html.ini +++ b/testing/web-platform/meta/url/a-element.html.ini @@ -541,6 +541,8 @@ if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL [Parsing: against ] expected: FAIL diff --git a/testing/web-platform/meta/url/url-constructor.html.ini b/testing/web-platform/meta/url/url-constructor.html.ini index e43c221801a8..85f85e21cb70 100644 --- a/testing/web-platform/meta/url/url-constructor.html.ini +++ b/testing/web-platform/meta/url/url-constructor.html.ini @@ -295,6 +295,8 @@ if not debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL [Parsing: against ] expected: FAIL diff --git a/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html.ini b/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html.ini index f726f33f9c07..d622288deaa2 100644 --- a/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html.ini +++ b/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/align_middle_position_lt_50.html.ini @@ -32,3 +32,5 @@ if debug and e10s and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL if debug and not e10s and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL if debug and not e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL diff --git a/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html.ini b/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html.ini index 64c97dc71b99..ed26de994bae 100644 --- a/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html.ini +++ b/testing/web-platform/meta/webvtt/rendering/cues-with-video/processing-model/enable_controls_reposition.html.ini @@ -25,3 +25,5 @@ if debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL if not debug and e10s and (os == "mac") and (version == "OS X 10.10.5") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and not e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL + if not debug and e10s and (os == "win") and (version == "10.0.15063") and (processor == "x86_64") and (bits == 64): FAIL From b128f216a38f7151f07478e05c534a2021401d08 Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Tue, 6 Jun 2017 09:57:05 -0400 Subject: [PATCH 45/71] Bug 1369877 - when pushing to try with --artifact for osx builds, we skip upload-files. r=chmanchester MozReview-Commit-ID: 9qXwxihyNvx --- .../configs/builds/releng_sub_mac_configs/64_artifact.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py index c771c4ce25af..e981c3b620aa 100644 --- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py +++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py @@ -11,6 +11,7 @@ config = { # 'setup-mock', 'checkout-sources', 'build', + 'upload-files', 'sendchange', ], "buildbot_json_path": "buildprops.json", @@ -26,7 +27,7 @@ config = { 'tooltool_bootstrap': "setup.sh", 'enable_count_ctors': False, # allows triggering of dependent jobs when --artifact try syntax is detected on buildbot - 'enable_unittest_sendchange': True, + 'enable_unittest_sendchange': False, 'enable_talos_sendchange': False, 'perfherder_extra_options': ['artifact'], ######################################################################### From 838fcff7e7b48dcbfd2447666b5db3fe63c16a14 Mon Sep 17 00:00:00 2001 From: Joel Maher Date: Tue, 6 Jun 2017 09:57:06 -0400 Subject: [PATCH 46/71] Bug 1370328 - force plugins off and jsgc_poisoning for talos. r=rwood MozReview-Commit-ID: 1ZLTUyHyYCH --- testing/talos/talos/config.py | 1 + testing/talos/talos/ttest.py | 3 +++ 2 files changed, 4 insertions(+) diff --git a/testing/talos/talos/config.py b/testing/talos/talos/config.py index c88fa0f19634..ec6e34ce4f34 100644 --- a/testing/talos/talos/config.py +++ b/testing/talos/talos/config.py @@ -179,6 +179,7 @@ DEFAULTS = dict( 'devtools.theme': "light", 'devtools.timeline.enabled': False, 'identity.fxaccounts.migrateToDevEdition': False, + 'plugin.state.flash': 0, 'media.libavcodec.allow-obsolete': True } ) diff --git a/testing/talos/talos/ttest.py b/testing/talos/talos/ttest.py index 51448267cf56..0e03d2d666d4 100644 --- a/testing/talos/talos/ttest.py +++ b/testing/talos/talos/ttest.py @@ -104,6 +104,9 @@ class TTest(object): setup.env['MOZ_INSTRUMENT_EVENT_LOOP_INTERVAL'] = '10' global_counters['responsiveness'] = [] + setup.env['JSGC_DISABLE_POISONING'] = '1' + setup.env['MOZ_DISABLE_NONLOCAL_CONNECTIONS'] = '1' + # if using mitmproxy we must allow access to 'external' sites if browser_config.get('mitmproxy', False): LOG.info("Using mitmproxy so setting MOZ_DISABLE_NONLOCAL_CONNECTIONS to 0") From b2ce10de422e6e99ab774cdf3fdeca870fa12d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Fri, 2 Jun 2017 12:04:41 +0200 Subject: [PATCH 47/71] Bug 1369337 - Forcibly create length and @@iterator properties for arguments when redefining. r=evilpie --HG-- extra : rebase_source : 5bd47ea33e4274b42443662aa6477b5678dea3df --- .../arguments/args-redefine-iterator-1.js | 14 ++++++++ .../arguments/args-redefine-iterator-2.js | 14 ++++++++ .../tests/arguments/args-redefine-length-3.js | 14 ++++++++ .../tests/arguments/args-redefine-length-4.js | 14 ++++++++ .../tests/arguments/args-redefine-length-5.js | 14 ++++++++ .../tests/arguments/args-redefine-length-6.js | 14 ++++++++ .../tests/arguments/args-redefine-length-7.js | 14 ++++++++ js/src/vm/ArgumentsObject.cpp | 33 +++++++++++++++++-- js/src/vm/ArgumentsObject.h | 20 +++++++---- js/src/vm/NativeObject.cpp | 25 ++++++++------ 10 files changed, 157 insertions(+), 19 deletions(-) create mode 100644 js/src/jit-test/tests/arguments/args-redefine-iterator-1.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-iterator-2.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-length-3.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-length-4.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-length-5.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-length-6.js create mode 100644 js/src/jit-test/tests/arguments/args-redefine-length-7.js diff --git a/js/src/jit-test/tests/arguments/args-redefine-iterator-1.js b/js/src/jit-test/tests/arguments/args-redefine-iterator-1.js new file mode 100644 index 000000000000..77241a6ae79a --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-iterator-1.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, Symbol.iterator, { }); + for (var i = 0; i < 5; i++) + assertEq(a[Symbol.iterator], Array.prototype[Symbol.iterator]); + + var desc = Object.getOwnPropertyDescriptor(a, Symbol.iterator); + assertEq(desc.value, Array.prototype[Symbol.iterator]); + assertEq(desc.writable, true); + assertEq(desc.enumerable, false); + assertEq(desc.configurable, true); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-iterator-2.js b/js/src/jit-test/tests/arguments/args-redefine-iterator-2.js new file mode 100644 index 000000000000..186be930c4a5 --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-iterator-2.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, Symbol.iterator, { writable: false, enumerable: true, configurable: false }); + for (var i = 0; i < 5; i++) + assertEq(a[Symbol.iterator], Array.prototype[Symbol.iterator]); + + var desc = Object.getOwnPropertyDescriptor(a, Symbol.iterator); + assertEq(desc.value, Array.prototype[Symbol.iterator]); + assertEq(desc.writable, false); + assertEq(desc.enumerable, true); + assertEq(desc.configurable, false); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-length-3.js b/js/src/jit-test/tests/arguments/args-redefine-length-3.js new file mode 100644 index 000000000000..a4d6823acfa5 --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-length-3.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, "length", { }); + for (var i = 0; i < 5; i++) + assertEq(a.length, 0); + + var desc = Object.getOwnPropertyDescriptor(a, "length"); + assertEq(desc.value, 0); + assertEq(desc.writable, true); + assertEq(desc.enumerable, false); + assertEq(desc.configurable, true); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-length-4.js b/js/src/jit-test/tests/arguments/args-redefine-length-4.js new file mode 100644 index 000000000000..1029e8fca32b --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-length-4.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, "length", { writable: false }); + for (var i = 0; i < 5; i++) + assertEq(a.length, 0); + + var desc = Object.getOwnPropertyDescriptor(a, "length"); + assertEq(desc.value, 0); + assertEq(desc.writable, false); + assertEq(desc.enumerable, false); + assertEq(desc.configurable, true); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-length-5.js b/js/src/jit-test/tests/arguments/args-redefine-length-5.js new file mode 100644 index 000000000000..2ae30bf0f79f --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-length-5.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, "length", { enumerable: true }); + for (var i = 0; i < 5; i++) + assertEq(a.length, 0); + + var desc = Object.getOwnPropertyDescriptor(a, "length"); + assertEq(desc.value, 0); + assertEq(desc.writable, true); + assertEq(desc.enumerable, true); + assertEq(desc.configurable, true); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-length-6.js b/js/src/jit-test/tests/arguments/args-redefine-length-6.js new file mode 100644 index 000000000000..a4b768d4bd14 --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-length-6.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, "length", { configurable: false }); + for (var i = 0; i < 5; i++) + assertEq(a.length, 0); + + var desc = Object.getOwnPropertyDescriptor(a, "length"); + assertEq(desc.value, 0); + assertEq(desc.writable, true); + assertEq(desc.enumerable, false); + assertEq(desc.configurable, false); +} +t(); diff --git a/js/src/jit-test/tests/arguments/args-redefine-length-7.js b/js/src/jit-test/tests/arguments/args-redefine-length-7.js new file mode 100644 index 000000000000..042b224740ab --- /dev/null +++ b/js/src/jit-test/tests/arguments/args-redefine-length-7.js @@ -0,0 +1,14 @@ +function t() +{ + var a = arguments; + Object.defineProperty(a, "length", { value: 0 }); + for (var i = 0; i < 5; i++) + assertEq(a.length, 0); + + var desc = Object.getOwnPropertyDescriptor(a, "length"); + assertEq(desc.value, 0); + assertEq(desc.writable, true); + assertEq(desc.enumerable, false); + assertEq(desc.configurable, true); +} +t(); diff --git a/js/src/vm/ArgumentsObject.cpp b/js/src/vm/ArgumentsObject.cpp index 93c7ac622637..7fdf5b60346a 100644 --- a/js/src/vm/ArgumentsObject.cpp +++ b/js/src/vm/ArgumentsObject.cpp @@ -510,7 +510,7 @@ MappedArgSetter(JSContext* cx, HandleObject obj, HandleId id, MutableHandleValue /* * For simplicity we use delete/define to replace the property with a * simple data property. Note that we rely on ArgumentsObject::obj_delProperty - * to clear the corresponding reserved slot so the GC can collect its value. + * to set the corresponding override-bit. * Note also that we must define the property instead of setting it in case * the user has changed the prototype to an object that has a setter for * this id. @@ -529,10 +529,37 @@ DefineArgumentsIterator(JSContext* cx, Handle argsobj) RootedValue val(cx); if (!GlobalObject::getSelfHostedFunction(cx, cx->global(), shName, name, 0, &val)) return false; - return NativeDefineProperty(cx, argsobj, iteratorId, val, nullptr, nullptr, JSPROP_RESOLVING); } +/* static */ bool +ArgumentsObject::reifyLength(JSContext* cx, Handle obj) +{ + if (obj->hasOverriddenLength()) + return true; + + RootedId id(cx, NameToId(cx->names().length)); + RootedValue val(cx, Int32Value(obj->initialLength())); + if (!NativeDefineProperty(cx, obj, id, val, nullptr, nullptr, JSPROP_RESOLVING)) + return false; + + obj->markLengthOverridden(); + return true; +} + +/* static */ bool +ArgumentsObject::reifyIterator(JSContext* cx, Handle obj) +{ + if (obj->hasOverriddenIterator()) + return true; + + if (!DefineArgumentsIterator(cx, obj)) + return false; + + obj->markIteratorOverridden(); + return true; +} + /* static */ bool MappedArgumentsObject::obj_resolve(JSContext* cx, HandleObject obj, HandleId id, bool* resolvedp) { @@ -714,7 +741,7 @@ UnmappedArgSetter(JSContext* cx, HandleObject obj, HandleId id, MutableHandleVal /* * For simplicity we use delete/define to replace the property with a * simple data property. Note that we rely on ArgumentsObject::obj_delProperty - * to clear the corresponding reserved slot so the GC can collect its value. + * to set the corresponding override-bit. */ ObjectOpResult ignored; return NativeDeleteProperty(cx, argsobj, id, ignored) && diff --git a/js/src/vm/ArgumentsObject.h b/js/src/vm/ArgumentsObject.h index 482f2b3ca4d5..d0e645b3a70d 100644 --- a/js/src/vm/ArgumentsObject.h +++ b/js/src/vm/ArgumentsObject.h @@ -52,12 +52,10 @@ class RareArgumentsData } }; -/* - * ArgumentsData stores the initial indexed arguments provided to the - * corresponding and that function itself. It is used to store arguments[i] - * and arguments.callee -- up until the corresponding property is modified, - * when the relevant value is flagged to memorialize the modification. - */ +// ArgumentsData stores the initial indexed arguments provided to a function +// call. It is used to store arguments[i] -- up until the corresponding +// property is modified, when the relevant value is flagged to memorialize the +// modification. struct ArgumentsData { /* @@ -235,6 +233,11 @@ class ArgumentsObject : public NativeObject setFixedSlot(INITIAL_LENGTH_SLOT, Int32Value(v)); } + /* + * Create the default "length" property and set LENGTH_OVERRIDDEN_BIT. + */ + static bool reifyLength(JSContext* cx, Handle obj); + /* True iff arguments[@@iterator] has been assigned or its attributes * changed. */ bool hasOverriddenIterator() const { @@ -247,6 +250,11 @@ class ArgumentsObject : public NativeObject setFixedSlot(INITIAL_LENGTH_SLOT, Int32Value(v)); } + /* + * Create the default @@iterator property and set ITERATOR_OVERRIDDEN_BIT. + */ + static bool reifyIterator(JSContext* cx, Handle obj); + /* True iff any element has been assigned or its attributes * changed. */ bool hasOverriddenElement() const { diff --git a/js/src/vm/NativeObject.cpp b/js/src/vm/NativeObject.cpp index fb152110187c..82b601b09f9a 100644 --- a/js/src/vm/NativeObject.cpp +++ b/js/src/vm/NativeObject.cpp @@ -1606,21 +1606,26 @@ js::NativeDefineProperty(JSContext* cx, HandleNativeObject obj, HandleId id, return DefineTypedArrayElement(cx, obj, index, desc_, result); } } else if (obj->is()) { + Rooted argsobj(cx, &obj->as()); if (id == NameToId(cx->names().length)) { - // Either we are resolving the .length property on this object, or - // redefining it. In the latter case only, we must set a bit. To - // distinguish the two cases, we note that when resolving, the - // JSPROP_RESOLVING mask is set; whereas the first time it is - // redefined, it isn't set. - if ((desc_.attributes() & JSPROP_RESOLVING) == 0) - obj->as().markLengthOverridden(); + // Either we are resolving the .length property on this object, + // or redefining it. In the latter case only, we must reify the + // property. To distinguish the two cases, we note that when + // resolving, the JSPROP_RESOLVING mask is set; whereas the first + // time it is redefined, it isn't set. + if ((desc_.attributes() & JSPROP_RESOLVING) == 0) { + if (!ArgumentsObject::reifyLength(cx, argsobj)) + return false; + } } else if (JSID_IS_SYMBOL(id) && JSID_TO_SYMBOL(id) == cx->wellKnownSymbols().iterator) { // Do same thing as .length for [@@iterator]. - if ((desc_.attributes() & JSPROP_RESOLVING) == 0) - obj->as().markIteratorOverridden(); + if ((desc_.attributes() & JSPROP_RESOLVING) == 0) { + if (!ArgumentsObject::reifyIterator(cx, argsobj)) + return false; + } } else if (JSID_IS_INT(id)) { if ((desc_.attributes() & JSPROP_RESOLVING) == 0) - obj->as().markElementOverridden(); + argsobj->markElementOverridden(); } } From b87b6ea5821aa23e61c8c634a0012dcb8a6c7b5c Mon Sep 17 00:00:00 2001 From: Kershaw Chang Date: Tue, 6 Jun 2017 02:35:00 -0400 Subject: [PATCH 48/71] Bug 1360581 - Part 1: Avoid nsChannelClassifier being created twice. r=mayhemer The original code creates nsChannelClassifier and calls ShouldEnableTrackingProtection twice when TP is enabled. To avoid redundancy, this patch makes channel classifier as a data member in nsHttpChannel. Note that the data member is a weak ptr to prevent ref count cycle. --HG-- extra : rebase_source : 4a77f1e51b38e27a065162cc702091aca2db51de --- netwerk/protocol/http/HttpBaseChannel.h | 2 +- netwerk/protocol/http/nsHttpChannel.cpp | 26 +++++++++++++++++++++++-- netwerk/protocol/http/nsHttpChannel.h | 14 +++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/netwerk/protocol/http/HttpBaseChannel.h b/netwerk/protocol/http/HttpBaseChannel.h index 6761083a13e6..bdfc8b7624db 100644 --- a/netwerk/protocol/http/HttpBaseChannel.h +++ b/netwerk/protocol/http/HttpBaseChannel.h @@ -375,7 +375,7 @@ protected: virtual void DoNotifyListenerCleanup() = 0; // drop reference to listener, its callbacks, and the progress sink - void ReleaseListeners(); + virtual void ReleaseListeners(); // This is fired only when a cookie is created due to the presence of // Set-Cookie header in the response header of any network request. diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp index a9d65607ec0c..ddbff5207543 100644 --- a/netwerk/protocol/http/nsHttpChannel.cpp +++ b/netwerk/protocol/http/nsHttpChannel.cpp @@ -756,6 +756,13 @@ nsHttpChannel::DoNotifyListenerCleanup() CleanRedirectCacheChainIfNecessary(); } +void +nsHttpChannel::ReleaseListeners() +{ + HttpBaseChannel::ReleaseListeners(); + mChannelClassifier = nullptr; +} + void nsHttpChannel::HandleAsyncRedirect() { @@ -6099,6 +6106,19 @@ InitLocalBlockListXpcCallback::OnClassifyComplete(nsresult /*aErrorCode*/, } // end of unnamed namespace/ +already_AddRefed +nsHttpChannel::GetOrCreateChannelClassifier() +{ + if (!mChannelClassifier) { + mChannelClassifier = new nsChannelClassifier(this); + LOG(("nsHttpChannel [%p] created nsChannelClassifier [%p]\n", + this, mChannelClassifier.get())); + } + + RefPtr classifier = mChannelClassifier; + return classifier.forget(); +} + bool nsHttpChannel::InitLocalBlockList(const InitLocalBlockListCallback& aCallback) { @@ -6110,7 +6130,8 @@ nsHttpChannel::InitLocalBlockList(const InitLocalBlockListCallback& aCallback) // Check to see if this principal exists on local blocklists. nsCOMPtr classifier(services::GetURIClassifier()); - RefPtr channelClassifier = new nsChannelClassifier(this); + RefPtr channelClassifier = + GetOrCreateChannelClassifier(); bool tpEnabled = false; channelClassifier->ShouldEnableTrackingProtection(&tpEnabled); if (!classifier || !tpEnabled) { @@ -6476,7 +6497,8 @@ nsHttpChannel::BeginConnectActual() // been called, after optionally cancelling the channel once we have a // remote verdict. We call a concrete class instead of an nsI* that might // be overridden. - RefPtr channelClassifier = new nsChannelClassifier(this); + RefPtr channelClassifier = + GetOrCreateChannelClassifier(); LOG(("nsHttpChannel::Starting nsChannelClassifier %p [this=%p]", channelClassifier.get(), this)); channelClassifier->Start(); diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h index 1e382a7c17ab..45e1ec030ee8 100644 --- a/netwerk/protocol/http/nsHttpChannel.h +++ b/netwerk/protocol/http/nsHttpChannel.h @@ -40,6 +40,7 @@ class nsISSLStatus; namespace mozilla { namespace net { +class nsChannelClassifier; class Http2PushedStream; class HttpChannelSecurityWarningReporter @@ -506,6 +507,8 @@ private: void SetDoNotTrack(); + already_AddRefed GetOrCreateChannelClassifier(); + private: // this section is for main-thread-only object // all the references need to be proxy released on main thread. @@ -516,6 +519,13 @@ private: nsCOMPtr mRedirectChannel; nsCOMPtr mPreflightChannel; + // nsChannelClassifier checks this channel's URI against + // the URI classifier service. + // nsChannelClassifier will be invoked twice in InitLocalBlockList() and + // BeginConnectActual(), so save the nsChannelClassifier here to keep the + // state of whether tracking protection is enabled or not. + RefPtr mChannelClassifier; + // Proxy release all members above on main thread. void ReleaseMainThreadOnlyReferences(); @@ -702,6 +712,10 @@ private: protected: virtual void DoNotifyListenerCleanup() override; + // Override ReleaseListeners() because mChannelClassifier only exists + // in nsHttpChannel and it will be released in ReleaseListeners(). + virtual void ReleaseListeners() override; + private: // cache telemetry bool mDidReval; }; From 30314bebe8cc08a894c191c81830d8fe0fc9d300 Mon Sep 17 00:00:00 2001 From: Kershaw Chang Date: Tue, 6 Jun 2017 02:30:00 -0400 Subject: [PATCH 49/71] Bug 1360581 - Part 2: Do channel annotation a bit earlier. r=francois The current channel annotation is happened at nsChannelClassifier::OnClassifyComplete and this is too late because this channel might be already hit the network. This patch adds a new API CheckIsTrackerWithLocalTable in nsChannelClassifier to check if the URI is in local blacklist and whitelist before calling BeginConnectActual. Please note that whitelist will be checked only when TP is disabled. --HG-- extra : rebase_source : 0761f6c7631bc934691c8d018be88514568a3aa1 --- netwerk/base/nsChannelClassifier.cpp | 460 ++++++++++++++++++------ netwerk/base/nsChannelClassifier.h | 18 +- netwerk/protocol/http/nsHttpChannel.cpp | 25 +- 3 files changed, 359 insertions(+), 144 deletions(-) diff --git a/netwerk/base/nsChannelClassifier.cpp b/netwerk/base/nsChannelClassifier.cpp index f6163364c69a..8e8d7ce998bf 100644 --- a/netwerk/base/nsChannelClassifier.cpp +++ b/netwerk/base/nsChannelClassifier.cpp @@ -56,6 +56,7 @@ static LazyLogModule gChannelClassifierLog("nsChannelClassifier"); #define URLCLASSIFIER_SKIP_HOSTNAMES "urlclassifier.skipHostnames" #define URLCLASSIFIER_TRACKING_WHITELIST "urlclassifier.trackingWhitelistTable" +#define URLCLASSIFIER_TRACKING_TABLE "urlclassifier.trackingTable" // Put CachedPrefs in anonymous namespace to avoid any collision from outside of // this file. @@ -79,6 +80,8 @@ public: void SetTrackingWhiteList(const nsACString& aList) { mTrackingWhitelist = aList; } nsCString GetSkipHostnames() { return mSkipHostnames; } void SetSkipHostnames(const nsACString& aHostnames) { mSkipHostnames = aHostnames; } + void SetTrackingBlackList(const nsACString& aList) { mTrackingBlacklist = aList; } + nsCString GetTrackingBlackList() { return mTrackingBlacklist; } private: friend class StaticAutoPtr; @@ -97,6 +100,7 @@ private: nsCString mTrackingWhitelist; nsCString mSkipHostnames; + nsCString mTrackingBlacklist; static StaticAutoPtr sInstance; }; @@ -120,6 +124,9 @@ CachedPrefs::OnPrefsChange(const char* aPref, void* aClosure) } else if (!strcmp(aPref, URLCLASSIFIER_TRACKING_WHITELIST)) { nsCString trackingWhitelist = Preferences::GetCString(URLCLASSIFIER_TRACKING_WHITELIST); prefs->SetTrackingWhiteList(trackingWhitelist); + } else if (!strcmp(aPref, URLCLASSIFIER_TRACKING_TABLE)) { + nsCString trackingBlacklist = Preferences::GetCString(URLCLASSIFIER_TRACKING_TABLE); + prefs->SetTrackingBlackList(trackingBlacklist); } } @@ -136,6 +143,8 @@ CachedPrefs::Init() URLCLASSIFIER_SKIP_HOSTNAMES, this); Preferences::RegisterCallbackAndCall(CachedPrefs::OnPrefsChange, URLCLASSIFIER_TRACKING_WHITELIST, this); + Preferences::RegisterCallbackAndCall(CachedPrefs::OnPrefsChange, + URLCLASSIFIER_TRACKING_TABLE, this); } @@ -166,6 +175,36 @@ CachedPrefs::~CachedPrefs() } } // anonymous namespace +static void +SetIsTrackingResourceHelper(nsIChannel* aChannel) +{ + MOZ_ASSERT(aChannel); + + nsCOMPtr parentChannel; + NS_QueryNotificationCallbacks(aChannel, parentChannel); + if (parentChannel) { + // This channel is a parent-process proxy for a child process + // request. We should notify the child process as well. + parentChannel->NotifyTrackingResource(); + } + + RefPtr httpChannel = do_QueryObject(aChannel); + if (httpChannel) { + httpChannel->SetIsTrackingResource(); + } +} + +static void +LowerPriorityHelper(nsIChannel* aChannel) +{ + MOZ_ASSERT(aChannel); + + nsCOMPtr p = do_QueryInterface(aChannel); + if (p) { + p->SetPriority(nsISupportsPriority::PRIORITY_LOWEST); + } +} + NS_IMPL_ISUPPORTS(nsChannelClassifier, nsIURIClassifierCallback, nsIObserver) @@ -182,6 +221,11 @@ nsChannelClassifier::nsChannelClassifier(nsIChannel *aChannel) nsresult nsChannelClassifier::ShouldEnableTrackingProtection(bool *result) { + if (mTrackingProtectionEnabled) { + *result = mTrackingProtectionEnabled.value(); + return NS_OK; + } + nsresult rv = ShouldEnableTrackingProtectionInternal(mChannel, result); mTrackingProtectionEnabled = Some(*result); return rv; @@ -496,11 +540,8 @@ nsChannelClassifier::StartInternal() bool expectCallback; bool trackingProtectionEnabled = false; - if (mTrackingProtectionEnabled.isNothing()) { - (void)ShouldEnableTrackingProtection(&trackingProtectionEnabled); - } else { - trackingProtectionEnabled = mTrackingProtectionEnabled.value(); - } + rv = ShouldEnableTrackingProtection(&trackingProtectionEnabled); + NS_ENSURE_SUCCESS(rv, rv); if (LOG_ENABLED()) { nsCOMPtr principalURI; @@ -512,8 +553,7 @@ nsChannelClassifier::StartInternal() // The classify is running in parent process, no need to give a valid event // target rv = uriClassifier->Classify(principal, nullptr, - CachedPrefs::GetInstance()->IsAnnotateChannelEnabled() || - trackingProtectionEnabled, + trackingProtectionEnabled, this, &expectCallback); if (NS_FAILED(rv)) { return rv; @@ -770,29 +810,68 @@ nsChannelClassifier::SetBlockedContent(nsIChannel *channel, namespace { -class IsTrackerWhitelistedCallback final : public nsIURIClassifierCallback { +// The purpose of this class is only for implementing all nsISupports methods. +// This is a workaround for template derived class. +class URIClassifierCallbackBase : public nsIURIClassifierCallback { public: - explicit IsTrackerWhitelistedCallback(nsChannelClassifier* aClosure, + URIClassifierCallbackBase() = default; + + NS_DECL_THREADSAFE_ISUPPORTS + +protected: + virtual ~URIClassifierCallbackBase() = default; +}; + +NS_IMPL_ISUPPORTS(URIClassifierCallbackBase, nsIURIClassifierCallback) + +// A template class for reusing the code. +// OnClassifyCompleteInternal will be called to pass the result. +template +class IsTrackerWhitelistedCallback final : public URIClassifierCallbackBase { +public: + explicit IsTrackerWhitelistedCallback(T* aClosure, const nsACString& aList, const nsACString& aProvider, const nsACString& aPrefix, - const nsACString& aWhitelistEntry) + nsIURI* aWhitelistURI) : mClosure(aClosure) - , mWhitelistEntry(aWhitelistEntry) + , mWhitelistURI(aWhitelistURI) , mList(aList) , mProvider(aProvider) , mPrefix(aPrefix) { } - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIURICLASSIFIERCALLBACK + NS_IMETHOD OnClassifyComplete(nsresult /*aErrorCode*/, + const nsACString& aLists, // Only this matters. + const nsACString& /*aProvider*/, + const nsACString& /*aPrefix*/) override + { + nsresult rv; + if (aLists.IsEmpty()) { + if (LOG_ENABLED()) { + MOZ_ASSERT(mWhitelistURI); + + LOG(("nsChannelClassifier[%p]: %s is not in the whitelist", + mClosure.get(), mWhitelistURI->GetSpecOrDefault().get())); + } + rv = NS_ERROR_TRACKING_URI; + } else { + LOG(("nsChannelClassifier[%p]:OnClassifyComplete tracker found " + "in whitelist so we won't block it", mClosure.get())); + rv = NS_OK; + } + + rv = mClosure->OnClassifyCompleteInternal(rv, mList, mProvider, mPrefix); + mClosure = nullptr; + return rv; + } private: ~IsTrackerWhitelistedCallback() = default; - RefPtr mClosure; - nsCString mWhitelistEntry; + RefPtr mClosure; + nsCOMPtr mWhitelistURI; // The following 3 values are for forwarding the callback. nsCString mList; @@ -800,36 +879,192 @@ private: nsCString mPrefix; }; -NS_IMPL_ISUPPORTS(IsTrackerWhitelistedCallback, nsIURIClassifierCallback) - - -/*virtual*/ nsresult -IsTrackerWhitelistedCallback::OnClassifyComplete(nsresult /*aErrorCode*/, - const nsACString& aLists, // Only this matters. - const nsACString& /*aProvider*/, - const nsACString& /*aPrefix*/) -{ - nsresult rv; - if (aLists.IsEmpty()) { - LOG(("nsChannelClassifier[%p]: %s is not in the whitelist", - mClosure.get(), mWhitelistEntry.get())); - rv = NS_ERROR_TRACKING_URI; - } else { - LOG(("nsChannelClassifier[%p]:OnClassifyComplete tracker found " - "in whitelist so we won't block it", mClosure.get())); - rv = NS_OK; +// This class is designed to get the results of checking blacklist and whitelist. +// 1. The result of local blacklist will be sent back via +// OnClassifyComplete, which is called by nsIURIClassifier service. +// 2. The result of local whitelist is got via OnClassifyCompleteInternal, +// which is called by IsTrackerWhitelistedCallback::OnClassifyComplete. +class IsTrackerBlacklistedCallback final : public nsIURIClassifierCallback { +public: + explicit IsTrackerBlacklistedCallback(nsChannelClassifier* aChannelClassifier, + nsIURIClassifierCallback* aCallback) + : mChannelClassifier(aChannelClassifier) + , mChannelCallback(aCallback) + { } - return mClosure->OnClassifyCompleteInternal(rv, mList, mProvider, mPrefix); + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIURICLASSIFIERCALLBACK + + nsresult OnClassifyCompleteInternal(nsresult aErrorCode, + const nsACString& aList, + const nsACString& aProvider, + const nsACString& aPrefix); + +private: + ~IsTrackerBlacklistedCallback() = default; + + RefPtr mChannelClassifier; + nsCOMPtr mChannelCallback; +}; + +NS_IMPL_ISUPPORTS(IsTrackerBlacklistedCallback, nsIURIClassifierCallback) + +/*virtual*/ nsresult +IsTrackerBlacklistedCallback::OnClassifyComplete(nsresult aErrorCode, + const nsACString& aLists, + const nsACString& aProvider, + const nsACString& aPrefix) +{ + nsresult status = aLists.IsEmpty() ? NS_OK : NS_ERROR_TRACKING_URI; + bool tpEnabled = false; + mChannelClassifier->ShouldEnableTrackingProtection(&tpEnabled); + + LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete " + " status=0x%" PRIx32 ", tpEnabled=%d", + mChannelClassifier.get(), static_cast(status), tpEnabled)); + + // If this is not in local blacklist or tracking protection is enabled, + // directly send the status back. + // The whitelist will be checked at nsChannelClassifier::OnClassifyComplete + // when tracking protection is enabled, so we can just return here. + if (NS_SUCCEEDED(status) || tpEnabled) { + return mChannelCallback->OnClassifyComplete( + status, aLists, aProvider, aPrefix); + } + + nsCOMPtr channel = mChannelClassifier->GetChannel(); + if (LOG_ENABLED()) { + nsCOMPtr uri; + channel->GetURI(getter_AddRefs(uri)); + LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete channel [%p] " + "uri=%s, is in blacklist. Start checking whitelist.", + mChannelClassifier.get(), channel.get(), + uri->GetSpecOrDefault().get())); + } + + nsCOMPtr whitelistURI = mChannelClassifier->CreateWhiteListURI(); + nsCOMPtr callback = + new IsTrackerWhitelistedCallback( + this, aLists, aProvider, aPrefix, whitelistURI); + + // If IsTrackerWhitelisted has failed, it means the uri is not in whitelist. + if (NS_FAILED(mChannelClassifier->IsTrackerWhitelisted(whitelistURI, callback))) { + LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete channel [%p] " + "IsTrackerWhitelisted has failed.", + mChannelClassifier.get(), channel.get())); + + MOZ_ASSERT(CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()); + + SetIsTrackingResourceHelper(channel); + if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { + LowerPriorityHelper(channel); + } + + // We don't want to disable speculative connection when tracking protection + // is disabled. So, change the status to NS_OK. + status = NS_OK; + + return mChannelCallback->OnClassifyComplete( + status, aLists, aProvider, aPrefix); + } + + // OnClassifyCompleteInternal() will be called once we know + // if the tracker is whitelisted. + return NS_OK; +} + +nsresult +IsTrackerBlacklistedCallback::OnClassifyCompleteInternal(nsresult aErrorCode, + const nsACString& aLists, + const nsACString& aProvider, + const nsACString& aPrefix) +{ + LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyCompleteInternal" + " status=0x%" PRIx32, + mChannelClassifier.get(), static_cast(aErrorCode))); + + if (NS_SUCCEEDED(aErrorCode)) { + return mChannelCallback->OnClassifyComplete( + aErrorCode, aLists, aProvider, aPrefix); + } + + MOZ_ASSERT(CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()); + MOZ_ASSERT(aErrorCode == NS_ERROR_TRACKING_URI); + + nsCOMPtr channel = mChannelClassifier->GetChannel(); + if (LOG_ENABLED()) { + nsCOMPtr uri; + channel->GetURI(getter_AddRefs(uri)); + LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyCompleteInternal " + "channel [%p] uri=%s, is not in whitelist", + mChannelClassifier.get(), channel.get(), + uri->GetSpecOrDefault().get())); + } + + SetIsTrackingResourceHelper(channel); + if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { + LowerPriorityHelper(channel); + } + + return mChannelCallback->OnClassifyComplete( + NS_OK, aLists, aProvider, aPrefix); } } // end of unnamed namespace/ -nsresult -nsChannelClassifier::IsTrackerWhitelisted(const nsACString& aList, - const nsACString& aProvider, - const nsACString& aPrefix) +already_AddRefed +nsChannelClassifier::CreateWhiteListURI() const { + nsresult rv; + nsCOMPtr chan = do_QueryInterface(mChannel, &rv); + if (!chan) { + return nullptr; + } + + nsCOMPtr topWinURI; + rv = chan->GetTopWindowURI(getter_AddRefs(topWinURI)); + NS_ENSURE_SUCCESS(rv, nullptr); + if (!topWinURI) { + LOG(("nsChannelClassifier[%p]: No window URI", this)); + return nullptr; + } + + nsCOMPtr securityManager = + do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, nullptr); + nsCOMPtr chanPrincipal; + rv = securityManager->GetChannelURIPrincipal(mChannel, + getter_AddRefs(chanPrincipal)); + if (NS_FAILED(rv)) { + return nullptr; + } + + // Craft a whitelist URL like "toplevel.page/?resource=third.party.domain" + nsAutoCString pageHostname, resourceDomain; + rv = topWinURI->GetHost(pageHostname); + NS_ENSURE_SUCCESS(rv, nullptr); + rv = chanPrincipal->GetBaseDomain(resourceDomain); + NS_ENSURE_SUCCESS(rv, nullptr); + nsAutoCString whitelistEntry = NS_LITERAL_CSTRING("http://") + + pageHostname + NS_LITERAL_CSTRING("/?resource=") + resourceDomain; + LOG(("nsChannelClassifier[%p]: Looking for %s in the whitelist", + this, whitelistEntry.get())); + + nsCOMPtr whitelistURI; + rv = NS_NewURI(getter_AddRefs(whitelistURI), whitelistEntry); + + return NS_SUCCEEDED(rv) ? whitelistURI.forget() : nullptr; +} + +nsresult +nsChannelClassifier::IsTrackerWhitelisted(nsIURI* aWhiteListURI, + nsIURIClassifierCallback *aCallback) +{ + if (!aCallback || !aWhiteListURI) { + return NS_ERROR_INVALID_ARG; + } + nsresult rv; nsCOMPtr uriClassifier = do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv); @@ -842,45 +1077,7 @@ nsChannelClassifier::IsTrackerWhitelisted(const nsACString& aList, return NS_ERROR_TRACKING_URI; } - nsCOMPtr chan = do_QueryInterface(mChannel, &rv); - NS_ENSURE_SUCCESS(rv, rv); - - nsCOMPtr topWinURI; - rv = chan->GetTopWindowURI(getter_AddRefs(topWinURI)); - NS_ENSURE_SUCCESS(rv, rv); - if (!topWinURI) { - LOG(("nsChannelClassifier[%p]: No window URI", this)); - return NS_ERROR_TRACKING_URI; - } - - nsCOMPtr securityManager = - do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr chanPrincipal; - rv = securityManager->GetChannelURIPrincipal(mChannel, - getter_AddRefs(chanPrincipal)); - NS_ENSURE_SUCCESS(rv, rv); - - // Craft a whitelist URL like "toplevel.page/?resource=third.party.domain" - nsAutoCString pageHostname, resourceDomain; - rv = topWinURI->GetHost(pageHostname); - NS_ENSURE_SUCCESS(rv, rv); - rv = chanPrincipal->GetBaseDomain(resourceDomain); - NS_ENSURE_SUCCESS(rv, rv); - nsAutoCString whitelistEntry = NS_LITERAL_CSTRING("http://") + - pageHostname + NS_LITERAL_CSTRING("/?resource=") + resourceDomain; - LOG(("nsChannelClassifier[%p]: Looking for %s in the whitelist", - this, whitelistEntry.get())); - - nsCOMPtr whitelistURI; - rv = NS_NewURI(getter_AddRefs(whitelistURI), whitelistEntry); - NS_ENSURE_SUCCESS(rv, rv); - - RefPtr cb = - new IsTrackerWhitelistedCallback(this, aList, aProvider, aPrefix, - whitelistEntry); - - return uriClassifier->AsyncClassifyLocalWithTables(whitelistURI, trackingWhitelist, cb); + return uriClassifier->AsyncClassifyLocalWithTables(aWhiteListURI, trackingWhitelist, aCallback); } NS_IMETHODIMP @@ -892,11 +1089,17 @@ nsChannelClassifier::OnClassifyComplete(nsresult aErrorCode, // Should only be called in the parent process. MOZ_ASSERT(XRE_IsParentProcess()); - if (aErrorCode == NS_ERROR_TRACKING_URI && - NS_SUCCEEDED(IsTrackerWhitelisted(aList, aProvider, aPrefix))) { - // OnClassifyCompleteInternal() will be called once we know - // if the tracker is whitelisted. - return NS_OK; + if (aErrorCode == NS_ERROR_TRACKING_URI) { + nsCOMPtr whitelistURI = CreateWhiteListURI(); + nsCOMPtr callback = + new IsTrackerWhitelistedCallback( + this, aList, aProvider, aPrefix, whitelistURI); + if (whitelistURI && + NS_SUCCEEDED(IsTrackerWhitelisted(whitelistURI, callback))) { + // OnClassifyCompleteInternal() will be called once we know + // if the tracker is whitelisted. + return NS_OK; + } } return OnClassifyCompleteInternal(aErrorCode, aList, aProvider, aPrefix); @@ -917,43 +1120,6 @@ nsChannelClassifier::OnClassifyCompleteInternal(nsresult aErrorCode, } MarkEntryClassified(aErrorCode); - // The value of |mTrackingProtectionEnabled| should be assigned at - // |ShouldEnableTrackingProtection| before. - MOZ_ASSERT(mTrackingProtectionEnabled, "Should contain a value."); - - if (aErrorCode == NS_ERROR_TRACKING_URI && - !mTrackingProtectionEnabled.valueOr(false)) { - if (CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()) { - nsCOMPtr parentChannel; - NS_QueryNotificationCallbacks(mChannel, parentChannel); - if (parentChannel) { - // This channel is a parent-process proxy for a child process - // request. We should notify the child process as well. - parentChannel->NotifyTrackingResource(); - } - RefPtr httpChannel = do_QueryObject(mChannel); - if (httpChannel) { - httpChannel->SetIsTrackingResource(); - } - } - - if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { - if (LOG_ENABLED()) { - nsCOMPtr uri; - mChannel->GetURI(getter_AddRefs(uri)); - LOG(("nsChannelClassifier[%p]: lower the priority of channel %p" - ", since %s is a tracker", this, mChannel.get(), - uri->GetSpecOrDefault().get())); - } - nsCOMPtr p = do_QueryInterface(mChannel); - if (p) { - p->SetPriority(nsISupportsPriority::PRIORITY_LOWEST); - } - } - - aErrorCode = NS_OK; - } - if (NS_FAILED(aErrorCode)) { if (LOG_ENABLED()) { nsCOMPtr uri; @@ -982,6 +1148,61 @@ nsChannelClassifier::OnClassifyCompleteInternal(nsresult aErrorCode, return NS_OK; } +nsresult +nsChannelClassifier::CheckIsTrackerWithLocalTable(nsIURIClassifierCallback* aCallback) +{ + nsresult rv; + + if (!aCallback) { + return NS_ERROR_INVALID_ARG; + } + + bool trackingProtectionEnabled = false; + rv = ShouldEnableTrackingProtection(&trackingProtectionEnabled); + if (NS_FAILED(rv)) { + return rv; + } + + if (!trackingProtectionEnabled && + !CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()) { + return NS_ERROR_FAILURE; + } + + nsCOMPtr uriClassifier = + do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv); + if (NS_FAILED(rv)) { + return rv; + } + + nsCOMPtr uri; + rv = mChannel->GetURI(getter_AddRefs(uri)); + if (NS_FAILED(rv) || !uri) { + return rv; + } + + nsCString trackingBlacklist = + CachedPrefs::GetInstance()->GetTrackingBlackList(); + if (trackingBlacklist.IsEmpty()) { + LOG(("nsChannelClassifier[%p]:CheckIsTrackerWithLocalTable blacklist is empty", + this)); + return NS_ERROR_FAILURE; + } + + nsCOMPtr callback = + new IsTrackerBlacklistedCallback(this, aCallback); + + return uriClassifier->AsyncClassifyLocalWithTables(uri, + trackingBlacklist, + callback); +} + +already_AddRefed +nsChannelClassifier::GetChannel() +{ + nsCOMPtr channel = mChannel; + return channel.forget(); +} + void nsChannelClassifier::AddShutdownObserver() { @@ -1014,6 +1235,7 @@ nsChannelClassifier::Observe(nsISupports *aSubject, const char *aTopic, mSuspendedChannel = false; mChannel->Cancel(NS_ERROR_ABORT); mChannel->Resume(); + mChannel = nullptr; } RemoveShutdownObserver(); diff --git a/netwerk/base/nsChannelClassifier.h b/netwerk/base/nsChannelClassifier.h index 221c6d7e5005..1d0caee5a533 100644 --- a/netwerk/base/nsChannelClassifier.h +++ b/netwerk/base/nsChannelClassifier.h @@ -34,6 +34,10 @@ public: // Whether or not tracking protection should be enabled on this channel. nsresult ShouldEnableTrackingProtection(bool *result); + // Helper function to check a tracking URI against the whitelist + nsresult IsTrackerWhitelisted(nsIURI* aWhiteListURI, + nsIURIClassifierCallback* aCallback); + // Called once we actually classified an URI. (An additional whitelist // check will be done if the classifier reports the URI is a tracker.) nsresult OnClassifyCompleteInternal(nsresult aErrorCode, @@ -41,6 +45,16 @@ public: const nsACString& aProvider, const nsACString& aPrefix); + // Check a tracking URI against the local blacklist and whitelist. + // Returning NS_OK means the check will be processed + // and the caller should wait for the result. + nsresult CheckIsTrackerWithLocalTable(nsIURIClassifierCallback* aCallback); + + // Helper function to create a whitelist URL. + already_AddRefed CreateWhiteListURI() const; + + already_AddRefed GetChannel(); + private: // True if the channel is on the allow list. bool mIsAllowListed; @@ -57,10 +71,6 @@ private: // Start is called. Returns NS_OK if and only if we will get a callback // from the classifier service. nsresult StartInternal(); - // Helper function to check a tracking URI against the whitelist - nsresult IsTrackerWhitelisted(const nsACString& aList, - const nsACString& aProvider, - const nsACString& aPrefix); // Helper function to check a URI against the hostname whitelist bool IsHostnameWhitelisted(nsIURI *aUri, const nsACString &aWhitelisted); // Checks that the channel was loaded by the URI currently loaded in aDoc diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp index ddbff5207543..bca5daed060b 100644 --- a/netwerk/protocol/http/nsHttpChannel.cpp +++ b/netwerk/protocol/http/nsHttpChannel.cpp @@ -6094,12 +6094,12 @@ private: NS_IMPL_ISUPPORTS(InitLocalBlockListXpcCallback, nsIURIClassifierCallback) /*virtual*/ nsresult -InitLocalBlockListXpcCallback::OnClassifyComplete(nsresult /*aErrorCode*/, - const nsACString& aLists, // Only this matters. +InitLocalBlockListXpcCallback::OnClassifyComplete(nsresult aErrorCode, // Only this matters. + const nsACString& /*aLists*/, const nsACString& /*aProvider*/, const nsACString& /*aPrefix*/) { - bool localBlockList = !aLists.IsEmpty(); + bool localBlockList = aErrorCode == NS_ERROR_TRACKING_URI; mCallback(localBlockList); return NS_OK; } @@ -6129,34 +6129,17 @@ nsHttpChannel::InitLocalBlockList(const InitLocalBlockListCallback& aCallback) } // Check to see if this principal exists on local blocklists. - nsCOMPtr classifier(services::GetURIClassifier()); RefPtr channelClassifier = GetOrCreateChannelClassifier(); - bool tpEnabled = false; - channelClassifier->ShouldEnableTrackingProtection(&tpEnabled); - if (!classifier || !tpEnabled) { - return false; - } // We skip speculative connections by setting mLocalBlocklist only // when tracking protection is enabled. Though we could do this for // both phishing and malware, it is not necessary for correctness, // since no network events will be received while the // nsChannelClassifier is in progress. See bug 1122691. - nsCOMPtr uri; - nsresult rv = GetURI(getter_AddRefs(uri)); - if (NS_FAILED(rv) || !uri) { - return false; - } - - nsAutoCString tables; - Preferences::GetCString("urlclassifier.trackingTable", &tables); - nsTArray results; - RefPtr xpcCallback = new InitLocalBlockListXpcCallback(aCallback); - rv = classifier->AsyncClassifyLocalWithTables(uri, tables, xpcCallback); - if (NS_FAILED(rv)) { + if (NS_FAILED(channelClassifier->CheckIsTrackerWithLocalTable(xpcCallback))) { return false; } From 9d623a021aa095e988a2a5a47f261afaefcb880a Mon Sep 17 00:00:00 2001 From: Harald Kirschner Date: Wed, 24 May 2017 15:06:14 -0700 Subject: [PATCH 50/71] Bug 1367580 - Add quantum-foxfooding@mozilla.com to extensions.geckoProfiler.acceptedExtensionIds. r=andym MozReview-Commit-ID: L6d3ei5oedV --HG-- extra : transplant_source : %1Bd%3A%D4%AE%BE%98%AB4%05S%04%DC%FCv%ED%CB%D4%2C%C4 --- browser/app/profile/firefox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js index ff1781dfe122..be6facbf3f97 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js @@ -72,7 +72,7 @@ pref("extensions.startupScanScopes", 0); // This is where the profiler WebExtension API will look for breakpad symbols. // NOTE: deliberately http right now since https://symbols.mozilla.org is not supported. pref("extensions.geckoProfiler.symbols.url", "http://symbols.mozilla.org/"); -pref("extensions.geckoProfiler.acceptedExtensionIds", "geckoprofiler@mozilla.com"); +pref("extensions.geckoProfiler.acceptedExtensionIds", "geckoprofiler@mozilla.com,quantum-foxfooding@mozilla.com"); #if defined(XP_LINUX) || defined (XP_MACOSX) pref("extensions.geckoProfiler.getSymbolRules", "localBreakpad,remoteBreakpad,nm"); #else // defined(XP_WIN) From 6663e29a55c221370c59f31a908b1740220e3659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Fri, 2 Jun 2017 16:11:42 +0200 Subject: [PATCH 51/71] Bug 1369680 - Use HasOwnProperty when resolving lazy properties to avoid triggering proxy traps in the proto-chain. r=jandem --- js/src/jsfun.cpp | 6 +- .../ecma_6/Proxy/proxy-proto-lazy-props.js | 63 +++++++++++++++++++ js/src/vm/ArgumentsObject.cpp | 16 ++--- 3 files changed, 74 insertions(+), 11 deletions(-) create mode 100644 js/src/tests/ecma_6/Proxy/proxy-proto-lazy-props.js diff --git a/js/src/jsfun.cpp b/js/src/jsfun.cpp index eb601d9eeb4c..9f330bd64768 100644 --- a/js/src/jsfun.cpp +++ b/js/src/jsfun.cpp @@ -77,16 +77,16 @@ fun_enumerate(JSContext* cx, HandleObject obj) if (!obj->isBoundFunction() && !obj->as().isArrow()) { id = NameToId(cx->names().prototype); - if (!HasProperty(cx, obj, id, &found)) + if (!HasOwnProperty(cx, obj, id, &found)) return false; } id = NameToId(cx->names().length); - if (!HasProperty(cx, obj, id, &found)) + if (!HasOwnProperty(cx, obj, id, &found)) return false; id = NameToId(cx->names().name); - if (!HasProperty(cx, obj, id, &found)) + if (!HasOwnProperty(cx, obj, id, &found)) return false; return true; diff --git a/js/src/tests/ecma_6/Proxy/proxy-proto-lazy-props.js b/js/src/tests/ecma_6/Proxy/proxy-proto-lazy-props.js new file mode 100644 index 000000000000..fba89eecd500 --- /dev/null +++ b/js/src/tests/ecma_6/Proxy/proxy-proto-lazy-props.js @@ -0,0 +1,63 @@ +function makeProxyPrototype(target) { + return Object.setPrototypeOf(target, new Proxy({}, new Proxy({ + getPrototypeOf() { + return null; + }, + ownKeys() { + return []; + }, + get(t, pk, r) { + // Handle the non-standard __iterator__ hook. + if (pk !== "__iterator__") + throw new Error("Unexpected [[Get]]: " + String(pk)); + } + }, { + get(t, pk, r) { + if (pk in t) + return Reflect.get(t, pk, r); + throw new Error("Unexpected trap called: " + pk); + } + }))); +} + +function enumerateMappedArgs(x) { + var a = makeProxyPrototype(arguments); + + // Delete all lazy properties and ensure no [[Has]] trap is called for them + // on the prototype chain. + delete a.length; + delete a.callee; + delete a[Symbol.iterator]; + delete a[0]; + + for (var k in a); +} +enumerateMappedArgs(0); + +function enumerateUnmappedArgs(x) { + "use strict"; + var a = makeProxyPrototype(arguments); + + delete a.length; + // delete a.callee; // .callee is non-configurable + delete a[Symbol.iterator]; + delete a[0]; + + for (var k in a); +} +enumerateUnmappedArgs(0); + +function enumerateFunction() { + var f = makeProxyPrototype(function named() {}); + + // delete f.prototype; // .prototype is non-configurable + delete f.length; + delete f.name; + + for (var k in f); +} +enumerateFunction(); + + +if (typeof reportCompare === "function") + reportCompare(0, 0); diff --git a/js/src/vm/ArgumentsObject.cpp b/js/src/vm/ArgumentsObject.cpp index 7fdf5b60346a..5a770bbd9fb6 100644 --- a/js/src/vm/ArgumentsObject.cpp +++ b/js/src/vm/ArgumentsObject.cpp @@ -613,20 +613,20 @@ MappedArgumentsObject::obj_enumerate(JSContext* cx, HandleObject obj) // Trigger reflection. id = NameToId(cx->names().length); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; id = NameToId(cx->names().callee); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; id = SYMBOL_TO_JSID(cx->wellKnownSymbols().iterator); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; for (unsigned i = 0; i < argsobj->initialLength(); i++) { id = INT_TO_JSID(i); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; } @@ -803,20 +803,20 @@ UnmappedArgumentsObject::obj_enumerate(JSContext* cx, HandleObject obj) // Trigger reflection. id = NameToId(cx->names().length); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; id = NameToId(cx->names().callee); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; id = SYMBOL_TO_JSID(cx->wellKnownSymbols().iterator); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; for (unsigned i = 0; i < argsobj->initialLength(); i++) { id = INT_TO_JSID(i); - if (!HasProperty(cx, argsobj, id, &found)) + if (!HasOwnProperty(cx, argsobj, id, &found)) return false; } From 14cefed850cf93dad0a75abaf061d283b4c96173 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Fri, 2 Jun 2017 17:41:11 +0200 Subject: [PATCH 52/71] Bug 1369762 - Don't atomize empty function names when retrieving the unresolved name of a bound function. r=till --- js/src/jsfun.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/js/src/jsfun.cpp b/js/src/jsfun.cpp index 9f330bd64768..02cf001f7243 100644 --- a/js/src/jsfun.cpp +++ b/js/src/jsfun.cpp @@ -1394,13 +1394,18 @@ JSFunction::getUnresolvedName(JSContext* cx, HandleFunction fun, MutableHandleAt // Bound functions are never unnamed. MOZ_ASSERT(name); - StringBuffer sb(cx); - if (!sb.append(cx->names().boundWithSpace) || !sb.append(name)) - return false; + JSAtom* boundName; + if (name->length() > 0) { + StringBuffer sb(cx); + if (!sb.append(cx->names().boundWithSpace) || !sb.append(name)) + return false; - JSAtom* boundName = sb.finishAtom(); - if (!boundName) - return false; + boundName = sb.finishAtom(); + if (!boundName) + return false; + } else { + boundName = cx->names().boundWithSpace; + } v.set(boundName); return true; From ef1b60271839175510dd5c94cf66c313f2585c33 Mon Sep 17 00:00:00 2001 From: Ekanan Ketunuti Date: Tue, 6 Jun 2017 18:20:58 +0700 Subject: [PATCH 53/71] Bug 1369786 - Remove drag space at the start of the tab strip in maximized windows. r=dao The drag space at the start of the tab strip is meant to appear in non-maximized windows but not in maximized ones. --- browser/themes/shared/browser.inc.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/themes/shared/browser.inc.css b/browser/themes/shared/browser.inc.css index 8cf516b2caea..696a72db5bdd 100644 --- a/browser/themes/shared/browser.inc.css +++ b/browser/themes/shared/browser.inc.css @@ -6,11 +6,11 @@ %ifdef CAN_DRAW_IN_TITLEBAR /* Add space for dragging the window */ %ifdef MENUBAR_CAN_AUTOHIDE -:root[tabsintitlebar] #toolbar-menubar[autohide=true] ~ #TabsToolbar { +:root[tabsintitlebar][sizemode=normal] #toolbar-menubar[autohide=true] ~ #TabsToolbar { padding-inline-start: 40px; } %else -:root[tabsintitlebar] #TabsToolbar { +:root[tabsintitlebar][sizemode=normal] #TabsToolbar { padding-inline-start: 40px; } %endif From 0e26ff6ffa4560e4363e21a5a6e871386e8cb188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Mon, 5 Jun 2017 13:27:36 +0200 Subject: [PATCH 54/71] Bug 1370194 - Prefer to use Array objects when performing array operations in Intl self-hosted code. r=till --- js/src/builtin/Intl.js | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/js/src/builtin/Intl.js b/js/src/builtin/Intl.js index 3251db98b69f..f4ffdc608226 100644 --- a/js/src/builtin/Intl.js +++ b/js/src/builtin/Intl.js @@ -436,18 +436,24 @@ function CanonicalizeLanguageTag(locale) { subtags[i] = subtag; i++; } + + // Directly return when the language tag doesn't contain any extension or + // private use sub-tags. + if (i === subtags.length) + return callFunction(std_Array_join, subtags, "-"); + var normal = callFunction(std_Array_join, callFunction(std_Array_slice, subtags, 0, i), "-"); // Extension sequences are sorted by their singleton characters. // "u-ca-chinese-t-zh-latn" -> "t-zh-latn-u-ca-chinese" - var extensions = new List(); + var extensions = []; while (i < subtags.length && subtags[i] !== "x") { var extensionStart = i; i++; while (i < subtags.length && subtags[i].length > 1) i++; var extension = callFunction(std_Array_join, callFunction(std_Array_slice, subtags, extensionStart, i), "-"); - callFunction(std_Array_push, extensions, extension); + _DefineDataProperty(extensions, extensions.length, extension); } callFunction(std_Array_sort, extensions); @@ -806,10 +812,13 @@ function addSpecialMissingLanguageTags(availableLocales) { */ function CanonicalizeLocaleList(locales) { if (locales === undefined) - return new List(); - var seen = new List(); - if (typeof locales === "string") - locales = [locales]; + return []; + if (typeof locales === "string") { + if (!IsStructurallyValidLanguageTag(locales)) + ThrowRangeError(JSMSG_INVALID_LANGUAGE_TAG, locales); + return [CanonicalizeLanguageTag(locales)]; + } + var seen = []; var O = ToObject(locales); var len = ToLength(O.length); var k = 0; @@ -825,7 +834,7 @@ function CanonicalizeLocaleList(locales) { ThrowRangeError(JSMSG_INVALID_LANGUAGE_TAG, tag); tag = CanonicalizeLanguageTag(tag); if (callFunction(ArrayIndexOf, seen, tag) === -1) - callFunction(std_Array_push, seen, tag); + _DefineDataProperty(seen, seen.length, tag); } k++; } @@ -1181,7 +1190,7 @@ function ResolveLocale(availableLocales, requestedLocales, options, relevantExte function LookupSupportedLocales(availableLocales, requestedLocales) { // Steps 1-2. var len = requestedLocales.length; - var subset = new List(); + var subset = []; // Steps 3-4. var k = 0; @@ -1193,14 +1202,14 @@ function LookupSupportedLocales(availableLocales, requestedLocales) { // Step 4.c-d. var availableLocale = BestAvailableLocale(availableLocales, noExtensionsLocale); if (availableLocale !== undefined) - callFunction(std_Array_push, subset, locale); + _DefineDataProperty(subset, subset.length, locale); // Step 4.e. k++; } // Steps 5-6. - return callFunction(std_Array_slice, subset, 0); + return subset; } @@ -3438,16 +3447,8 @@ function Intl_PluralRules_resolvedOptions() { * ES2017 Intl draft rev 947aa9a0c853422824a0c9510d8f09be3eb416b9 */ function Intl_getCanonicalLocales(locales) { - // Step 1. - var localeList = CanonicalizeLocaleList(locales); - - // Step 2 (Inlined CreateArrayFromList). - var array = []; - - for (var n = 0, len = localeList.length; n < len; n++) - _DefineDataProperty(array, n, localeList[n]); - - return array; + // Steps 1-2. + return CanonicalizeLocaleList(locales); } /** From 1d80223f3db99ad66887edaabefc3cf557a55de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Bargull?= Date: Mon, 5 Jun 2017 13:49:29 +0200 Subject: [PATCH 55/71] Bug 1370195 - Use fewer array allocations when invoking bound functions with many arguments. r=till --- js/src/builtin/Function.js | 98 +++++++++++++++++++++++++++++--------- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/js/src/builtin/Function.js b/js/src/builtin/Function.js index 78f1fc29247f..e34b5bb3eb58 100644 --- a/js/src/builtin/Function.js +++ b/js/src/builtin/Function.js @@ -50,11 +50,20 @@ function FunctionBind(thisArg, ...boundArgs) { * construct helper functions. This avoids having to use rest parameters and * destructuring in the fast path. * + * Directly embedding the for-loop to combine bound and call arguments may + * inhibit inlining of the bound function, so we use a separate combiner + * function to perform this task. This combiner function is created lazily to + * ensure we only pay its construction cost when needed. + * * All bind_bindFunction{X} functions have the same signature to enable simple * reading out of closed-over state by debugging functions. */ function bind_bindFunction0(fun, thisArg, boundArgs) { return function bound() { + // Ensure we allocate a call-object slot for |boundArgs|, so the + // debugger can access this value. + if (false) void boundArgs; + var newTarget; if (_IsConstructing()) { newTarget = new.target; @@ -73,6 +82,9 @@ function bind_bindFunction0(fun, thisArg, boundArgs) { return constructContentFunction(fun, newTarget, SPREAD(arguments, 4)); case 5: return constructContentFunction(fun, newTarget, SPREAD(arguments, 5)); + default: + var args = FUN_APPLY(bind_mapArguments, null, arguments); + return bind_constructFunctionN(fun, newTarget, args); } } else { switch (arguments.length) { @@ -88,16 +100,21 @@ function bind_bindFunction0(fun, thisArg, boundArgs) { return callContentFunction(fun, thisArg, SPREAD(arguments, 4)); case 5: return callContentFunction(fun, thisArg, SPREAD(arguments, 5)); + default: + return FUN_APPLY(fun, thisArg, arguments); } } - var callArgs = FUN_APPLY(bind_mapArguments, null, arguments); - return bind_invokeFunctionN(fun, thisArg, newTarget, boundArgs, callArgs); }; } function bind_bindFunction1(fun, thisArg, boundArgs) { var bound1 = boundArgs[0]; + var combiner = null; return function bound() { + // Ensure we allocate a call-object slot for |boundArgs|, so the + // debugger can access this value. + if (false) void boundArgs; + var newTarget; if (_IsConstructing()) { newTarget = new.target; @@ -133,15 +150,34 @@ function bind_bindFunction1(fun, thisArg, boundArgs) { return callContentFunction(fun, thisArg, bound1, SPREAD(arguments, 5)); } } - var callArgs = FUN_APPLY(bind_mapArguments, null, arguments); - return bind_invokeFunctionN(fun, thisArg, newTarget, boundArgs, callArgs); + + if (combiner === null) { + combiner = function() { + var callArgsCount = arguments.length; + var args = std_Array(1 + callArgsCount); + _DefineDataProperty(args, 0, bound1); + for (var i = 0; i < callArgsCount; i++) + _DefineDataProperty(args, i + 1, arguments[i]); + return args; + }; + } + + var args = FUN_APPLY(combiner, null, arguments); + if (newTarget === undefined) + return bind_applyFunctionN(fun, thisArg, args); + return bind_constructFunctionN(fun, newTarget, args); }; } function bind_bindFunction2(fun, thisArg, boundArgs) { var bound1 = boundArgs[0]; var bound2 = boundArgs[1]; + var combiner = null; return function bound() { + // Ensure we allocate a call-object slot for |boundArgs|, so the + // debugger can access this value. + if (false) void boundArgs; + var newTarget; if (_IsConstructing()) { newTarget = new.target; @@ -177,13 +213,29 @@ function bind_bindFunction2(fun, thisArg, boundArgs) { return callContentFunction(fun, thisArg, bound1, bound2, SPREAD(arguments, 5)); } } - var callArgs = FUN_APPLY(bind_mapArguments, null, arguments); - return bind_invokeFunctionN(fun, thisArg, newTarget, boundArgs, callArgs); + + if (combiner === null) { + combiner = function() { + var callArgsCount = arguments.length; + var args = std_Array(2 + callArgsCount); + _DefineDataProperty(args, 0, bound1); + _DefineDataProperty(args, 1, bound2); + for (var i = 0; i < callArgsCount; i++) + _DefineDataProperty(args, i + 2, arguments[i]); + return args; + }; + } + + var args = FUN_APPLY(combiner, null, arguments); + if (newTarget === undefined) + return bind_applyFunctionN(fun, thisArg, args); + return bind_constructFunctionN(fun, newTarget, args); }; } function bind_bindFunctionN(fun, thisArg, boundArgs) { assert(boundArgs.length > 2, "Fast paths should be used for few-bound-args cases."); + var combiner = null; return function bound() { var newTarget; if (_IsConstructing()) { @@ -194,11 +246,26 @@ function bind_bindFunctionN(fun, thisArg, boundArgs) { if (arguments.length === 0) { if (newTarget !== undefined) return bind_constructFunctionN(fun, newTarget, boundArgs); - return bind_applyFunctionN(fun, thisArg, boundArgs); } - var callArgs = FUN_APPLY(bind_mapArguments, null, arguments); - return bind_invokeFunctionN(fun, thisArg, newTarget, boundArgs, callArgs); + + if (combiner === null) { + combiner = function() { + var boundArgsCount = boundArgs.length; + var callArgsCount = arguments.length; + var args = std_Array(boundArgsCount + callArgsCount); + for (var i = 0; i < boundArgsCount; i++) + _DefineDataProperty(args, i, boundArgs[i]); + for (var i = 0; i < callArgsCount; i++) + _DefineDataProperty(args, i + boundArgsCount, arguments[i]); + return args; + }; + } + + var args = FUN_APPLY(combiner, null, arguments); + if (newTarget !== undefined) + return bind_constructFunctionN(fun, newTarget, args); + return bind_applyFunctionN(fun, thisArg, args); }; } @@ -210,19 +277,6 @@ function bind_mapArguments() { return args; } -function bind_invokeFunctionN(fun, thisArg, newTarget, boundArgs, callArgs) { - var boundArgsCount = boundArgs.length; - var callArgsCount = callArgs.length; - var args = std_Array(boundArgsCount + callArgsCount); - for (var i = 0; i < boundArgsCount; i++) - _DefineDataProperty(args, i, boundArgs[i]); - for (var i = 0; i < callArgsCount; i++) - _DefineDataProperty(args, i + boundArgsCount, callArgs[i]); - if (newTarget !== undefined) - return bind_constructFunctionN(fun, newTarget, args); - return bind_applyFunctionN(fun, thisArg, args); -} - function bind_applyFunctionN(fun, thisArg, args) { switch (args.length) { case 0: From 7d937678f40b51f6a02d8ffa86ea690595a7f534 Mon Sep 17 00:00:00 2001 From: Martin Robinson Date: Tue, 6 Jun 2017 06:28:00 -0400 Subject: [PATCH 56/71] Bug 1365972 - Add initial WebRender support for nsDisplayFilter. r=rhunt, r=mattwoodrow --- gfx/layers/Layers.h | 7 +++ gfx/layers/LayersTypes.cpp | 38 ++++++++++++++++ gfx/layers/LayersTypes.h | 21 +++++++++ gfx/layers/moz.build | 1 + gfx/layers/wr/StackingContextHelper.cpp | 14 ++++-- gfx/layers/wr/StackingContextHelper.h | 6 ++- gfx/layers/wr/WebRenderCompositableHolder.cpp | 3 +- gfx/layers/wr/WebRenderContainerLayer.cpp | 7 ++- gfx/thebes/gfxPrefs.h | 1 + gfx/webrender_bindings/WebRenderAPI.cpp | 6 ++- gfx/webrender_bindings/WebRenderAPI.h | 3 +- gfx/webrender_bindings/WebRenderTypes.h | 33 ++++++++++++++ gfx/webrender_bindings/src/bindings.rs | 43 +++++++++++++++++-- .../webrender_ffi_generated.h | 28 +++++++++++- layout/painting/nsDisplayList.cpp | 31 ++++++++++++- modules/libpref/init/all.js | 1 + 16 files changed, 227 insertions(+), 16 deletions(-) create mode 100644 gfx/layers/LayersTypes.cpp diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index 392f436af8eb..db9d5cea726c 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -2250,6 +2250,12 @@ public: return mEventRegionsOverride; } + void SetFilterChain(nsTArray&& aFilterChain) { + mFilterChain = aFilterChain; + } + + nsTArray& GetFilterChain() { return mFilterChain; } + protected: friend class ReadbackProcessor; @@ -2336,6 +2342,7 @@ protected: // the intermediate surface. bool mChildrenChanged; EventRegionsOverride mEventRegionsOverride; + nsTArray mFilterChain; }; /** diff --git a/gfx/layers/LayersTypes.cpp b/gfx/layers/LayersTypes.cpp new file mode 100644 index 000000000000..76d8255a1dba --- /dev/null +++ b/gfx/layers/LayersTypes.cpp @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "LayersTypes.h" + +#include "nsStyleStruct.h" // for nsStyleFilter + +namespace mozilla { +namespace layers { + +CSSFilter ToCSSFilter(const nsStyleFilter& filter) +{ + switch (filter.GetType()) { + case NS_STYLE_FILTER_BRIGHTNESS: { + return { + CSSFilterType::BRIGHTNESS, + filter.GetFilterParameter().GetFactorOrPercentValue(), + }; + } + case NS_STYLE_FILTER_CONTRAST: { + return { + CSSFilterType::CONTRAST, + filter.GetFilterParameter().GetFactorOrPercentValue(), + }; + } + // All other filter types should be prevented by the code which converts + // display items into layers. + default: + MOZ_ASSERT_UNREACHABLE("Tried to convert an unsupported filter"); + return { CSSFilterType::CONTRAST, 0 }; + } +} + +} // namespace layers +} // namespace mozilla + diff --git a/gfx/layers/LayersTypes.h b/gfx/layers/LayersTypes.h index b1b21eb6e6fb..9a0108d982ea 100644 --- a/gfx/layers/LayersTypes.h +++ b/gfx/layers/LayersTypes.h @@ -35,6 +35,8 @@ namespace android { class MOZ_EXPORT GraphicBuffer; } // namespace android +struct nsStyleFilter; + namespace mozilla { namespace layers { @@ -309,6 +311,25 @@ enum class ScrollDirection : uint32_t { SENTINEL /* for IPC serialization */ }; +enum class CSSFilterType : int8_t { + BLUR, + BRIGHTNESS, + CONTRAST, + GRAYSCALE, + HUE_ROTATE, + INVERT, + OPACITY, + SATURATE, + SEPIA, +}; + +struct CSSFilter { + CSSFilterType type; + float argument; +}; + +CSSFilter ToCSSFilter(const nsStyleFilter& filter); + } // namespace layers } // namespace mozilla diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index 8a575f4172ce..6b902006ea24 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -383,6 +383,7 @@ UNIFIED_SOURCES += [ 'LayerScope.cpp', 'LayersLogging.cpp', 'LayerSorter.cpp', + 'LayersTypes.cpp', 'opengl/CompositingRenderTargetOGL.cpp', 'opengl/CompositorOGL.cpp', 'opengl/GLBlitTextureImageHelper.cpp', diff --git a/gfx/layers/wr/StackingContextHelper.cpp b/gfx/layers/wr/StackingContextHelper.cpp index df3f60de7c14..235b9fdca6dc 100644 --- a/gfx/layers/wr/StackingContextHelper.cpp +++ b/gfx/layers/wr/StackingContextHelper.cpp @@ -20,16 +20,19 @@ StackingContextHelper::StackingContextHelper() StackingContextHelper::StackingContextHelper(const StackingContextHelper& aParentSC, wr::DisplayListBuilder& aBuilder, WebRenderLayer* aLayer, - const Maybe& aTransform) + const Maybe& aTransform, + const nsTArray& aFilters) : mBuilder(&aBuilder) { WrRect scBounds = aParentSC.ToRelativeWrRect(aLayer->BoundsForStackingContext()); Layer* layer = aLayer->GetLayer(); mTransform = aTransform.valueOr(layer->GetTransform()); + float opacity = 1.0f; mBuilder->PushStackingContext(scBounds, 0, &opacity, mTransform.IsIdentity() ? nullptr : &mTransform, - wr::ToWrMixBlendMode(layer->GetMixBlendMode())); + wr::ToWrMixBlendMode(layer->GetMixBlendMode()), + aFilters); mOrigin = aLayer->Bounds().TopLeft(); } @@ -38,18 +41,21 @@ StackingContextHelper::StackingContextHelper(const StackingContextHelper& aParen WebRenderLayer* aLayer, uint64_t aAnimationsId, float* aOpacityPtr, - gfx::Matrix4x4* aTransformPtr) + gfx::Matrix4x4* aTransformPtr, + const nsTArray& aFilters) : mBuilder(&aBuilder) { WrRect scBounds = aParentSC.ToRelativeWrRect(aLayer->BoundsForStackingContext()); if (aTransformPtr) { mTransform = *aTransformPtr; } + mBuilder->PushStackingContext(scBounds, aAnimationsId, aOpacityPtr, aTransformPtr, - wr::ToWrMixBlendMode(aLayer->GetLayer()->GetMixBlendMode())); + wr::ToWrMixBlendMode(aLayer->GetLayer()->GetMixBlendMode()), + aFilters); mOrigin = aLayer->Bounds().TopLeft(); } diff --git a/gfx/layers/wr/StackingContextHelper.h b/gfx/layers/wr/StackingContextHelper.h index 57efb1049d33..02bf9d95d559 100644 --- a/gfx/layers/wr/StackingContextHelper.h +++ b/gfx/layers/wr/StackingContextHelper.h @@ -31,7 +31,8 @@ public: StackingContextHelper(const StackingContextHelper& aParentSC, wr::DisplayListBuilder& aBuilder, WebRenderLayer* aLayer, - const Maybe& aTransform = Nothing()); + const Maybe& aTransform = Nothing(), + const nsTArray& aFilters = nsTArray()); // Alternate constructor which invokes the version of PushStackingContext // for animations. StackingContextHelper(const StackingContextHelper& aParentSC, @@ -39,7 +40,8 @@ public: WebRenderLayer* aLayer, uint64_t aAnimationsId, float* aOpacityPtr, - gfx::Matrix4x4* aTransformPtr); + gfx::Matrix4x4* aTransformPtr, + const nsTArray& aFilters = nsTArray()); // This version of the constructor should only be used at the root level // of the tree, so that we have a StackingContextHelper to pass down into // the RenderLayer traversal, but don't actually want it to push a stacking diff --git a/gfx/layers/wr/WebRenderCompositableHolder.cpp b/gfx/layers/wr/WebRenderCompositableHolder.cpp index 84df12666d8a..182b6171f6f5 100644 --- a/gfx/layers/wr/WebRenderCompositableHolder.cpp +++ b/gfx/layers/wr/WebRenderCompositableHolder.cpp @@ -275,7 +275,8 @@ WebRenderCompositableHolder::ApplyAsyncImages(wr::WebRenderAPI* aApi) 0, &opacity, holder->mScTransform.IsIdentity() ? nullptr : &holder->mScTransform, - holder->mMixBlendMode); + holder->mMixBlendMode, + nsTArray()); LayerRect rect(0, 0, holder->mCurrentTexture->GetSize().width, holder->mCurrentTexture->GetSize().height); if (holder->mScaleToSize.isSome()) { diff --git a/gfx/layers/wr/WebRenderContainerLayer.cpp b/gfx/layers/wr/WebRenderContainerLayer.cpp index 611b04f63d3a..209bf0708132 100644 --- a/gfx/layers/wr/WebRenderContainerLayer.cpp +++ b/gfx/layers/wr/WebRenderContainerLayer.cpp @@ -114,8 +114,13 @@ WebRenderContainerLayer::RenderLayer(wr::DisplayListBuilder& aBuilder, transformForSC = nullptr; } + nsTArray filters; + for (const CSSFilter& filter : this->GetFilterChain()) { + filters.AppendElement(wr::ToWrFilterOp(filter)); + } + ScrollingLayersHelper scroller(this, aBuilder, aSc); - StackingContextHelper sc(aSc, aBuilder, this, animationsId, opacityForSC, transformForSC); + StackingContextHelper sc(aSc, aBuilder, this, animationsId, opacityForSC, transformForSC, filters); LayerRect rect = Bounds(); DumpLayerInfo("ContainerLayer", rect); diff --git a/gfx/thebes/gfxPrefs.h b/gfx/thebes/gfxPrefs.h index 7a24aa2426f4..0c4e4be42cd5 100644 --- a/gfx/thebes/gfxPrefs.h +++ b/gfx/thebes/gfxPrefs.h @@ -504,6 +504,7 @@ private: DECL_OVERRIDE_PREF(Live, "layers.advanced.caret-layers", LayersAllowCaretLayers, gfxPrefs::OverrideBase_WebRender()); DECL_OVERRIDE_PREF(Live, "layers.advanced.columnRule-layers", LayersAllowColumnRuleLayers, gfxPrefs::OverrideBase_WebRender()); DECL_OVERRIDE_PREF(Live, "layers.advanced.displaybuttonborder-layers", LayersAllowDisplayButtonBorder, gfxPrefs::OverrideBase_WebRender()); + DECL_OVERRIDE_PREF(Live, "layers.advanced.filter-layers", LayersAllowFilterLayers, gfxPrefs::OverrideBase_WebRender()); DECL_OVERRIDE_PREF(Live, "layers.advanced.image-layers", LayersAllowImageLayers, gfxPrefs::OverrideBase_WebRendest()); DECL_OVERRIDE_PREF(Live, "layers.advanced.outline-layers", LayersAllowOutlineLayers, gfxPrefs::OverrideBase_WebRender()); DECL_OVERRIDE_PREF(Live, "layers.advanced.solid-color", LayersAllowSolidColorLayers, gfxPrefs::OverrideBase_WebRender()); diff --git a/gfx/webrender_bindings/WebRenderAPI.cpp b/gfx/webrender_bindings/WebRenderAPI.cpp index 3b03c0ec0186..ce2bbd789001 100644 --- a/gfx/webrender_bindings/WebRenderAPI.cpp +++ b/gfx/webrender_bindings/WebRenderAPI.cpp @@ -556,7 +556,8 @@ DisplayListBuilder::PushStackingContext(const WrRect& aBounds, const uint64_t& aAnimationId, const float* aOpacity, const gfx::Matrix4x4* aTransform, - const WrMixBlendMode& aMixBlendMode) + const WrMixBlendMode& aMixBlendMode, + const nsTArray& aFilters) { WrMatrix matrix; if (aTransform) { @@ -566,7 +567,8 @@ DisplayListBuilder::PushStackingContext(const WrRect& aBounds, WRDL_LOG("PushStackingContext b=%s t=%s\n", Stringify(aBounds).c_str(), aTransform ? Stringify(*aTransform).c_str() : "none"); wr_dp_push_stacking_context(mWrState, aBounds, aAnimationId, aOpacity, - maybeTransform, aMixBlendMode); + maybeTransform, aMixBlendMode, + aFilters.Elements(), aFilters.Length()); } void diff --git a/gfx/webrender_bindings/WebRenderAPI.h b/gfx/webrender_bindings/WebRenderAPI.h index ea72b897fa72..c4d41c209de0 100644 --- a/gfx/webrender_bindings/WebRenderAPI.h +++ b/gfx/webrender_bindings/WebRenderAPI.h @@ -150,7 +150,8 @@ public: const uint64_t& aAnimationId, const float* aOpacity, const gfx::Matrix4x4* aTransform, - const WrMixBlendMode& aMixBlendMode); + const WrMixBlendMode& aMixBlendMode, + const nsTArray& aFilters); void PopStackingContext(); void PushClip(const WrRect& aClipRect, diff --git a/gfx/webrender_bindings/WebRenderTypes.h b/gfx/webrender_bindings/WebRenderTypes.h index 2c182f962347..0b729bec6795 100644 --- a/gfx/webrender_bindings/WebRenderTypes.h +++ b/gfx/webrender_bindings/WebRenderTypes.h @@ -11,6 +11,7 @@ #include "mozilla/gfx/Matrix.h" #include "mozilla/gfx/Types.h" #include "mozilla/gfx/Tools.h" +#include "mozilla/layers/LayersTypes.h" #include "mozilla/Range.h" #include "Units.h" #include "nsStyleConsts.h" @@ -551,6 +552,38 @@ struct BuiltDisplayList { WrBuiltDisplayListDescriptor dl_desc; }; +static inline WrFilterOpType ToWrFilterOpType(const layers::CSSFilterType type) { + switch (type) { + case layers::CSSFilterType::BLUR: + return WrFilterOpType::Blur; + case layers::CSSFilterType::BRIGHTNESS: + return WrFilterOpType::Brightness; + case layers::CSSFilterType::CONTRAST: + return WrFilterOpType::Contrast; + case layers::CSSFilterType::GRAYSCALE: + return WrFilterOpType::Grayscale; + case layers::CSSFilterType::HUE_ROTATE: + return WrFilterOpType::HueRotate; + case layers::CSSFilterType::INVERT: + return WrFilterOpType::Invert; + case layers::CSSFilterType::OPACITY: + return WrFilterOpType::Opacity; + case layers::CSSFilterType::SATURATE: + return WrFilterOpType::Saturate; + case layers::CSSFilterType::SEPIA: + return WrFilterOpType::Sepia; + } + MOZ_ASSERT_UNREACHABLE("Tried to convert unknown filter type."); + return WrFilterOpType::Grayscale; +} + +static inline WrFilterOp ToWrFilterOp(const layers::CSSFilter& filter) { + return { + ToWrFilterOpType(filter.type), + filter.argument, + }; +} + } // namespace wr } // namespace mozilla diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs index acb270c8dcd7..a39681de7a7b 100644 --- a/gfx/webrender_bindings/src/bindings.rs +++ b/gfx/webrender_bindings/src/bindings.rs @@ -2,7 +2,7 @@ use std::collections::HashSet; use std::ffi::CString; use std::{mem, slice}; use std::path::PathBuf; -use std::os::raw::{c_void, c_char}; +use std::os::raw::{c_void, c_char, c_float}; use std::collections::HashMap; use gleam::gl; @@ -59,6 +59,27 @@ type WrYuvColorSpace = YuvColorSpace; #[derive(Copy, Clone)] pub struct WrExternalImageId(pub u64); +#[repr(u32)] +#[derive(Copy, Clone)] +pub enum WrFilterOpType { + Blur = 0, + Brightness = 1, + Contrast = 2, + Grayscale = 3, + HueRotate = 4, + Invert = 5, + Opacity = 6, + Saturate = 7, + Sepia = 8, +} + +#[repr(C)] +#[derive(Copy, Clone)] +pub struct WrFilterOp { + filter_type: WrFilterOpType, + argument: c_float, +} + impl Into for WrExternalImageId { fn into(self) -> ExternalImageId { ExternalImageId(self.0) @@ -1245,12 +1266,28 @@ pub extern "C" fn wr_dp_push_stacking_context(state: &mut WrState, animation_id: u64, opacity: *const f32, transform: *const WrMatrix, - mix_blend_mode: WrMixBlendMode) { + mix_blend_mode: WrMixBlendMode, + filters: *const WrFilterOp, + filter_count: usize) { assert!(unsafe { !is_in_render_thread() }); let bounds = bounds.into(); - let mut filters: Vec = Vec::new(); + let c_filters = make_slice(filters, filter_count); + let mut filters : Vec = c_filters.iter().map(|c_filter| { + match c_filter.filter_type { + WrFilterOpType::Blur => FilterOp::Blur(Au::from_f32_px(c_filter.argument)), + WrFilterOpType::Brightness => FilterOp::Brightness(c_filter.argument), + WrFilterOpType::Contrast => FilterOp::Contrast(c_filter.argument), + WrFilterOpType::Grayscale => FilterOp::Grayscale(c_filter.argument), + WrFilterOpType::HueRotate => FilterOp::HueRotate(c_filter.argument), + WrFilterOpType::Invert => FilterOp::Invert(c_filter.argument), + WrFilterOpType::Opacity => FilterOp::Opacity(PropertyBinding::Value(c_filter.argument)), + WrFilterOpType::Saturate => FilterOp::Saturate(c_filter.argument), + WrFilterOpType::Sepia => FilterOp::Sepia(c_filter.argument), + } + }).collect(); + let opacity = unsafe { opacity.as_ref() }; if let Some(opacity) = opacity { if *opacity < 1.0 { diff --git a/gfx/webrender_bindings/webrender_ffi_generated.h b/gfx/webrender_bindings/webrender_ffi_generated.h index 08506b069a52..47ca1cafd058 100644 --- a/gfx/webrender_bindings/webrender_ffi_generated.h +++ b/gfx/webrender_bindings/webrender_ffi_generated.h @@ -51,6 +51,20 @@ enum class WrExternalImageType : uint32_t { Sentinel /* this must be last for serialization purposes. */ }; +enum class WrFilterOpType : uint32_t { + Blur = 0, + Brightness = 1, + Contrast = 2, + Grayscale = 3, + HueRotate = 4, + Invert = 5, + Opacity = 6, + Saturate = 7, + Sepia = 8, + + Sentinel /* this must be last for serialization purposes. */ +}; + enum class WrGradientExtendMode : uint32_t { Clamp = 0, Repeat = 1, @@ -423,6 +437,16 @@ struct WrComplexClipRegion { } }; +struct WrFilterOp { + WrFilterOpType filter_type; + float argument; + + bool operator==(const WrFilterOp& aOther) const { + return filter_type == aOther.filter_type && + argument == aOther.argument; + } +}; + struct WrGlyphInstance { uint32_t index; WrPoint point; @@ -784,7 +808,9 @@ void wr_dp_push_stacking_context(WrState *aState, uint64_t aAnimationId, const float *aOpacity, const WrMatrix *aTransform, - WrMixBlendMode aMixBlendMode) + WrMixBlendMode aMixBlendMode, + const WrFilterOp *aFilters, + size_t aFilterCount) WR_FUNC; WR_INLINE diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp index dd748e36079e..0832341829c2 100644 --- a/layout/painting/nsDisplayList.cpp +++ b/layout/painting/nsDisplayList.cpp @@ -8635,6 +8635,17 @@ nsDisplayFilter::BuildLayer(nsDisplayListBuilder* aBuilder, BuildContainerLayerFor(aBuilder, aManager, mFrame, this, &mList, newContainerParameters, nullptr); + LayerState state = this->GetLayerState(aBuilder, aManager, newContainerParameters); + if (container && state != LAYER_SVG_EFFECTS) { + const nsTArray& filters = mFrame->StyleEffects()->mFilters; + nsTArray cssFilters = nsTArray(filters.Length()); + for (const nsStyleFilter& filter : filters) { + cssFilters.AppendElement(ToCSSFilter(filter)); + } + + container->SetFilterChain(Move(cssFilters)); + } + return container.forget(); } @@ -8667,7 +8678,25 @@ nsDisplayFilter::GetLayerState(nsDisplayListBuilder* aBuilder, LayerManager* aManager, const ContainerLayerParameters& aParameters) { - return LAYER_SVG_EFFECTS; + if (mFrame->IsFrameOfType(nsIFrame::eSVG)) { + return LAYER_SVG_EFFECTS; + } + + if (!ShouldUseAdvancedLayer(aManager, gfxPrefs::LayersAllowFilterLayers)) { + return LAYER_SVG_EFFECTS; + } + + // Due to differences in the way that WebRender filters operate + // only the brightness and contrast filters use that path. We + // can gradually enable more filters as WebRender bugs are fixed. + for (const nsStyleFilter& filter : mFrame->StyleEffects()->mFilters) { + if (filter.GetType() != NS_STYLE_FILTER_BRIGHTNESS && + filter.GetType() != NS_STYLE_FILTER_CONTRAST) { + return LAYER_SVG_EFFECTS; + } + } + + return LAYER_ACTIVE; } bool nsDisplayFilter::ComputeVisibility(nsDisplayListBuilder* aBuilder, diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 2db1be804dc6..1f4355db1f10 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5740,6 +5740,7 @@ pref("layers.advanced.outline-layers", 2); pref("layers.advanced.solid-color", 2); pref("layers.advanced.table", 2); pref("layers.advanced.text-layers", 2); +pref("layers.advanced.filter-layers", 2); // Whether webrender should be used as much as possible. pref("gfx.webrendest.enabled", false); From df55d884d575ce842931d3286421d36240e05755 Mon Sep 17 00:00:00 2001 From: Ben Kelly Date: Tue, 6 Jun 2017 08:19:10 -0700 Subject: [PATCH 57/71] Bug 1369874 Make fetch-response-xhr.https.html not depend on window.event. r=asuth --- .../service-worker/fetch-response-xhr.https.html.ini | 6 ------ .../resources/fetch-response-xhr-iframe.https.html | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) delete mode 100644 testing/web-platform/meta/service-workers/service-worker/fetch-response-xhr.https.html.ini diff --git a/testing/web-platform/meta/service-workers/service-worker/fetch-response-xhr.https.html.ini b/testing/web-platform/meta/service-workers/service-worker/fetch-response-xhr.https.html.ini deleted file mode 100644 index b7aaca6b8d72..000000000000 --- a/testing/web-platform/meta/service-workers/service-worker/fetch-response-xhr.https.html.ini +++ /dev/null @@ -1,6 +0,0 @@ -[fetch-response-xhr.https.html] - type: testharness - expected: TIMEOUT - [Verify the response of FetchEvent using XMLHttpRequest] - expected: TIMEOUT - diff --git a/testing/web-platform/tests/service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html b/testing/web-platform/tests/service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html index 1414596c16e3..612c9341eb78 100644 --- a/testing/web-platform/tests/service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/resources/fetch-response-xhr-iframe.https.html @@ -26,7 +26,7 @@ function coalesce_headers_test() { return new Promise(function(resolve) { window.addEventListener('message', function handle(evt) { - if (event.data !== 'ACK') { + if (evt.data !== 'ACK') { return; } @@ -40,7 +40,7 @@ function coalesce_headers_test() { window.addEventListener('message', function(evt) { var port; - if (event.data !== 'START') { + if (evt.data !== 'START') { return; } From 52834cd6f7fd5d46daaf1d7da980ebd73f0af353 Mon Sep 17 00:00:00 2001 From: Mason Chang Date: Fri, 2 Jun 2017 11:13:36 -0700 Subject: [PATCH 58/71] Bug 1359527 Part 1 Add DrawTarget::IntoLuminance. r=jrmuizel --- gfx/2d/2D.h | 5 + gfx/2d/DrawTarget.cpp | 208 ++++++++++++++++++++++++++++++ gfx/2d/DrawTargetD2D1.cpp | 81 ++++++++++-- gfx/2d/DrawTargetD2D1.h | 6 + gfx/2d/Types.h | 6 + gfx/2d/moz.build | 2 + layout/svg/moz.build | 4 - layout/svg/nsSVGMaskFrame.cpp | 198 +++------------------------- layout/svg/nsSVGMaskFrame.h | 15 --- layout/svg/nsSVGMaskFrameNEON.cpp | 73 ----------- layout/svg/nsSVGMaskFrameNEON.h | 19 --- 11 files changed, 317 insertions(+), 300 deletions(-) delete mode 100644 layout/svg/nsSVGMaskFrameNEON.cpp delete mode 100644 layout/svg/nsSVGMaskFrameNEON.h diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h index b12c3cd14c88..6676c9ee96ea 100644 --- a/gfx/2d/2D.h +++ b/gfx/2d/2D.h @@ -894,6 +894,11 @@ public: * normally return the same SourceSurface object. */ virtual already_AddRefed Snapshot() = 0; + + // Snapshots the contents and returns an alpha mask + // based on the RGB values. + virtual already_AddRefed IntoLuminanceSource(LuminanceType aLuminanceType, + float aOpacity); virtual IntSize GetSize() = 0; /** diff --git a/gfx/2d/DrawTarget.cpp b/gfx/2d/DrawTarget.cpp index 4f89d05e8b64..388097d9320b 100644 --- a/gfx/2d/DrawTarget.cpp +++ b/gfx/2d/DrawTarget.cpp @@ -9,9 +9,172 @@ #include "DrawTargetCapture.h" +#ifdef BUILD_ARM_NEON +#include "mozilla/arm.h" +#include "LuminanceNEON.h" +#endif + namespace mozilla { namespace gfx { +/** + * Byte offsets of channels in a native packed gfxColor or cairo image surface. + */ +#ifdef IS_BIG_ENDIAN +#define GFX_ARGB32_OFFSET_A 0 +#define GFX_ARGB32_OFFSET_R 1 +#define GFX_ARGB32_OFFSET_G 2 +#define GFX_ARGB32_OFFSET_B 3 +#else +#define GFX_ARGB32_OFFSET_A 3 +#define GFX_ARGB32_OFFSET_R 2 +#define GFX_ARGB32_OFFSET_G 1 +#define GFX_ARGB32_OFFSET_B 0 +#endif + +// c = n / 255 +// c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4)) * 255 + 0.5 +static const uint8_t gsRGBToLinearRGBMap[256] = { + 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, + 8, 8, 8, 8, 9, 9, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 13, + 13, 13, 14, 14, 15, 15, 16, 16, + 17, 17, 17, 18, 18, 19, 19, 20, + 20, 21, 22, 22, 23, 23, 24, 24, + 25, 25, 26, 27, 27, 28, 29, 29, + 30, 30, 31, 32, 32, 33, 34, 35, + 35, 36, 37, 37, 38, 39, 40, 41, + 41, 42, 43, 44, 45, 45, 46, 47, + 48, 49, 50, 51, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 76, 77, 78, 79, + 80, 81, 82, 84, 85, 86, 87, 88, + 90, 91, 92, 93, 95, 96, 97, 99, +100, 101, 103, 104, 105, 107, 108, 109, +111, 112, 114, 115, 116, 118, 119, 121, +122, 124, 125, 127, 128, 130, 131, 133, +134, 136, 138, 139, 141, 142, 144, 146, +147, 149, 151, 152, 154, 156, 157, 159, +161, 163, 164, 166, 168, 170, 171, 173, +175, 177, 179, 181, 183, 184, 186, 188, +190, 192, 194, 196, 198, 200, 202, 204, +206, 208, 210, 212, 214, 216, 218, 220, +222, 224, 226, 229, 231, 233, 235, 237, +239, 242, 244, 246, 248, 250, 253, 255 +}; + +static void +ComputesRGBLuminanceMask(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const IntSize &aSize, + float aOpacity) +{ +#ifdef BUILD_ARM_NEON + if (mozilla::supports_neon()) { + ComputesRGBLuminanceMask_NEON(aSourceData, aSourceStride, + aDestData, aDestStride, + aSize, aOpacity); + return; + } +#endif + + int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity + int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity + int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 + int32_t sourceOffset = aSourceStride - 4 * aSize.width; + const uint8_t *sourcePixel = aSourceData; + int32_t destOffset = aDestStride - aSize.width; + uint8_t *destPixel = aDestData; + + for (int32_t y = 0; y < aSize.height; y++) { + for (int32_t x = 0; x < aSize.width; x++) { + uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; + + if (a) { + *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R] + + greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + + blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; + } else { + *destPixel = 0; + } + sourcePixel += 4; + destPixel++; + } + sourcePixel += sourceOffset; + destPixel += destOffset; + } +} + +static void +ComputeLinearRGBLuminanceMask(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const IntSize &aSize, + float aOpacity) +{ + int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity + int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity + int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 + int32_t sourceOffset = aSourceStride - 4 * aSize.width; + const uint8_t *sourcePixel = aSourceData; + int32_t destOffset = aDestStride - aSize.width; + uint8_t *destPixel = aDestData; + + for (int32_t y = 0; y < aSize.height; y++) { + for (int32_t x = 0; x < aSize.width; x++) { + uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; + + // unpremultiply + if (a) { + if (a == 255) { + /* sRGB -> linearRGB -> intensity */ + *destPixel = + static_cast + ((gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_R]] * + redFactor + + gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_G]] * + greenFactor + + gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_B]] * + blueFactor) >> 8); + } else { + uint8_t tempPixel[4]; + tempPixel[GFX_ARGB32_OFFSET_B] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_B]) / a; + tempPixel[GFX_ARGB32_OFFSET_G] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_G]) / a; + tempPixel[GFX_ARGB32_OFFSET_R] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_R]) / a; + + /* sRGB -> linearRGB -> intensity */ + *destPixel = + static_cast + (((gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_R]] * + redFactor + + gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_G]] * + greenFactor + + gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_B]] * + blueFactor) >> 8) * (a / 255.0f)); + } + } else { + *destPixel = 0; + } + sourcePixel += 4; + destPixel++; + } + sourcePixel += sourceOffset; + destPixel += destOffset; + } +} + already_AddRefed DrawTarget::CreateCaptureDT(const IntSize& aSize) { @@ -64,6 +227,51 @@ DrawTarget::StrokeGlyphs(ScaledFont* aFont, Stroke(path, aPattern, aStrokeOptions, aOptions); } +already_AddRefed +DrawTarget::IntoLuminanceSource(LuminanceType aMaskType, float aOpacity) +{ + RefPtr surface = Snapshot(); + IntSize size = surface->GetSize(); + + RefPtr maskSurface = surface->GetDataSurface(); + DataSourceSurface::MappedSurface map; + if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) { + return nullptr; + } + + // Create alpha channel mask for output + RefPtr destMaskSurface = + Factory::CreateDataSourceSurface(size, SurfaceFormat::A8); + if (!destMaskSurface) { + return nullptr; + } + DataSourceSurface::MappedSurface destMap; + if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) { + return nullptr; + } + + switch (aMaskType) { + case LuminanceType::LUMINANCE: + { + ComputesRGBLuminanceMask(map.mData, map.mStride, + destMap.mData, destMap.mStride, + size, aOpacity); + break; + } + case LuminanceType::LINEARRGB: + { + ComputeLinearRGBLuminanceMask(map.mData, map.mStride, + destMap.mData, destMap.mStride, + size, aOpacity); + break; + } + } + + maskSurface->Unmap(); + destMaskSurface->Unmap(); + + return destMaskSurface.forget(); +} } // namespace gfx } // namespace mozilla diff --git a/gfx/2d/DrawTargetD2D1.cpp b/gfx/2d/DrawTargetD2D1.cpp index 4b0f147b80cb..5dc7b14f646f 100644 --- a/gfx/2d/DrawTargetD2D1.cpp +++ b/gfx/2d/DrawTargetD2D1.cpp @@ -99,6 +99,38 @@ DrawTargetD2D1::Snapshot() return snapshot.forget(); } +void +DrawTargetD2D1::EnsureLuminanceEffect() +{ + if (mLuminanceEffect.get()) { + return; + } + + HRESULT hr = mDC->CreateEffect(CLSID_D2D1LuminanceToAlpha, + getter_AddRefs(mLuminanceEffect)); + if (FAILED(hr)) { + gfxWarning() << "Failed to create luminance effect. Code: " << hexa(hr); + } +} + +already_AddRefed +DrawTargetD2D1::IntoLuminanceSource(LuminanceType aLuminanceType, float aOpacity) +{ + //return DrawTarget::IntoLuminanceSource(aLuminanceType, aOpacity); + if (aLuminanceType != LuminanceType::LUMINANCE) { + return DrawTarget::IntoLuminanceSource(aLuminanceType, aOpacity); + } + + // Create the luminance effect + EnsureLuminanceEffect(); + mLuminanceEffect->SetInput(0, mBitmap); + + RefPtr luminanceOutput; + mLuminanceEffect->GetOutput(getter_AddRefs(luminanceOutput)); + + return MakeAndAddRef(luminanceOutput, mDC, SurfaceFormat::A8, mSize); +} + // Command lists are kept around by device contexts until EndDraw is called, // this can cause issues with memory usage (see bug 1238328). EndDraw/BeginDraw // are expensive though, especially relatively when little work is done, so @@ -348,20 +380,48 @@ DrawTargetD2D1::MaskSurface(const Pattern &aSource, PrepareForDrawing(aOptions.mCompositionOp, aSource); + IntSize size = IntSize::Truncate(aMask->GetSize().width, aMask->GetSize().height); + Rect dest = Rect(aOffset.x, aOffset.y, Float(size.width), Float(size.height)); + + HRESULT hr = image->QueryInterface((ID2D1Bitmap**)getter_AddRefs(bitmap)); + if (!bitmap || FAILED(hr)) { + // D2D says if we have an actual ID2D1Image and not a bitmap underlying the object, + // we can't query for a bitmap. Instead, Push/PopLayer + gfxWarning() << "FillOpacityMask only works with Bitmap source surfaces. Falling back to push/pop layer"; + + RefPtr source = CreateBrushForPattern(aSource, aOptions.mAlpha); + RefPtr maskBrush; + hr = mDC->CreateImageBrush(image, + D2D1::ImageBrushProperties(D2D1::RectF(0, 0, size.width, size.height)), + D2D1::BrushProperties(1.0f, D2D1::IdentityMatrix()), + getter_AddRefs(maskBrush)); + MOZ_ASSERT(SUCCEEDED(hr)); + + mDC->PushLayer(D2D1::LayerParameters1(D2D1::InfiniteRect(), nullptr, + D2D1_ANTIALIAS_MODE_PER_PRIMITIVE, + D2D1::IdentityMatrix(), + 1.0f, maskBrush, D2D1_LAYER_OPTIONS1_NONE), + nullptr); + + mDC->FillRectangle(D2DRect(dest), source); + mDC->PopLayer(); + + FinalizeDrawing(aOptions.mCompositionOp, aSource); + return; + } else { + // If this is a data source surface, we might have created a partial bitmap + // for this surface and only uploaded part of the mask. In that case, + // we have to fixup our sizes here. + size.width = bitmap->GetSize().width; + size.height = bitmap->GetSize().height; + dest.width = size.width; + dest.height = size.height; + } + // FillOpacityMask only works if the antialias mode is MODE_ALIASED mDC->SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED); - image->QueryInterface((ID2D1Bitmap**)getter_AddRefs(bitmap)); - if (!bitmap) { - gfxWarning() << "FillOpacityMask only works with Bitmap source surfaces."; - return; - } - - IntSize size = IntSize::Truncate(bitmap->GetSize().width, bitmap->GetSize().height); - Rect maskRect = Rect(0.f, 0.f, Float(size.width), Float(size.height)); - - Rect dest = Rect(aOffset.x, aOffset.y, Float(size.width), Float(size.height)); RefPtr brush = CreateBrushForPattern(aSource, aOptions.mAlpha); mDC->FillOpacityMask(bitmap, brush, D2D1_OPACITY_MASK_CONTENT_GRAPHICS, D2DRect(dest), D2DRect(maskRect)); @@ -1871,7 +1931,6 @@ DrawTargetD2D1::GetImageForSurface(SourceSurface *aSurface, Matrix &aSourceTrans bool aUserSpace) { RefPtr image; - switch (aSurface->GetType()) { case SurfaceType::D2D1_1_IMAGE: { diff --git a/gfx/2d/DrawTargetD2D1.h b/gfx/2d/DrawTargetD2D1.h index 68de9b332036..8154461213cd 100644 --- a/gfx/2d/DrawTargetD2D1.h +++ b/gfx/2d/DrawTargetD2D1.h @@ -36,6 +36,8 @@ public: virtual DrawTargetType GetType() const override { return DrawTargetType::HARDWARE_RASTER; } virtual BackendType GetBackendType() const override { return BackendType::DIRECT2D1_1; } virtual already_AddRefed Snapshot() override; + virtual already_AddRefed IntoLuminanceSource(LuminanceType aLuminanceType, + float aOpacity) override; virtual IntSize GetSize() override { return mSize; } virtual void Flush() override; @@ -295,6 +297,10 @@ private: static IDWriteFactory *mDWriteFactory; // This value is uesed to verify if the DrawTarget is created by a stale device. uint32_t mDeviceSeq; + + // List of effects we use + void EnsureLuminanceEffect(); + RefPtr mLuminanceEffect; }; } diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h index 28d203bb0562..036c6ae13b67 100644 --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h @@ -278,6 +278,12 @@ enum class SamplingBounds : int8_t { BOUNDED }; +// Moz2d version for SVG mask types +enum class LuminanceType : int8_t { + LUMINANCE, + LINEARRGB, +}; + /* Color is stored in non-premultiplied form */ struct Color { diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build index dd46590aa96e..6cf2f65e4f6c 100644 --- a/gfx/2d/moz.build +++ b/gfx/2d/moz.build @@ -220,9 +220,11 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']: SOURCES += [ 'BlurNEON.cpp', + 'LuminanceNEON.cpp', 'SwizzleNEON.cpp', ] SOURCES['BlurNEON.cpp'].flags += CONFIG['NEON_FLAGS'] + SOURCES['LuminanceNEON.cpp'].flags += CONFIG['NEON_FLAGS'] SOURCES['SwizzleNEON.cpp'].flags += CONFIG['NEON_FLAGS'] include('/ipc/chromium/chromium-config.mozbuild') diff --git a/layout/svg/moz.build b/layout/svg/moz.build index 60e0c2d0c94a..f64577dcdb66 100644 --- a/layout/svg/moz.build +++ b/layout/svg/moz.build @@ -66,10 +66,6 @@ UNIFIED_SOURCES += [ 'SVGViewFrame.cpp', ] -if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']: - SOURCES += ['nsSVGMaskFrameNEON.cpp'] - SOURCES['nsSVGMaskFrameNEON.cpp'].flags += CONFIG['NEON_FLAGS'] - FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ '../../widget', diff --git a/layout/svg/nsSVGMaskFrame.cpp b/layout/svg/nsSVGMaskFrame.cpp index 12f201b454be..dc31e18523fc 100644 --- a/layout/svg/nsSVGMaskFrame.cpp +++ b/layout/svg/nsSVGMaskFrame.cpp @@ -14,162 +14,28 @@ #include "mozilla/RefPtr.h" #include "nsSVGEffects.h" #include "mozilla/dom/SVGMaskElement.h" -#ifdef BUILD_ARM_NEON -#include "mozilla/arm.h" -#include "nsSVGMaskFrameNEON.h" -#endif using namespace mozilla; using namespace mozilla::dom; using namespace mozilla::gfx; using namespace mozilla::image; -// c = n / 255 -// c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4)) * 255 + 0.5 -static const uint8_t gsRGBToLinearRGBMap[256] = { - 0, 0, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 5, 5, 5, - 5, 6, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 10, - 10, 10, 11, 11, 12, 12, 12, 13, - 13, 13, 14, 14, 15, 15, 16, 16, - 17, 17, 17, 18, 18, 19, 19, 20, - 20, 21, 22, 22, 23, 23, 24, 24, - 25, 25, 26, 27, 27, 28, 29, 29, - 30, 30, 31, 32, 32, 33, 34, 35, - 35, 36, 37, 37, 38, 39, 40, 41, - 41, 42, 43, 44, 45, 45, 46, 47, - 48, 49, 50, 51, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 76, 77, 78, 79, - 80, 81, 82, 84, 85, 86, 87, 88, - 90, 91, 92, 93, 95, 96, 97, 99, -100, 101, 103, 104, 105, 107, 108, 109, -111, 112, 114, 115, 116, 118, 119, 121, -122, 124, 125, 127, 128, 130, 131, 133, -134, 136, 138, 139, 141, 142, 144, 146, -147, 149, 151, 152, 154, 156, 157, 159, -161, 163, 164, 166, 168, 170, 171, 173, -175, 177, 179, 181, 183, 184, 186, 188, -190, 192, 194, 196, 198, 200, 202, 204, -206, 208, 210, 212, 214, 216, 218, 220, -222, 224, 226, 229, 231, 233, 235, 237, -239, 242, 244, 246, 248, 250, 253, 255 -}; - -static void -ComputesRGBLuminanceMask(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const IntSize &aSize, - float aOpacity) +static LuminanceType +GetLuminanceType(uint8_t aNSMaskType) { -#ifdef BUILD_ARM_NEON - if (mozilla::supports_neon()) { - ComputesRGBLuminanceMask_NEON(aSourceData, aSourceStride, - aDestData, aDestStride, - aSize, aOpacity); - return; - } -#endif - - int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity - int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity - int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 - int32_t sourceOffset = aSourceStride - 4 * aSize.width; - const uint8_t *sourcePixel = aSourceData; - int32_t destOffset = aDestStride - aSize.width; - uint8_t *destPixel = aDestData; - - for (int32_t y = 0; y < aSize.height; y++) { - for (int32_t x = 0; x < aSize.width; x++) { - uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; - - if (a) { - *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R] + - greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + - blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; - } else { - *destPixel = 0; - } - sourcePixel += 4; - destPixel++; + switch (aNSMaskType) { + case NS_STYLE_MASK_TYPE_LUMINANCE: + return LuminanceType::LUMINANCE; + case NS_STYLE_COLOR_INTERPOLATION_LINEARRGB: + return LuminanceType::LINEARRGB; + default: + { + NS_WARNING("Unknown SVG mask type, defaulting to luminance"); + return LuminanceType::LUMINANCE; } - sourcePixel += sourceOffset; - destPixel += destOffset; } } -static void -ComputeLinearRGBLuminanceMask(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const IntSize &aSize, - float aOpacity) -{ - int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity - int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity - int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 - int32_t sourceOffset = aSourceStride - 4 * aSize.width; - const uint8_t *sourcePixel = aSourceData; - int32_t destOffset = aDestStride - aSize.width; - uint8_t *destPixel = aDestData; - - for (int32_t y = 0; y < aSize.height; y++) { - for (int32_t x = 0; x < aSize.width; x++) { - uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; - - // unpremultiply - if (a) { - if (a == 255) { - /* sRGB -> linearRGB -> intensity */ - *destPixel = - static_cast - ((gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_R]] * - redFactor + - gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_G]] * - greenFactor + - gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_B]] * - blueFactor) >> 8); - } else { - uint8_t tempPixel[4]; - tempPixel[GFX_ARGB32_OFFSET_B] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_B]) / a; - tempPixel[GFX_ARGB32_OFFSET_G] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_G]) / a; - tempPixel[GFX_ARGB32_OFFSET_R] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_R]) / a; - - /* sRGB -> linearRGB -> intensity */ - *destPixel = - static_cast - (((gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_R]] * - redFactor + - gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_G]] * - greenFactor + - gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_B]] * - blueFactor) >> 8) * (a / 255.0f)); - } - } else { - *destPixel = 0; - } - sourcePixel += 4; - destPixel++; - } - sourcePixel += sourceOffset; - destPixel += destOffset; - } -} - -//---------------------------------------------------------------------- -// Implementation - nsIFrame* NS_NewSVGMaskFrame(nsIPresShell* aPresShell, nsStyleContext* aContext) { @@ -258,44 +124,20 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) nsSVGUtils::PaintFrameWithEffects(kid, *tmpCtx, m, aParams.imgParams); } + if (StyleSVG()->mColorInterpolation == + NS_STYLE_COLOR_INTERPOLATION_LINEARRGB) { + maskType = NS_STYLE_COLOR_INTERPOLATION_LINEARRGB; + } + RefPtr surface; if (maskType == NS_STYLE_MASK_TYPE_LUMINANCE) { - RefPtr maskSnapshot = maskDT->Snapshot(); + RefPtr maskSnapshot = + maskDT->IntoLuminanceSource(GetLuminanceType(maskType), + aParams.opacity); if (!maskSnapshot) { return nullptr; } - - RefPtr maskSurface = maskSnapshot->GetDataSurface(); - DataSourceSurface::MappedSurface map; - if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) { - return nullptr; - } - - // Create alpha channel mask for output - RefPtr destMaskSurface = - Factory::CreateDataSourceSurface(maskSurfaceSize, SurfaceFormat::A8); - if (!destMaskSurface) { - return nullptr; - } - DataSourceSurface::MappedSurface destMap; - if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) { - return nullptr; - } - - if (StyleSVG()->mColorInterpolation == - NS_STYLE_COLOR_INTERPOLATION_LINEARRGB) { - ComputeLinearRGBLuminanceMask(map.mData, map.mStride, - destMap.mData, destMap.mStride, - maskSurfaceSize, aParams.opacity); - } else { - ComputesRGBLuminanceMask(map.mData, map.mStride, - destMap.mData, destMap.mStride, - maskSurfaceSize, aParams.opacity); - } - - maskSurface->Unmap(); - destMaskSurface->Unmap(); - surface = destMaskSurface.forget(); + surface = maskSnapshot.forget(); } else { maskDT->SetTransform(Matrix()); maskDT->FillRect(Rect(0, 0, maskSurfaceSize.width, maskSurfaceSize.height), ColorPattern(Color(1.0f, 1.0f, 1.0f, aParams.opacity)), DrawOptions(1, CompositionOp::OP_IN)); diff --git a/layout/svg/nsSVGMaskFrame.h b/layout/svg/nsSVGMaskFrame.h index b8ccfda754c2..bc937cb38633 100644 --- a/layout/svg/nsSVGMaskFrame.h +++ b/layout/svg/nsSVGMaskFrame.h @@ -16,21 +16,6 @@ class gfxContext; -/** - * Byte offsets of channels in a native packed gfxColor or cairo image surface. - */ -#ifdef IS_BIG_ENDIAN -#define GFX_ARGB32_OFFSET_A 0 -#define GFX_ARGB32_OFFSET_R 1 -#define GFX_ARGB32_OFFSET_G 2 -#define GFX_ARGB32_OFFSET_B 3 -#else -#define GFX_ARGB32_OFFSET_A 3 -#define GFX_ARGB32_OFFSET_R 2 -#define GFX_ARGB32_OFFSET_G 1 -#define GFX_ARGB32_OFFSET_B 0 -#endif - class nsSVGMaskFrame final : public nsSVGContainerFrame { friend nsIFrame* diff --git a/layout/svg/nsSVGMaskFrameNEON.cpp b/layout/svg/nsSVGMaskFrameNEON.cpp deleted file mode 100644 index f690b8164dea..000000000000 --- a/layout/svg/nsSVGMaskFrameNEON.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsSVGMaskFrameNEON.h" -#include "nsSVGMaskFrame.h" -#include - -using namespace mozilla::gfx; - -void -ComputesRGBLuminanceMask_NEON(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const IntSize &aSize, - float aOpacity) -{ - int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity - int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity - int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 - const uint8_t *sourcePixel = aSourceData; - int32_t sourceOffset = aSourceStride - 4 * aSize.width; - uint8_t *destPixel = aDestData; - int32_t destOffset = aDestStride - aSize.width; - - sourcePixel = aSourceData; - int32_t remainderWidth = aSize.width % 8; - int32_t roundedWidth = aSize.width - remainderWidth; - uint16x8_t temp; - uint8x8_t gray; - uint8x8_t redVector = vdup_n_u8(redFactor); - uint8x8_t greenVector = vdup_n_u8(greenFactor); - uint8x8_t blueVector = vdup_n_u8(blueFactor); - uint8x8_t fullBitVector = vdup_n_u8(255); - uint8x8_t oneVector = vdup_n_u8(1); - for (int32_t y = 0; y < aSize.height; y++) { - // Calculate luminance by neon with 8 pixels per loop - for (int32_t x = 0; x < roundedWidth; x += 8) { - uint8x8x4_t argb = vld4_u8(sourcePixel); - temp = vmull_u8(argb.val[GFX_ARGB32_OFFSET_R], redVector); // temp = red * redFactor - temp = vmlal_u8(temp, argb.val[GFX_ARGB32_OFFSET_G], greenVector); // temp += green * greenFactor - temp = vmlal_u8(temp, argb.val[GFX_ARGB32_OFFSET_B], blueVector); // temp += blue * blueFactor - gray = vshrn_n_u16(temp, 8); // gray = temp >> 8 - - // Check alpha value - uint8x8_t alphaVector = vtst_u8(argb.val[GFX_ARGB32_OFFSET_A], fullBitVector); - gray = vmul_u8(gray, vand_u8(alphaVector, oneVector)); - - // Put the result to the 8 pixels - vst1_u8(destPixel, gray); - sourcePixel += 8 * 4; - destPixel += 8; - } - - // Calculate the rest pixels of the line by cpu - for (int32_t x = 0; x < remainderWidth; x++) { - if (sourcePixel[GFX_ARGB32_OFFSET_A] > 0) { - *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R]+ - greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + - blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; - } else { - *destPixel = 0; - } - sourcePixel += 4; - destPixel++; - } - sourcePixel += sourceOffset; - destPixel += destOffset; - } -} - diff --git a/layout/svg/nsSVGMaskFrameNEON.h b/layout/svg/nsSVGMaskFrameNEON.h deleted file mode 100644 index 1da901ba7f41..000000000000 --- a/layout/svg/nsSVGMaskFrameNEON.h +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* this source code form is subject to the terms of the mozilla public - * license, v. 2.0. if a copy of the mpl was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef __NS_SVGMASKFRAMENEON_H__ -#define __NS_SVGMASKFRAMENEON_H__ - -#include "mozilla/gfx/Point.h" - -void -ComputesRGBLuminanceMask_NEON(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const mozilla::gfx::IntSize &aSize, - float aOpacity); - -#endif /* __NS_SVGMASKFRAMENEON_H__ */ From 20963d7269b1b14d455f47bc0260d0653015bf84 Mon Sep 17 00:00:00 2001 From: L10n Bumper Bot Date: Tue, 6 Jun 2017 03:00:37 -0700 Subject: [PATCH 59/71] no bug - Bumping Fennec l10n changesets r=release a=l10n-bump tsz -> removed --- mobile/locales/l10n-changesets.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mobile/locales/l10n-changesets.json b/mobile/locales/l10n-changesets.json index 591aba14b231..6f652bf14f8b 100644 --- a/mobile/locales/l10n-changesets.json +++ b/mobile/locales/l10n-changesets.json @@ -659,13 +659,6 @@ ], "revision": "default" }, - "tsz": { - "platforms": [ - "android", - "android-api-15" - ], - "revision": "default" - }, "uk": { "platforms": [ "android", From 12a027af8e1ede32e6f2171a45d349f40dc36b5c Mon Sep 17 00:00:00 2001 From: ffxbld Date: Tue, 6 Jun 2017 08:39:22 -0700 Subject: [PATCH 60/71] No bug, Automated HSTS preload list update from host bld-linux64-spot-307 - a=hsts-update --- security/manager/ssl/nsSTSPreloadList.errors | 214 +- security/manager/ssl/nsSTSPreloadList.inc | 42284 ++++++++--------- 2 files changed, 21242 insertions(+), 21256 deletions(-) diff --git a/security/manager/ssl/nsSTSPreloadList.errors b/security/manager/ssl/nsSTSPreloadList.errors index 1bfba39e91b5..0a1350307605 100644 --- a/security/manager/ssl/nsSTSPreloadList.errors +++ b/security/manager/ssl/nsSTSPreloadList.errors @@ -24,6 +24,7 @@ 126ium.moe: could not connect to host 127011-networks.ch: could not connect to host 12vpnchina.com: could not connect to host +14x3.de: could not connect to host 163pwd.com: could not connect to host 16packets.com: could not connect to host 188betwarriors.co.uk: could not connect to host @@ -58,6 +59,7 @@ 368mibn.com: could not connect to host 38sihu.com: could not connect to host 39sihu.com: could not connect to host +3ags.de: did not receive HSTS header 3chit.cf: could not connect to host 3click-loan.com: could not connect to host 3delivered.com: could not connect to host @@ -68,6 +70,7 @@ 404404.info: could not connect to host 420dongstorm.com: could not connect to host 42ms.org: could not connect to host +441jj.com: did not receive HSTS header 4455software.com: did not receive HSTS header 4679.space: could not connect to host 4azino777.ru: did not receive HSTS header @@ -115,7 +118,6 @@ about.ge: did not receive HSTS header aboutmyip.info: did not receive HSTS header aboutyou-deals.de: did not receive HSTS header abt.de: did not receive HSTS header -abthorpe.org: could not connect to host abtom.de: did not receive HSTS header abury.fr: did not receive HSTS header abury.me: did not receive HSTS header @@ -129,9 +131,7 @@ accounts-p.com: could not connect to host accuenergy.com: max-age too low: 0 acelpb.com: did not receive HSTS header acevik.de: could not connect to host -acg18.us: did not receive HSTS header acgmoon.org: did not receive HSTS header -achterstieg.dedyn.io: could not connect to host acisonline.net: did not receive HSTS header acmle.com: could not connect to host acorns.com: did not receive HSTS header @@ -168,14 +168,12 @@ adrl.ca: could not connect to host adsfund.org: could not connect to host aduedu.de: did not receive HSTS header advancedstudio.ro: did not receive HSTS header -advancis.net: could not connect to host adver.top: could not connect to host adviespuntklokkenluiders.nl: could not connect to host aemoria.com: could not connect to host aerialmediapro.net: could not connect to host aes256.ru: could not connect to host aether.pw: could not connect to host -aevpn.net: could not connect to host aeyoun.com: did not receive HSTS header af-fotografie.net: did not receive HSTS header affilie.de: did not receive HSTS header @@ -198,7 +196,7 @@ ahoynetwork.com: did not receive HSTS header ahri.ovh: could not connect to host aidanwoods.com: did not receive HSTS header aids.gov: did not receive HSTS header -airbnb.com: did not receive HSTS header +airbnb.com: max-age too low: 172800 aircomms.com: did not receive HSTS header airlea.com: could not connect to host airproto.com: could not connect to host @@ -227,11 +225,6 @@ alenan.org: could not connect to host alessandro.pw: did not receive HSTS header alethearose.com: did not receive HSTS header alexandre.sh: did not receive HSTS header -alexismeza.com: could not connect to host -alexismeza.com.mx: could not connect to host -alexismeza.dk: could not connect to host -alexismeza.es: could not connect to host -alexismeza.nl: could not connect to host alfa24.pro: could not connect to host alicialab.org: could not connect to host alittlebitcheeky.com: did not receive HSTS header @@ -246,6 +239,7 @@ alloffice.com.ua: did not receive HSTS header alloinformatique.net: could not connect to host allstarswithus.com: could not connect to host alltheducks.com: max-age too low: 0 +alnitech.com: did not receive HSTS header alpha.irccloud.com: could not connect to host alphabit-secure.com: could not connect to host alphabuild.io: could not connect to host @@ -270,11 +264,6 @@ ameho.me: did not receive HSTS header american-truck-simulator.de: could not connect to host american-truck-simulator.net: could not connect to host americanworkwear.nl: did not receive HSTS header -ameza.co.uk: could not connect to host -ameza.com.mx: could not connect to host -ameza.io: could not connect to host -ameza.me: could not connect to host -ameza.net: could not connect to host amigogeek.net: could not connect to host amilx.com: could not connect to host amilx.org: could not connect to host @@ -290,6 +279,7 @@ anarchistischegroepnijmegen.nl: [Exception... "Component returned failure code: ancientkarma.com: could not connect to host andere-gedanken.net: max-age too low: 10 anderslind.dk: could not connect to host +andisadhdspot.com: did not receive HSTS header andreasbreitenlohner.de: did not receive HSTS header andreasfritz-fotografie.de: could not connect to host andreastoneman.com: could not connect to host @@ -321,6 +311,7 @@ ankaraprofesyonelnakliyat.com: did not receive HSTS header ankaraprofesyonelnakliyat.com.tr: did not receive HSTS header annabellaw.com: did not receive HSTS header anomaly.ws: did not receive HSTS header +anongoth.pl: did not receive HSTS header anonymo.co.uk: could not connect to host anonymo.uk: could not connect to host anonymousstatecollegelulzsec.com: could not connect to host @@ -395,13 +386,13 @@ ars.toscana.it: max-age too low: 0 artiming.com: could not connect to host artistnetwork.nl: did not receive HSTS header arturkohut.com: could not connect to host -artyland.ru: could not connect to host arvamus.eu: could not connect to host arzaroth.com: did not receive HSTS header as.se: could not connect to host as200753.com: could not connect to host as200753.net: could not connect to host as9178.net: could not connect to host +asadzulfahri.com: could not connect to host asasuou.pw: could not connect to host asc16.com: could not connect to host ascamso.com: could not connect to host @@ -437,12 +428,14 @@ atomic.menu: could not connect to host atomik.pro: could not connect to host atop.io: could not connect to host attic118.com: could not connect to host +attilagyorffy.com: could not connect to host attimidesigns.com: did not receive HSTS header au.search.yahoo.com: max-age too low: 172800 aubiosales.com: could not connect to host aucubin.moe: could not connect to host audiovisualdevices.com.au: did not receive HSTS header aujapan.ru: could not connect to host +aur.rocks: could not connect to host aurainfosec.com: did not receive HSTS header aurainfosec.com.au: could not connect to host auraredeye.com: did not receive HSTS header @@ -472,6 +465,7 @@ avantmfg.com: did not receive HSTS header avec-ou-sans-ordonnance.fr: could not connect to host avepol.cz: did not receive HSTS header avepol.eu: did not receive HSTS header +avi9526.pp.ua: could not connect to host aviacao.pt: did not receive HSTS header avinet.com: max-age too low: 0 avqueen.cn: did not receive HSTS header @@ -484,13 +478,10 @@ axeny.com: did not receive HSTS header ayuru.info: did not receive HSTS header az.search.yahoo.com: did not receive HSTS header azino777.ru: did not receive HSTS header -azort.com: did not receive HSTS header azprep.us: did not receive HSTS header b-landia.net: could not connect to host b303.me: did not receive HSTS header b3orion.com: max-age too low: 0 -b422edu.com: could not connect to host -babelfisch.eu: could not connect to host baby-click.de: could not connect to host babybee.ie: could not connect to host babybic.hu: did not receive HSTS header @@ -508,6 +499,7 @@ badkamergigant.com: could not connect to host badlink.org: could not connect to host baff.lu: did not receive HSTS header baiduaccount.com: could not connect to host +bailbondsaffordable.com: could not connect to host bakingstone.com: could not connect to host bakkerdesignandbuild.com: did not receive HSTS header balcan-underground.net: could not connect to host @@ -531,7 +523,7 @@ bashc.at: could not connect to host bashcode.ninja: could not connect to host basicsolutionsus.com: did not receive HSTS header basilisk.io: could not connect to host -bassh.net: could not connect to host +bassh.net: did not receive HSTS header battleofthegridiron.com: could not connect to host baud.ninja: could not connect to host baum.ga: did not receive HSTS header @@ -571,15 +563,14 @@ bedabox.com: max-age too low: 0 bedeta.de: could not connect to host bedreid.dk: did not receive HSTS header bedrijvenadministratie.nl: did not receive HSTS header -beeksnetwork.nl: could not connect to host behere.be: could not connect to host beholdthehurricane.com: could not connect to host -beier.io: did not receive HSTS header +beier.io: could not connect to host +beikeil.de: did not receive HSTS header belairsewvac.com: could not connect to host belics.com: did not receive HSTS header belltower.io: could not connect to host belwederczykow.eu: could not connect to host -bemsoft.pl: could not connect to host bemyvictim.com: max-age too low: 2678400 beneffy.com: did not receive HSTS header benjakesjohnson.com: could not connect to host @@ -616,7 +607,7 @@ bfelob.gov: max-age too low: 86400 bffm.biz: max-age too low: 0 bgcparkstad.nl: did not receive HSTS header bgmn.net: could not connect to host -bhatia.at: could not connect to host +bhatia.at: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] bi.search.yahoo.com: did not receive HSTS header biblerhymes.com: did not receive HSTS header bidon.ca: did not receive HSTS header @@ -627,7 +618,6 @@ bigbbqbrush.bid: could not connect to host bigbrownpromotions.com.au: did not receive HSTS header bigshinylock.minazo.net: could not connect to host biguixhe.net: did not receive HSTS header -bikermusic.net: could not connect to host bildiri.ci: did not receive HSTS header bildschirmflackern.de: did not receive HSTS header billaud.eu.org: could not connect to host @@ -643,6 +633,7 @@ biophysik-ssl.de: did not receive HSTS header biou.me: could not connect to host birkman.com: did not receive HSTS header bisterfeldt.com: did not receive HSTS header +bit-rapid.com: could not connect to host bitbit.org: did not receive HSTS header bitchan.it: could not connect to host bitcoinprivacy.net: did not receive HSTS header @@ -710,6 +701,7 @@ bohan.life: could not connect to host boiadeirodeberna.com: could not connect to host boltdata.io: could not connect to host bonapp.restaurant: could not connect to host +bondoer.fr: did not receive HSTS header bonfi.net: did not receive HSTS header bonitabrazilian.co.nz: did not receive HSTS header bonobo.cz: could not connect to host @@ -732,6 +724,7 @@ bouwbedrijfpurmerend.nl: did not receive HSTS header bowling.com: did not receive HSTS header bowlroll.net: max-age too low: 0 boxcryptor.com: did not receive HSTS header +boxdevigneron.fr: could not connect to host boxintense.com: did not receive HSTS header bqtoolbox.com: could not connect to host br3in.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] @@ -749,9 +742,11 @@ brandon.so: could not connect to host brandred.net: could not connect to host brandspray.com: could not connect to host bravz.de: could not connect to host +breechdepot.com: could not connect to host bregnedalsystems.dk: did not receive HSTS header brettabel.com: did not receive HSTS header brickoo.com: could not connect to host +brickyardbuffalo.com: could not connect to host bridholm.se: could not connect to host brightstarkids.com.au: did not receive HSTS header britzer-toner.de: did not receive HSTS header @@ -761,7 +756,6 @@ brokenhands.io: could not connect to host brookechase.com: did not receive HSTS header browserid.org: could not connect to host brunix.net: did not receive HSTS header -brunosouza.org: could not connect to host brztec.com: could not connect to host bsagan.fr: could not connect to host bsdtips.com: could not connect to host @@ -808,7 +802,6 @@ buttercoin.com: could not connect to host butterfieldstraining.com: did not receive HSTS header buybaby.eu: did not receive HSTS header buyfox.de: did not receive HSTS header -buzzconf.io: could not connect to host bw81.xyz: could not connect to host bwear4all.de: did not receive HSTS header bwwb.nu: could not connect to host @@ -869,7 +862,7 @@ capeyorkfire.com.au: did not receive HSTS header capitaltg.com: could not connect to host capogna.com: could not connect to host captchatheprize.com: could not connect to host -captivatedbytabrett.com: did not receive HSTS header +captivatedbytabrett.com: could not connect to host car-navi.ph: did not receive HSTS header carano-service.de: did not receive HSTS header caraudio69.cz: could not connect to host @@ -898,11 +891,11 @@ casovi.cf: could not connect to host catarsisvr.com: could not connect to host catinmay.com: did not receive HSTS header catnapstudios.com: could not connect to host -cavac.at: could not connect to host cavaleria.ro: did not receive HSTS header caveclan.org: did not receive HSTS header cavedevs.de: could not connect to host cavedroid.xyz: could not connect to host +cavern.tv: could not connect to host cbengineeringinc.com: could not connect to host cbhq.net: could not connect to host ccblog.de: did not receive HSTS header @@ -964,6 +957,7 @@ chepaofen.com: did not receive HSTS header cherekerry.com: could not connect to host cherysunzhang.com: did not receive HSTS header chez-janine.de: could not connect to host +chib.chat: could not connect to host chicisimo.com: did not receive HSTS header chicolawfirm.com: did not receive HSTS header chihiro.xyz: did not receive HSTS header @@ -996,6 +990,7 @@ chulado.com: did not receive HSTS header cidr.ml: could not connect to host cigarblogs.net: could not connect to host cigi.site: could not connect to host +ciicutini.ro: did not receive HSTS header cim2b.de: could not connect to host cimalando.eu: could not connect to host cintdirect.com: could not connect to host @@ -1083,7 +1078,8 @@ codemonkeyrawks.net: did not receive HSTS header codepoet.de: could not connect to host codepult.com: could not connect to host codepx.com: did not receive HSTS header -codingrobots.com: could not connect to host +codewild.de: could not connect to host +codeyellow.nl: did not receive HSTS header codiva.io: max-age too low: 2592000 coffeeetc.co.uk: did not receive HSTS header coffeestrategies.com: max-age too low: 0 @@ -1176,6 +1172,7 @@ cravelyrics.com: could not connect to host crazifyngers.com: could not connect to host crazy-crawler.de: did not receive HSTS header crazycen.com: did not receive HSTS header +crazydomains.co.nz: did not receive HSTS header crazyhotseeds.com: did not receive HSTS header create-test-publish.co.uk: could not connect to host creativephysics.ml: could not connect to host @@ -1199,7 +1196,6 @@ crypt.guru: could not connect to host crypticshell.co.uk: could not connect to host cryptify.eu: could not connect to host cryptobin.org: could not connect to host -cryptocon.org: could not connect to host cryptojar.io: did not receive HSTS header cryptolab.pro: could not connect to host cryptolab.tk: could not connect to host @@ -1226,7 +1222,7 @@ ct.search.yahoo.com: did not receive HSTS header cthulhuden.com: could not connect to host cubeserver.eu: could not connect to host cubewano.com: could not connect to host -cubostecnologia.com: did not receive HSTS header +cubostecnologia.com: could not connect to host cucc.date: did not receive HSTS header cujanovic.com: did not receive HSTS header culinae.nl: could not connect to host @@ -1239,6 +1235,7 @@ curveweb.co.uk: did not receive HSTS header custe.rs: could not connect to host cuteys.de: max-age too low: 86400 cutorrent.com: could not connect to host +cuvva.co.uk: did not receive HSTS header cuvva.eu: did not receive HSTS header cuvva.insure: did not receive HSTS header cuvva.io: did not receive HSTS header @@ -1255,7 +1252,6 @@ cydia-search.io: could not connect to host cynoshair.com: could not connect to host cyphertite.com: could not connect to host cytadel.fr: did not receive HSTS header -czlx.co: could not connect to host dad256.tk: could not connect to host dadtheimpaler.com: could not connect to host dah5.com: did not receive HSTS header @@ -1275,6 +1271,7 @@ danielcowie.me: could not connect to host danieldk.eu: did not receive HSTS header danielheal.net: could not connect to host danieliancu.com: could not connect to host +danielthompson.info: could not connect to host danielverlaan.nl: did not receive HSTS header danielworthy.com: did not receive HSTS header danijobs.com: could not connect to host @@ -1300,7 +1297,6 @@ dashnimorad.com: did not receive HSTS header data-abundance.com: could not connect to host datacalle.com: could not connect to host datahove.no: did not receive HSTS header -datajapan.co.jp: could not connect to host datarank.com: max-age too low: 0 dataretention.solutions: could not connect to host datatekniikka.com: could not connect to host @@ -1311,6 +1307,7 @@ datenreiter.gq: could not connect to host datenreiter.ml: could not connect to host datenreiter.tk: could not connect to host datortipsen.se: could not connect to host +davecardwell.com: did not receive HSTS header davidandkailey.com: could not connect to host davidglidden.eu: did not receive HSTS header davidhunter.scot: did not receive HSTS header @@ -1366,7 +1363,6 @@ depixion.agency: could not connect to host depo.space: could not connect to host dequehablamos.es: could not connect to host derevtsov.com: did not receive HSTS header -dergeilstestammderwelt.de: did not receive HSTS header derwolfe.net: did not receive HSTS header desiccantpackets.com: did not receive HSTS header designandmore.it: did not receive HSTS header @@ -1379,10 +1375,6 @@ detector.exposed: could not connect to host detest.org: could not connect to host detutorial.com: max-age too low: 0 deusu.org: did not receive HSTS header -deux.solutions: could not connect to host -deuxsol.co: could not connect to host -deuxsol.com: could not connect to host -deuxsolutions.com: could not connect to host deuxvia.com: could not connect to host devafterdark.com: could not connect to host devcu.com: could not connect to host @@ -1404,7 +1396,6 @@ dianlujitao.com: did not receive HSTS header diarbag.us: max-age too low: 0 dicando.com: max-age too low: 2592000 dicionariofinanceiro.com: did not receive HSTS header -die-blahuts.de: could not connect to host diedrich.co: could not connect to host dienstplan.one: could not connect to host dierenkruiden.nl: could not connect to host @@ -1440,7 +1431,7 @@ dizihocasi.com: could not connect to host dizorg.net: could not connect to host dj4et.de: could not connect to host djxmmx.net: max-age too low: 0 -djz4music.com: could not connect to host +djz4music.com: did not receive HSTS header dkniss.de: could not connect to host dl.google.com: did not receive HSTS header (error ignored - included regardless) dlc.viasinc.com: could not connect to host @@ -1449,7 +1440,6 @@ dlscomputers.com.au: did not receive HSTS header dmcibulldog.com: did not receive HSTS header dmtry.me: did not receive HSTS header dmz.ninja: could not connect to host -dndtools.net: could not connect to host dns.google.com: did not receive HSTS header (error ignored - included regardless) dnsknowledge.com: did not receive HSTS header do-do.tk: could not connect to host @@ -1476,7 +1466,7 @@ dollywiki.co.uk: could not connect to host dolphin-cloud.com: could not connect to host dolphincorp.co.uk: could not connect to host domaine-aigoual-cevennes.com: did not receive HSTS header -domaris.de: did not receive HSTS header +domaris.de: could not connect to host dominicpratt.de: did not receive HSTS header dominioanimal.com: could not connect to host dominique-mueller.de: did not receive HSTS header @@ -1496,7 +1486,6 @@ dot42.no: could not connect to host dotacni-parazit.cz: did not receive HSTS header dotadata.me: could not connect to host dotspaperie.com: did not receive HSTS header -dougferris.id.au: could not connect to host dovecotadmin.org: could not connect to host dovetailnow.com: could not connect to host download.jitsi.org: did not receive HSTS header @@ -1532,10 +1521,10 @@ dtub.co: did not receive HSTS header dubik.su: could not connect to host dubrovskiy.net: could not connect to host dubrovskiy.pro: could not connect to host -duerls.de: could not connect to host duesee.org: could not connect to host dullsir.com: did not receive HSTS header dungi.org: could not connect to host +dutchessuganda.com: did not receive HSTS header dutchrank.com: did not receive HSTS header duuu.ch: could not connect to host dycontrol.de: could not connect to host @@ -1647,7 +1636,6 @@ emnitech.com: could not connect to host empleosentorreon.mx: could not connect to host empleostampico.com: did not receive HSTS header empty-r.com: could not connect to host -emrenovation.com: could not connect to host enaah.de: could not connect to host enargia.jp: max-age too low: 0 encoder.pw: could not connect to host @@ -1725,7 +1713,6 @@ eternitylove.us: could not connect to host eth9.net: could not connect to host ethicalexploiting.com: could not connect to host ethil-faer.fr: did not receive HSTS header -ethlan.fr: could not connect to host etmirror.top: could not connect to host etmirror.xyz: could not connect to host etproxy.tech: could not connect to host @@ -1762,7 +1749,6 @@ exno.co: could not connect to host exousiakaidunamis.xyz: could not connect to host expertmile.com: did not receive HSTS header expoundite.net: did not receive HSTS header -expressemotion.net: could not connect to host expressfinance.co.za: did not receive HSTS header extrathemeshowcase.net: could not connect to host extratorrentlive.xyz: could not connect to host @@ -1911,13 +1897,13 @@ flyaces.com: did not receive HSTS header fm83.nl: could not connect to host fndout.com: did not receive HSTS header fnvsecurity.com: could not connect to host -focusmark.jp: could not connect to host fojtova.cz: did not receive HSTS header fojtovi.cz: did not receive HSTS header fonetiq.io: could not connect to host food4health.guide: could not connect to host foodbuddy.ch: could not connect to host foodev.de: could not connect to host +foodiebox.no: did not receive HSTS header foodievenues.com: could not connect to host foodsafetyworkinggroup.gov: could not connect to host footballmapped.com: could not connect to host @@ -2049,7 +2035,7 @@ gamerslair.org: did not receive HSTS header gamerz-point.de: could not connect to host gamesdepartment.co.uk: did not receive HSTS header gameserver-sponsor.de: could not connect to host -gamingmedia.eu: could not connect to host +gamingmedia.eu: did not receive HSTS header gampenhof.de: did not receive HSTS header gapdirect.com: could not connect to host gaptek.id: did not receive HSTS header @@ -2058,6 +2044,7 @@ garciamartin.me: could not connect to host garden.trade: max-age too low: 0 gatapro.net: could not connect to host gatorsa.es: did not receive HSTS header +gazellegames.net: could not connect to host gdegem.org: did not receive HSTS header gdpventure.com: max-age too low: 0 gedankenbude.info: could not connect to host @@ -2110,6 +2097,7 @@ gfwsb.ml: could not connect to host ggss.ml: could not connect to host gheorghesarcov.ga: could not connect to host gheorghesarcov.tk: could not connect to host +giakki.eu: could not connect to host giantmicrobes.de: max-age too low: 86400 gibraltar.at: could not connect to host gietvloergarant.nl: did not receive HSTS header @@ -2202,6 +2190,7 @@ graph.no: did not receive HSTS header graphsearchengine.com: could not connect to host gratisonlinesex.com: could not connect to host gravito.nl: did not receive HSTS header +gravity-inc.net: could not connect to host gravity-net.de: could not connect to host graycell.net: could not connect to host grazetech.com: did not receive HSTS header @@ -2227,7 +2216,6 @@ groupe-cassous.com: did not receive HSTS header groups.google.com: did not receive HSTS header (error ignored - included regardless) grunex.com: did not receive HSTS header grupopgn.com.br: could not connect to host -grusenmeyer.be: could not connect to host gryffin.ga: could not connect to host gryffin.ml: could not connect to host gryffin.tk: could not connect to host @@ -2371,7 +2359,7 @@ helgakristoffer.wedding: could not connect to host helingqi.com: could not connect to host helloworldhost.com: did not receive HSTS header helpadmin.net: could not connect to host -helpium.de: could not connect to host +helpium.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] helpmebuild.com: did not receive HSTS header hemdal.se: could not connect to host hencagon.com: could not connect to host @@ -2450,6 +2438,7 @@ hsts.com.br: could not connect to host hsts.date: could not connect to host html-lab.tk: could not connect to host http418.xyz: could not connect to host +httphacker.com: could not connect to host httpstatuscode418.xyz: could not connect to host hu.search.yahoo.com: did not receive HSTS header huangh.com: could not connect to host @@ -2474,7 +2463,6 @@ hydra.zone: could not connect to host hydronium.cf: could not connect to host hydronium.ga: could not connect to host hydronium.me: could not connect to host -hydronium.ml: could not connect to host hydronium.tk: could not connect to host hypa.net.au: did not receive HSTS header hyper69.com: did not receive HSTS header @@ -2499,11 +2487,13 @@ icity.ly: did not receive HSTS header icloud.net: could not connect to host icntorrent.download: could not connect to host icodesign.me: did not receive HSTS header +icpc.pp.ua: did not receive HSTS header icreative.nl: did not receive HSTS header ictual.com: max-age too low: 0 id-co.in: could not connect to host id-conf.com: did not receive HSTS header idacmedia.com: max-age too low: 5184000 +ideadozz.hu: could not connect to host ideal-envelopes.co.uk: did not receive HSTS header idealmykonos.com: did not receive HSTS header ideasmeetingpoint.com: could not connect to host @@ -2521,11 +2511,11 @@ ierna.com: did not receive HSTS header ies-italia.it: did not receive HSTS header ies.id.lv: could not connect to host ifad.org: did not receive HSTS header -ifasec.de: could not connect to host ifastuniversity.com: did not receive HSTS header ifleurs.com: could not connect to host ifx.ee: could not connect to host ignatisd.gr: did not receive HSTS header +igotoffer.com: did not receive HSTS header igule.net: could not connect to host ihrlotto.de: could not connect to host ihrnationalrat.ch: could not connect to host @@ -2545,7 +2535,6 @@ imakepoems.net: could not connect to host imanolbarba.net: could not connect to host ime.moe: could not connect to host imim.pw: could not connect to host -imjad.cn: did not receive HSTS header immoprotect.ca: did not receive HSTS header immortals-co.com: did not receive HSTS header immoverkauf24.at: did not receive HSTS header @@ -2618,7 +2607,6 @@ interhosts.co.za: could not connect to host interim-cto.de: could not connect to host interleucina.org: did not receive HSTS header interlun.com: could not connect to host -internect.co.za: did not receive HSTS header internetcasinos.de: could not connect to host internetcensus.org: could not connect to host interserved.com: did not receive HSTS header @@ -2684,7 +2672,6 @@ istaspirtslietas.lv: did not receive HSTS header it-go.net: did not receive HSTS header italia-store.com: could not connect to host itechgeek.com: max-age too low: 0 -iteli.eu: could not connect to host ithakama.com: did not receive HSTS header ithakama.cz: did not receive HSTS header itos.asia: did not receive HSTS header @@ -2761,7 +2748,6 @@ jaylen.com.ar: did not receive HSTS header jayschulman.com: did not receive HSTS header jayscoaching.com: did not receive HSTS header jayshao.com: did not receive HSTS header -jazzysumi.com: could not connect to host jbn.mx: could not connect to host jcch.de: could not connect to host jcor.me: did not receive HSTS header @@ -2865,6 +2851,7 @@ k-dev.de: could not connect to host ka-clan.com: could not connect to host kabinapp.com: could not connect to host kabuabc.com: did not receive HSTS header +kabus.org: could not connect to host kadioglumakina.com.tr: did not receive HSTS header kaela.design: could not connect to host kahopoon.net: could not connect to host @@ -2987,7 +2974,7 @@ kontorhaus-schlachte.de: could not connect to host koopjesnel.nl: did not receive HSTS header koordinate.net: could not connect to host kopfsalat.eu: could not connect to host -kori.ml: could not connect to host +kori.ml: did not receive HSTS header korni22.org: did not receive HSTS header korsanparti.org: could not connect to host kostuumstore.nl: could not connect to host @@ -3022,6 +3009,7 @@ kstan.me: could not connect to host kswriter.com: could not connect to host kucom.it: did not receive HSTS header kueulangtahunanak.net: could not connect to host +kum.com: did not receive HSTS header kummerlaender.eu: did not receive HSTS header kupelne-ptacek.sk: did not receive HSTS header kuppingercole.com: did not receive HSTS header @@ -3062,6 +3050,7 @@ lacocinadelila.com: did not receive HSTS header laf.in.net: could not connect to host lagalerievirtuelle.fr: did not receive HSTS header lagoza.name: could not connect to host +lakewoodcomputerservices.com: could not connect to host lalaya.fr: could not connect to host lamaland.ru: did not receive HSTS header lambda-complex.org: could not connect to host @@ -3107,7 +3096,6 @@ legarage.org: did not receive HSTS header leinir.dk: did not receive HSTS header leitner.com.au: did not receive HSTS header leiyun.me: did not receive HSTS header -lel.ovh: could not connect to host lellyboi.ml: could not connect to host lelongbank.com: did not receive HSTS header lemp.io: did not receive HSTS header @@ -3117,7 +3105,6 @@ leob.in: did not receive HSTS header leon-jaekel.com: could not connect to host leonhooijer.nl: could not connect to host leopold.email: could not connect to host -leopoldina.net: could not connect to host leopotamgroup.com: could not connect to host lepont.pl: could not connect to host lerner.moscow: did not receive HSTS header @@ -3313,7 +3300,6 @@ macbolo.com: could not connect to host macchedil.com: did not receive HSTS header macdj.tk: could not connect to host macgeneral.de: did not receive HSTS header -maco.org.uk: could not connect to host macsandcheesedreams.com: could not connect to host madars.org: did not receive HSTS header maddin.ga: could not connect to host @@ -3364,6 +3350,7 @@ marcontrol.com: did not receive HSTS header marcosteixeira.tk: could not connect to host marcus-scheffler.com: did not receive HSTS header margaretrosefashions.co.uk: could not connect to host +marialempke.com: did not receive HSTS header mariannematthew.com: could not connect to host marie-curie.fr: could not connect to host marie-elisabeth.dk: did not receive HSTS header @@ -3390,7 +3377,7 @@ martineve.com: did not receive HSTS header martinp.no: could not connect to host martinreed.net: could not connect to host marumagic.com: did not receive HSTS header -mashnew.com: could not connect to host +mashnew.com: did not receive HSTS header masjidtawheed.net: did not receive HSTS header masterapi.ninja: did not receive HSTS header masteringtheterminal.com: did not receive HSTS header @@ -3432,7 +3419,6 @@ mclab.su: could not connect to host mclist.it: could not connect to host mdfnet.se: did not receive HSTS header mdscomp.net: did not receive HSTS header -meadowfen.farm: could not connect to host meamod.com: max-age too low: 0 mecenat-cassous.com: did not receive HSTS header mechmk1.me: did not receive HSTS header @@ -3489,6 +3475,7 @@ mexbt.com: could not connect to host mexicanbusinessweb.mx: did not receive HSTS header mexicansbook.ru: did not receive HSTS header mfcatalin.com: could not connect to host +mfedderke.com: could not connect to host mh-bloemen.co.jp: could not connect to host mhdsyarif.com: did not receive HSTS header mhealthdemocamp.com: could not connect to host @@ -3523,6 +3510,7 @@ mightydicks.tech: could not connect to host mightysounds.cz: max-age too low: 0 mijcorijneveld.nl: did not receive HSTS header mijn-email.org: could not connect to host +mijnkredietpaspoort.nl: could not connect to host mikaelemilsson.net: did not receive HSTS header mikeburns.com: could not connect to host mikeg.de: did not receive HSTS header @@ -3605,7 +3593,7 @@ momoka.moe: could not connect to host mona.lu: did not receive HSTS header monarca.systems: could not connect to host monasterialis.eu: could not connect to host -mondar.io: could not connect to host +mondar.io: did not receive HSTS header mondopoint.com: did not receive HSTS header mondwandler.de: could not connect to host moneromerchant.com: could not connect to host @@ -3633,9 +3621,10 @@ morethanadream.lv: could not connect to host morningcalculation.com: could not connect to host morninglory.com: max-age too low: 2592000 mornings.com: did not receive HSTS header +morpheusx.at: could not connect to host +morpheusxaut.net: could not connect to host morpork.xyz: could not connect to host mortgagecentersmo.com: did not receive HSTS header -mostlyharmless.at: could not connect to host mostwuat.com: could not connect to host motherbase.io: could not connect to host motionfreight.com: did not receive HSTS header @@ -3659,6 +3648,7 @@ mrning.com: did not receive HSTS header mrnonz.com: max-age too low: 0 mrpopat.in: did not receive HSTS header mrs-shop.com: did not receive HSTS header +mrsk.me: could not connect to host msc-seereisen.net: could not connect to host msno.no: did not receive HSTS header mszaki.com: did not receive HSTS header @@ -3797,7 +3787,6 @@ netloanusa.com: could not connect to host netmagik.com: did not receive HSTS header netresourcedesign.com: did not receive HSTS header nettefoundation.com: could not connect to host -networth.at: could not connect to host networx-online.de: could not connect to host netzbit.de: could not connect to host netzpolitik.org: did not receive HSTS header @@ -3849,7 +3838,6 @@ nien.chat: could not connect to host nightwinds.tk: could not connect to host niho.jp: did not receive HSTS header nikcub.com: did not receive HSTS header -nikksno.io: did not receive HSTS header niklas.pw: could not connect to host niklaslindblad.se: did not receive HSTS header nikomo.fi: did not receive HSTS header @@ -3865,6 +3853,7 @@ nixien.fr: could not connect to host nixmag.net: max-age too low: 2592000 nll.fi: could not connect to host nmctest.net: could not connect to host +nmueller.at: could not connect to host nnya.cat: could not connect to host no-ip.cz: did not receive HSTS header no17sifangjie.cc: could not connect to host @@ -3889,7 +3878,7 @@ nosecretshop.com: did not receive HSTS header notadd.com: did not receive HSTS header notenoughtime.de: could not connect to host nothing.net.nz: max-age too low: 7776000 -notify.moe: could not connect to host +noticia.do: did not receive HSTS header notinprod.com: did not receive HSTS header nottheonion.net: did not receive HSTS header nouvelle-vague-saint-cast.fr: did not receive HSTS header @@ -3963,10 +3952,10 @@ offenedialoge.de: max-age too low: 2592000 officeclub.com.mx: did not receive HSTS header offshore-firma.org: could not connect to host ogogoshop.com: could not connect to host +oh14.de: could not connect to host ohsocool.org: could not connect to host oishioffice.com: did not receive HSTS header okane.love: could not connect to host -okmx.de: could not connect to host okok-rent.com: could not connect to host okok.rent: could not connect to host okutama.in.th: could not connect to host @@ -4032,9 +4021,9 @@ openmtbmap.org: did not receive HSTS header openpriv.pw: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] openprovider.nl: did not receive HSTS header openquery.com.au: did not receive HSTS header +openrainbow.org: could not connect to host openshift.redhat.com: did not receive HSTS header opensourcehouse.net: could not connect to host -openspace.xxx: did not receive HSTS header opensrd.com: could not connect to host openxmpp.com: could not connect to host opim.ca: did not receive HSTS header @@ -4077,6 +4066,7 @@ ottospora.nl: could not connect to host ourbank.com: did not receive HSTS header ourevents.net: could not connect to host outdoorproducts.com: did not receive HSTS header +outerlimitsdigital.com: did not receive HSTS header outetc.com: could not connect to host outreachbuddy.com: could not connect to host outsider.im: could not connect to host @@ -4140,6 +4130,7 @@ partijtjevoordevrijheid.nl: [Exception... "Component returned failure code: 0x80 partirkyoto.jp: did not receive HSTS header partou.de: did not receive HSTS header partyhaus.ovh: did not receive HSTS header +partyvan.eu: could not connect to host partyvan.it: could not connect to host partyvan.moe: could not connect to host partyvan.nl: could not connect to host @@ -4160,7 +4151,7 @@ patt.us: did not receive HSTS header patterson.mp: could not connect to host paul-kerebel.pro: could not connect to host paulbunyanmls.com: could not connect to host -paulchen.at: could not connect to host +paulchen.at: did not receive HSTS header paulproell.at: could not connect to host paulyang.cn: did not receive HSTS header pavelfojt.cz: did not receive HSTS header @@ -4183,9 +4174,10 @@ pdf.yt: could not connect to host peakapp.nl: could not connect to host peerherrmann.de: could not connect to host peetah.com: max-age too low: 0 -peissen.com: could not connect to host +peissen.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] pekkapikkarainen.fi: did not receive HSTS header pekkarik.ru: could not connect to host +peliculasaudiolatinoonline.com: could not connect to host pengi.me: could not connect to host pengui.uk: could not connect to host penguinclientsystem.com: did not receive HSTS header @@ -4221,6 +4213,7 @@ peytonfarrar.com: did not receive HSTS header pgpm.io: could not connect to host phalconist.com: did not receive HSTS header pharmgkb.org: could not connect to host +phillipgoldfarb.com: could not connect to host phillprice.com: could not connect to host phoebe.co.nz: did not receive HSTS header phonenumberinfo.co.uk: could not connect to host @@ -4296,8 +4289,6 @@ pmnts.io: could not connect to host po.gl: did not receive HSTS header pocketsix.com: could not connect to host pocloud.homelinux.net: could not connect to host -poed.net.au: could not connect to host -poedgirl.com: could not connect to host poiema.com.sg: did not receive HSTS header pointeringles.com: could not connect to host pointiswunderland.de: did not receive HSTS header @@ -4322,7 +4313,6 @@ pornstars.me: did not receive HSTS header portalplatform.net: could not connect to host poshpak.com: max-age too low: 86400 postcodewise.co.uk: did not receive HSTS header -posterspy.com: did not receive HSTS header postscheduler.org: could not connect to host posylka.de: did not receive HSTS header potatoheads.net: could not connect to host @@ -4344,6 +4334,7 @@ pr2studio.com: could not connect to host prattpokemon.com: could not connect to host prediksisydney.com: could not connect to host preezzie.com: could not connect to host +prefis.com: did not receive HSTS header prefontaine.name: could not connect to host prego-shop.de: did not receive HSTS header preissler.co.uk: could not connect to host @@ -4376,7 +4367,9 @@ progress-technologies.com: could not connect to host prohostonline.fi: could not connect to host proitconsulting.com.au: could not connect to host project-sparks.eu: did not receive HSTS header +projectascension.io: could not connect to host projectmercury.space: could not connect to host +prok.pw: could not connect to host promecon-gmbh.de: did not receive HSTS header prontocleaners.co.uk: could not connect to host prontolight.com: did not receive HSTS header @@ -4463,6 +4456,7 @@ ra-schaal.de: could not connect to host raajheshkannaa.com: could not connect to host radicaleducation.net: could not connect to host radio-utopie.de: did not receive HSTS header +radiormi.com: could not connect to host radtke.bayern: could not connect to host rafaelcz.de: could not connect to host raidstone.com: could not connect to host @@ -4480,7 +4474,6 @@ rannseier.org: did not receive HSTS header rany.duckdns.org: max-age too low: 0 rany.io: max-age too low: 0 rany.pw: max-age too low: 0 -rapdogg.com: could not connect to host rapenroer.nl: could not connect to host rapidresearch.me: could not connect to host rapidthunder.io: could not connect to host @@ -4568,7 +4561,6 @@ rentacarcluj.xyz: could not connect to host rentbrowsertrain.me: could not connect to host rentcarassist.com: could not connect to host renteater.com: could not connect to host -repaxan.com: could not connect to host replacemychina.com: could not connect to host reprolife.co.uk: could not connect to host res-rheingau.de: did not receive HSTS header @@ -4591,6 +4583,7 @@ reviews.anime.my: max-age too low: 5184000 revtut.net: did not receive HSTS header rewardstock.com: max-age too low: 0 rex.st: could not connect to host +rex.tc: did not receive HSTS header rhapsodhy.hu: could not connect to host rhdigital.pro: could not connect to host rhering.de: could not connect to host @@ -4643,6 +4636,7 @@ rodosto.com: could not connect to host roeper.party: could not connect to host roesemann.email: could not connect to host roguelikecenter.fr: did not receive HSTS header +roguesignal.net: did not receive HSTS header rolandreed.cn: did not receive HSTS header rolemaster.net: could not connect to host rolroer.co.za: could not connect to host @@ -4681,6 +4675,7 @@ rubbereggs.ca: could not connect to host rubberfurs.org: did not receive HSTS header rubecodeberg.com: could not connect to host rubenschulz.nl: did not receive HSTS header +rubi-ka.net: did not receive HSTS header ruborr.se: did not receive HSTS header rubysecurity.org: did not receive HSTS header rubyshop.nl: max-age too low: 604800 @@ -4723,6 +4718,7 @@ saltedskies.com: could not connect to host salud.top: did not receive HSTS header salzamt.tk: could not connect to host sametovymesic.cz: could not connect to host +samirnassar.com: could not connect to host saml2.com: could not connect to host sampcup.com: could not connect to host sampoznay.ru: did not receive HSTS header @@ -4739,6 +4735,7 @@ sarahsweetlife.com: could not connect to host sarahsweger.com: did not receive HSTS header sarisonproductions.com: did not receive HSTS header saruwebshop.co.za: could not connect to host +satanichia.moe: could not connect to host satinn.pl: max-age too low: 2592000 satmep.com: did not receive HSTS header satoshicrypt.com: did not receive HSTS header @@ -4779,6 +4776,7 @@ scotbirchfield.com: did not receive HSTS header scottdial.com: did not receive HSTS header scottferguson.com.au: did not receive HSTS header scottgthomas.com: could not connect to host +scottnicol.co.uk: could not connect to host scottynordstrom.org: did not receive HSTS header scourt.info: did not receive HSTS header scourt.org.ua: did not receive HSTS header @@ -4798,8 +4796,8 @@ scriptict.nl: could not connect to host sdmoscow.ru: could not connect to host sdrobs.com: did not receive HSTS header sdsl-speedtest.de: could not connect to host -sealbaker.com: could not connect to host search-one.de: did not receive HSTS header +searchbrothers.com: could not connect to host sebastian-lutsch.de: could not connect to host sebster.com: did not receive HSTS header secandtech.com: could not connect to host @@ -4837,7 +4835,7 @@ selectruckscalltrackingreports.com: could not connect to host selfcarecentral.com: did not receive HSTS header selfdefenserx.com: did not receive HSTS header selfie-france.fr: could not connect to host -selldorado.com: could not connect to host +selldorado.com: did not receive HSTS header sello.com: did not receive HSTS header sellocdn.com: could not connect to host sellservs.co.za: could not connect to host @@ -4856,6 +4854,7 @@ seomobo.com: could not connect to host seosanantonioinc.com: did not receive HSTS header seowarp.net: did not receive HSTS header sep23.ru: did not receive HSTS header +sepalandseed.com: did not receive HSTS header seq.tf: did not receive HSTS header serathius.ovh: could not connect to host serenitycreams.com: did not receive HSTS header @@ -4907,7 +4906,6 @@ shoprose.ru: could not connect to host shops.neonisi.com: could not connect to host showkeeper.tv: did not receive HSTS header shrike.me: could not connect to host -shu-kin.net: could not connect to host shukatsu-note.com: could not connect to host shv25.se: could not connect to host shwongacc.com: could not connect to host @@ -4923,7 +4921,8 @@ siebens.net: could not connect to host sifls.com: could not connect to host sig6.org: could not connect to host sigsegv.run: could not connect to host -sijimi.cn: could not connect to host +sijimi.cn: did not receive HSTS header +sikayetvar.com: did not receive HSTS header silaslova-ekb.ru: could not connect to host silentcircle.com: did not receive HSTS header silentcircle.org: could not connect to host @@ -5043,7 +5042,6 @@ solsystems.ru: could not connect to host somali-derp.com: could not connect to host someshit.xyz: could not connect to host somethingnew.xyz: could not connect to host -songzhuolun.com: could not connect to host sonic.network: did not receive HSTS header sonicrainboom.rocks: did not receive HSTS header soobi.org: did not receive HSTS header @@ -5076,6 +5074,7 @@ spdysync.com: could not connect to host speculor.net: could not connect to host speed-mailer.com: could not connect to host speedcounter.net: did not receive HSTS header +speeds.vip: did not receive HSTS header speedy.lt: max-age too low: 0 speedyprep.com: did not receive HSTS header speidel.com.tr: did not receive HSTS header @@ -5095,6 +5094,7 @@ spodelime.com: did not receive HSTS header sponsortobias.com: could not connect to host sportchirp-internal.azurewebsites.net: did not receive HSTS header sporthit.ru: did not receive HSTS header +sporttrampen.de: could not connect to host sportwette.eu: did not receive HSTS header spot-events.com: could not connect to host spotifyripper.tk: could not connect to host @@ -5127,11 +5127,13 @@ staffjoystaging.com: did not receive HSTS header stahl.xyz: could not connect to host stalkerhispano.com: max-age too low: 0 stalschermer.nl: could not connect to host +stamonicatourandtravel.com: could not connect to host standardssuck.org: did not receive HSTS header standingmist.com: did not receive HSTS header starandshield.com: did not receive HSTS header stargatepartners.com: did not receive HSTS header starmusic.ga: did not receive HSTS header +starsam80.net: could not connect to host starttraffic.com: did not receive HSTS header startuponcloud.com: max-age too low: 2678400 startuppeople.co.uk: could not connect to host @@ -5182,6 +5184,7 @@ str0.at: did not receive HSTS header strasweb.fr: did not receive HSTS header strbt.de: could not connect to host strchr.com: did not receive HSTS header +stream.pub: did not receive HSTS header streamingeverywhere.com: could not connect to host streamingmagazin.de: could not connect to host streampanel.net: did not receive HSTS header @@ -5202,6 +5205,7 @@ studybay.com: did not receive HSTS header studydrive.net: did not receive HSTS header studyhub.cf: did not receive HSTS header stugb.de: did not receive HSTS header +stupendous.net: could not connect to host sturbock.me: did not receive HSTS header stylenda.com: could not connect to host subbing.work: could not connect to host @@ -5219,8 +5223,9 @@ summitbankofkc.com: did not receive HSTS header sumoatm.com: did not receive HSTS header sumoscout.de: did not receive HSTS header suncountrymarine.com: did not receive HSTS header +sunflyer.cn: did not receive HSTS header sunfulong.me: could not connect to host -sunnyfruit.ru: did not receive HSTS header +sunnyfruit.ru: could not connect to host sunshinepress.org: could not connect to host sunyanzi.tk: could not connect to host suos.io: could not connect to host @@ -5276,6 +5281,7 @@ syriatalk.biz: could not connect to host syriatalk.org: could not connect to host syrocon.ch: could not connect to host sys.tf: could not connect to host +sysadmin.xyz: could not connect to host sysgeek.cn: could not connect to host syso.name: could not connect to host syspen.space: did not receive HSTS header @@ -5286,6 +5292,7 @@ t-complex.space: could not connect to host t-ken.xyz: could not connect to host t-shirts4less.nl: did not receive HSTS header t-tz.com: could not connect to host +t4c-rebirth.com: could not connect to host t4x.org: did not receive HSTS header taabe.xyz: could not connect to host tacomafia.net: did not receive HSTS header @@ -5318,9 +5325,8 @@ tartaros.fi: could not connect to host taskstats.com: could not connect to host taskulu.ir: could not connect to host tasmansecurity.com: could not connect to host -tasta.ro: did not receive HSTS header tastyyy.co: could not connect to host -tatilbus.com: could not connect to host +tatilbus.com: did not receive HSTS header tatt.io: could not connect to host tauchkater.de: could not connect to host tavopica.lt: did not receive HSTS header @@ -5336,6 +5342,10 @@ tcl.ath.cx: did not receive HSTS header tcomms.org: max-age too low: 0 tcp.expert: did not receive HSTS header tcwebvn.com: could not connect to host +tdsb.cf: could not connect to host +tdsb.ga: could not connect to host +tdsb.gq: could not connect to host +tdsb.ml: could not connect to host teachforcanada.ca: did not receive HSTS header team-teasers.com: could not connect to host teamblueridge.org: could not connect to host @@ -5415,6 +5425,7 @@ thecapitalbank.com: did not receive HSTS header thecharlestonwaldorf.com: did not receive HSTS header theclementinebutchers.com: could not connect to host theclubjersey.com: did not receive HSTS header +thecodeninja.net: could not connect to host thecoffeehouse.xyz: could not connect to host theelitebuzz.com: did not receive HSTS header theendofzion.com: did not receive HSTS header @@ -5471,6 +5482,7 @@ thiswebhost.com: did not receive HSTS header thomaskliszowski.fr: did not receive HSTS header thomasmeester.nl: did not receive HSTS header thomasschweizer.net: could not connect to host +thompsonfamily.cloud: could not connect to host thorncreek.net: did not receive HSTS header thriveapproach.co.uk: did not receive HSTS header thumbtack.com: did not receive HSTS header @@ -5538,6 +5550,7 @@ todamateria.com.br: did not receive HSTS header todesschaf.org: could not connect to host todo.is: did not receive HSTS header todobazar.es: could not connect to host +tofu.im: could not connect to host togelonlinecommunity.com: did not receive HSTS header tokenloan.com: could not connect to host tokoone.com: did not receive HSTS header @@ -5550,6 +5563,8 @@ tomlankhorst.nl: did not receive HSTS header tomli.me: could not connect to host tommsy.com: did not receive HSTS header tommyads.com: could not connect to host +tonsit.com: did not receive HSTS header +tonsit.org: did not receive HSTS header tonyfantjr.com: could not connect to host toomanypillows.com: could not connect to host top-stage.net: could not connect to host @@ -5587,6 +5602,7 @@ trafficmanager.xxx: did not receive HSTS header traindb.nl: did not receive HSTS header training4girls.ru: did not receive HSTS header trainut.com: did not receive HSTS header +trakfusion.com: could not connect to host transformify.org: did not receive HSTS header translate.googleapis.com: did not receive HSTS header (error ignored - included regardless) transportal.sk: did not receive HSTS header @@ -5598,6 +5614,7 @@ treatprostatewithhifu.com: could not connect to host treeby.net: could not connect to host trell.co.in: did not receive HSTS header trendberry.ru: could not connect to host +trik.es: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 118" data: no] trinityaffirmations.com: max-age too low: 0 trinitycore.org: max-age too low: 2592000 tripdelta.com: did not receive HSTS header @@ -5624,7 +5641,6 @@ tubbutec.de: did not receive HSTS header tubepro.de: did not receive HSTS header tubetoon.com: did not receive HSTS header tucker.wales: could not connect to host -tuincentersnaet.be: did not receive HSTS header tuingereedschappen.net: could not connect to host tunai.id: could not connect to host tunebitfm.de: could not connect to host @@ -5657,7 +5673,6 @@ txclimbers.com: could not connect to host txf.pw: could not connect to host ty2u.com: did not receive HSTS header tylian.net: max-age too low: 0 -typeria.net: could not connect to host tyrelius.com: did not receive HSTS header tyroproducts.eu: did not receive HSTS header tzappa.net: could not connect to host @@ -5722,12 +5737,10 @@ unisyssecurity.com: did not receive HSTS header unitlabs.net: could not connect to host university4industry.com: did not receive HSTS header univz.com: could not connect to host -unixcorn.org: did not receive HSTS header unknownphenomena.net: could not connect to host unmanaged.space: did not receive HSTS header unplugg3r.dk: could not connect to host unravel.ie: could not connect to host -unsupervised.ca: could not connect to host unsystem.net: did not receive HSTS header unwiredbrain.com: could not connect to host unyq.me: could not connect to host @@ -5741,7 +5754,6 @@ uprotect.it: could not connect to host upstats.eu: could not connect to host ur-lauber.de: did not receive HSTS header urandom.eu.org: did not receive HSTS header -urbanstylestaging.com: did not receive HSTS header urbpic.com: could not connect to host urlchomp.com: did not receive HSTS header urown.net: could not connect to host @@ -5770,10 +5782,10 @@ uyym.com: could not connect to host uz.search.yahoo.com: did not receive HSTS header uzmandroid.net: could not connect to host uzmandroid.top: could not connect to host -v-u-z.ru: could not connect to host v0tti.com: could not connect to host v2.pw: did not receive HSTS header v4veedu.com: could not connect to host +v7.cl: could not connect to host vaalmarketplace.co.za: did not receive HSTS header vaddder.com: could not connect to host vaelma.fi: max-age too low: 600 @@ -5822,6 +5834,7 @@ vicianovi.cz: could not connect to host videnskabsklubben.dk: did not receive HSTS header videomuz.com: did not receive HSTS header videotogel.net: did not receive HSTS header +videoueberwachung-set.de: did not receive HSTS header vidid.net: did not receive HSTS header vidz.ga: could not connect to host vieaw.com: did not receive HSTS header @@ -5841,6 +5854,7 @@ vio.no: did not receive HSTS header violenceinterrupted.org: did not receive HSTS header viperdns.com: could not connect to host vipmusic.ga: could not connect to host +viral8.jp: could not connect to host virginiacrimeanalysisnetwork.org: did not receive HSTS header visitbroadstairs.com: could not connect to host vissanum.com: did not receive HSTS header @@ -5907,7 +5921,6 @@ wapt.fr: could not connect to host warandpeace.xyz: could not connect to host warehost.de: did not receive HSTS header warezaddict.com: did not receive HSTS header -warhaggis.com: could not connect to host warhistoryonline.com: max-age too low: 0 warped.com: did not receive HSTS header warsentech.com: could not connect to host @@ -6005,7 +6018,6 @@ willcipriano.com: could not connect to host william.si: did not receive HSTS header williamsapiens.com: could not connect to host willosagiede.com: did not receive HSTS header -wimake.solutions: did not receive HSTS header winaes.com: did not receive HSTS header winclient.cn: could not connect to host windowsphoneblog.it: max-age too low: 0 @@ -6050,12 +6062,11 @@ word-grabber.com: did not receive HSTS header woresite.jp: did not receive HSTS header work-and-jockel.de: did not receive HSTS header workfone.io: did not receive HSTS header -workpermit.com.vn: could not connect to host +workpermit.com.vn: did not receive HSTS header workwithgo.com: could not connect to host worldsbeststory.com: did not receive HSTS header worldwhisperer.net: did not receive HSTS header worshapp.com: did not receive HSTS header -wow-foederation.de: could not connect to host wowapi.org: could not connect to host wpblog.com.tw: did not receive HSTS header wpcarer.pro: did not receive HSTS header @@ -6067,6 +6078,7 @@ wpmetadatastandardsproject.org: did not receive HSTS header writeapp.me: did not receive HSTS header wrldevelopment.com: did not receive HSTS header wsscompany.com.ve: could not connect to host +wubthecaptain.eu: could not connect to host wufu.org: did not receive HSTS header wuhengmin.com: could not connect to host wukongmusic.us: did not receive HSTS header @@ -6093,7 +6105,6 @@ www.sandbox.mydigipass.com: could not connect to host www.surfeasy.com: did not receive HSTS header www.zenpayroll.com: did not receive HSTS header www3.info: did not receive HSTS header -wxrlab.com: did not receive HSTS header wxukang.cn: could not connect to host wybmabiity.com: max-age too low: 0 x-power-detox.com: could not connect to host @@ -6144,6 +6155,7 @@ xn--80aaihqncaejjobbu6v.xn--p1ai: max-age too low: 10000 xn--9pr52k0p5a.com: did not receive HSTS header xn--d1acj9c.xn--90ais: could not connect to host xn--datenrettung-mnchen-jbc.com: did not receive HSTS header +xn--dmonenjger-q5ag.net: could not connect to host xn--jobbrse-d1a.de: did not receive HSTS header xn--lgb3a8bcpn.cf: could not connect to host xn--lgb3a8bcpn.ga: could not connect to host @@ -6177,6 +6189,7 @@ xuyh0120.win: did not receive HSTS header xxbase.com: could not connect to host xynex.us: could not connect to host y-o-w.com: did not receive HSTS header +yachts-magazine.com: did not receive HSTS header yagi2.com: could not connect to host yalook.com: did not receive HSTS header yamamo10.com: could not connect to host @@ -6215,6 +6228,7 @@ yomepre.com: could not connect to host yoru.me: did not receive HSTS header youcanmakeit.at: could not connect to host youcontrol.ru: could not connect to host +youlog.net: could not connect to host youngandunited.nl: did not receive HSTS header youon.tokyo: could not connect to host yourbapp.ch: could not connect to host @@ -6241,7 +6255,6 @@ z3liff.com: could not connect to host z3liff.net: could not connect to host za.search.yahoo.com: did not receive HSTS header zadieheimlich.com: did not receive HSTS header -zahe.me: could not connect to host zahyantechnologies.com: could not connect to host zakoncontrol.com: could not connect to host zamorano.edu: could not connect to host @@ -6279,6 +6292,7 @@ zhihua-lai.com: did not receive HSTS header zicklam.com: could not connect to host zigcore.com.br: could not connect to host zihao.me: did not receive HSTS header +ziin.de: could not connect to host zinc-x.com: did not receive HSTS header zinenapse.info: could not connect to host zirtue.io: did not receive HSTS header @@ -6306,7 +6320,7 @@ zqhong.com: could not connect to host ztan.tk: could not connect to host ztcaoll222.cn: did not receive HSTS header zubel.it: did not receive HSTS header -zudomc.me: could not connect to host +zukix.com: could not connect to host zulu7.com: could not connect to host zuviel.space: could not connect to host zvncloud.com: did not receive HSTS header diff --git a/security/manager/ssl/nsSTSPreloadList.inc b/security/manager/ssl/nsSTSPreloadList.inc index e71de25ad7e0..1123e8ab0d75 100644 --- a/security/manager/ssl/nsSTSPreloadList.inc +++ b/security/manager/ssl/nsSTSPreloadList.inc @@ -8,7 +8,7 @@ /*****************************************************************************/ #include -const PRTime gPreloadListExpirationTime = INT64_C(1507563387386000); +const PRTime gPreloadListExpirationTime = INT64_C(1507649690648000); static const char kSTSHostTable[] = { /* "0.me.uk", true */ '0', '.', 'm', 'e', '.', 'u', 'k', '\0', @@ -101,7 +101,6 @@ static const char kSTSHostTable[] = { /* "13826145000.com", true */ '1', '3', '8', '2', '6', '1', '4', '5', '0', '0', '0', '.', 'c', 'o', 'm', '\0', /* "1464424382.rsc.cdn77.org", true */ '1', '4', '6', '4', '4', '2', '4', '3', '8', '2', '.', 'r', 's', 'c', '.', 'c', 'd', 'n', '7', '7', '.', 'o', 'r', 'g', '\0', /* "14it.de", true */ '1', '4', 'i', 't', '.', 'd', 'e', '\0', - /* "14x3.de", true */ '1', '4', 'x', '3', '.', 'd', 'e', '\0', /* "15-10.com", true */ '1', '5', '-', '1', '0', '.', 'c', 'o', 'm', '\0', /* "1536.cf", true */ '1', '5', '3', '6', '.', 'c', 'f', '\0', /* "1600esplanade.com", true */ '1', '6', '0', '0', 'e', 's', 'p', 'l', 'a', 'n', 'a', 'd', 'e', '.', 'c', 'o', 'm', '\0', @@ -225,7 +224,6 @@ static const char kSTSHostTable[] = { /* "393335.ml", true */ '3', '9', '3', '3', '3', '5', '.', 'm', 'l', '\0', /* "398.info", true */ '3', '9', '8', '.', 'i', 'n', 'f', 'o', '\0', /* "39988.com", true */ '3', '9', '9', '8', '8', '.', 'c', 'o', 'm', '\0', - /* "3ags.de", true */ '3', 'a', 'g', 's', '.', 'd', 'e', '\0', /* "3bakayottu.com", true */ '3', 'b', 'a', 'k', 'a', 'y', 'o', 't', 't', 'u', '.', 'c', 'o', 'm', '\0', /* "3bigking.com", true */ '3', 'b', 'i', 'g', 'k', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "3c-d.de", true */ '3', 'c', '-', 'd', '.', 'd', 'e', '\0', @@ -260,7 +258,6 @@ static const char kSTSHostTable[] = { /* "42day.info", true */ '4', '2', 'd', 'a', 'y', '.', 'i', 'n', 'f', 'o', '\0', /* "42entrepreneurs.fr", true */ '4', '2', 'e', 'n', 't', 'r', 'e', 'p', 'r', 'e', 'n', 'e', 'u', 'r', 's', '.', 'f', 'r', '\0', /* "439191.com", true */ '4', '3', '9', '1', '9', '1', '.', 'c', 'o', 'm', '\0', - /* "441jj.com", true */ '4', '4', '1', 'j', 'j', '.', 'c', 'o', 'm', '\0', /* "4500.co.il", true */ '4', '5', '0', '0', '.', 'c', 'o', '.', 'i', 'l', '\0', /* "491mhz.net", true */ '4', '9', '1', 'm', 'h', 'z', '.', 'n', 'e', 't', '\0', /* "49889.com", true */ '4', '9', '8', '8', '9', '.', 'c', 'o', 'm', '\0', @@ -449,6 +446,7 @@ static const char kSTSHostTable[] = { /* "absolutewaterproofingsolutions.com", true */ 'a', 'b', 's', 'o', 'l', 'u', 't', 'e', 'w', 'a', 't', 'e', 'r', 'p', 'r', 'o', 'o', 'f', 'i', 'n', 'g', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0', /* "abstraction21.com", true */ 'a', 'b', 's', 't', 'r', 'a', 'c', 't', 'i', 'o', 'n', '2', '1', '.', 'c', 'o', 'm', '\0', /* "absynthe-inquisition.fr", true */ 'a', 'b', 's', 'y', 'n', 't', 'h', 'e', '-', 'i', 'n', 'q', 'u', 'i', 's', 'i', 't', 'i', 'o', 'n', '.', 'f', 'r', '\0', + /* "abthorpe.org", true */ 'a', 'b', 't', 'h', 'o', 'r', 'p', 'e', '.', 'o', 'r', 'g', '\0', /* "abulanov.com", true */ 'a', 'b', 'u', 'l', 'a', 'n', 'o', 'v', '.', 'c', 'o', 'm', '\0', /* "abundent.com", true */ 'a', 'b', 'u', 'n', 'd', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0', /* "abuse.io", true */ 'a', 'b', 'u', 's', 'e', '.', 'i', 'o', '\0', @@ -479,6 +477,7 @@ static const char kSTSHostTable[] = { /* "acerislaw.com", false */ 'a', 'c', 'e', 'r', 'i', 's', 'l', 'a', 'w', '.', 'c', 'o', 'm', '\0', /* "acessoeducacao.com", true */ 'a', 'c', 'e', 's', 's', 'o', 'e', 'd', 'u', 'c', 'a', 'c', 'a', 'o', '.', 'c', 'o', 'm', '\0', /* "acg.sb", true */ 'a', 'c', 'g', '.', 's', 'b', '\0', + /* "acg18.us", true */ 'a', 'c', 'g', '1', '8', '.', 'u', 's', '\0', /* "acgaudio.com", true */ 'a', 'c', 'g', 'a', 'u', 'd', 'i', 'o', '.', 'c', 'o', 'm', '\0', /* "acheconcursos.com.br", true */ 'a', 'c', 'h', 'e', 'c', 'o', 'n', 'c', 'u', 'r', 's', 'o', 's', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', /* "achenar.net", true */ 'a', 'c', 'h', 'e', 'n', 'a', 'r', '.', 'n', 'e', 't', '\0', @@ -486,6 +485,7 @@ static const char kSTSHostTable[] = { /* "achow101.com", true */ 'a', 'c', 'h', 'o', 'w', '1', '0', '1', '.', 'c', 'o', 'm', '\0', /* "achromatisch.de", true */ 'a', 'c', 'h', 'r', 'o', 'm', 'a', 't', 'i', 's', 'c', 'h', '.', 'd', 'e', '\0', /* "achterhoekseveiligheidsbeurs.nl", true */ 'a', 'c', 'h', 't', 'e', 'r', 'h', 'o', 'e', 'k', 's', 'e', 'v', 'e', 'i', 'l', 'i', 'g', 'h', 'e', 'i', 'd', 's', 'b', 'e', 'u', 'r', 's', '.', 'n', 'l', '\0', + /* "achterstieg.dedyn.io", true */ 'a', 'c', 'h', 't', 'e', 'r', 's', 't', 'i', 'e', 'g', '.', 'd', 'e', 'd', 'y', 'n', '.', 'i', 'o', '\0', /* "achtzehn.eu", true */ 'a', 'c', 'h', 't', 'z', 'e', 'h', 'n', '.', 'e', 'u', '\0', /* "acidbin.co", true */ 'a', 'c', 'i', 'd', 'b', 'i', 'n', '.', 'c', 'o', '\0', /* "aciksite.com", true */ 'a', 'c', 'i', 'k', 's', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0', @@ -610,6 +610,7 @@ static const char kSTSHostTable[] = { /* "advanced-scribes.com", true */ 'a', 'd', 'v', 'a', 'n', 'c', 'e', 'd', '-', 's', 'c', 'r', 'i', 'b', 'e', 's', '.', 'c', 'o', 'm', '\0', /* "advanced.info", true */ 'a', 'd', 'v', 'a', 'n', 'c', 'e', 'd', '.', 'i', 'n', 'f', 'o', '\0', /* "advancedseotool.it", true */ 'a', 'd', 'v', 'a', 'n', 'c', 'e', 'd', 's', 'e', 'o', 't', 'o', 'o', 'l', '.', 'i', 't', '\0', + /* "advancis.net", true */ 'a', 'd', 'v', 'a', 'n', 'c', 'i', 's', '.', 'n', 'e', 't', '\0', /* "advantagehomeexteriors.com", true */ 'a', 'd', 'v', 'a', 'n', 't', 'a', 'g', 'e', 'h', 'o', 'm', 'e', 'e', 'x', 't', 'e', 'r', 'i', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0', /* "advelty.cz", true */ 'a', 'd', 'v', 'e', 'l', 't', 'y', '.', 'c', 'z', '\0', /* "adventistdeploy.org", true */ 'a', 'd', 'v', 'e', 'n', 't', 'i', 's', 't', 'd', 'e', 'p', 'l', 'o', 'y', '.', 'o', 'r', 'g', '\0', @@ -644,6 +645,7 @@ static const char kSTSHostTable[] = { /* "aertel.ie", true */ 'a', 'e', 'r', 't', 'e', 'l', '.', 'i', 'e', '\0', /* "aesym.de", true */ 'a', 'e', 's', 'y', 'm', '.', 'd', 'e', '\0', /* "aetherc0r3.eu", true */ 'a', 'e', 't', 'h', 'e', 'r', 'c', '0', 'r', '3', '.', 'e', 'u', '\0', + /* "aevpn.net", true */ 'a', 'e', 'v', 'p', 'n', '.', 'n', 'e', 't', '\0', /* "aextron.com", true */ 'a', 'e', 'x', 't', 'r', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "aextron.de", true */ 'a', 'e', 'x', 't', 'r', 'o', 'n', '.', 'd', 'e', '\0', /* "aextron.org", true */ 'a', 'e', 'x', 't', 'r', 'o', 'n', '.', 'o', 'r', 'g', '\0', @@ -842,6 +844,11 @@ static const char kSTSHostTable[] = { /* "alexhaydock.co.uk", true */ 'a', 'l', 'e', 'x', 'h', 'a', 'y', 'd', 'o', 'c', 'k', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "alexhd.de", true */ 'a', 'l', 'e', 'x', 'h', 'd', '.', 'd', 'e', '\0', /* "alexisabarca.com", true */ 'a', 'l', 'e', 'x', 'i', 's', 'a', 'b', 'a', 'r', 'c', 'a', '.', 'c', 'o', 'm', '\0', + /* "alexismeza.com", true */ 'a', 'l', 'e', 'x', 'i', 's', 'm', 'e', 'z', 'a', '.', 'c', 'o', 'm', '\0', + /* "alexismeza.com.mx", true */ 'a', 'l', 'e', 'x', 'i', 's', 'm', 'e', 'z', 'a', '.', 'c', 'o', 'm', '.', 'm', 'x', '\0', + /* "alexismeza.dk", true */ 'a', 'l', 'e', 'x', 'i', 's', 'm', 'e', 'z', 'a', '.', 'd', 'k', '\0', + /* "alexismeza.es", true */ 'a', 'l', 'e', 'x', 'i', 's', 'm', 'e', 'z', 'a', '.', 'e', 's', '\0', + /* "alexismeza.nl", true */ 'a', 'l', 'e', 'x', 'i', 's', 'm', 'e', 'z', 'a', '.', 'n', 'l', '\0', /* "alexkidd.de", true */ 'a', 'l', 'e', 'x', 'k', 'i', 'd', 'd', '.', 'd', 'e', '\0', /* "alexkott.com", true */ 'a', 'l', 'e', 'x', 'k', 'o', 't', 't', '.', 'c', 'o', 'm', '\0', /* "alexmak.net", true */ 'a', 'l', 'e', 'x', 'm', 'a', 'k', '.', 'n', 'e', 't', '\0', @@ -923,7 +930,6 @@ static const char kSTSHostTable[] = { /* "alltubedownload.net", true */ 'a', 'l', 'l', 't', 'u', 'b', 'e', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', '.', 'n', 'e', 't', '\0', /* "alluvion.studio", true */ 'a', 'l', 'l', 'u', 'v', 'i', 'o', 'n', '.', 's', 't', 'u', 'd', 'i', 'o', '\0', /* "almstrom.org", true */ 'a', 'l', 'm', 's', 't', 'r', 'o', 'm', '.', 'o', 'r', 'g', '\0', - /* "alnitech.com", false */ 'a', 'l', 'n', 'i', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0', /* "aloalabs.com", true */ 'a', 'l', 'o', 'a', 'l', 'a', 'b', 's', '.', 'c', 'o', 'm', '\0', /* "alocato.com", true */ 'a', 'l', 'o', 'c', 'a', 't', 'o', '.', 'c', 'o', 'm', '\0', /* "alpca.org", true */ 'a', 'l', 'p', 'c', 'a', '.', 'o', 'r', 'g', '\0', @@ -1014,6 +1020,11 @@ static const char kSTSHostTable[] = { /* "amerimarkdirect.com", true */ 'a', 'm', 'e', 'r', 'i', 'm', 'a', 'r', 'k', 'd', 'i', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0', /* "amerimex.cc", true */ 'a', 'm', 'e', 'r', 'i', 'm', 'e', 'x', '.', 'c', 'c', '\0', /* "amethystcards.co.uk", true */ 'a', 'm', 'e', 't', 'h', 'y', 's', 't', 'c', 'a', 'r', 'd', 's', '.', 'c', 'o', '.', 'u', 'k', '\0', + /* "ameza.co.uk", true */ 'a', 'm', 'e', 'z', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0', + /* "ameza.com.mx", true */ 'a', 'm', 'e', 'z', 'a', '.', 'c', 'o', 'm', '.', 'm', 'x', '\0', + /* "ameza.io", true */ 'a', 'm', 'e', 'z', 'a', '.', 'i', 'o', '\0', + /* "ameza.me", true */ 'a', 'm', 'e', 'z', 'a', '.', 'm', 'e', '\0', + /* "ameza.net", true */ 'a', 'm', 'e', 'z', 'a', '.', 'n', 'e', 't', '\0', /* "amf.to", true */ 'a', 'm', 'f', '.', 't', 'o', '\0', /* "ami-de-bastanes.fr", true */ 'a', 'm', 'i', '-', 'd', 'e', '-', 'b', 'a', 's', 't', 'a', 'n', 'e', 's', '.', 'f', 'r', '\0', /* "amihub.com", true */ 'a', 'm', 'i', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0', @@ -1071,7 +1082,6 @@ static const char kSTSHostTable[] = { /* "anderskp.dk", true */ 'a', 'n', 'd', 'e', 'r', 's', 'k', 'p', '.', 'd', 'k', '\0', /* "andersonshatch.com", true */ 'a', 'n', 'd', 'e', 'r', 's', 'o', 'n', 's', 'h', 'a', 't', 'c', 'h', '.', 'c', 'o', 'm', '\0', /* "andiplusben.com", true */ 'a', 'n', 'd', 'i', 'p', 'l', 'u', 's', 'b', 'e', 'n', '.', 'c', 'o', 'm', '\0', - /* "andisadhdspot.com", true */ 'a', 'n', 'd', 'i', 's', 'a', 'd', 'h', 'd', 's', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0', /* "andre-ballensiefen.de", false */ 'a', 'n', 'd', 'r', 'e', '-', 'b', 'a', 'l', 'l', 'e', 'n', 's', 'i', 'e', 'f', 'e', 'n', '.', 'd', 'e', '\0', /* "andre-otto.com", true */ 'a', 'n', 'd', 'r', 'e', '-', 'o', 't', 't', 'o', '.', 'c', 'o', 'm', '\0', /* "andrea-kiaora.de", true */ 'a', 'n', 'd', 'r', 'e', 'a', '-', 'k', 'i', 'a', 'o', 'r', 'a', '.', 'd', 'e', '\0', @@ -1177,7 +1187,6 @@ static const char kSTSHostTable[] = { /* "anonboards.com", true */ 'a', 'n', 'o', 'n', 'b', 'o', 'a', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0', /* "anoncom.net", true */ 'a', 'n', 'o', 'n', 'c', 'o', 'm', '.', 'n', 'e', 't', '\0', /* "anoneko.com", true */ 'a', 'n', 'o', 'n', 'e', 'k', 'o', '.', 'c', 'o', 'm', '\0', - /* "anongoth.pl", true */ 'a', 'n', 'o', 'n', 'g', 'o', 't', 'h', '.', 'p', 'l', '\0', /* "anonukradio.org", true */ 'a', 'n', 'o', 'n', 'u', 'k', 'r', 'a', 'd', 'i', 'o', '.', 'o', 'r', 'g', '\0', /* "anonym-surfen.de", true */ 'a', 'n', 'o', 'n', 'y', 'm', '-', 's', 'u', 'r', 'f', 'e', 'n', '.', 'd', 'e', '\0', /* "anonyme-spieler.at", true */ 'a', 'n', 'o', 'n', 'y', 'm', 'e', '-', 's', 'p', 'i', 'e', 'l', 'e', 'r', '.', 'a', 't', '\0', @@ -1469,6 +1478,7 @@ static const char kSTSHostTable[] = { /* "arturrossa.de", true */ 'a', 'r', 't', 'u', 'r', 'r', 'o', 's', 's', 'a', '.', 'd', 'e', '\0', /* "artweby.cz", true */ 'a', 'r', 't', 'w', 'e', 'b', 'y', '.', 'c', 'z', '\0', /* "arty.name", true */ 'a', 'r', 't', 'y', '.', 'n', 'a', 'm', 'e', '\0', + /* "artyland.ru", true */ 'a', 'r', 't', 'y', 'l', 'a', 'n', 'd', '.', 'r', 'u', '\0', /* "arubasunsetbeach.com", true */ 'a', 'r', 'u', 'b', 'a', 's', 'u', 'n', 's', 'e', 't', 'b', 'e', 'a', 'c', 'h', '.', 'c', 'o', 'm', '\0', /* "arveron.ch", true */ 'a', 'r', 'v', 'e', 'r', 'o', 'n', '.', 'c', 'h', '\0', /* "arvid.io", true */ 'a', 'r', 'v', 'i', 'd', '.', 'i', 'o', '\0', @@ -1480,7 +1490,6 @@ static const char kSTSHostTable[] = { /* "arzid.com", true */ 'a', 'r', 'z', 'i', 'd', '.', 'c', 'o', 'm', '\0', /* "as44222.net", true */ 'a', 's', '4', '4', '2', '2', '2', '.', 'n', 'e', 't', '\0', /* "asadatec.de", true */ 'a', 's', 'a', 'd', 'a', 't', 'e', 'c', '.', 'd', 'e', '\0', - /* "asadzulfahri.com", true */ 'a', 's', 'a', 'd', 'z', 'u', 'l', 'f', 'a', 'h', 'r', 'i', '.', 'c', 'o', 'm', '\0', /* "asafilm.co", true */ 'a', 's', 'a', 'f', 'i', 'l', 'm', '.', 'c', 'o', '\0', /* "asafomba.com", true */ 'a', 's', 'a', 'f', 'o', 'm', 'b', 'a', '.', 'c', 'o', 'm', '\0', /* "asahikoji.net", true */ 'a', 's', 'a', 'h', 'i', 'k', 'o', 'j', 'i', '.', 'n', 'e', 't', '\0', @@ -1596,7 +1605,6 @@ static const char kSTSHostTable[] = { /* "atraining.ru", true */ 'a', 't', 'r', 'a', 'i', 'n', 'i', 'n', 'g', '.', 'r', 'u', '\0', /* "atrinik.org", true */ 'a', 't', 'r', 'i', 'n', 'i', 'k', '.', 'o', 'r', 'g', '\0', /* "atte.fi", true */ 'a', 't', 't', 'e', '.', 'f', 'i', '\0', - /* "attilagyorffy.com", true */ 'a', 't', 't', 'i', 'l', 'a', 'g', 'y', 'o', 'r', 'f', 'f', 'y', '.', 'c', 'o', 'm', '\0', /* "attilavandervelde.nl", true */ 'a', 't', 't', 'i', 'l', 'a', 'v', 'a', 'n', 'd', 'e', 'r', 'v', 'e', 'l', 'd', 'e', '.', 'n', 'l', '\0', /* "attitudes-bureaux.fr", true */ 'a', 't', 't', 'i', 't', 'u', 'd', 'e', 's', '-', 'b', 'u', 'r', 'e', 'a', 'u', 'x', '.', 'f', 'r', '\0', /* "attogproductions.com", true */ 'a', 't', 't', 'o', 'g', 'p', 'r', 'o', 'd', 'u', 'c', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0', @@ -1639,7 +1647,6 @@ static const char kSTSHostTable[] = { /* "aulo.in", false */ 'a', 'u', 'l', 'o', '.', 'i', 'n', '\0', /* "aunali1.com", true */ 'a', 'u', 'n', 'a', 'l', 'i', '1', '.', 'c', 'o', 'm', '\0', /* "auplidespages.fr", true */ 'a', 'u', 'p', 'l', 'i', 'd', 'e', 's', 'p', 'a', 'g', 'e', 's', '.', 'f', 'r', '\0', - /* "aur.rocks", true */ 'a', 'u', 'r', '.', 'r', 'o', 'c', 'k', 's', '\0', /* "aureus.pw", true */ 'a', 'u', 'r', 'e', 'u', 's', '.', 'p', 'w', '\0', /* "auri.ga", true */ 'a', 'u', 'r', 'i', '.', 'g', 'a', '\0', /* "auricblue.com", true */ 'a', 'u', 'r', 'i', 'c', 'b', 'l', 'u', 'e', '.', 'c', 'o', 'm', '\0', @@ -1700,7 +1707,6 @@ static const char kSTSHostTable[] = { /* "averen.co.uk", true */ 'a', 'v', 'e', 'r', 'e', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "averysphotography.com", true */ 'a', 'v', 'e', 'r', 'y', 's', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '.', 'c', 'o', 'm', '\0', /* "avg.club", true */ 'a', 'v', 'g', '.', 'c', 'l', 'u', 'b', '\0', - /* "avi9526.pp.ua", true */ 'a', 'v', 'i', '9', '5', '2', '6', '.', 'p', 'p', '.', 'u', 'a', '\0', /* "aviationstrategy.aero", true */ 'a', 'v', 'i', 'a', 't', 'i', 'o', 'n', 's', 't', 'r', 'a', 't', 'e', 'g', 'y', '.', 'a', 'e', 'r', 'o', '\0', /* "aviodeals.com", true */ 'a', 'v', 'i', 'o', 'd', 'e', 'a', 'l', 's', '.', 'c', 'o', 'm', '\0', /* "avmemo.com", true */ 'a', 'v', 'm', 'e', 'm', 'o', '.', 'c', 'o', 'm', '\0', @@ -1756,6 +1762,7 @@ static const char kSTSHostTable[] = { /* "azimut.fr", true */ 'a', 'z', 'i', 'm', 'u', 't', '.', 'f', 'r', '\0', /* "azirevpn.com", true */ 'a', 'z', 'i', 'r', 'e', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0', /* "azlk-team.ru", true */ 'a', 'z', 'l', 'k', '-', 't', 'e', 'a', 'm', '.', 'r', 'u', '\0', + /* "azort.com", true */ 'a', 'z', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0', /* "azrazalea.net", true */ 'a', 'z', 'r', 'a', 'z', 'a', 'l', 'e', 'a', '.', 'n', 'e', 't', '\0', /* "aztrix.me", true */ 'a', 'z', 't', 'r', 'i', 'x', '.', 'm', 'e', '\0', /* "azun.pl", true */ 'a', 'z', 'u', 'n', '.', 'p', 'l', '\0', @@ -1770,12 +1777,14 @@ static const char kSTSHostTable[] = { /* "b1c1l1.com", true */ 'b', '1', 'c', '1', 'l', '1', '.', 'c', 'o', 'm', '\0', /* "b2and.com", false */ 'b', '2', 'a', 'n', 'd', '.', 'c', 'o', 'm', '\0', /* "b2bmuzikbank.com", true */ 'b', '2', 'b', 'm', 'u', 'z', 'i', 'k', 'b', 'a', 'n', 'k', '.', 'c', 'o', 'm', '\0', + /* "b422edu.com", true */ 'b', '4', '2', '2', 'e', 'd', 'u', '.', 'c', 'o', 'm', '\0', /* "b64.club", true */ 'b', '6', '4', '.', 'c', 'l', 'u', 'b', '\0', /* "baalsworld.de", true */ 'b', 'a', 'a', 'l', 's', 'w', 'o', 'r', 'l', 'd', '.', 'd', 'e', '\0', /* "baas-becking.biology.utah.edu", true */ 'b', 'a', 'a', 's', '-', 'b', 'e', 'c', 'k', 'i', 'n', 'g', '.', 'b', 'i', 'o', 'l', 'o', 'g', 'y', '.', 'u', 't', 'a', 'h', '.', 'e', 'd', 'u', '\0', /* "babacasino.net", true */ 'b', 'a', 'b', 'a', 'c', 'a', 's', 'i', 'n', 'o', '.', 'n', 'e', 't', '\0', /* "babak.de", false */ 'b', 'a', 'b', 'a', 'k', '.', 'd', 'e', '\0', /* "babarkata.com", true */ 'b', 'a', 'b', 'a', 'r', 'k', 'a', 't', 'a', '.', 'c', 'o', 'm', '\0', + /* "babelfisch.eu", true */ 'b', 'a', 'b', 'e', 'l', 'f', 'i', 's', 'c', 'h', '.', 'e', 'u', '\0', /* "babettelandmesser.de", true */ 'b', 'a', 'b', 'e', 't', 't', 'e', 'l', 'a', 'n', 'd', 'm', 'e', 's', 's', 'e', 'r', '.', 'd', 'e', '\0', /* "babyboom.pl", true */ 'b', 'a', 'b', 'y', 'b', 'o', 'o', 'm', '.', 'p', 'l', '\0', /* "babyfotograf-schweiz.ch", true */ 'b', 'a', 'b', 'y', 'f', 'o', 't', 'o', 'g', 'r', 'a', 'f', '-', 's', 'c', 'h', 'w', 'e', 'i', 'z', '.', 'c', 'h', '\0', @@ -1818,7 +1827,6 @@ static const char kSTSHostTable[] = { /* "bah.im", true */ 'b', 'a', 'h', '.', 'i', 'm', '\0', /* "baifubao.com", true */ 'b', 'a', 'i', 'f', 'u', 'b', 'a', 'o', '.', 'c', 'o', 'm', '\0', /* "baiker.info", true */ 'b', 'a', 'i', 'k', 'e', 'r', '.', 'i', 'n', 'f', 'o', '\0', - /* "bailbondsaffordable.com", true */ 'b', 'a', 'i', 'l', 'b', 'o', 'n', 'd', 's', 'a', 'f', 'f', 'o', 'r', 'd', 'a', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0', /* "baileebee.com", true */ 'b', 'a', 'i', 'l', 'e', 'e', 'b', 'e', 'e', '.', 'c', 'o', 'm', '\0', /* "bair.io", true */ 'b', 'a', 'i', 'r', '.', 'i', 'o', '\0', /* "baitulongbaycruises.com", true */ 'b', 'a', 'i', 't', 'u', 'l', 'o', 'n', 'g', 'b', 'a', 'y', 'c', 'r', 'u', 'i', 's', 'e', 's', '.', 'c', 'o', 'm', '\0', @@ -2019,6 +2027,7 @@ static const char kSTSHostTable[] = { /* "beekeeper.tools", true */ 'b', 'e', 'e', 'k', 'e', 'e', 'p', 'e', 'r', '.', 't', 'o', 'o', 'l', 's', '\0', /* "beekeeping.clothing", true */ 'b', 'e', 'e', 'k', 'e', 'e', 'p', 'i', 'n', 'g', '.', 'c', 'l', 'o', 't', 'h', 'i', 'n', 'g', '\0', /* "beekeeping.tools", true */ 'b', 'e', 'e', 'k', 'e', 'e', 'p', 'i', 'n', 'g', '.', 't', 'o', 'o', 'l', 's', '\0', + /* "beeksnetwork.nl", true */ 'b', 'e', 'e', 'k', 's', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'n', 'l', '\0', /* "beelen.fr", true */ 'b', 'e', 'e', 'l', 'e', 'n', '.', 'f', 'r', '\0', /* "beepan.com", false */ 'b', 'e', 'e', 'p', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "beercandle.com", true */ 'b', 'e', 'e', 'r', 'c', 'a', 'n', 'd', 'l', 'e', '.', 'c', 'o', 'm', '\0', @@ -2042,7 +2051,6 @@ static const char kSTSHostTable[] = { /* "behoerden-online-dienste.de", true */ 'b', 'e', 'h', 'o', 'e', 'r', 'd', 'e', 'n', '-', 'o', 'n', 'l', 'i', 'n', 'e', '-', 'd', 'i', 'e', 'n', 's', 't', 'e', '.', 'd', 'e', '\0', /* "beijing.dating", true */ 'b', 'e', 'i', 'j', 'i', 'n', 'g', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0', /* "beijinglug.club", true */ 'b', 'e', 'i', 'j', 'i', 'n', 'g', 'l', 'u', 'g', '.', 'c', 'l', 'u', 'b', '\0', - /* "beikeil.de", true */ 'b', 'e', 'i', 'k', 'e', 'i', 'l', '.', 'd', 'e', '\0', /* "beinad.com", true */ 'b', 'e', 'i', 'n', 'a', 'd', '.', 'c', 'o', 'm', '\0', /* "beinad.ru", true */ 'b', 'e', 'i', 'n', 'a', 'd', '.', 'r', 'u', '\0', /* "belacapa.com.br", true */ 'b', 'e', 'l', 'a', 'c', 'a', 'p', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', @@ -2071,6 +2079,7 @@ static const char kSTSHostTable[] = { /* "belt.black", true */ 'b', 'e', 'l', 't', '.', 'b', 'l', 'a', 'c', 'k', '\0', /* "belua.com", true */ 'b', 'e', 'l', 'u', 'a', '.', 'c', 'o', 'm', '\0', /* "bely-mishka.by", true */ 'b', 'e', 'l', 'y', '-', 'm', 'i', 's', 'h', 'k', 'a', '.', 'b', 'y', '\0', + /* "bemsoft.pl", true */ 'b', 'e', 'm', 's', 'o', 'f', 't', '.', 'p', 'l', '\0', /* "ben-energy.com", false */ 'b', 'e', 'n', '-', 'e', 'n', 'e', 'r', 'g', 'y', '.', 'c', 'o', 'm', '\0', /* "ben.ninja", true */ 'b', 'e', 'n', '.', 'n', 'i', 'n', 'j', 'a', '\0', /* "benabrams.it", true */ 'b', 'e', 'n', 'a', 'b', 'r', 'a', 'm', 's', '.', 'i', 't', '\0', @@ -2275,6 +2284,7 @@ static const char kSTSHostTable[] = { /* "bike-shack.com", true */ 'b', 'i', 'k', 'e', '-', 's', 'h', 'a', 'c', 'k', '.', 'c', 'o', 'm', '\0', /* "bikebay.it", true */ 'b', 'i', 'k', 'e', 'b', 'a', 'y', '.', 'i', 't', '\0', /* "biker.dating", true */ 'b', 'i', 'k', 'e', 'r', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0', + /* "bikermusic.net", true */ 'b', 'i', 'k', 'e', 'r', 'm', 'u', 's', 'i', 'c', '.', 'n', 'e', 't', '\0', /* "bikeshopitalia.com", true */ 'b', 'i', 'k', 'e', 's', 'h', 'o', 'p', 'i', 't', 'a', 'l', 'i', 'a', '.', 'c', 'o', 'm', '\0', /* "bikiniseli.com", true */ 'b', 'i', 'k', 'i', 'n', 'i', 's', 'e', 'l', 'i', '.', 'c', 'o', 'm', '\0', /* "bildermachr.de", true */ 'b', 'i', 'l', 'd', 'e', 'r', 'm', 'a', 'c', 'h', 'r', '.', 'd', 'e', '\0', @@ -2343,7 +2353,6 @@ static const char kSTSHostTable[] = { /* "bismarck.moe", true */ 'b', 'i', 's', 'm', 'a', 'r', 'c', 'k', '.', 'm', 'o', 'e', '\0', /* "bissalama.org", true */ 'b', 'i', 's', 's', 'a', 'l', 'a', 'm', 'a', '.', 'o', 'r', 'g', '\0', /* "biswas.me", true */ 'b', 'i', 's', 'w', 'a', 's', '.', 'm', 'e', '\0', - /* "bit-rapid.com", false */ 'b', 'i', 't', '-', 'r', 'a', 'p', 'i', 'd', '.', 'c', 'o', 'm', '\0', /* "bit-sentinel.com", true */ 'b', 'i', 't', '-', 's', 'e', 'n', 't', 'i', 'n', 'e', 'l', '.', 'c', 'o', 'm', '\0', /* "bit.voyage", true */ 'b', 'i', 't', '.', 'v', 'o', 'y', 'a', 'g', 'e', '\0', /* "bit8.com", true */ 'b', 'i', 't', '8', '.', 'c', 'o', 'm', '\0', @@ -2619,7 +2628,6 @@ static const char kSTSHostTable[] = { /* "bolwerk.com.br", true */ 'b', 'o', 'l', 'w', 'e', 'r', 'k', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', /* "bombsquad.studio", true */ 'b', 'o', 'm', 'b', 's', 'q', 'u', 'a', 'd', '.', 's', 't', 'u', 'd', 'i', 'o', '\0', /* "bondagefetishstore.com", true */ 'b', 'o', 'n', 'd', 'a', 'g', 'e', 'f', 'e', 't', 'i', 's', 'h', 's', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0', - /* "bondoer.fr", true */ 'b', 'o', 'n', 'd', 'o', 'e', 'r', '.', 'f', 'r', '\0', /* "bondpro.gov", true */ 'b', 'o', 'n', 'd', 'p', 'r', 'o', '.', 'g', 'o', 'v', '\0', /* "bondskampeerder.nl", true */ 'b', 'o', 'n', 'd', 's', 'k', 'a', 'm', 'p', 'e', 'e', 'r', 'd', 'e', 'r', '.', 'n', 'l', '\0', /* "boneko.de", true */ 'b', 'o', 'n', 'e', 'k', 'o', '.', 'd', 'e', '\0', @@ -2697,7 +2705,6 @@ static const char kSTSHostTable[] = { /* "bownty.nl", true */ 'b', 'o', 'w', 'n', 't', 'y', '.', 'n', 'l', '\0', /* "bownty.pt", true */ 'b', 'o', 'w', 'n', 't', 'y', '.', 'p', 't', '\0', /* "bowntycdn.net", true */ 'b', 'o', 'w', 'n', 't', 'y', 'c', 'd', 'n', '.', 'n', 'e', 't', '\0', - /* "boxdevigneron.fr", true */ 'b', 'o', 'x', 'd', 'e', 'v', 'i', 'g', 'n', 'e', 'r', 'o', 'n', '.', 'f', 'r', '\0', /* "boxing-austria.eu", true */ 'b', 'o', 'x', 'i', 'n', 'g', '-', 'a', 'u', 's', 't', 'r', 'i', 'a', '.', 'e', 'u', '\0', /* "boxpirates.to", true */ 'b', 'o', 'x', 'p', 'i', 'r', 'a', 't', 'e', 's', '.', 't', 'o', '\0', /* "boxvergelijker.nl", true */ 'b', 'o', 'x', 'v', 'e', 'r', 'g', 'e', 'l', 'i', 'j', 'k', 'e', 'r', '.', 'n', 'l', '\0', @@ -2770,7 +2777,6 @@ static const char kSTSHostTable[] = { /* "breckle.com.ua", true */ 'b', 'r', 'e', 'c', 'k', 'l', 'e', '.', 'c', 'o', 'm', '.', 'u', 'a', '\0', /* "breda.computer", true */ 'b', 'r', 'e', 'd', 'a', '.', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '\0', /* "bredvid.no", true */ 'b', 'r', 'e', 'd', 'v', 'i', 'd', '.', 'n', 'o', '\0', - /* "breechdepot.com", false */ 'b', 'r', 'e', 'e', 'c', 'h', 'd', 'e', 'p', 'o', 't', '.', 'c', 'o', 'm', '\0', /* "breeethretail.ru", true */ 'b', 'r', 'e', 'e', 'e', 't', 'h', 'r', 'e', 't', 'a', 'i', 'l', '.', 'r', 'u', '\0', /* "breest.net", true */ 'b', 'r', 'e', 'e', 's', 't', '.', 'n', 'e', 't', '\0', /* "breeswish.org", true */ 'b', 'r', 'e', 'e', 's', 'w', 'i', 's', 'h', '.', 'o', 'r', 'g', '\0', @@ -2793,7 +2799,6 @@ static const char kSTSHostTable[] = { /* "brianpcurran.com", true */ 'b', 'r', 'i', 'a', 'n', 'p', 'c', 'u', 'r', 'r', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "brianroadifer.com", true */ 'b', 'r', 'i', 'a', 'n', 'r', 'o', 'a', 'd', 'i', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "brickftp.com", true */ 'b', 'r', 'i', 'c', 'k', 'f', 't', 'p', '.', 'c', 'o', 'm', '\0', - /* "brickyardbuffalo.com", true */ 'b', 'r', 'i', 'c', 'k', 'y', 'a', 'r', 'd', 'b', 'u', 'f', 'f', 'a', 'l', 'o', '.', 'c', 'o', 'm', '\0', /* "brid.gy", true */ 'b', 'r', 'i', 'd', '.', 'g', 'y', '\0', /* "brideandgroomdirect.ie", true */ 'b', 'r', 'i', 'd', 'e', 'a', 'n', 'd', 'g', 'r', 'o', 'o', 'm', 'd', 'i', 'r', 'e', 'c', 't', '.', 'i', 'e', '\0', /* "bridgeout.com", true */ 'b', 'r', 'i', 'd', 'g', 'e', 'o', 'u', 't', '.', 'c', 'o', 'm', '\0', @@ -2849,6 +2854,7 @@ static const char kSTSHostTable[] = { /* "brunoonline.co.uk", true */ 'b', 'r', 'u', 'n', 'o', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "brunoramos.com", true */ 'b', 'r', 'u', 'n', 'o', 'r', 'a', 'm', 'o', 's', '.', 'c', 'o', 'm', '\0', /* "brunoramos.org", true */ 'b', 'r', 'u', 'n', 'o', 'r', 'a', 'm', 'o', 's', '.', 'o', 'r', 'g', '\0', + /* "brunosouza.org", true */ 'b', 'r', 'u', 'n', 'o', 's', 'o', 'u', 'z', 'a', '.', 'o', 'r', 'g', '\0', /* "bruun.co", true */ 'b', 'r', 'u', 'u', 'n', '.', 'c', 'o', '\0', /* "bryankaplan.com", true */ 'b', 'r', 'y', 'a', 'n', 'k', 'a', 'p', 'l', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "bryanquigley.com", true */ 'b', 'r', 'y', 'a', 'n', 'q', 'u', 'i', 'g', 'l', 'e', 'y', '.', 'c', 'o', 'm', '\0', @@ -2986,6 +2992,7 @@ static const char kSTSHostTable[] = { /* "buytheway.co.za", true */ 'b', 'u', 'y', 't', 'h', 'e', 'w', 'a', 'y', '.', 'c', 'o', '.', 'z', 'a', '\0', /* "buzz.tools", true */ 'b', 'u', 'z', 'z', '.', 't', 'o', 'o', 'l', 's', '\0', /* "buzzconcert.com", true */ 'b', 'u', 'z', 'z', 'c', 'o', 'n', 'c', 'e', 'r', 't', '.', 'c', 'o', 'm', '\0', + /* "buzzconf.io", true */ 'b', 'u', 'z', 'z', 'c', 'o', 'n', 'f', '.', 'i', 'o', '\0', /* "buzzdeck.com", true */ 'b', 'u', 'z', 'z', 'd', 'e', 'c', 'k', '.', 'c', 'o', 'm', '\0', /* "buzzprint.it", true */ 'b', 'u', 'z', 'z', 'p', 'r', 'i', 'n', 't', '.', 'i', 't', '\0', /* "buzztelco.com.au", true */ 'b', 'u', 'z', 'z', 't', 'e', 'l', 'c', 'o', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0', @@ -3319,9 +3326,9 @@ static const char kSTSHostTable[] = { /* "caulfieldracecourseapartments.com.au", true */ 'c', 'a', 'u', 'l', 'f', 'i', 'e', 'l', 'd', 'r', 'a', 'c', 'e', 'c', 'o', 'u', 'r', 's', 'e', 'a', 'p', 'a', 'r', 't', 'm', 'e', 'n', 't', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0', /* "caulong-ao.net", true */ 'c', 'a', 'u', 'l', 'o', 'n', 'g', '-', 'a', 'o', '.', 'n', 'e', 't', '\0', /* "cav.ac", true */ 'c', 'a', 'v', '.', 'a', 'c', '\0', + /* "cavac.at", true */ 'c', 'a', 'v', 'a', 'c', '.', 'a', 't', '\0', /* "cavalierkingcharlesspaniel.com.br", true */ 'c', 'a', 'v', 'a', 'l', 'i', 'e', 'r', 'k', 'i', 'n', 'g', 'c', 'h', 'a', 'r', 'l', 'e', 's', 's', 'p', 'a', 'n', 'i', 'e', 'l', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', /* "cave-reynard.ch", true */ 'c', 'a', 'v', 'e', '-', 'r', 'e', 'y', 'n', 'a', 'r', 'd', '.', 'c', 'h', '\0', - /* "cavern.tv", true */ 'c', 'a', 'v', 'e', 'r', 'n', '.', 't', 'v', '\0', /* "cavzodiaco.com.br", true */ 'c', 'a', 'v', 'z', 'o', 'd', 'i', 'a', 'c', 'o', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', /* "caylercapital.com", true */ 'c', 'a', 'y', 'l', 'e', 'r', 'c', 'a', 'p', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0', /* "cazes.info", true */ 'c', 'a', 'z', 'e', 's', '.', 'i', 'n', 'f', 'o', '\0', @@ -3571,7 +3578,6 @@ static const char kSTSHostTable[] = { /* "chiaraiuola.com", true */ 'c', 'h', 'i', 'a', 'r', 'a', 'i', 'u', 'o', 'l', 'a', '.', 'c', 'o', 'm', '\0', /* "chiaramail.com", true */ 'c', 'h', 'i', 'a', 'r', 'a', 'm', 'a', 'i', 'l', '.', 'c', 'o', 'm', '\0', /* "chiaseeds24.com", true */ 'c', 'h', 'i', 'a', 's', 'e', 'e', 'd', 's', '2', '4', '.', 'c', 'o', 'm', '\0', - /* "chib.chat", true */ 'c', 'h', 'i', 'b', '.', 'c', 'h', 'a', 't', '\0', /* "chic-leather.com", true */ 'c', 'h', 'i', 'c', '-', 'l', 'e', 'a', 't', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "chicorycom.net", true */ 'c', 'h', 'i', 'c', 'o', 'r', 'y', 'c', 'o', 'm', '.', 'n', 'e', 't', '\0', /* "chiemgauflirt.de", true */ 'c', 'h', 'i', 'e', 'm', 'g', 'a', 'u', 'f', 'l', 'i', 'r', 't', '.', 'd', 'e', '\0', @@ -3704,7 +3710,6 @@ static const char kSTSHostTable[] = { /* "cigar-cartel.com", true */ 'c', 'i', 'g', 'a', 'r', '-', 'c', 'a', 'r', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0', /* "cigarterminal.com", false */ 'c', 'i', 'g', 'a', 'r', 't', 'e', 'r', 'm', 'i', 'n', 'a', 'l', '.', 'c', 'o', 'm', '\0', /* "cigoteket.se", true */ 'c', 'i', 'g', 'o', 't', 'e', 'k', 'e', 't', '.', 's', 'e', '\0', - /* "ciicutini.ro", true */ 'c', 'i', 'i', 'c', 'u', 't', 'i', 'n', 'i', '.', 'r', 'o', '\0', /* "cima-idf.fr", true */ 'c', 'i', 'm', 'a', '-', 'i', 'd', 'f', '.', 'f', 'r', '\0', /* "cimballa.com", true */ 'c', 'i', 'm', 'b', 'a', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0', /* "cimfax.com", true */ 'c', 'i', 'm', 'f', 'a', 'x', '.', 'c', 'o', 'm', '\0', @@ -3958,14 +3963,13 @@ static const char kSTSHostTable[] = { /* "codestudies.net", true */ 'c', 'o', 'd', 'e', 's', 't', 'u', 'd', 'i', 'e', 's', '.', 'n', 'e', 't', '\0', /* "codeux.com", true */ 'c', 'o', 'd', 'e', 'u', 'x', '.', 'c', 'o', 'm', '\0', /* "codeversetech.com", true */ 'c', 'o', 'd', 'e', 'v', 'e', 'r', 's', 'e', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0', - /* "codewild.de", true */ 'c', 'o', 'd', 'e', 'w', 'i', 'l', 'd', '.', 'd', 'e', '\0', /* "codewiththepros.org", true */ 'c', 'o', 'd', 'e', 'w', 'i', 't', 'h', 't', 'h', 'e', 'p', 'r', 'o', 's', '.', 'o', 'r', 'g', '\0', /* "codewiz.xyz", true */ 'c', 'o', 'd', 'e', 'w', 'i', 'z', '.', 'x', 'y', 'z', '\0', - /* "codeyellow.nl", true */ 'c', 'o', 'd', 'e', 'y', 'e', 'l', 'l', 'o', 'w', '.', 'n', 'l', '\0', /* "codigosddd.com.br", true */ 'c', 'o', 'd', 'i', 'g', 'o', 's', 'd', 'd', 'd', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', /* "coding.lv", true */ 'c', 'o', 'd', 'i', 'n', 'g', '.', 'l', 'v', '\0', /* "coding.net", true */ 'c', 'o', 'd', 'i', 'n', 'g', '.', 'n', 'e', 't', '\0', /* "codingforspeed.com", true */ 'c', 'o', 'd', 'i', 'n', 'g', 'f', 'o', 'r', 's', 'p', 'e', 'e', 'd', '.', 'c', 'o', 'm', '\0', + /* "codingrobots.com", true */ 'c', 'o', 'd', 'i', 'n', 'g', 'r', 'o', 'b', 'o', 't', 's', '.', 'c', 'o', 'm', '\0', /* "codyevanscomputer.com", true */ 'c', 'o', 'd', 'y', 'e', 'v', 'a', 'n', 's', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "codymoniz.com", true */ 'c', 'o', 'd', 'y', 'm', 'o', 'n', 'i', 'z', '.', 'c', 'o', 'm', '\0', /* "coerthas.com", true */ 'c', 'o', 'e', 'r', 't', 'h', 'a', 's', '.', 'c', 'o', 'm', '\0', @@ -4311,7 +4315,6 @@ static const char kSTSHostTable[] = { /* "crazycraftland.de", true */ 'c', 'r', 'a', 'z', 'y', 'c', 'r', 'a', 'f', 't', 'l', 'a', 'n', 'd', '.', 'd', 'e', '\0', /* "crazycraftland.net", true */ 'c', 'r', 'a', 'z', 'y', 'c', 'r', 'a', 'f', 't', 'l', 'a', 'n', 'd', '.', 'n', 'e', 't', '\0', /* "crazydomains.ae", true */ 'c', 'r', 'a', 'z', 'y', 'd', 'o', 'm', 'a', 'i', 'n', 's', '.', 'a', 'e', '\0', - /* "crazydomains.co.nz", true */ 'c', 'r', 'a', 'z', 'y', 'd', 'o', 'm', 'a', 'i', 'n', 's', '.', 'c', 'o', '.', 'n', 'z', '\0', /* "crazydomains.co.uk", true */ 'c', 'r', 'a', 'z', 'y', 'd', 'o', 'm', 'a', 'i', 'n', 's', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "crazydomains.com.au", true */ 'c', 'r', 'a', 'z', 'y', 'd', 'o', 'm', 'a', 'i', 'n', 's', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0', /* "crazydomains.in", true */ 'c', 'r', 'a', 'z', 'y', 'd', 'o', 'm', 'a', 'i', 'n', 's', '.', 'i', 'n', '\0', @@ -4413,6 +4416,7 @@ static const char kSTSHostTable[] = { /* "crypto.is", false */ 'c', 'r', 'y', 'p', 't', 'o', '.', 'i', 's', '\0', /* "cryptobells.com", false */ 'c', 'r', 'y', 'p', 't', 'o', 'b', 'e', 'l', 'l', 's', '.', 'c', 'o', 'm', '\0', /* "cryptobin.co", true */ 'c', 'r', 'y', 'p', 't', 'o', 'b', 'i', 'n', '.', 'c', 'o', '\0', + /* "cryptocon.org", true */ 'c', 'r', 'y', 'p', 't', 'o', 'c', 'o', 'n', '.', 'o', 'r', 'g', '\0', /* "cryptodash.net", true */ 'c', 'r', 'y', 'p', 't', 'o', 'd', 'a', 's', 'h', '.', 'n', 'e', 't', '\0', /* "cryptography.io", true */ 'c', 'r', 'y', 'p', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '.', 'i', 'o', '\0', /* "cryptoisnotacrime.org", true */ 'c', 'r', 'y', 'p', 't', 'o', 'i', 's', 'n', 'o', 't', 'a', 'c', 'r', 'i', 'm', 'e', '.', 'o', 'r', 'g', '\0', @@ -4526,7 +4530,6 @@ static const char kSTSHostTable[] = { /* "customwritings.com", true */ 'c', 'u', 's', 't', 'o', 'm', 'w', 'r', 'i', 't', 'i', 'n', 'g', 's', '.', 'c', 'o', 'm', '\0', /* "cutimbo.ovh", true */ 'c', 'u', 't', 'i', 'm', 'b', 'o', '.', 'o', 'v', 'h', '\0', /* "cuvva.co", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', '\0', - /* "cuvva.co.uk", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "cuvva.com", true */ 'c', 'u', 'v', 'v', 'a', '.', 'c', 'o', 'm', '\0', /* "cuvva.net", true */ 'c', 'u', 'v', 'v', 'a', '.', 'n', 'e', 't', '\0', /* "cuvva.uk", true */ 'c', 'u', 'v', 'v', 'a', '.', 'u', 'k', '\0', @@ -4603,6 +4606,7 @@ static const char kSTSHostTable[] = { /* "czechvirus.cz", true */ 'c', 'z', 'e', 'c', 'h', 'v', 'i', 'r', 'u', 's', '.', 'c', 'z', '\0', /* "czerno.com", true */ 'c', 'z', 'e', 'r', 'n', 'o', '.', 'c', 'o', 'm', '\0', /* "czk.mk", true */ 'c', 'z', 'k', '.', 'm', 'k', '\0', + /* "czlx.co", false */ 'c', 'z', 'l', 'x', '.', 'c', 'o', '\0', /* "d-20.fr", true */ 'd', '-', '2', '0', '.', 'f', 'r', '\0', /* "d-bood.site", true */ 'd', '-', 'b', 'o', 'o', 'd', '.', 's', 'i', 't', 'e', '\0', /* "d-designerin.de", true */ 'd', '-', 'd', 'e', 's', 'i', 'g', 'n', 'e', 'r', 'i', 'n', '.', 'd', 'e', '\0', @@ -4691,7 +4695,6 @@ static const char kSTSHostTable[] = { /* "danielrozenberg.com", true */ 'd', 'a', 'n', 'i', 'e', 'l', 'r', 'o', 'z', 'e', 'n', 'b', 'e', 'r', 'g', '.', 'c', 'o', 'm', '\0', /* "danielsblog.org", true */ 'd', 'a', 'n', 'i', 'e', 'l', 's', 'b', 'l', 'o', 'g', '.', 'o', 'r', 'g', '\0', /* "danielstach.cz", true */ 'd', 'a', 'n', 'i', 'e', 'l', 's', 't', 'a', 'c', 'h', '.', 'c', 'z', '\0', - /* "danielthompson.info", true */ 'd', 'a', 'n', 'i', 'e', 'l', 't', 'h', 'o', 'm', 'p', 's', 'o', 'n', '.', 'i', 'n', 'f', 'o', '\0', /* "danieltollot.de", true */ 'd', 'a', 'n', 'i', 'e', 'l', 't', 'o', 'l', 'l', 'o', 't', '.', 'd', 'e', '\0', /* "danielvoogsgerd.nl", true */ 'd', 'a', 'n', 'i', 'e', 'l', 'v', 'o', 'o', 'g', 's', 'g', 'e', 'r', 'd', '.', 'n', 'l', '\0', /* "danilapisarev.com", true */ 'd', 'a', 'n', 'i', 'l', 'a', 'p', 'i', 's', 'a', 'r', 'e', 'v', '.', 'c', 'o', 'm', '\0', @@ -4771,6 +4774,7 @@ static const char kSTSHostTable[] = { /* "datadit.hu", true */ 'd', 'a', 't', 'a', 'd', 'i', 't', '.', 'h', 'u', '\0', /* "datadyne.technology", true */ 'd', 'a', 't', 'a', 'd', 'y', 'n', 'e', '.', 't', 'e', 'c', 'h', 'n', 'o', 'l', 'o', 'g', 'y', '\0', /* "dataisme.com", true */ 'd', 'a', 't', 'a', 'i', 's', 'm', 'e', '.', 'c', 'o', 'm', '\0', + /* "datajapan.co.jp", true */ 'd', 'a', 't', 'a', 'j', 'a', 'p', 'a', 'n', '.', 'c', 'o', '.', 'j', 'p', '\0', /* "datalysis.ch", true */ 'd', 'a', 't', 'a', 'l', 'y', 's', 'i', 's', '.', 'c', 'h', '\0', /* "datamatic.ru", true */ 'd', 'a', 't', 'a', 'm', 'a', 't', 'i', 'c', '.', 'r', 'u', '\0', /* "dataprotectionadvisors.com", true */ 'd', 'a', 't', 'a', 'p', 'r', 'o', 't', 'e', 'c', 't', 'i', 'o', 'n', 'a', 'd', 'v', 'i', 's', 'o', 'r', 's', '.', 'c', 'o', 'm', '\0', @@ -4797,7 +4801,6 @@ static const char kSTSHostTable[] = { /* "datsound.ru", true */ 'd', 'a', 't', 's', 'o', 'u', 'n', 'd', '.', 'r', 'u', '\0', /* "dave-pearce.com", true */ 'd', 'a', 'v', 'e', '-', 'p', 'e', 'a', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0', /* "daveaglick.com", true */ 'd', 'a', 'v', 'e', 'a', 'g', 'l', 'i', 'c', 'k', '.', 'c', 'o', 'm', '\0', - /* "davecardwell.com", true */ 'd', 'a', 'v', 'e', 'c', 'a', 'r', 'd', 'w', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0', /* "daveoc64.co.uk", true */ 'd', 'a', 'v', 'e', 'o', 'c', '6', '4', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "davepage.me.uk", true */ 'd', 'a', 'v', 'e', 'p', 'a', 'g', 'e', '.', 'm', 'e', '.', 'u', 'k', '\0', /* "davepearce.com", true */ 'd', 'a', 'v', 'e', 'p', 'e', 'a', 'r', 'c', 'e', '.', 'c', 'o', 'm', '\0', @@ -5035,6 +5038,7 @@ static const char kSTSHostTable[] = { /* "dereferenced.net", true */ 'd', 'e', 'r', 'e', 'f', 'e', 'r', 'e', 'n', 'c', 'e', 'd', '.', 'n', 'e', 't', '\0', /* "deregowski.net", true */ 'd', 'e', 'r', 'e', 'g', 'o', 'w', 's', 'k', 'i', '.', 'n', 'e', 't', '\0', /* "derekkent.com", true */ 'd', 'e', 'r', 'e', 'k', 'k', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0', + /* "dergeilstestammderwelt.de", true */ 'd', 'e', 'r', 'g', 'e', 'i', 'l', 's', 't', 'e', 's', 't', 'a', 'm', 'm', 'd', 'e', 'r', 'w', 'e', 'l', 't', '.', 'd', 'e', '\0', /* "derhil.de", true */ 'd', 'e', 'r', 'h', 'i', 'l', '.', 'd', 'e', '\0', /* "derivativeshub.pro", true */ 'd', 'e', 'r', 'i', 'v', 'a', 't', 'i', 'v', 'e', 's', 'h', 'u', 'b', '.', 'p', 'r', 'o', '\0', /* "derive.cc", true */ 'd', 'e', 'r', 'i', 'v', 'e', '.', 'c', 'c', '\0', @@ -5085,6 +5089,10 @@ static const char kSTSHostTable[] = { /* "deurenfabriek.nl", true */ 'd', 'e', 'u', 'r', 'e', 'n', 'f', 'a', 'b', 'r', 'i', 'e', 'k', '.', 'n', 'l', '\0', /* "deusu.de", true */ 'd', 'e', 'u', 's', 'u', '.', 'd', 'e', '\0', /* "deutsch-vietnamesisch-dolmetscher.com", true */ 'd', 'e', 'u', 't', 's', 'c', 'h', '-', 'v', 'i', 'e', 't', 'n', 'a', 'm', 'e', 's', 'i', 's', 'c', 'h', '-', 'd', 'o', 'l', 'm', 'e', 't', 's', 'c', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0', + /* "deux.solutions", true */ 'd', 'e', 'u', 'x', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0', + /* "deuxsol.co", true */ 'd', 'e', 'u', 'x', 's', 'o', 'l', '.', 'c', 'o', '\0', + /* "deuxsol.com", true */ 'd', 'e', 'u', 'x', 's', 'o', 'l', '.', 'c', 'o', 'm', '\0', + /* "deuxsolutions.com", true */ 'd', 'e', 'u', 'x', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0', /* "dev-aegon.azurewebsites.net", true */ 'd', 'e', 'v', '-', 'a', 'e', 'g', 'o', 'n', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0', /* "dev-tek.de", true */ 'd', 'e', 'v', '-', 't', 'e', 'k', '.', 'd', 'e', '\0', /* "devb.nl", true */ 'd', 'e', 'v', 'b', '.', 'n', 'l', '\0', @@ -5183,6 +5191,7 @@ static const char kSTSHostTable[] = { /* "diddens.de", true */ 'd', 'i', 'd', 'd', 'e', 'n', 's', '.', 'd', 'e', '\0', /* "didierlaumen.be", true */ 'd', 'i', 'd', 'i', 'e', 'r', 'l', 'a', 'u', 'm', 'e', 'n', '.', 'b', 'e', '\0', /* "die-besten-weisheiten.de", true */ 'd', 'i', 'e', '-', 'b', 'e', 's', 't', 'e', 'n', '-', 'w', 'e', 'i', 's', 'h', 'e', 'i', 't', 'e', 'n', '.', 'd', 'e', '\0', + /* "die-blahuts.de", true */ 'd', 'i', 'e', '-', 'b', 'l', 'a', 'h', 'u', 't', 's', '.', 'd', 'e', '\0', /* "die-gruenen-teufel.de", true */ 'd', 'i', 'e', '-', 'g', 'r', 'u', 'e', 'n', 'e', 'n', '-', 't', 'e', 'u', 'f', 'e', 'l', '.', 'd', 'e', '\0', /* "die-partei-reutlingen.de", true */ 'd', 'i', 'e', '-', 'p', 'a', 'r', 't', 'e', 'i', '-', 'r', 'e', 'u', 't', 'l', 'i', 'n', 'g', 'e', 'n', '.', 'd', 'e', '\0', /* "die-sinlosen.de", true */ 'd', 'i', 'e', '-', 's', 'i', 'n', 'l', 'o', 's', 'e', 'n', '.', 'd', 'e', '\0', @@ -5370,6 +5379,7 @@ static const char kSTSHostTable[] = { /* "dn42.us", true */ 'd', 'n', '4', '2', '.', 'u', 's', '\0', /* "dna.li", true */ 'd', 'n', 'a', '.', 'l', 'i', '\0', /* "dnc.org.nz", true */ 'd', 'n', 'c', '.', 'o', 'r', 'g', '.', 'n', 'z', '\0', + /* "dndtools.net", true */ 'd', 'n', 'd', 't', 'o', 'o', 'l', 's', '.', 'n', 'e', 't', '\0', /* "dne.lu", true */ 'd', 'n', 'e', '.', 'l', 'u', '\0', /* "dnmaze.com", true */ 'd', 'n', 'm', 'a', 'z', 'e', '.', 'c', 'o', 'm', '\0', /* "dnmlab.it", true */ 'd', 'n', 'm', 'l', 'a', 'b', '.', 'i', 't', '\0', @@ -5514,6 +5524,7 @@ static const char kSTSHostTable[] = { /* "doubleup.com.au", true */ 'd', 'o', 'u', 'b', 'l', 'e', 'u', 'p', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0', /* "doubleyummy.uk", true */ 'd', 'o', 'u', 'b', 'l', 'e', 'y', 'u', 'm', 'm', 'y', '.', 'u', 'k', '\0', /* "doucheba.gs", true */ 'd', 'o', 'u', 'c', 'h', 'e', 'b', 'a', '.', 'g', 's', '\0', + /* "dougferris.id.au", true */ 'd', 'o', 'u', 'g', 'f', 'e', 'r', 'r', 'i', 's', '.', 'i', 'd', '.', 'a', 'u', '\0', /* "doujinshi.info", true */ 'd', 'o', 'u', 'j', 'i', 'n', 's', 'h', 'i', '.', 'i', 'n', 'f', 'o', '\0', /* "dounats.com", true */ 'd', 'o', 'u', 'n', 'a', 't', 's', '.', 'c', 'o', 'm', '\0', /* "douzer.de", true */ 'd', 'o', 'u', 'z', 'e', 'r', '.', 'd', 'e', '\0', @@ -5660,6 +5671,7 @@ static const char kSTSHostTable[] = { /* "duckinc.net", true */ 'd', 'u', 'c', 'k', 'i', 'n', 'c', '.', 'n', 'e', 't', '\0', /* "ducohosting.com", true */ 'd', 'u', 'c', 'o', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "duelysthub.com", true */ 'd', 'u', 'e', 'l', 'y', 's', 't', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0', + /* "duerls.de", true */ 'd', 'u', 'e', 'r', 'l', 's', '.', 'd', 'e', '\0', /* "duernberg.at", true */ 'd', 'u', 'e', 'r', 'n', 'b', 'e', 'r', 'g', '.', 'a', 't', '\0', /* "dugunedavet.com", true */ 'd', 'u', 'g', 'u', 'n', 'e', 'd', 'a', 'v', 'e', 't', '.', 'c', 'o', 'm', '\0', /* "duijf.info", true */ 'd', 'u', 'i', 'j', 'f', '.', 'i', 'n', 'f', 'o', '\0', @@ -5693,7 +5705,6 @@ static const char kSTSHostTable[] = { /* "dustri.org", true */ 'd', 'u', 's', 't', 'r', 'i', '.', 'o', 'r', 'g', '\0', /* "dustygroove.com", true */ 'd', 'u', 's', 't', 'y', 'g', 'r', 'o', 'o', 'v', 'e', '.', 'c', 'o', 'm', '\0', /* "dutch1.nl", true */ 'd', 'u', 't', 'c', 'h', '1', '.', 'n', 'l', '\0', - /* "dutchessuganda.com", true */ 'd', 'u', 't', 'c', 'h', 'e', 's', 's', 'u', 'g', 'a', 'n', 'd', 'a', '.', 'c', 'o', 'm', '\0', /* "dutchrank.nl", true */ 'd', 'u', 't', 'c', 'h', 'r', 'a', 'n', 'k', '.', 'n', 'l', '\0', /* "dutchwanderers.nl", true */ 'd', 'u', 't', 'c', 'h', 'w', 'a', 'n', 'd', 'e', 'r', 'e', 'r', 's', '.', 'n', 'l', '\0', /* "dutchweballiance.nl", true */ 'd', 'u', 't', 'c', 'h', 'w', 'e', 'b', 'a', 'l', 'l', 'i', 'a', 'n', 'c', 'e', '.', 'n', 'l', '\0', @@ -6129,6 +6140,7 @@ static const char kSTSHostTable[] = { /* "empowerdb.com", true */ 'e', 'm', 'p', 'o', 'w', 'e', 'r', 'd', 'b', '.', 'c', 'o', 'm', '\0', /* "emprego.pt", true */ 'e', 'm', 'p', 'r', 'e', 'g', 'o', '.', 'p', 't', '\0', /* "emptypath.com", true */ 'e', 'm', 'p', 't', 'y', 'p', 'a', 't', 'h', '.', 'c', 'o', 'm', '\0', + /* "emrenovation.com", true */ 'e', 'm', 'r', 'e', 'n', 'o', 'v', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "emw3.com", true */ 'e', 'm', 'w', '3', '.', 'c', 'o', 'm', '\0', /* "emyr.net", true */ 'e', 'm', 'y', 'r', '.', 'n', 'e', 't', '\0', /* "en-booster.jp", true */ 'e', 'n', '-', 'b', 'o', 'o', 's', 't', 'e', 'r', '.', 'j', 'p', '\0', @@ -6366,7 +6378,7 @@ static const char kSTSHostTable[] = { /* "essplusmed.org", true */ 'e', 's', 's', 'p', 'l', 'u', 's', 'm', 'e', 'd', '.', 'o', 'r', 'g', '\0', /* "estaciona.guru", true */ 'e', 's', 't', 'a', 'c', 'i', 'o', 'n', 'a', '.', 'g', 'u', 'r', 'u', '\0', /* "estaleiro.org", true */ 'e', 's', 't', 'a', 'l', 'e', 'i', 'r', 'o', '.', 'o', 'r', 'g', '\0', - /* "estan.cn", true */ 'e', 's', 't', 'a', 'n', '.', 'c', 'n', '\0', + /* "estan.cn", false */ 'e', 's', 't', 'a', 'n', '.', 'c', 'n', '\0', /* "estcequonmetenprodaujourdhui.info", true */ 'e', 's', 't', 'c', 'e', 'q', 'u', 'o', 'n', 'm', 'e', 't', 'e', 'n', 'p', 'r', 'o', 'd', 'a', 'u', 'j', 'o', 'u', 'r', 'd', 'h', 'u', 'i', '.', 'i', 'n', 'f', 'o', '\0', /* "esteam.se", true */ 'e', 's', 't', 'e', 'a', 'm', '.', 's', 'e', '\0', /* "estoic.net", true */ 'e', 's', 't', 'o', 'i', 'c', '.', 'n', 'e', 't', '\0', @@ -6394,6 +6406,7 @@ static const char kSTSHostTable[] = { /* "ethicall.org.uk", true */ 'e', 't', 'h', 'i', 'c', 'a', 'l', 'l', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0', /* "ethiopian.dating", true */ 'e', 't', 'h', 'i', 'o', 'p', 'i', 'a', 'n', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0', /* "ethitter.com", true */ 'e', 't', 'h', 'i', 't', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0', + /* "ethlan.fr", true */ 'e', 't', 'h', 'l', 'a', 'n', '.', 'f', 'r', '\0', /* "ethosinfo.com", true */ 'e', 't', 'h', 'o', 's', 'i', 'n', 'f', 'o', '.', 'c', 'o', 'm', '\0', /* "etidni.help", true */ 'e', 't', 'i', 'd', 'n', 'i', '.', 'h', 'e', 'l', 'p', '\0', /* "etk2000.com", true */ 'e', 't', 'k', '2', '0', '0', '0', '.', 'c', 'o', 'm', '\0', @@ -6565,6 +6578,7 @@ static const char kSTSHostTable[] = { /* "exponentialnews.net", true */ 'e', 'x', 'p', 'o', 'n', 'e', 'n', 't', 'i', 'a', 'l', 'n', 'e', 'w', 's', '.', 'n', 'e', 't', '\0', /* "express-shina.ru", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', '-', 's', 'h', 'i', 'n', 'a', '.', 'r', 'u', '\0', /* "express-vpn.com", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', '-', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0', + /* "expressemotion.net", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', 'e', 'm', 'o', 't', 'i', 'o', 'n', '.', 'n', 'e', 't', '\0', /* "expresshosting.org", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', 'h', 'o', 's', 't', 'i', 'n', 'g', '.', 'o', 'r', 'g', '\0', /* "expressmarket.ru", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', 'm', 'a', 'r', 'k', 'e', 't', '.', 'r', 'u', '\0', /* "expressvpn.com", true */ 'e', 'x', 'p', 'r', 'e', 's', 's', 'v', 'p', 'n', '.', 'c', 'o', 'm', '\0', @@ -7097,6 +7111,7 @@ static const char kSTSHostTable[] = { /* "fobc-usa.org", true */ 'f', 'o', 'b', 'c', '-', 'u', 's', 'a', '.', 'o', 'r', 'g', '\0', /* "focalforest.com", true */ 'f', 'o', 'c', 'a', 'l', 'f', 'o', 'r', 'e', 's', 't', '.', 'c', 'o', 'm', '\0', /* "focanamoda.com.br", true */ 'f', 'o', 'c', 'a', 'n', 'a', 'm', 'o', 'd', 'a', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', + /* "focusmark.jp", false */ 'f', 'o', 'c', 'u', 's', 'm', 'a', 'r', 'k', '.', 'j', 'p', '\0', /* "focusministries1.org", true */ 'f', 'o', 'c', 'u', 's', 'm', 'i', 'n', 'i', 's', 't', 'r', 'i', 'e', 's', '1', '.', 'o', 'r', 'g', '\0', /* "foej-aktiv.de", true */ 'f', 'o', 'e', 'j', '-', 'a', 'k', 't', 'i', 'v', '.', 'd', 'e', '\0', /* "foej.net", true */ 'f', 'o', 'e', 'j', '.', 'n', 'e', 't', '\0', @@ -7122,7 +7137,6 @@ static const char kSTSHostTable[] = { /* "foodacademy.capetown", true */ 'f', 'o', 'o', 'd', 'a', 'c', 'a', 'd', 'e', 'm', 'y', '.', 'c', 'a', 'p', 'e', 't', 'o', 'w', 'n', '\0', /* "foodattitude.ch", true */ 'f', 'o', 'o', 'd', 'a', 't', 't', 'i', 't', 'u', 'd', 'e', '.', 'c', 'h', '\0', /* "foodblogger.club", true */ 'f', 'o', 'o', 'd', 'b', 'l', 'o', 'g', 'g', 'e', 'r', '.', 'c', 'l', 'u', 'b', '\0', - /* "foodiebox.no", true */ 'f', 'o', 'o', 'd', 'i', 'e', 'b', 'o', 'x', '.', 'n', 'o', '\0', /* "foodies.my", true */ 'f', 'o', 'o', 'd', 'i', 'e', 's', '.', 'm', 'y', '\0', /* "foodplantengineering.com", true */ 'f', 'o', 'o', 'd', 'p', 'l', 'a', 'n', 't', 'e', 'n', 'g', 'i', 'n', 'e', 'e', 'r', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "foodsafety.gov", true */ 'f', 'o', 'o', 'd', 's', 'a', 'f', 'e', 't', 'y', '.', 'g', 'o', 'v', '\0', @@ -7607,7 +7621,6 @@ static const char kSTSHostTable[] = { /* "gaytorrent.ru", true */ 'g', 'a', 'y', 't', 'o', 'r', 'r', 'e', 'n', 't', '.', 'r', 'u', '\0', /* "gayxsite.com", true */ 'g', 'a', 'y', 'x', 's', 'i', 't', 'e', '.', 'c', 'o', 'm', '\0', /* "gazee.net", true */ 'g', 'a', 'z', 'e', 'e', '.', 'n', 'e', 't', '\0', - /* "gazellegames.net", true */ 'g', 'a', 'z', 'e', 'l', 'l', 'e', 'g', 'a', 'm', 'e', 's', '.', 'n', 'e', 't', '\0', /* "gbcsummercamps.com", true */ 'g', 'b', 'c', 's', 'u', 'm', 'm', 'e', 'r', 'c', 'a', 'm', 'p', 's', '.', 'c', 'o', 'm', '\0', /* "gbl.selfip.net", true */ 'g', 'b', 'l', '.', 's', 'e', 'l', 'f', 'i', 'p', '.', 'n', 'e', 't', '\0', /* "gc-mc.de", true */ 'g', 'c', '-', 'm', 'c', '.', 'd', 'e', '\0', @@ -7808,7 +7821,6 @@ static const char kSTSHostTable[] = { /* "giacomodrago.com", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'd', 'r', 'a', 'g', 'o', '.', 'c', 'o', 'm', '\0', /* "giacomodrago.it", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'd', 'r', 'a', 'g', 'o', '.', 'i', 't', '\0', /* "giacomopelagatti.it", true */ 'g', 'i', 'a', 'c', 'o', 'm', 'o', 'p', 'e', 'l', 'a', 'g', 'a', 't', 't', 'i', '.', 'i', 't', '\0', - /* "giakki.eu", true */ 'g', 'i', 'a', 'k', 'k', 'i', '.', 'e', 'u', '\0', /* "gianlucapartengo.photography", true */ 'g', 'i', 'a', 'n', 'l', 'u', 'c', 'a', 'p', 'a', 'r', 't', 'e', 'n', 'g', 'o', '.', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '\0', /* "gianproperties.com", true */ 'g', 'i', 'a', 'n', 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's', '.', 'c', 'o', 'm', '\0', /* "giant-panda.com", true */ 'g', 'i', 'a', 'n', 't', '-', 'p', 'a', 'n', 'd', 'a', '.', 'c', 'o', 'm', '\0', @@ -8095,7 +8107,6 @@ static const char kSTSHostTable[] = { /* "gravitation.pro", false */ 'g', 'r', 'a', 'v', 'i', 't', 'a', 't', 'i', 'o', 'n', '.', 'p', 'r', 'o', '\0', /* "gravitechthai.com", true */ 'g', 'r', 'a', 'v', 'i', 't', 'e', 'c', 'h', 't', 'h', 'a', 'i', '.', 'c', 'o', 'm', '\0', /* "gravity-dev.de", true */ 'g', 'r', 'a', 'v', 'i', 't', 'y', '-', 'd', 'e', 'v', '.', 'd', 'e', '\0', - /* "gravity-inc.net", true */ 'g', 'r', 'a', 'v', 'i', 't', 'y', '-', 'i', 'n', 'c', '.', 'n', 'e', 't', '\0', /* "gravitypdf.com", true */ 'g', 'r', 'a', 'v', 'i', 't', 'y', 'p', 'd', 'f', '.', 'c', 'o', 'm', '\0', /* "graymalk.in", true */ 'g', 'r', 'a', 'y', 'm', 'a', 'l', 'k', '.', 'i', 'n', '\0', /* "graysonsmith.co.uk", true */ 'g', 'r', 'a', 'y', 's', 'o', 'n', 's', 'm', 'i', 't', 'h', '.', 'c', 'o', '.', 'u', 'k', '\0', @@ -8200,6 +8211,7 @@ static const char kSTSHostTable[] = { /* "gruenprint.de", true */ 'g', 'r', 'u', 'e', 'n', 'p', 'r', 'i', 'n', 't', '.', 'd', 'e', '\0', /* "grumpy.fr", true */ 'g', 'r', 'u', 'm', 'p', 'y', '.', 'f', 'r', '\0', /* "grunwasser.fr", true */ 'g', 'r', 'u', 'n', 'w', 'a', 's', 's', 'e', 'r', '.', 'f', 'r', '\0', + /* "grusenmeyer.be", true */ 'g', 'r', 'u', 's', 'e', 'n', 'm', 'e', 'y', 'e', 'r', '.', 'b', 'e', '\0', /* "grusig-geil.ch", true */ 'g', 'r', 'u', 's', 'i', 'g', '-', 'g', 'e', 'i', 'l', '.', 'c', 'h', '\0', /* "grytics.com", true */ 'g', 'r', 'y', 't', 'i', 'c', 's', '.', 'c', 'o', 'm', '\0', /* "gs-net.at", true */ 'g', 's', '-', 'n', 'e', 't', '.', 'a', 't', '\0', @@ -8995,7 +9007,6 @@ static const char kSTSHostTable[] = { /* "htsure.ma", true */ 'h', 't', 's', 'u', 'r', 'e', '.', 'm', 'a', '\0', /* "http2.eu", true */ 'h', 't', 't', 'p', '2', '.', 'e', 'u', '\0', /* "http2.pro", true */ 'h', 't', 't', 'p', '2', '.', 'p', 'r', 'o', '\0', - /* "httphacker.com", true */ 'h', 't', 't', 'p', 'h', 'a', 'c', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "https.jetzt", true */ 'h', 't', 't', 'p', 's', '.', 'j', 'e', 't', 'z', 't', '\0', /* "httpsecured.net", true */ 'h', 't', 't', 'p', 's', 'e', 'c', 'u', 'r', 'e', 'd', '.', 'n', 'e', 't', '\0', /* "httpsecurityreport.com", true */ 'h', 't', 't', 'p', 's', 'e', 'c', 'u', 'r', 'i', 't', 'y', 'r', 'e', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0', @@ -9075,6 +9086,7 @@ static const char kSTSHostTable[] = { /* "hydaelyn.com", true */ 'h', 'y', 'd', 'a', 'e', 'l', 'y', 'n', '.', 'c', 'o', 'm', '\0', /* "hydrante.ch", true */ 'h', 'y', 'd', 'r', 'a', 'n', 't', 'e', '.', 'c', 'h', '\0', /* "hydrocloud.net", true */ 'h', 'y', 'd', 'r', 'o', 'c', 'l', 'o', 'u', 'd', '.', 'n', 'e', 't', '\0', + /* "hydronium.ml", true */ 'h', 'y', 'd', 'r', 'o', 'n', 'i', 'u', 'm', '.', 'm', 'l', '\0', /* "hydroturbine.info", true */ 'h', 'y', 'd', 'r', 'o', 't', 'u', 'r', 'b', 'i', 'n', 'e', '.', 'i', 'n', 'f', 'o', '\0', /* "hydrozone.fr", true */ 'h', 'y', 'd', 'r', 'o', 'z', 'o', 'n', 'e', '.', 'f', 'r', '\0', /* "hyk.me", true */ 'h', 'y', 'k', '.', 'm', 'e', '\0', @@ -9149,7 +9161,6 @@ static const char kSTSHostTable[] = { /* "icmp2018.org", true */ 'i', 'c', 'm', 'p', '2', '0', '1', '8', '.', 'o', 'r', 'g', '\0', /* "icodeconnect.com", true */ 'i', 'c', 'o', 'd', 'e', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0', /* "iconomi.net", true */ 'i', 'c', 'o', 'n', 'o', 'm', 'i', '.', 'n', 'e', 't', '\0', - /* "icpc.pp.ua", true */ 'i', 'c', 'p', 'c', '.', 'p', 'p', '.', 'u', 'a', '\0', /* "icpc2016.in.th", true */ 'i', 'c', 'p', 'c', '2', '0', '1', '6', '.', 'i', 'n', '.', 't', 'h', '\0', /* "icq-project.net", true */ 'i', 'c', 'q', '-', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'n', 'e', 't', '\0', /* "ict-concept.nl", false */ 'i', 'c', 't', '-', 'c', 'o', 'n', 'c', 'e', 'p', 't', '.', 'n', 'l', '\0', @@ -9173,7 +9184,6 @@ static const char kSTSHostTable[] = { /* "idcrane.com", true */ 'i', 'd', 'c', 'r', 'a', 'n', 'e', '.', 'c', 'o', 'm', '\0', /* "iddconnect.com", true */ 'i', 'd', 'd', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0', /* "iddconnect.org", true */ 'i', 'd', 'd', 'c', 'o', 'n', 'n', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0', - /* "ideadozz.hu", true */ 'i', 'd', 'e', 'a', 'd', 'o', 'z', 'z', '.', 'h', 'u', '\0', /* "idealmoto.com", true */ 'i', 'd', 'e', 'a', 'l', 'm', 'o', 't', 'o', '.', 'c', 'o', 'm', '\0', /* "idealwhite.space", true */ 'i', 'd', 'e', 'a', 'l', 'w', 'h', 'i', 't', 'e', '.', 's', 'p', 'a', 'c', 'e', '\0', /* "ideaman924.com", true */ 'i', 'd', 'e', 'a', 'm', 'a', 'n', '9', '2', '4', '.', 'c', 'o', 'm', '\0', @@ -9206,6 +9216,7 @@ static const char kSTSHostTable[] = { /* "iemas.azurewebsites.net", true */ 'i', 'e', 'm', 'a', 's', '.', 'a', 'z', 'u', 'r', 'e', 'w', 'e', 'b', 's', 'i', 't', 'e', 's', '.', 'n', 'e', 't', '\0', /* "ieval.ro", true */ 'i', 'e', 'v', 'a', 'l', '.', 'r', 'o', '\0', /* "ifamily.top", true */ 'i', 'f', 'a', 'm', 'i', 'l', 'y', '.', 't', 'o', 'p', '\0', + /* "ifasec.de", false */ 'i', 'f', 'a', 's', 'e', 'c', '.', 'd', 'e', '\0', /* "ifcfg.me", true */ 'i', 'f', 'c', 'f', 'g', '.', 'm', 'e', '\0', /* "ifconfig.co", true */ 'i', 'f', 'c', 'o', 'n', 'f', 'i', 'g', '.', 'c', 'o', '\0', /* "ifengge.cn", true */ 'i', 'f', 'e', 'n', 'g', 'g', 'e', '.', 'c', 'n', '\0', @@ -9237,7 +9248,6 @@ static const char kSTSHostTable[] = { /* "ignatovich.by", true */ 'i', 'g', 'n', 'a', 't', 'o', 'v', 'i', 'c', 'h', '.', 'b', 'y', '\0', /* "ignatovich.me", true */ 'i', 'g', 'n', 'a', 't', 'o', 'v', 'i', 'c', 'h', '.', 'm', 'e', '\0', /* "ignitedmindz.in", true */ 'i', 'g', 'n', 'i', 't', 'e', 'd', 'm', 'i', 'n', 'd', 'z', '.', 'i', 'n', '\0', - /* "igotoffer.com", false */ 'i', 'g', 'o', 't', 'o', 'f', 'f', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "igrivi.com", true */ 'i', 'g', 'r', 'i', 'v', 'i', '.', 'c', 'o', 'm', '\0', /* "igsmgmt.com", true */ 'i', 'g', 's', 'm', 'g', 'm', 't', '.', 'c', 'o', 'm', '\0', /* "ih8sn0w.com", true */ 'i', 'h', '8', 's', 'n', '0', 'w', '.', 'c', 'o', 'm', '\0', @@ -9324,6 +9334,7 @@ static const char kSTSHostTable[] = { /* "imguploaden.nl", true */ 'i', 'm', 'g', 'u', 'p', 'l', 'o', 'a', 'd', 'e', 'n', '.', 'n', 'l', '\0', /* "imirhil.fr", true */ 'i', 'm', 'i', 'r', 'h', 'i', 'l', '.', 'f', 'r', '\0', /* "imitza.com", true */ 'i', 'm', 'i', 't', 'z', 'a', '.', 'c', 'o', 'm', '\0', + /* "imjad.cn", true */ 'i', 'm', 'j', 'a', 'd', '.', 'c', 'n', '\0', /* "imjiangtao.com", true */ 'i', 'm', 'j', 'i', 'a', 'n', 'g', 't', 'a', 'o', '.', 'c', 'o', 'm', '\0', /* "imkerei-freilinger.de", true */ 'i', 'm', 'k', 'e', 'r', 'e', 'i', '-', 'f', 'r', 'e', 'i', 'l', 'i', 'n', 'g', 'e', 'r', '.', 'd', 'e', '\0', /* "imlonghao.com", true */ 'i', 'm', 'l', 'o', 'n', 'g', 'h', 'a', 'o', '.', 'c', 'o', 'm', '\0', @@ -9547,6 +9558,7 @@ static const char kSTSHostTable[] = { /* "international-arbitration-attorney.com", false */ 'i', 'n', 't', 'e', 'r', 'n', 'a', 't', 'i', 'o', 'n', 'a', 'l', '-', 'a', 'r', 'b', 'i', 't', 'r', 'a', 't', 'i', 'o', 'n', '-', 'a', 't', 't', 'o', 'r', 'n', 'e', 'y', '.', 'c', 'o', 'm', '\0', /* "internationalfashionjobs.com", true */ 'i', 'n', 't', 'e', 'r', 'n', 'a', 't', 'i', 'o', 'n', 'a', 'l', 'f', 'a', 's', 'h', 'i', 'o', 'n', 'j', 'o', 'b', 's', '.', 'c', 'o', 'm', '\0', /* "internaut.co.za", true */ 'i', 'n', 't', 'e', 'r', 'n', 'a', 'u', 't', '.', 'c', 'o', '.', 'z', 'a', '\0', + /* "internect.co.za", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 'c', 't', '.', 'c', 'o', '.', 'z', 'a', '\0', /* "internet-pornografie.de", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', '-', 'p', 'o', 'r', 'n', 'o', 'g', 'r', 'a', 'f', 'i', 'e', '.', 'd', 'e', '\0', /* "internetaanbieders.eu", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'a', 'a', 'n', 'b', 'i', 'e', 'd', 'e', 'r', 's', '.', 'e', 'u', '\0', /* "internetbank.swedbank.se", true */ 'i', 'n', 't', 'e', 'r', 'n', 'e', 't', 'b', 'a', 'n', 'k', '.', 's', 'w', 'e', 'd', 'b', 'a', 'n', 'k', '.', 's', 'e', '\0', @@ -9789,6 +9801,7 @@ static const char kSTSHostTable[] = { /* "iteecafe.hu", true */ 'i', 't', 'e', 'e', 'c', 'a', 'f', 'e', '.', 'h', 'u', '\0', /* "iteke.ml", true */ 'i', 't', 'e', 'k', 'e', '.', 'm', 'l', '\0', /* "iteke.tk", true */ 'i', 't', 'e', 'k', 'e', '.', 't', 'k', '\0', + /* "iteli.eu", true */ 'i', 't', 'e', 'l', 'i', '.', 'e', 'u', '\0', /* "items.lv", true */ 'i', 't', 'e', 'm', 's', '.', 'l', 'v', '\0', /* "itemton.com", true */ 'i', 't', 'e', 'm', 't', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "iterror.co", true */ 'i', 't', 'e', 'r', 'r', 'o', 'r', '.', 'c', 'o', '\0', @@ -10015,6 +10028,7 @@ static const char kSTSHostTable[] = { /* "jazzinutrecht.info", true */ 'j', 'a', 'z', 'z', 'i', 'n', 'u', 't', 'r', 'e', 'c', 'h', 't', '.', 'i', 'n', 'f', 'o', '\0', /* "jazzncheese.com", true */ 'j', 'a', 'z', 'z', 'n', 'c', 'h', 'e', 'e', 's', 'e', '.', 'c', 'o', 'm', '\0', /* "jazzy.pro", true */ 'j', 'a', 'z', 'z', 'y', '.', 'p', 'r', 'o', '\0', + /* "jazzysumi.com", true */ 'j', 'a', 'z', 'z', 'y', 's', 'u', 'm', 'i', '.', 'c', 'o', 'm', '\0', /* "jbbd.fr", true */ 'j', 'b', 'b', 'd', '.', 'f', 'r', '\0', /* "jbelien.be", true */ 'j', 'b', 'e', 'l', 'i', 'e', 'n', '.', 'b', 'e', '\0', /* "jbelien.photography", true */ 'j', 'b', 'e', 'l', 'i', 'e', 'n', '.', 'p', 'h', 'o', 't', 'o', 'g', 'r', 'a', 'p', 'h', 'y', '\0', @@ -10408,7 +10422,6 @@ static const char kSTSHostTable[] = { /* "kabeuchi.com", true */ 'k', 'a', 'b', 'e', 'u', 'c', 'h', 'i', '.', 'c', 'o', 'm', '\0', /* "kaboom.pw", true */ 'k', 'a', 'b', 'o', 'o', 'm', '.', 'p', 'w', '\0', /* "kabu-abc.com", true */ 'k', 'a', 'b', 'u', '-', 'a', 'b', 'c', '.', 'c', 'o', 'm', '\0', - /* "kabus.org", true */ 'k', 'a', 'b', 'u', 's', '.', 'o', 'r', 'g', '\0', /* "kachlikova2.cz", true */ 'k', 'a', 'c', 'h', 'l', 'i', 'k', 'o', 'v', 'a', '2', '.', 'c', 'z', '\0', /* "kack.website", true */ 'k', 'a', 'c', 'k', '.', 'w', 'e', 'b', 's', 'i', 't', 'e', '\0', /* "kackscharf.de", true */ 'k', 'a', 'c', 'k', 's', 'c', 'h', 'a', 'r', 'f', '.', 'd', 'e', '\0', @@ -11055,7 +11068,6 @@ static const char kSTSHostTable[] = { /* "kulde.net", true */ 'k', 'u', 'l', 'd', 'e', '.', 'n', 'e', 't', '\0', /* "kulivps.com", true */ 'k', 'u', 'l', 'i', 'v', 'p', 's', '.', 'c', 'o', 'm', '\0', /* "kultmobil.se", true */ 'k', 'u', 'l', 't', 'm', 'o', 'b', 'i', 'l', '.', 's', 'e', '\0', - /* "kum.com", true */ 'k', 'u', 'm', '.', 'c', 'o', 'm', '\0', /* "kumachan.biz", true */ 'k', 'u', 'm', 'a', 'c', 'h', 'a', 'n', '.', 'b', 'i', 'z', '\0', /* "kumalog.com", true */ 'k', 'u', 'm', 'a', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0', /* "kumasanda.jp", true */ 'k', 'u', 'm', 'a', 's', 'a', 'n', 'd', 'a', '.', 'j', 'p', '\0', @@ -11162,7 +11174,6 @@ static const char kSTSHostTable[] = { /* "lajijonencadebarbera.com", true */ 'l', 'a', 'j', 'i', 'j', 'o', 'n', 'e', 'n', 'c', 'a', 'd', 'e', 'b', 'a', 'r', 'b', 'e', 'r', 'a', '.', 'c', 'o', 'm', '\0', /* "lak-berlin.de", true */ 'l', 'a', 'k', '-', 'b', 'e', 'r', 'l', 'i', 'n', '.', 'd', 'e', '\0', /* "lakatrop.com", true */ 'l', 'a', 'k', 'a', 't', 'r', 'o', 'p', '.', 'c', 'o', 'm', '\0', - /* "lakewoodcomputerservices.com", true */ 'l', 'a', 'k', 'e', 'w', 'o', 'o', 'd', 'c', 'o', 'm', 'p', 'u', 't', 'e', 'r', 's', 'e', 'r', 'v', 'i', 'c', 'e', 's', '.', 'c', 'o', 'm', '\0', /* "lakhesis.net", true */ 'l', 'a', 'k', 'h', 'e', 's', 'i', 's', '.', 'n', 'e', 't', '\0', /* "laltroweb.it", true */ 'l', 'a', 'l', 't', 'r', 'o', 'w', 'e', 'b', '.', 'i', 't', '\0', /* "lamakat.de", true */ 'l', 'a', 'm', 'a', 'k', 'a', 't', '.', 'd', 'e', '\0', @@ -11398,6 +11409,7 @@ static const char kSTSHostTable[] = { /* "leiming.co", true */ 'l', 'e', 'i', 'm', 'i', 'n', 'g', '.', 'c', 'o', '\0', /* "leipzig.photo", true */ 'l', 'e', 'i', 'p', 'z', 'i', 'g', '.', 'p', 'h', 'o', 't', 'o', '\0', /* "leisure-blog.com", true */ 'l', 'e', 'i', 's', 'u', 'r', 'e', '-', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0', + /* "lel.ovh", true */ 'l', 'e', 'l', '.', 'o', 'v', 'h', '\0', /* "lelubre.info", true */ 'l', 'e', 'l', 'u', 'b', 'r', 'e', '.', 'i', 'n', 'f', 'o', '\0', /* "lemarcheelagrandeguerra.it", true */ 'l', 'e', 'm', 'a', 'r', 'c', 'h', 'e', 'e', 'l', 'a', 'g', 'r', 'a', 'n', 'd', 'e', 'g', 'u', 'e', 'r', 'r', 'a', '.', 'i', 't', '\0', /* "lemoine.at", true */ 'l', 'e', 'm', 'o', 'i', 'n', 'e', '.', 'a', 't', '\0', @@ -11426,6 +11438,7 @@ static const char kSTSHostTable[] = { /* "leondenard.com", true */ 'l', 'e', 'o', 'n', 'd', 'e', 'n', 'a', 'r', 'd', '.', 'c', 'o', 'm', '\0', /* "leonklingele.de", true */ 'l', 'e', 'o', 'n', 'k', 'l', 'i', 'n', 'g', 'e', 'l', 'e', '.', 'd', 'e', '\0', /* "leonmahler.consulting", true */ 'l', 'e', 'o', 'n', 'm', 'a', 'h', 'l', 'e', 'r', '.', 'c', 'o', 'n', 's', 'u', 'l', 't', 'i', 'n', 'g', '\0', + /* "leopoldina.net", true */ 'l', 'e', 'o', 'p', 'o', 'l', 'd', 'i', 'n', 'a', '.', 'n', 'e', 't', '\0', /* "leovanna.co.uk", true */ 'l', 'e', 'o', 'v', 'a', 'n', 'n', 'a', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "lep.gov", true */ 'l', 'e', 'p', '.', 'g', 'o', 'v', '\0', /* "lepenetapeti.com", true */ 'l', 'e', 'p', 'e', 'n', 'e', 't', 'a', 'p', 'e', 't', 'i', '.', 'c', 'o', 'm', '\0', @@ -12000,7 +12013,7 @@ static const char kSTSHostTable[] = { /* "macandtonic.com", true */ 'm', 'a', 'c', 'a', 'n', 'd', 't', 'o', 'n', 'i', 'c', '.', 'c', 'o', 'm', '\0', /* "macaque.io", false */ 'm', 'a', 'c', 'a', 'q', 'u', 'e', '.', 'i', 'o', '\0', /* "macaws.org", true */ 'm', 'a', 'c', 'a', 'w', 's', '.', 'o', 'r', 'g', '\0', - /* "macchaberrycream.com", true */ 'm', 'a', 'c', 'c', 'h', 'a', 'b', 'e', 'r', 'r', 'y', 'c', 'r', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0', + /* "macchaberrycream.com", false */ 'm', 'a', 'c', 'c', 'h', 'a', 'b', 'e', 'r', 'r', 'y', 'c', 'r', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0', /* "maceinturecuir.com", true */ 'm', 'a', 'c', 'e', 'i', 'n', 't', 'u', 'r', 'e', 'c', 'u', 'i', 'r', '.', 'c', 'o', 'm', '\0', /* "maces-net.de", true */ 'm', 'a', 'c', 'e', 's', '-', 'n', 'e', 't', '.', 'd', 'e', '\0', /* "mach-politik.ch", true */ 'm', 'a', 'c', 'h', '-', 'p', 'o', 'l', 'i', 't', 'i', 'k', '.', 'c', 'h', '\0', @@ -12016,6 +12029,7 @@ static const char kSTSHostTable[] = { /* "maclemon.at", true */ 'm', 'a', 'c', 'l', 'e', 'm', 'o', 'n', '.', 'a', 't', '\0', /* "macleod.io", true */ 'm', 'a', 'c', 'l', 'e', 'o', 'd', '.', 'i', 'o', '\0', /* "macnemo.de", true */ 'm', 'a', 'c', 'n', 'e', 'm', 'o', '.', 'd', 'e', '\0', + /* "maco.org.uk", true */ 'm', 'a', 'c', 'o', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0', /* "maconnerie-dcs.ch", true */ 'm', 'a', 'c', 'o', 'n', 'n', 'e', 'r', 'i', 'e', '-', 'd', 'c', 's', '.', 'c', 'h', '\0', /* "macosxfilerecovery.com", true */ 'm', 'a', 'c', 'o', 's', 'x', 'f', 'i', 'l', 'e', 'r', 'e', 'c', 'o', 'v', 'e', 'r', 'y', '.', 'c', 'o', 'm', '\0', /* "macoun.de", true */ 'm', 'a', 'c', 'o', 'u', 'n', '.', 'd', 'e', '\0', @@ -12236,7 +12250,6 @@ static const char kSTSHostTable[] = { /* "margagriesser.de", true */ 'm', 'a', 'r', 'g', 'a', 'g', 'r', 'i', 'e', 's', 's', 'e', 'r', '.', 'd', 'e', '\0', /* "margan.ch", true */ 'm', 'a', 'r', 'g', 'a', 'n', '.', 'c', 'h', '\0', /* "margecommunication.com", true */ 'm', 'a', 'r', 'g', 'e', 'c', 'o', 'm', 'm', 'u', 'n', 'i', 'c', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', - /* "marialempke.com", true */ 'm', 'a', 'r', 'i', 'a', 'l', 'e', 'm', 'p', 'k', 'e', '.', 'c', 'o', 'm', '\0', /* "marianatherapy.com", true */ 'm', 'a', 'r', 'i', 'a', 'n', 'a', 't', 'h', 'e', 'r', 'a', 'p', 'y', '.', 'c', 'o', 'm', '\0', /* "mariannenan.nl", true */ 'm', 'a', 'r', 'i', 'a', 'n', 'n', 'e', 'n', 'a', 'n', '.', 'n', 'l', '\0', /* "mariaolesen.dk", true */ 'm', 'a', 'r', 'i', 'a', 'o', 'l', 'e', 's', 'e', 'n', '.', 'd', 'k', '\0', @@ -12521,6 +12534,7 @@ static const char kSTSHostTable[] = { /* "mdx.no", true */ 'm', 'd', 'x', '.', 'n', 'o', '\0', /* "mdxn.org", true */ 'm', 'd', 'x', 'n', '.', 'o', 'r', 'g', '\0', /* "me.net.nz", true */ 'm', 'e', '.', 'n', 'e', 't', '.', 'n', 'z', '\0', + /* "meadowfen.farm", true */ 'm', 'e', 'a', 'd', 'o', 'w', 'f', 'e', 'n', '.', 'f', 'a', 'r', 'm', '\0', /* "meadowviewfarms.org", true */ 'm', 'e', 'a', 'd', 'o', 'w', 'v', 'i', 'e', 'w', 'f', 'a', 'r', 'm', 's', '.', 'o', 'r', 'g', '\0', /* "mealgoo.com", true */ 'm', 'e', 'a', 'l', 'g', 'o', 'o', '.', 'c', 'o', 'm', '\0', /* "meanevo.com", true */ 'm', 'e', 'a', 'n', 'e', 'v', 'o', '.', 'c', 'o', 'm', '\0', @@ -12722,7 +12736,6 @@ static const char kSTSHostTable[] = { /* "mexior.nl", true */ 'm', 'e', 'x', 'i', 'o', 'r', '.', 'n', 'l', '\0', /* "meyeraviation.com", true */ 'm', 'e', 'y', 'e', 'r', 'a', 'v', 'i', 'a', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "meyercloud.de", true */ 'm', 'e', 'y', 'e', 'r', 'c', 'l', 'o', 'u', 'd', '.', 'd', 'e', '\0', - /* "mfedderke.com", true */ 'm', 'f', 'e', 'd', 'd', 'e', 'r', 'k', 'e', '.', 'c', 'o', 'm', '\0', /* "mfiles.pl", true */ 'm', 'f', 'i', 'l', 'e', 's', '.', 'p', 'l', '\0', /* "mflodin.se", true */ 'm', 'f', 'l', 'o', 'd', 'i', 'n', '.', 's', 'e', '\0', /* "mfxbe.de", true */ 'm', 'f', 'x', 'b', 'e', '.', 'd', 'e', '\0', @@ -12794,7 +12807,6 @@ static const char kSTSHostTable[] = { /* "mihnea.net", true */ 'm', 'i', 'h', 'n', 'e', 'a', '.', 'n', 'e', 't', '\0', /* "mijnetickets.nl", true */ 'm', 'i', 'j', 'n', 'e', 't', 'i', 'c', 'k', 'e', 't', 's', '.', 'n', 'l', '\0', /* "mijnkerstkaarten.be", true */ 'm', 'i', 'j', 'n', 'k', 'e', 'r', 's', 't', 'k', 'a', 'a', 'r', 't', 'e', 'n', '.', 'b', 'e', '\0', - /* "mijnkredietpaspoort.nl", true */ 'm', 'i', 'j', 'n', 'k', 'r', 'e', 'd', 'i', 'e', 't', 'p', 'a', 's', 'p', 'o', 'o', 'r', 't', '.', 'n', 'l', '\0', /* "mijnreisoverzicht.nl", true */ 'm', 'i', 'j', 'n', 'r', 'e', 'i', 's', 'o', 'v', 'e', 'r', 'z', 'i', 'c', 'h', 't', '.', 'n', 'l', '\0', /* "mijnsite.ovh", true */ 'm', 'i', 'j', 'n', 's', 'i', 't', 'e', '.', 'o', 'v', 'h', '\0', /* "mijnstembureau.nl", true */ 'm', 'i', 'j', 'n', 's', 't', 'e', 'm', 'b', 'u', 'r', 'e', 'a', 'u', '.', 'n', 'l', '\0', @@ -13185,8 +13197,6 @@ static const char kSTSHostTable[] = { /* "moriz.de", true */ 'm', 'o', 'r', 'i', 'z', '.', 'd', 'e', '\0', /* "moriz.net", true */ 'm', 'o', 'r', 'i', 'z', '.', 'n', 'e', 't', '\0', /* "morotech.com.br", true */ 'm', 'o', 'r', 'o', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '.', 'b', 'r', '\0', - /* "morpheusx.at", true */ 'm', 'o', 'r', 'p', 'h', 'e', 'u', 's', 'x', '.', 'a', 't', '\0', - /* "morpheusxaut.net", true */ 'm', 'o', 'r', 'p', 'h', 'e', 'u', 's', 'x', 'a', 'u', 't', '.', 'n', 'e', 't', '\0', /* "morteruelo.net", true */ 'm', 'o', 'r', 't', 'e', 'r', 'u', 'e', 'l', 'o', '.', 'n', 'e', 't', '\0', /* "morz.org", true */ 'm', 'o', 'r', 'z', '.', 'o', 'r', 'g', '\0', /* "moscow.dating", true */ 'm', 'o', 's', 'c', 'o', 'w', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0', @@ -13195,6 +13205,7 @@ static const char kSTSHostTable[] = { /* "moskva.guide", true */ 'm', 'o', 's', 'k', 'v', 'a', '.', 'g', 'u', 'i', 'd', 'e', '\0', /* "mosos.de", true */ 'm', 'o', 's', 'o', 's', '.', 'd', 'e', '\0', /* "mosstier.com", true */ 'm', 'o', 's', 's', 't', 'i', 'e', 'r', '.', 'c', 'o', 'm', '\0', + /* "mostlyharmless.at", true */ 'm', 'o', 's', 't', 'l', 'y', 'h', 'a', 'r', 'm', 'l', 'e', 's', 's', '.', 'a', 't', '\0', /* "motd.ch", true */ 'm', 'o', 't', 'd', '.', 'c', 'h', '\0', /* "mothereff.in", false */ 'm', 'o', 't', 'h', 'e', 'r', 'e', 'f', 'f', '.', 'i', 'n', '\0', /* "motohell.com", true */ 'm', 'o', 't', 'o', 'h', 'e', 'l', 'l', '.', 'c', 'o', 'm', '\0', @@ -13257,7 +13268,6 @@ static const char kSTSHostTable[] = { /* "mrmoregame.de", true */ 'm', 'r', 'm', 'o', 'r', 'e', 'g', 'a', 'm', 'e', '.', 'd', 'e', '\0', /* "mrsbairds.com", true */ 'm', 'r', 's', 'b', 'a', 'i', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0', /* "mrserge.lv", true */ 'm', 'r', 's', 'e', 'r', 'g', 'e', '.', 'l', 'v', '\0', - /* "mrsk.me", true */ 'm', 'r', 's', 'k', '.', 'm', 'e', '\0', /* "mrx.one", true */ 'm', 'r', 'x', '.', 'o', 'n', 'e', '\0', /* "ms-alternativ.de", true */ 'm', 's', '-', 'a', 'l', 't', 'e', 'r', 'n', 'a', 't', 'i', 'v', '.', 'd', 'e', '\0', /* "msa-aesch.ch", true */ 'm', 's', 'a', '-', 'a', 'e', 's', 'c', 'h', '.', 'c', 'h', '\0', @@ -13835,6 +13845,7 @@ static const char kSTSHostTable[] = { /* "networkingnexus.net", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'i', 'n', 'g', 'n', 'e', 'x', 'u', 's', '.', 'n', 'e', 't', '\0', /* "networkingphoenix.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'i', 'n', 'g', 'p', 'h', 'o', 'e', 'n', 'i', 'x', '.', 'c', 'o', 'm', '\0', /* "networkmarketingpro.com", true */ 'n', 'e', 't', 'w', 'o', 'r', 'k', 'm', 'a', 'r', 'k', 'e', 't', 'i', 'n', 'g', 'p', 'r', 'o', '.', 'c', 'o', 'm', '\0', + /* "networth.at", true */ 'n', 'e', 't', 'w', 'o', 'r', 't', 'h', '.', 'a', 't', '\0', /* "netzfrauen.org", true */ 'n', 'e', 't', 'z', 'f', 'r', 'a', 'u', 'e', 'n', '.', 'o', 'r', 'g', '\0', /* "netzspielplatz.de", true */ 'n', 'e', 't', 'z', 's', 'p', 'i', 'e', 'l', 'p', 'l', 'a', 't', 'z', '.', 'd', 'e', '\0', /* "netzwerkwerk.de", true */ 'n', 'e', 't', 'z', 'w', 'e', 'r', 'k', 'w', 'e', 'r', 'k', '.', 'd', 'e', '\0', @@ -13983,6 +13994,7 @@ static const char kSTSHostTable[] = { /* "nikandcara.com", true */ 'n', 'i', 'k', 'a', 'n', 'd', 'c', 'a', 'r', 'a', '.', 'c', 'o', 'm', '\0', /* "nikao-tech.com", true */ 'n', 'i', 'k', 'a', 'o', '-', 't', 'e', 'c', 'h', '.', 'c', 'o', 'm', '\0', /* "nikklassen.ca", true */ 'n', 'i', 'k', 'k', 'l', 'a', 's', 's', 'e', 'n', '.', 'c', 'a', '\0', + /* "nikksno.io", true */ 'n', 'i', 'k', 'k', 's', 'n', 'o', '.', 'i', 'o', '\0', /* "nikobradshaw.com", true */ 'n', 'i', 'k', 'o', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0', /* "nikolaichik.photo", true */ 'n', 'i', 'k', 'o', 'l', 'a', 'i', 'c', 'h', 'i', 'k', '.', 'p', 'h', 'o', 't', 'o', '\0', /* "nikolasbradshaw.com", true */ 'n', 'i', 'k', 'o', 'l', 'a', 's', 'b', 'r', 'a', 'd', 's', 'h', 'a', 'w', '.', 'c', 'o', 'm', '\0', @@ -14028,7 +14040,6 @@ static const char kSTSHostTable[] = { /* "nmd.so", true */ 'n', 'm', 'd', '.', 's', 'o', '\0', /* "nmnd.de", true */ 'n', 'm', 'n', 'd', '.', 'd', 'e', '\0', /* "nmsnj.com", true */ 'n', 'm', 's', 'n', 'j', '.', 'c', 'o', 'm', '\0', - /* "nmueller.at", true */ 'n', 'm', 'u', 'e', 'l', 'l', 'e', 'r', '.', 'a', 't', '\0', /* "nn.cz", true */ 'n', 'n', '.', 'c', 'z', '\0', /* "nnote.net", true */ 'n', 'n', 'o', 't', 'e', '.', 'n', 'e', 't', '\0', /* "nnqc.nl", true */ 'n', 'n', 'q', 'c', '.', 'n', 'l', '\0', @@ -14132,9 +14143,9 @@ static const char kSTSHostTable[] = { /* "notcompletelycorrect.com", true */ 'n', 'o', 't', 'c', 'o', 'm', 'p', 'l', 'e', 't', 'e', 'l', 'y', 'c', 'o', 'r', 'r', 'e', 'c', 't', '.', 'c', 'o', 'm', '\0', /* "note7forever.com", true */ 'n', 'o', 't', 'e', '7', 'f', 'o', 'r', 'e', 'v', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "notesforpebble.com", true */ 'n', 'o', 't', 'e', 's', 'f', 'o', 'r', 'p', 'e', 'b', 'b', 'l', 'e', '.', 'c', 'o', 'm', '\0', - /* "noticia.do", true */ 'n', 'o', 't', 'i', 'c', 'i', 'a', '.', 'd', 'o', '\0', /* "noticiasdehumor.com", true */ 'n', 'o', 't', 'i', 'c', 'i', 'a', 's', 'd', 'e', 'h', 'u', 'm', 'o', 'r', '.', 'c', 'o', 'm', '\0', /* "notificami.com", true */ 'n', 'o', 't', 'i', 'f', 'i', 'c', 'a', 'm', 'i', '.', 'c', 'o', 'm', '\0', + /* "notify.moe", true */ 'n', 'o', 't', 'i', 'f', 'y', '.', 'm', 'o', 'e', '\0', /* "notinglife.com", true */ 'n', 'o', 't', 'i', 'n', 'g', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0', /* "notjustbitchy.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'b', 'i', 't', 'c', 'h', 'y', '.', 'c', 'o', 'm', '\0', /* "notjustvacs.com", true */ 'n', 'o', 't', 'j', 'u', 's', 't', 'v', 'a', 'c', 's', '.', 'c', 'o', 'm', '\0', @@ -14360,7 +14371,6 @@ static const char kSTSHostTable[] = { /* "oglen.ca", true */ 'o', 'g', 'l', 'e', 'n', '.', 'c', 'a', '\0', /* "ogocare.com", true */ 'o', 'g', 'o', 'c', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0', /* "oguya.ch", true */ 'o', 'g', 'u', 'y', 'a', '.', 'c', 'h', '\0', - /* "oh14.de", true */ 'o', 'h', '1', '4', '.', 'd', 'e', '\0', /* "ohai.su", true */ 'o', 'h', 'a', 'i', '.', 's', 'u', '\0', /* "ohayosoro.me", true */ 'o', 'h', 'a', 'y', 'o', 's', 'o', 'r', 'o', '.', 'm', 'e', '\0', /* "oheila.com", true */ 'o', 'h', 'e', 'i', 'l', 'a', '.', 'c', 'o', 'm', '\0', @@ -14385,6 +14395,7 @@ static const char kSTSHostTable[] = { /* "okhrana.agency", true */ 'o', 'k', 'h', 'r', 'a', 'n', 'a', '.', 'a', 'g', 'e', 'n', 'c', 'y', '\0', /* "oklahomamoversassociation.org", true */ 'o', 'k', 'l', 'a', 'h', 'o', 'm', 'a', 'm', 'o', 'v', 'e', 'r', 's', 'a', 's', 's', 'o', 'c', 'i', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0', /* "oklahomatickets.com", true */ 'o', 'k', 'l', 'a', 'h', 'o', 'm', 'a', 't', 'i', 'c', 'k', 'e', 't', 's', '.', 'c', 'o', 'm', '\0', + /* "okmx.de", false */ 'o', 'k', 'm', 'x', '.', 'd', 'e', '\0', /* "okonetwork.org.uk", true */ 'o', 'k', 'o', 'n', 'e', 't', 'w', 'o', 'r', 'k', '.', 'o', 'r', 'g', '.', 'u', 'k', '\0', /* "oktime.cz", true */ 'o', 'k', 't', 'i', 'm', 'e', '.', 'c', 'z', '\0', /* "oktoberfeststore.nl", true */ 'o', 'k', 't', 'o', 'b', 'e', 'r', 'f', 'e', 's', 't', 's', 't', 'o', 'r', 'e', '.', 'n', 'l', '\0', @@ -14543,10 +14554,10 @@ static const char kSTSHostTable[] = { /* "openpictures.ch", true */ 'o', 'p', 'e', 'n', 'p', 'i', 'c', 't', 'u', 'r', 'e', 's', '.', 'c', 'h', '\0', /* "openrainbow.com", true */ 'o', 'p', 'e', 'n', 'r', 'a', 'i', 'n', 'b', 'o', 'w', '.', 'c', 'o', 'm', '\0', /* "openrainbow.net", true */ 'o', 'p', 'e', 'n', 'r', 'a', 'i', 'n', 'b', 'o', 'w', '.', 'n', 'e', 't', '\0', - /* "openrainbow.org", true */ 'o', 'p', 'e', 'n', 'r', 'a', 'i', 'n', 'b', 'o', 'w', '.', 'o', 'r', 'g', '\0', /* "openrealestate.co", true */ 'o', 'p', 'e', 'n', 'r', 'e', 'a', 'l', 'e', 's', 't', 'a', 't', 'e', '.', 'c', 'o', '\0', /* "openrtv.com", true */ 'o', 'p', 'e', 'n', 'r', 't', 'v', '.', 'c', 'o', 'm', '\0', /* "opensource-cms.nl", true */ 'o', 'p', 'e', 'n', 's', 'o', 'u', 'r', 'c', 'e', '-', 'c', 'm', 's', '.', 'n', 'l', '\0', + /* "openspace.xxx", true */ 'o', 'p', 'e', 'n', 's', 'p', 'a', 'c', 'e', '.', 'x', 'x', 'x', '\0', /* "openssf.org", true */ 'o', 'p', 'e', 'n', 's', 's', 'f', '.', 'o', 'r', 'g', '\0', /* "openssl.org", true */ 'o', 'p', 'e', 'n', 's', 's', 'l', '.', 'o', 'r', 'g', '\0', /* "openstreetmap.is", true */ 'o', 'p', 'e', 'n', 's', 't', 'r', 'e', 'e', 't', 'm', 'a', 'p', '.', 'i', 's', '\0', @@ -14690,7 +14701,6 @@ static const char kSTSHostTable[] = { /* "ourcodinglives.com", true */ 'o', 'u', 'r', 'c', 'o', 'd', 'i', 'n', 'g', 'l', 'i', 'v', 'e', 's', '.', 'c', 'o', 'm', '\0', /* "ourwedding.xyz", true */ 'o', 'u', 'r', 'w', 'e', 'd', 'd', 'i', 'n', 'g', '.', 'x', 'y', 'z', '\0', /* "outdoorfurniture.ie", true */ 'o', 'u', 't', 'd', 'o', 'o', 'r', 'f', 'u', 'r', 'n', 'i', 't', 'u', 'r', 'e', '.', 'i', 'e', '\0', - /* "outerlimitsdigital.com", true */ 'o', 'u', 't', 'e', 'r', 'l', 'i', 'm', 'i', 't', 's', 'd', 'i', 'g', 'i', 't', 'a', 'l', '.', 'c', 'o', 'm', '\0', /* "outgress.com", true */ 'o', 'u', 't', 'g', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0', /* "outka.xyz", true */ 'o', 'u', 't', 'k', 'a', '.', 'x', 'y', 'z', '\0', /* "outline.ski", true */ 'o', 'u', 't', 'l', 'i', 'n', 'e', '.', 's', 'k', 'i', '\0', @@ -14854,7 +14864,6 @@ static const char kSTSHostTable[] = { /* "partnersfcu.org", true */ 'p', 'a', 'r', 't', 'n', 'e', 'r', 's', 'f', 'c', 'u', '.', 'o', 'r', 'g', '\0', /* "partridge.tech", true */ 'p', 'a', 'r', 't', 'r', 'i', 'd', 'g', 'e', '.', 't', 'e', 'c', 'h', '\0', /* "partsestore.com", true */ 'p', 'a', 'r', 't', 's', 'e', 's', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0', - /* "partyvan.eu", true */ 'p', 'a', 'r', 't', 'y', 'v', 'a', 'n', '.', 'e', 'u', '\0', /* "partyvan.io", true */ 'p', 'a', 'r', 't', 'y', 'v', 'a', 'n', '.', 'i', 'o', '\0', /* "parvaneh.fr", true */ 'p', 'a', 'r', 'v', 'a', 'n', 'e', 'h', '.', 'f', 'r', '\0', /* "pasadenapooch.org", true */ 'p', 'a', 's', 'a', 'd', 'e', 'n', 'a', 'p', 'o', 'o', 'c', 'h', '.', 'o', 'r', 'g', '\0', @@ -15035,7 +15044,6 @@ static const char kSTSHostTable[] = { /* "peirong.me", true */ 'p', 'e', 'i', 'r', 'o', 'n', 'g', '.', 'm', 'e', '\0', /* "pekoe.se", true */ 'p', 'e', 'k', 'o', 'e', '.', 's', 'e', '\0', /* "pelanucto.cz", true */ 'p', 'e', 'l', 'a', 'n', 'u', 'c', 't', 'o', '.', 'c', 'z', '\0', - /* "peliculasaudiolatinoonline.com", true */ 'p', 'e', 'l', 'i', 'c', 'u', 'l', 'a', 's', 'a', 'u', 'd', 'i', 'o', 'l', 'a', 't', 'i', 'n', 'o', 'o', 'n', 'l', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0', /* "peliseries24.com", true */ 'p', 'e', 'l', 'i', 's', 'e', 'r', 'i', 'e', 's', '2', '4', '.', 'c', 'o', 'm', '\0', /* "pelopogrund.com", true */ 'p', 'e', 'l', 'o', 'p', 'o', 'g', 'r', 'u', 'n', 'd', '.', 'c', 'o', 'm', '\0', /* "pelopoplot.com", true */ 'p', 'e', 'l', 'o', 'p', 'o', 'p', 'l', 'o', 't', '.', 'c', 'o', 'm', '\0', @@ -15178,7 +15186,6 @@ static const char kSTSHostTable[] = { /* "philipperoose.be", true */ 'p', 'h', 'i', 'l', 'i', 'p', 'p', 'e', 'r', 'o', 'o', 's', 'e', '.', 'b', 'e', '\0', /* "philippheenen.de", true */ 'p', 'h', 'i', 'l', 'i', 'p', 'p', 'h', 'e', 'e', 'n', 'e', 'n', '.', 'd', 'e', '\0', /* "philippkeschl.at", true */ 'p', 'h', 'i', 'l', 'i', 'p', 'p', 'k', 'e', 's', 'c', 'h', 'l', '.', 'a', 't', '\0', - /* "phillipgoldfarb.com", true */ 'p', 'h', 'i', 'l', 'l', 'i', 'p', 'g', 'o', 'l', 'd', 'f', 'a', 'r', 'b', '.', 'c', 'o', 'm', '\0', /* "phillippi.me", true */ 'p', 'h', 'i', 'l', 'l', 'i', 'p', 'p', 'i', '.', 'm', 'e', '\0', /* "phillmoore.com", true */ 'p', 'h', 'i', 'l', 'l', 'm', 'o', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0', /* "philonas.net", true */ 'p', 'h', 'i', 'l', 'o', 'n', 'a', 's', '.', 'n', 'e', 't', '\0', @@ -15463,6 +15470,8 @@ static const char kSTSHostTable[] = { /* "podshrink.de", true */ 'p', 'o', 'd', 's', 'h', 'r', 'i', 'n', 'k', '.', 'd', 'e', '\0', /* "poe.digital", true */ 'p', 'o', 'e', '.', 'd', 'i', 'g', 'i', 't', 'a', 'l', '\0', /* "poed.com.au", true */ 'p', 'o', 'e', 'd', '.', 'c', 'o', 'm', '.', 'a', 'u', '\0', + /* "poed.net.au", true */ 'p', 'o', 'e', 'd', '.', 'n', 'e', 't', '.', 'a', 'u', '\0', + /* "poedgirl.com", true */ 'p', 'o', 'e', 'd', 'g', 'i', 'r', 'l', '.', 'c', 'o', 'm', '\0', /* "poinsot.beer", true */ 'p', 'o', 'i', 'n', 's', 'o', 't', '.', 'b', 'e', 'e', 'r', '\0', /* "poinsot.info", false */ 'p', 'o', 'i', 'n', 's', 'o', 't', '.', 'i', 'n', 'f', 'o', '\0', /* "pointaction.com", true */ 'p', 'o', 'i', 'n', 't', 'a', 'c', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', @@ -15572,6 +15581,7 @@ static const char kSTSHostTable[] = { /* "postdarwinian.com", true */ 'p', 'o', 's', 't', 'd', 'a', 'r', 'w', 'i', 'n', 'i', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "postdarwinism.com", true */ 'p', 'o', 's', 't', 'd', 'a', 'r', 'w', 'i', 'n', 'i', 's', 'm', '.', 'c', 'o', 'm', '\0', /* "posteo.de", false */ 'p', 'o', 's', 't', 'e', 'o', '.', 'd', 'e', '\0', + /* "posterspy.com", true */ 'p', 'o', 's', 't', 'e', 'r', 's', 'p', 'y', '.', 'c', 'o', 'm', '\0', /* "postfinance.ch", true */ 'p', 'o', 's', 't', 'f', 'i', 'n', 'a', 'n', 'c', 'e', '.', 'c', 'h', '\0', /* "postmatescode.com", true */ 'p', 'o', 's', 't', 'm', 'a', 't', 'e', 's', 'c', 'o', 'd', 'e', '.', 'c', 'o', 'm', '\0', /* "postn.eu", true */ 'p', 'o', 's', 't', 'n', '.', 'e', 'u', '\0', @@ -15634,7 +15644,6 @@ static const char kSTSHostTable[] = { /* "predoiu.ro", true */ 'p', 'r', 'e', 'd', 'o', 'i', 'u', '.', 'r', 'o', '\0', /* "preexport.com", true */ 'p', 'r', 'e', 'e', 'x', 'p', 'o', 'r', 't', '.', 'c', 'o', 'm', '\0', /* "preferredathlete.com", true */ 'p', 'r', 'e', 'f', 'e', 'r', 'r', 'e', 'd', 'a', 't', 'h', 'l', 'e', 't', 'e', '.', 'c', 'o', 'm', '\0', - /* "prefis.com", true */ 'p', 'r', 'e', 'f', 'i', 's', '.', 'c', 'o', 'm', '\0', /* "prefix.eu", true */ 'p', 'r', 'e', 'f', 'i', 'x', '.', 'e', 'u', '\0', /* "pregunteleakaren.gov", true */ 'p', 'r', 'e', 'g', 'u', 'n', 't', 'e', 'l', 'e', 'a', 'k', 'a', 'r', 'e', 'n', '.', 'g', 'o', 'v', '\0', /* "preisser-it.de", true */ 'p', 'r', 'e', 'i', 's', 's', 'e', 'r', '-', 'i', 't', '.', 'd', 'e', '\0', @@ -15753,7 +15762,6 @@ static const char kSTSHostTable[] = { /* "proj.org.cn", true */ 'p', 'r', 'o', 'j', '.', 'o', 'r', 'g', '.', 'c', 'n', '\0', /* "project-rune.tech", true */ 'p', 'r', 'o', 'j', 'e', 'c', 't', '-', 'r', 'u', 'n', 'e', '.', 't', 'e', 'c', 'h', '\0', /* "projectarmy.net", true */ 'p', 'r', 'o', 'j', 'e', 'c', 't', 'a', 'r', 'm', 'y', '.', 'n', 'e', 't', '\0', - /* "projectascension.io", true */ 'p', 'r', 'o', 'j', 'e', 'c', 't', 'a', 's', 'c', 'e', 'n', 's', 'i', 'o', 'n', '.', 'i', 'o', '\0', /* "projectbenson.com", false */ 'p', 'r', 'o', 'j', 'e', 'c', 't', 'b', 'e', 'n', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "projectblackbook.us", true */ 'p', 'r', 'o', 'j', 'e', 'c', 't', 'b', 'l', 'a', 'c', 'k', 'b', 'o', 'o', 'k', '.', 'u', 's', '\0', /* "projectdp.net", true */ 'p', 'r', 'o', 'j', 'e', 'c', 't', 'd', 'p', '.', 'n', 'e', 't', '\0', @@ -15764,7 +15772,6 @@ static const char kSTSHostTable[] = { /* "projekt-umbriel.de", true */ 'p', 'r', 'o', 'j', 'e', 'k', 't', '-', 'u', 'm', 'b', 'r', 'i', 'e', 'l', '.', 'd', 'e', '\0', /* "projektik.cz", true */ 'p', 'r', 'o', 'j', 'e', 'k', 't', 'i', 'k', '.', 'c', 'z', '\0', /* "projektzentrisch.de", true */ 'p', 'r', 'o', 'j', 'e', 'k', 't', 'z', 'e', 'n', 't', 'r', 'i', 's', 'c', 'h', '.', 'd', 'e', '\0', - /* "prok.pw", true */ 'p', 'r', 'o', 'k', '.', 'p', 'w', '\0', /* "prokop.ovh", true */ 'p', 'r', 'o', 'k', 'o', 'p', '.', 'o', 'v', 'h', '\0', /* "prolan.pw", true */ 'p', 'r', 'o', 'l', 'a', 'n', '.', 'p', 'w', '\0', /* "promedicalapplications.com", true */ 'p', 'r', 'o', 'm', 'e', 'd', 'i', 'c', 'a', 'l', 'a', 'p', 'p', 'l', 'i', 'c', 'a', 't', 'i', 'o', 'n', 's', '.', 'c', 'o', 'm', '\0', @@ -15897,7 +15904,7 @@ static const char kSTSHostTable[] = { /* "pulledporkheaven.com", true */ 'p', 'u', 'l', 'l', 'e', 'd', 'p', 'o', 'r', 'k', 'h', 'e', 'a', 'v', 'e', 'n', '.', 'c', 'o', 'm', '\0', /* "pulsar.guru", false */ 'p', 'u', 'l', 's', 'a', 'r', '.', 'g', 'u', 'r', 'u', '\0', /* "pult.co", false */ 'p', 'u', 'l', 't', '.', 'c', 'o', '\0', - /* "punchkickinteractive.com", false */ 'p', 'u', 'n', 'c', 'h', 'k', 'i', 'c', 'k', 'i', 'n', 't', 'e', 'r', 'a', 'c', 't', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0', + /* "punchkickinteractive.com", true */ 'p', 'u', 'n', 'c', 'h', 'k', 'i', 'c', 'k', 'i', 'n', 't', 'e', 'r', 'a', 'c', 't', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0', /* "puneflowermall.com", true */ 'p', 'u', 'n', 'e', 'f', 'l', 'o', 'w', 'e', 'r', 'm', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0', /* "punikonta.de", true */ 'p', 'u', 'n', 'i', 'k', 'o', 'n', 't', 'a', '.', 'd', 'e', '\0', /* "punitsheth.com", true */ 'p', 'u', 'n', 'i', 't', 's', 'h', 'e', 't', 'h', '.', 'c', 'o', 'm', '\0', @@ -16099,7 +16106,6 @@ static const char kSTSHostTable[] = { /* "radiomontebianco.it", true */ 'r', 'a', 'd', 'i', 'o', 'm', 'o', 'n', 't', 'e', 'b', 'i', 'a', 'n', 'c', 'o', '.', 'i', 't', '\0', /* "radionicabg.com", true */ 'r', 'a', 'd', 'i', 'o', 'n', 'i', 'c', 'a', 'b', 'g', '.', 'c', 'o', 'm', '\0', /* "radiopolarniki.spb.ru", true */ 'r', 'a', 'd', 'i', 'o', 'p', 'o', 'l', 'a', 'r', 'n', 'i', 'k', 'i', '.', 's', 'p', 'b', '.', 'r', 'u', '\0', - /* "radiormi.com", true */ 'r', 'a', 'd', 'i', 'o', 'r', 'm', 'i', '.', 'c', 'o', 'm', '\0', /* "radis-adopt.com", true */ 'r', 'a', 'd', 'i', 's', '-', 'a', 'd', 'o', 'p', 't', '.', 'c', 'o', 'm', '\0', /* "radreisetraumtreibstoff.de", true */ 'r', 'a', 'd', 'r', 'e', 'i', 's', 'e', 't', 'r', 'a', 'u', 'm', 't', 'r', 'e', 'i', 'b', 's', 't', 'o', 'f', 'f', '.', 'd', 'e', '\0', /* "radyn.com", true */ 'r', 'a', 'd', 'y', 'n', '.', 'c', 'o', 'm', '\0', @@ -16154,6 +16160,7 @@ static const char kSTSHostTable[] = { /* "ranos.org", true */ 'r', 'a', 'n', 'o', 's', '.', 'o', 'r', 'g', '\0', /* "rantanda.com", true */ 'r', 'a', 'n', 't', 'a', 'n', 'd', 'a', '.', 'c', 'o', 'm', '\0', /* "ranzbak.nl", true */ 'r', 'a', 'n', 'z', 'b', 'a', 'k', '.', 'n', 'l', '\0', + /* "rapdogg.com", true */ 'r', 'a', 'p', 'd', 'o', 'g', 'g', '.', 'c', 'o', 'm', '\0', /* "rapenroer.com", true */ 'r', 'a', 'p', 'e', 'n', 'r', 'o', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "raphael.li", true */ 'r', 'a', 'p', 'h', 'a', 'e', 'l', '.', 'l', 'i', '\0', /* "raphaelcasazza.ch", true */ 'r', 'a', 'p', 'h', 'a', 'e', 'l', 'c', 'a', 's', 'a', 'z', 'z', 'a', '.', 'c', 'h', '\0', @@ -16403,6 +16410,7 @@ static const char kSTSHostTable[] = { /* "reox.at", false */ 'r', 'e', 'o', 'x', '.', 'a', 't', '\0', /* "repair.by", true */ 'r', 'e', 'p', 'a', 'i', 'r', '.', 'b', 'y', '\0', /* "repaper.org", true */ 'r', 'e', 'p', 'a', 'p', 'e', 'r', '.', 'o', 'r', 'g', '\0', + /* "repaxan.com", true */ 'r', 'e', 'p', 'a', 'x', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "replicagunsswords.com", false */ 'r', 'e', 'p', 'l', 'i', 'c', 'a', 'g', 'u', 'n', 's', 's', 'w', 'o', 'r', 'd', 's', '.', 'c', 'o', 'm', '\0', /* "report-to.com", true */ 'r', 'e', 'p', 'o', 'r', 't', '-', 't', 'o', '.', 'c', 'o', 'm', '\0', /* "report-to.io", true */ 'r', 'e', 'p', 'o', 'r', 't', '-', 't', 'o', '.', 'i', 'o', '\0', @@ -16482,7 +16490,6 @@ static const char kSTSHostTable[] = { /* "rewardingexcellence.com", true */ 'r', 'e', 'w', 'a', 'r', 'd', 'i', 'n', 'g', 'e', 'x', 'c', 'e', 'l', 'l', 'e', 'n', 'c', 'e', '.', 'c', 'o', 'm', '\0', /* "rewopit.net", true */ 'r', 'e', 'w', 'o', 'p', 'i', 't', '.', 'n', 'e', 't', '\0', /* "rewrite3.com", true */ 'r', 'e', 'w', 'r', 'i', 't', 'e', '3', '.', 'c', 'o', 'm', '\0', - /* "rex.tc", true */ 'r', 'e', 'x', '.', 't', 'c', '\0', /* "reykjavik.guide", true */ 'r', 'e', 'y', 'k', 'j', 'a', 'v', 'i', 'k', '.', 'g', 'u', 'i', 'd', 'e', '\0', /* "rezept-planer.de", true */ 'r', 'e', 'z', 'e', 'p', 't', '-', 'p', 'l', 'a', 'n', 'e', 'r', '.', 'd', 'e', '\0', /* "rezexpert.com", true */ 'r', 'e', 'z', 'e', 'x', 'p', 'e', 'r', 't', '.', 'c', 'o', 'm', '\0', @@ -16670,7 +16677,6 @@ static const char kSTSHostTable[] = { /* "rogersvilleumc.org", true */ 'r', 'o', 'g', 'e', 'r', 's', 'v', 'i', 'l', 'l', 'e', 'u', 'm', 'c', '.', 'o', 'r', 'g', '\0', /* "rogue-e.xyz", true */ 'r', 'o', 'g', 'u', 'e', '-', 'e', '.', 'x', 'y', 'z', '\0', /* "roguefinancial.com", true */ 'r', 'o', 'g', 'u', 'e', 'f', 'i', 'n', 'a', 'n', 'c', 'i', 'a', 'l', '.', 'c', 'o', 'm', '\0', - /* "roguesignal.net", true */ 'r', 'o', 'g', 'u', 'e', 's', 'i', 'g', 'n', 'a', 'l', '.', 'n', 'e', 't', '\0', /* "roguetechhub.org", true */ 'r', 'o', 'g', 'u', 'e', 't', 'e', 'c', 'h', 'h', 'u', 'b', '.', 'o', 'r', 'g', '\0', /* "rohedaten.de", true */ 'r', 'o', 'h', 'e', 'd', 'a', 't', 'e', 'n', '.', 'd', 'e', '\0', /* "rohitagr.com", true */ 'r', 'o', 'h', 'i', 't', 'a', 'g', 'r', '.', 'c', 'o', 'm', '\0', @@ -16807,7 +16813,6 @@ static const char kSTSHostTable[] = { /* "rubbermaidoutlet.com", true */ 'r', 'u', 'b', 'b', 'e', 'r', 'm', 'a', 'i', 'd', 'o', 'u', 't', 'l', 'e', 't', '.', 'c', 'o', 'm', '\0', /* "ruben.am", true */ 'r', 'u', 'b', 'e', 'n', '.', 'a', 'm', '\0', /* "rubendv.be", true */ 'r', 'u', 'b', 'e', 'n', 'd', 'v', '.', 'b', 'e', '\0', - /* "rubi-ka.net", false */ 'r', 'u', 'b', 'i', '-', 'k', 'a', '.', 'n', 'e', 't', '\0', /* "rublacklist.net", true */ 'r', 'u', 'b', 'l', 'a', 'c', 'k', 'l', 'i', 's', 't', '.', 'n', 'e', 't', '\0', /* "rubyist.today", true */ 'r', 'u', 'b', 'y', 'i', 's', 't', '.', 't', 'o', 'd', 'a', 'y', '\0', /* "rubyquincunx.com", true */ 'r', 'u', 'b', 'y', 'q', 'u', 'i', 'n', 'c', 'u', 'n', 'x', '.', 'c', 'o', 'm', '\0', @@ -16995,7 +17000,6 @@ static const char kSTSHostTable[] = { /* "samfunnet.no", false */ 's', 'a', 'm', 'f', 'u', 'n', 'n', 'e', 't', '.', 'n', 'o', '\0', /* "samgrayson.me", true */ 's', 'a', 'm', 'g', 'r', 'a', 'y', 's', 'o', 'n', '.', 'm', 'e', '\0', /* "samifar.in", true */ 's', 'a', 'm', 'i', 'f', 'a', 'r', '.', 'i', 'n', '\0', - /* "samirnassar.com", true */ 's', 'a', 'm', 'i', 'r', 'n', 'a', 's', 's', 'a', 'r', '.', 'c', 'o', 'm', '\0', /* "samizdat.cz", true */ 's', 'a', 'm', 'i', 'z', 'd', 'a', 't', '.', 'c', 'z', '\0', /* "samkelleher.com", true */ 's', 'a', 'm', 'k', 'e', 'l', 'l', 'e', 'h', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "saml-gateway.org", true */ 's', 'a', 'm', 'l', '-', 'g', 'a', 't', 'e', 'w', 'a', 'y', '.', 'o', 'r', 'g', '\0', @@ -17083,7 +17087,6 @@ static const char kSTSHostTable[] = { /* "sat4all.com", true */ 's', 'a', 't', '4', 'a', 'l', 'l', '.', 'c', 'o', 'm', '\0', /* "satai.dk", true */ 's', 'a', 't', 'a', 'i', '.', 'd', 'k', '\0', /* "satal.in", true */ 's', 'a', 't', 'a', 'l', '.', 'i', 'n', '\0', - /* "satanichia.moe", true */ 's', 'a', 't', 'a', 'n', 'i', 'c', 'h', 'i', 'a', '.', 'm', 'o', 'e', '\0', /* "satmd.de", false */ 's', 'a', 't', 'm', 'd', '.', 'd', 'e', '\0', /* "satrent.com", true */ 's', 'a', 't', 'r', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0', /* "satrent.se", true */ 's', 'a', 't', 'r', 'e', 'n', 't', '.', 's', 'e', '\0', @@ -17255,7 +17258,6 @@ static const char kSTSHostTable[] = { /* "scotthel.me", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', '.', 'm', 'e', '\0', /* "scotthelme.co.uk", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', 'm', 'e', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "scotthelme.com", true */ 's', 'c', 'o', 't', 't', 'h', 'e', 'l', 'm', 'e', '.', 'c', 'o', 'm', '\0', - /* "scottnicol.co.uk", true */ 's', 'c', 'o', 't', 't', 'n', 'i', 'c', 'o', 'l', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "scottstorey.co.uk", true */ 's', 'c', 'o', 't', 't', 's', 't', 'o', 'r', 'e', 'y', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "scoutdb.ch", true */ 's', 'c', 'o', 'u', 't', 'd', 'b', '.', 'c', 'h', '\0', /* "scoutnet.de", true */ 's', 'c', 'o', 'u', 't', 'n', 'e', 't', '.', 'd', 'e', '\0', @@ -17290,12 +17292,12 @@ static const char kSTSHostTable[] = { /* "se.search.yahoo.com", false */ 's', 'e', '.', 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0', /* "sea-godzilla.com", true */ 's', 'e', 'a', '-', 'g', 'o', 'd', 'z', 'i', 'l', 'l', 'a', '.', 'c', 'o', 'm', '\0', /* "seaholmwines.com", true */ 's', 'e', 'a', 'h', 'o', 'l', 'm', 'w', 'i', 'n', 'e', 's', '.', 'c', 'o', 'm', '\0', + /* "sealbaker.com", true */ 's', 'e', 'a', 'l', 'b', 'a', 'k', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "sealtitebasement.com", true */ 's', 'e', 'a', 'l', 't', 'i', 't', 'e', 'b', 'a', 's', 'e', 'm', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0', /* "seamless.no", true */ 's', 'e', 'a', 'm', 'l', 'e', 's', 's', '.', 'n', 'o', '\0', /* "seanholcroft.co.uk", true */ 's', 'e', 'a', 'n', 'h', 'o', 'l', 'c', 'r', 'o', 'f', 't', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "seans.cc", true */ 's', 'e', 'a', 'n', 's', '.', 'c', 'c', '\0', /* "search.yahoo.com", false */ 's', 'e', 'a', 'r', 'c', 'h', '.', 'y', 'a', 'h', 'o', 'o', '.', 'c', 'o', 'm', '\0', - /* "searchbrothers.com", true */ 's', 'e', 'a', 'r', 'c', 'h', 'b', 'r', 'o', 't', 'h', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0', /* "seasons.nu", true */ 's', 'e', 'a', 's', 'o', 'n', 's', '.', 'n', 'u', '\0', /* "seatbeltpledge.com", true */ 's', 'e', 'a', 't', 'b', 'e', 'l', 't', 'p', 'l', 'e', 'd', 'g', 'e', '.', 'c', 'o', 'm', '\0', /* "seattle-life.net", true */ 's', 'e', 'a', 't', 't', 'l', 'e', '-', 'l', 'i', 'f', 'e', '.', 'n', 'e', 't', '\0', @@ -17486,7 +17488,6 @@ static const char kSTSHostTable[] = { /* "seosof.com", true */ 's', 'e', 'o', 's', 'o', 'f', '.', 'c', 'o', 'm', '\0', /* "seoul.dating", true */ 's', 'e', 'o', 'u', 'l', '.', 'd', 'a', 't', 'i', 'n', 'g', '\0', /* "seouniversity.org", true */ 's', 'e', 'o', 'u', 'n', 'i', 'v', 'e', 'r', 's', 'i', 't', 'y', '.', 'o', 'r', 'g', '\0', - /* "sepalandseed.com", true */ 's', 'e', 'p', 'a', 'l', 'a', 'n', 'd', 's', 'e', 'e', 'd', '.', 'c', 'o', 'm', '\0', /* "sephr.com", true */ 's', 'e', 'p', 'h', 'r', '.', 'c', 'o', 'm', '\0', /* "seppelec.com", true */ 's', 'e', 'p', 'p', 'e', 'l', 'e', 'c', '.', 'c', 'o', 'm', '\0', /* "septakkordeon.de", true */ 's', 'e', 'p', 't', 'a', 'k', 'k', 'o', 'r', 'd', 'e', 'o', 'n', '.', 'd', 'e', '\0', @@ -17730,6 +17731,7 @@ static const char kSTSHostTable[] = { /* "shrub.ca", true */ 's', 'h', 'r', 'u', 'b', '.', 'c', 'a', '\0', /* "shtorku.com", true */ 's', 'h', 't', 'o', 'r', 'k', 'u', '.', 'c', 'o', 'm', '\0', /* "shu-fu.net", true */ 's', 'h', 'u', '-', 'f', 'u', '.', 'n', 'e', 't', '\0', + /* "shu-kin.net", true */ 's', 'h', 'u', '-', 'k', 'i', 'n', '.', 'n', 'e', 't', '\0', /* "shulan.moe", true */ 's', 'h', 'u', 'l', 'a', 'n', '.', 'm', 'o', 'e', '\0', /* "shurita.org", true */ 's', 'h', 'u', 'r', 'i', 't', 'a', '.', 'o', 'r', 'g', '\0', /* "shuro.de", true */ 's', 'h', 'u', 'r', 'o', '.', 'd', 'e', '\0', @@ -17776,7 +17778,6 @@ static const char kSTSHostTable[] = { /* "siirtutkusu.com", true */ 's', 'i', 'i', 'r', 't', 'u', 't', 'k', 'u', 's', 'u', '.', 'c', 'o', 'm', '\0', /* "sijmenschoon.nl", true */ 's', 'i', 'j', 'm', 'e', 'n', 's', 'c', 'h', 'o', 'o', 'n', '.', 'n', 'l', '\0', /* "sikatehtaat.fi", true */ 's', 'i', 'k', 'a', 't', 'e', 'h', 't', 'a', 'a', 't', '.', 'f', 'i', '\0', - /* "sikayetvar.com", true */ 's', 'i', 'k', 'a', 'y', 'e', 't', 'v', 'a', 'r', '.', 'c', 'o', 'm', '\0', /* "sikevux.se", true */ 's', 'i', 'k', 'e', 'v', 'u', 'x', '.', 's', 'e', '\0', /* "siku-shop.ch", true */ 's', 'i', 'k', 'u', '-', 's', 'h', 'o', 'p', '.', 'c', 'h', '\0', /* "silashes.com", true */ 's', 'i', 'l', 'a', 's', 'h', 'e', 's', '.', 'c', 'o', 'm', '\0', @@ -18260,6 +18261,7 @@ static const char kSTSHostTable[] = { /* "sondergaard.de", true */ 's', 'o', 'n', 'd', 'e', 'r', 'g', 'a', 'a', 'r', 'd', '.', 'd', 'e', '\0', /* "sonerezh.bzh", true */ 's', 'o', 'n', 'e', 'r', 'e', 'z', 'h', '.', 'b', 'z', 'h', '\0', /* "songsthatsavedyourlife.com", true */ 's', 'o', 'n', 'g', 's', 't', 'h', 'a', 't', 's', 'a', 'v', 'e', 'd', 'y', 'o', 'u', 'r', 'l', 'i', 'f', 'e', '.', 'c', 'o', 'm', '\0', + /* "songzhuolun.com", true */ 's', 'o', 'n', 'g', 'z', 'h', 'u', 'o', 'l', 'u', 'n', '.', 'c', 'o', 'm', '\0', /* "sonic.sk", false */ 's', 'o', 'n', 'i', 'c', '.', 's', 'k', '\0', /* "sonja-daniels.com", true */ 's', 'o', 'n', 'j', 'a', '-', 'd', 'a', 'n', 'i', 'e', 'l', 's', '.', 'c', 'o', 'm', '\0', /* "sonja-kowa.de", true */ 's', 'o', 'n', 'j', 'a', '-', 'k', 'o', 'w', 'a', '.', 'd', 'e', '\0', @@ -18369,7 +18371,6 @@ static const char kSTSHostTable[] = { /* "speechndraw.com", true */ 's', 'p', 'e', 'e', 'c', 'h', 'n', 'd', 'r', 'a', 'w', '.', 'c', 'o', 'm', '\0', /* "speeddate.it", false */ 's', 'p', 'e', 'e', 'd', 'd', 'a', 't', 'e', '.', 'i', 't', '\0', /* "speedmann.de", false */ 's', 'p', 'e', 'e', 'd', 'm', 'a', 'n', 'n', '.', 'd', 'e', '\0', - /* "speeds.vip", true */ 's', 'p', 'e', 'e', 'd', 's', '.', 'v', 'i', 'p', '\0', /* "speedtest-russia.com", true */ 's', 'p', 'e', 'e', 'd', 't', 'e', 's', 't', '-', 'r', 'u', 's', 's', 'i', 'a', '.', 'c', 'o', 'm', '\0', /* "speich.net", true */ 's', 'p', 'e', 'i', 'c', 'h', '.', 'n', 'e', 't', '\0', /* "spellcheck24.net", true */ 's', 'p', 'e', 'l', 'l', 'c', 'h', 'e', 'c', 'k', '2', '4', '.', 'n', 'e', 't', '\0', @@ -18429,7 +18430,6 @@ static const char kSTSHostTable[] = { /* "sportsmanadvisor.com", true */ 's', 'p', 'o', 'r', 't', 's', 'm', 'a', 'n', 'a', 'd', 'v', 'i', 's', 'o', 'r', '.', 'c', 'o', 'm', '\0', /* "sportsmansblog.com", true */ 's', 'p', 'o', 'r', 't', 's', 'm', 'a', 'n', 's', 'b', 'l', 'o', 'g', '.', 'c', 'o', 'm', '\0', /* "sportstraineradvisor.com", true */ 's', 'p', 'o', 'r', 't', 's', 't', 'r', 'a', 'i', 'n', 'e', 'r', 'a', 'd', 'v', 'i', 's', 'o', 'r', '.', 'c', 'o', 'm', '\0', - /* "sporttrampen.de", false */ 's', 'p', 'o', 'r', 't', 't', 'r', 'a', 'm', 'p', 'e', 'n', '.', 'd', 'e', '\0', /* "sportxt.ru", true */ 's', 'p', 'o', 'r', 't', 'x', 't', '.', 'r', 'u', '\0', /* "spotlightsrule.com", true */ 's', 'p', 'o', 't', 'l', 'i', 'g', 'h', 't', 's', 'r', 'u', 'l', 'e', '.', 'c', 'o', 'm', '\0', /* "spotupload.com", true */ 's', 'p', 'o', 't', 'u', 'p', 'l', 'o', 'a', 'd', '.', 'c', 'o', 'm', '\0', @@ -18551,7 +18551,6 @@ static const char kSTSHostTable[] = { /* "stamboomvanderwal.nl", true */ 's', 't', 'a', 'm', 'b', 'o', 'o', 'm', 'v', 'a', 'n', 'd', 'e', 'r', 'w', 'a', 'l', '.', 'n', 'l', '\0', /* "stamkassa.nl", true */ 's', 't', 'a', 'm', 'k', 'a', 's', 's', 'a', '.', 'n', 'l', '\0', /* "stammtisch.domains", true */ 's', 't', 'a', 'm', 'm', 't', 'i', 's', 'c', 'h', '.', 'd', 'o', 'm', 'a', 'i', 'n', 's', '\0', - /* "stamonicatourandtravel.com", true */ 's', 't', 'a', 'm', 'o', 'n', 'i', 'c', 'a', 't', 'o', 'u', 'r', 'a', 'n', 'd', 't', 'r', 'a', 'v', 'e', 'l', '.', 'c', 'o', 'm', '\0', /* "stamparmakarije.me", true */ 's', 't', 'a', 'm', 'p', 'a', 'r', 'm', 'a', 'k', 'a', 'r', 'i', 'j', 'e', '.', 'm', 'e', '\0', /* "stampederadon.com", true */ 's', 't', 'a', 'm', 'p', 'e', 'd', 'e', 'r', 'a', 'd', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "stanandjerre.org", true */ 's', 't', 'a', 'n', 'a', 'n', 'd', 'j', 'e', 'r', 'r', 'e', '.', 'o', 'r', 'g', '\0', @@ -18575,7 +18574,6 @@ static const char kSTSHostTable[] = { /* "starpeak.org", true */ 's', 't', 'a', 'r', 'p', 'e', 'a', 'k', '.', 'o', 'r', 'g', '\0', /* "starplatinum.jp", true */ 's', 't', 'a', 'r', 'p', 'l', 'a', 't', 'i', 'n', 'u', 'm', '.', 'j', 'p', '\0', /* "starquake.nl", true */ 's', 't', 'a', 'r', 'q', 'u', 'a', 'k', 'e', '.', 'n', 'l', '\0', - /* "starsam80.net", true */ 's', 't', 'a', 'r', 's', 'a', 'm', '8', '0', '.', 'n', 'e', 't', '\0', /* "starstreak.net", true */ 's', 't', 'a', 'r', 's', 't', 'r', 'e', 'a', 'k', '.', 'n', 'e', 't', '\0', /* "startlab.sk", true */ 's', 't', 'a', 'r', 't', 'l', 'a', 'b', '.', 's', 'k', '\0', /* "startpage.com", true */ 's', 't', 'a', 'r', 't', 'p', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0', @@ -18738,7 +18736,6 @@ static const char kSTSHostTable[] = { /* "straubis.org", true */ 's', 't', 'r', 'a', 'u', 'b', 'i', 's', '.', 'o', 'r', 'g', '\0', /* "strauser.com", true */ 's', 't', 'r', 'a', 'u', 's', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "stravers.shoes", true */ 's', 't', 'r', 'a', 'v', 'e', 'r', 's', '.', 's', 'h', 'o', 'e', 's', '\0', - /* "stream.pub", true */ 's', 't', 'r', 'e', 'a', 'm', '.', 'p', 'u', 'b', '\0', /* "streamchan.org", true */ 's', 't', 'r', 'e', 'a', 'm', 'c', 'h', 'a', 'n', '.', 'o', 'r', 'g', '\0', /* "streamdesk.ca", true */ 's', 't', 'r', 'e', 'a', 'm', 'd', 'e', 's', 'k', '.', 'c', 'a', '\0', /* "streamlineautogroup.com", true */ 's', 't', 'r', 'e', 'a', 'm', 'l', 'i', 'n', 'e', 'a', 'u', 't', 'o', 'g', 'r', 'o', 'u', 'p', '.', 'c', 'o', 'm', '\0', @@ -18799,7 +18796,6 @@ static const char kSTSHostTable[] = { /* "stulda.cz", true */ 's', 't', 'u', 'l', 'd', 'a', '.', 'c', 'z', '\0', /* "stumf.si", true */ 's', 't', 'u', 'm', 'f', '.', 's', 'i', '\0', /* "stuntmen.xyz", true */ 's', 't', 'u', 'n', 't', 'm', 'e', 'n', '.', 'x', 'y', 'z', '\0', - /* "stupendous.net", true */ 's', 't', 'u', 'p', 'e', 'n', 'd', 'o', 'u', 's', '.', 'n', 'e', 't', '\0', /* "sturbi.de", true */ 's', 't', 'u', 'r', 'b', 'i', '.', 'd', 'e', '\0', /* "stutelage.com", true */ 's', 't', 'u', 't', 'e', 'l', 'a', 'g', 'e', '.', 'c', 'o', 'm', '\0', /* "stuur.nl", false */ 's', 't', 'u', 'u', 'r', '.', 'n', 'l', '\0', @@ -18852,7 +18848,6 @@ static const char kSTSHostTable[] = { /* "sunbritetv.com", true */ 's', 'u', 'n', 'b', 'r', 'i', 't', 'e', 't', 'v', '.', 'c', 'o', 'm', '\0', /* "sundayfundayjapan.com", true */ 's', 'u', 'n', 'd', 'a', 'y', 'f', 'u', 'n', 'd', 'a', 'y', 'j', 'a', 'p', 'a', 'n', '.', 'c', 'o', 'm', '\0', /* "suneilpatel.com", true */ 's', 'u', 'n', 'e', 'i', 'l', 'p', 'a', 't', 'e', 'l', '.', 'c', 'o', 'm', '\0', - /* "sunflyer.cn", false */ 's', 'u', 'n', 'f', 'l', 'y', 'e', 'r', '.', 'c', 'n', '\0', /* "sunfox.cz", true */ 's', 'u', 'n', 'f', 'o', 'x', '.', 'c', 'z', '\0', /* "sungo.wtf", true */ 's', 'u', 'n', 'g', 'o', '.', 'w', 't', 'f', '\0', /* "sunjaydhama.com", true */ 's', 'u', 'n', 'j', 'a', 'y', 'd', 'h', 'a', 'm', 'a', '.', 'c', 'o', 'm', '\0', @@ -19006,7 +19001,6 @@ static const char kSTSHostTable[] = { /* "synotna.eu", true */ 's', 'y', 'n', 'o', 't', 'n', 'a', '.', 'e', 'u', '\0', /* "syntaxnightmare.com", true */ 's', 'y', 'n', 't', 'a', 'x', 'n', 'i', 'g', 'h', 't', 'm', 'a', 'r', 'e', '.', 'c', 'o', 'm', '\0', /* "sysadmin.pm", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', '.', 'p', 'm', '\0', - /* "sysadmin.xyz", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', '.', 'x', 'y', 'z', '\0', /* "sysadmins.ro", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', 's', '.', 'r', 'o', '\0', /* "sysadminstory.com", true */ 's', 'y', 's', 'a', 'd', 'm', 'i', 'n', 's', 't', 'o', 'r', 'y', '.', 'c', 'o', 'm', '\0', /* "sysctl.se", true */ 's', 'y', 's', 'c', 't', 'l', '.', 's', 'e', '\0', @@ -19044,7 +19038,6 @@ static const char kSTSHostTable[] = { /* "t2000laserpointers.com", true */ 't', '2', '0', '0', '0', 'l', 'a', 's', 'e', 'r', 'p', 'o', 'i', 'n', 't', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0', /* "t23m-navi.jp", false */ 't', '2', '3', 'm', '-', 'n', 'a', 'v', 'i', '.', 'j', 'p', '\0', /* "t3rror.net", true */ 't', '3', 'r', 'r', 'o', 'r', '.', 'n', 'e', 't', '\0', - /* "t4c-rebirth.com", true */ 't', '4', 'c', '-', 'r', 'e', 'b', 'i', 'r', 't', 'h', '.', 'c', 'o', 'm', '\0', /* "t7e.de", false */ 't', '7', 'e', '.', 'd', 'e', '\0', /* "ta-65.com", true */ 't', 'a', '-', '6', '5', '.', 'c', 'o', 'm', '\0', /* "ta-sports.net", true */ 't', 'a', '-', 's', 'p', 'o', 'r', 't', 's', '.', 'n', 'e', 't', '\0', @@ -19144,6 +19137,7 @@ static const char kSTSHostTable[] = { /* "taskstream.com", true */ 't', 'a', 's', 'k', 's', 't', 'r', 'e', 'a', 'm', '.', 'c', 'o', 'm', '\0', /* "taskulu.com", true */ 't', 'a', 's', 'k', 'u', 'l', 'u', '.', 'c', 'o', 'm', '\0', /* "tassup.com", true */ 't', 'a', 's', 's', 'u', 'p', '.', 'c', 'o', 'm', '\0', + /* "tasta.ro", true */ 't', 'a', 's', 't', 'a', '.', 'r', 'o', '\0', /* "tastycake.net", true */ 't', 'a', 's', 't', 'y', 'c', 'a', 'k', 'e', '.', 'n', 'e', 't', '\0', /* "tatara.ne.jp", true */ 't', 'a', 't', 'a', 'r', 'a', '.', 'n', 'e', '.', 'j', 'p', '\0', /* "tateesq.com", true */ 't', 'a', 't', 'e', 'e', 's', 'q', '.', 'c', 'o', 'm', '\0', @@ -19176,10 +19170,6 @@ static const char kSTSHostTable[] = { /* "tdelmas.ovh", true */ 't', 'd', 'e', 'l', 'm', 'a', 's', '.', 'o', 'v', 'h', '\0', /* "tdfbfoundation.org", true */ 't', 'd', 'f', 'b', 'f', 'o', 'u', 'n', 'd', 'a', 't', 'i', 'o', 'n', '.', 'o', 'r', 'g', '\0', /* "tdrs.info", true */ 't', 'd', 'r', 's', '.', 'i', 'n', 'f', 'o', '\0', - /* "tdsb.cf", true */ 't', 'd', 's', 'b', '.', 'c', 'f', '\0', - /* "tdsb.ga", true */ 't', 'd', 's', 'b', '.', 'g', 'a', '\0', - /* "tdsb.gq", true */ 't', 'd', 's', 'b', '.', 'g', 'q', '\0', - /* "tdsb.ml", true */ 't', 'd', 's', 'b', '.', 'm', 'l', '\0', /* "tdude.co", true */ 't', 'd', 'u', 'd', 'e', '.', 'c', 'o', '\0', /* "teabagdesign.co.uk", true */ 't', 'e', 'a', 'b', 'a', 'g', 'd', 'e', 's', 'i', 'g', 'n', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "teachercreatedmaterials.com", true */ 't', 'e', 'a', 'c', 'h', 'e', 'r', 'c', 'r', 'e', 'a', 't', 'e', 'd', 'm', 'a', 't', 'e', 'r', 'i', 'a', 'l', 's', '.', 'c', 'o', 'm', '\0', @@ -19448,7 +19438,6 @@ static const char kSTSHostTable[] = { /* "theclimbingunit.com", true */ 't', 'h', 'e', 'c', 'l', 'i', 'm', 'b', 'i', 'n', 'g', 'u', 'n', 'i', 't', '.', 'c', 'o', 'm', '\0', /* "thecloudmigrator.com", true */ 't', 'h', 'e', 'c', 'l', 'o', 'u', 'd', 'm', 'i', 'g', 'r', 'a', 't', 'o', 'r', '.', 'c', 'o', 'm', '\0', /* "thecloudrevolution.net", true */ 't', 'h', 'e', 'c', 'l', 'o', 'u', 'd', 'r', 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', '.', 'n', 'e', 't', '\0', - /* "thecodeninja.net", true */ 't', 'h', 'e', 'c', 'o', 'd', 'e', 'n', 'i', 'n', 'j', 'a', '.', 'n', 'e', 't', '\0', /* "thecoffeesuperstore.com", true */ 't', 'h', 'e', 'c', 'o', 'f', 'f', 'e', 'e', 's', 'u', 'p', 'e', 'r', 's', 't', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0', /* "thecondobuyers.com", true */ 't', 'h', 'e', 'c', 'o', 'n', 'd', 'o', 'b', 'u', 'y', 'e', 'r', 's', '.', 'c', 'o', 'm', '\0', /* "thecrochetcottage.net", true */ 't', 'h', 'e', 'c', 'r', 'o', 'c', 'h', 'e', 't', 'c', 'o', 't', 't', 'a', 'g', 'e', '.', 'n', 'e', 't', '\0', @@ -19641,7 +19630,6 @@ static const char kSTSHostTable[] = { /* "thomasvochten.com", true */ 't', 'h', 'o', 'm', 'a', 's', 'v', 'o', 'c', 'h', 't', 'e', 'n', '.', 'c', 'o', 'm', '\0', /* "thomasvt.xyz", true */ 't', 'h', 'o', 'm', 'a', 's', 'v', 't', '.', 'x', 'y', 'z', '\0', /* "thomaswoo.com", true */ 't', 'h', 'o', 'm', 'a', 's', 'w', 'o', 'o', '.', 'c', 'o', 'm', '\0', - /* "thompsonfamily.cloud", true */ 't', 'h', 'o', 'm', 'p', 's', 'o', 'n', 'f', 'a', 'm', 'i', 'l', 'y', '.', 'c', 'l', 'o', 'u', 'd', '\0', /* "thomsonscleaning.co.uk", true */ 't', 'h', 'o', 'm', 's', 'o', 'n', 's', 'c', 'l', 'e', 'a', 'n', 'i', 'n', 'g', '.', 'c', 'o', '.', 'u', 'k', '\0', /* "thomspooren.nl", true */ 't', 'h', 'o', 'm', 's', 'p', 'o', 'o', 'r', 'e', 'n', '.', 'n', 'l', '\0', /* "thomwiggers.nl", true */ 't', 'h', 'o', 'm', 'w', 'i', 'g', 'g', 'e', 'r', 's', '.', 'n', 'l', '\0', @@ -19853,7 +19841,6 @@ static const char kSTSHostTable[] = { /* "tofa-koeln.de", true */ 't', 'o', 'f', 'a', '-', 'k', 'o', 'e', 'l', 'n', '.', 'd', 'e', '\0', /* "tofe.io", true */ 't', 'o', 'f', 'e', '.', 'i', 'o', '\0', /* "tofilmhub.com", true */ 't', 'o', 'f', 'i', 'l', 'm', 'h', 'u', 'b', '.', 'c', 'o', 'm', '\0', - /* "tofu.im", true */ 't', 'o', 'f', 'u', '.', 'i', 'm', '\0', /* "togech.jp", true */ 't', 'o', 'g', 'e', 'c', 'h', '.', 'j', 'p', '\0', /* "togetter.com", true */ 't', 'o', 'g', 'e', 't', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "tojeto.eu", true */ 't', 'o', 'j', 'e', 't', 'o', '.', 'e', 'u', '\0', @@ -19937,8 +19924,6 @@ static const char kSTSHostTable[] = { /* "tonex.nl", true */ 't', 'o', 'n', 'e', 'x', '.', 'n', 'l', '\0', /* "tonkinson.com", true */ 't', 'o', 'n', 'k', 'i', 'n', 's', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "tonkinwilsonvillenissanparts.com", true */ 't', 'o', 'n', 'k', 'i', 'n', 'w', 'i', 'l', 's', 'o', 'n', 'v', 'i', 'l', 'l', 'e', 'n', 'i', 's', 's', 'a', 'n', 'p', 'a', 'r', 't', 's', '.', 'c', 'o', 'm', '\0', - /* "tonsit.com", true */ 't', 'o', 'n', 's', 'i', 't', '.', 'c', 'o', 'm', '\0', - /* "tonsit.org", true */ 't', 'o', 'n', 's', 'i', 't', '.', 'o', 'r', 'g', '\0', /* "tonyarcieri.com", true */ 't', 'o', 'n', 'y', 'a', 'r', 'c', 'i', 'e', 'r', 'i', '.', 'c', 'o', 'm', '\0', /* "tonymanning.com", false */ 't', 'o', 'n', 'y', 'm', 'a', 'n', 'n', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "tonytan.cn", true */ 't', 'o', 'n', 'y', 't', 'a', 'n', '.', 'c', 'n', '\0', @@ -20092,7 +20077,6 @@ static const char kSTSHostTable[] = { /* "trainsgoodplanesbad.com", true */ 't', 'r', 'a', 'i', 'n', 's', 'g', 'o', 'o', 'd', 'p', 'l', 'a', 'n', 'e', 's', 'b', 'a', 'd', '.', 'c', 'o', 'm', '\0', /* "traista.ru", true */ 't', 'r', 'a', 'i', 's', 't', 'a', '.', 'r', 'u', '\0', /* "trajano.net", true */ 't', 'r', 'a', 'j', 'a', 'n', 'o', '.', 'n', 'e', 't', '\0', - /* "trakfusion.com", true */ 't', 'r', 'a', 'k', 'f', 'u', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', /* "tran.pw", true */ 't', 'r', 'a', 'n', '.', 'p', 'w', '\0', /* "trance-heal.com", true */ 't', 'r', 'a', 'n', 'c', 'e', '-', 'h', 'e', 'a', 'l', '.', 'c', 'o', 'm', '\0', /* "trance-heal.de", true */ 't', 'r', 'a', 'n', 'c', 'e', '-', 'h', 'e', 'a', 'l', '.', 'd', 'e', '\0', @@ -20186,7 +20170,6 @@ static const char kSTSHostTable[] = { /* "trietment.com", true */ 't', 'r', 'i', 'e', 't', 'm', 'e', 'n', 't', '.', 'c', 'o', 'm', '\0', /* "trigardon-rg.de", true */ 't', 'r', 'i', 'g', 'a', 'r', 'd', 'o', 'n', '-', 'r', 'g', '.', 'd', 'e', '\0', /* "trigular.de", true */ 't', 'r', 'i', 'g', 'u', 'l', 'a', 'r', '.', 'd', 'e', '\0', - /* "trik.es", false */ 't', 'r', 'i', 'k', '.', 'e', 's', '\0', /* "trileg.net", true */ 't', 'r', 'i', 'l', 'e', 'g', '.', 'n', 'e', 't', '\0', /* "trim-a-slab.com", true */ 't', 'r', 'i', 'm', '-', 'a', '-', 's', 'l', 'a', 'b', '.', 'c', 'o', 'm', '\0', /* "trimage.org", true */ 't', 'r', 'i', 'm', 'a', 'g', 'e', '.', 'o', 'r', 'g', '\0', @@ -20281,6 +20264,7 @@ static const char kSTSHostTable[] = { /* "tucuxi.org", true */ 't', 'u', 'c', 'u', 'x', 'i', '.', 'o', 'r', 'g', '\0', /* "tudorproject.org", true */ 't', 'u', 'd', 'o', 'r', 'p', 'r', 'o', 'j', 'e', 'c', 't', '.', 'o', 'r', 'g', '\0', /* "tueche.com.ar", true */ 't', 'u', 'e', 'c', 'h', 'e', '.', 'c', 'o', 'm', '.', 'a', 'r', '\0', + /* "tuincentersnaet.be", true */ 't', 'u', 'i', 'n', 'c', 'e', 'n', 't', 'e', 'r', 's', 'n', 'a', 'e', 't', '.', 'b', 'e', '\0', /* "tuitle.com", true */ 't', 'u', 'i', 't', 'l', 'e', '.', 'c', 'o', 'm', '\0', /* "tuja.hu", true */ 't', 'u', 'j', 'a', '.', 'h', 'u', '\0', /* "tulsameetingroom.com", true */ 't', 'u', 'l', 's', 'a', 'm', 'e', 'e', 't', 'i', 'n', 'g', 'r', 'o', 'o', 'm', '.', 'c', 'o', 'm', '\0', @@ -20393,6 +20377,7 @@ static const char kSTSHostTable[] = { /* "typehub.net", true */ 't', 'y', 'p', 'e', 'h', 'u', 'b', '.', 'n', 'e', 't', '\0', /* "typeofweb.com", true */ 't', 'y', 'p', 'e', 'o', 'f', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0', /* "typeonejoe.com", true */ 't', 'y', 'p', 'e', 'o', 'n', 'e', 'j', 'o', 'e', '.', 'c', 'o', 'm', '\0', + /* "typeria.net", true */ 't', 'y', 'p', 'e', 'r', 'i', 'a', '.', 'n', 'e', 't', '\0', /* "typewolf.com", true */ 't', 'y', 'p', 'e', 'w', 'o', 'l', 'f', '.', 'c', 'o', 'm', '\0', /* "typing.com", true */ 't', 'y', 'p', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "typingrevolution.com", true */ 't', 'y', 'p', 'i', 'n', 'g', 'r', 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', @@ -20552,6 +20537,7 @@ static const char kSTSHostTable[] = { /* "unix.se", true */ 'u', 'n', 'i', 'x', '.', 's', 'e', '\0', /* "unixadm.org", true */ 'u', 'n', 'i', 'x', 'a', 'd', 'm', '.', 'o', 'r', 'g', '\0', /* "unixattic.com", true */ 'u', 'n', 'i', 'x', 'a', 't', 't', 'i', 'c', '.', 'c', 'o', 'm', '\0', + /* "unixcorn.org", false */ 'u', 'n', 'i', 'x', 'c', 'o', 'r', 'n', '.', 'o', 'r', 'g', '\0', /* "unixforum.org", true */ 'u', 'n', 'i', 'x', 'f', 'o', 'r', 'u', 'm', '.', 'o', 'r', 'g', '\0', /* "unixtime.pro", true */ 'u', 'n', 'i', 'x', 't', 'i', 'm', 'e', '.', 'p', 'r', 'o', '\0', /* "unlax.com", true */ 'u', 'n', 'l', 'a', 'x', '.', 'c', 'o', 'm', '\0', @@ -20572,6 +20558,7 @@ static const char kSTSHostTable[] = { /* "unseen.is", true */ 'u', 'n', 's', 'e', 'e', 'n', '.', 'i', 's', '\0', /* "unseen.tw", true */ 'u', 'n', 's', 'e', 'e', 'n', '.', 't', 'w', '\0', /* "unser-gartenforum.de", true */ 'u', 'n', 's', 'e', 'r', '-', 'g', 'a', 'r', 't', 'e', 'n', 'f', 'o', 'r', 'u', 'm', '.', 'd', 'e', '\0', + /* "unsupervised.ca", true */ 'u', 'n', 's', 'u', 'p', 'e', 'r', 'v', 'i', 's', 'e', 'd', '.', 'c', 'a', '\0', /* "unsuspicious.click", true */ 'u', 'n', 's', 'u', 's', 'p', 'i', 'c', 'i', 'o', 'u', 's', '.', 'c', 'l', 'i', 'c', 'k', '\0', /* "unterfrankenclan.de", true */ 'u', 'n', 't', 'e', 'r', 'f', 'r', 'a', 'n', 'k', 'e', 'n', 'c', 'l', 'a', 'n', '.', 'd', 'e', '\0', /* "unterschicht.tv", true */ 'u', 'n', 't', 'e', 'r', 's', 'c', 'h', 'i', 'c', 'h', 't', '.', 't', 'v', '\0', @@ -20612,6 +20599,7 @@ static const char kSTSHostTable[] = { /* "urbanietz-immobilien.de", true */ 'u', 'r', 'b', 'a', 'n', 'i', 'e', 't', 'z', '-', 'i', 'm', 'm', 'o', 'b', 'i', 'l', 'i', 'e', 'n', '.', 'd', 'e', '\0', /* "urbanmelbourne.info", true */ 'u', 'r', 'b', 'a', 'n', 'm', 'e', 'l', 'b', 'o', 'u', 'r', 'n', 'e', '.', 'i', 'n', 'f', 'o', '\0', /* "urbannewsservice.com", true */ 'u', 'r', 'b', 'a', 'n', 'n', 'e', 'w', 's', 's', 'e', 'r', 'v', 'i', 'c', 'e', '.', 'c', 'o', 'm', '\0', + /* "urbanstylestaging.com", true */ 'u', 'r', 'b', 'a', 'n', 's', 't', 'y', 'l', 'e', 's', 't', 'a', 'g', 'i', 'n', 'g', '.', 'c', 'o', 'm', '\0', /* "urbanwildlifealliance.org", true */ 'u', 'r', 'b', 'a', 'n', 'w', 'i', 'l', 'd', 'l', 'i', 'f', 'e', 'a', 'l', 'l', 'i', 'a', 'n', 'c', 'e', '.', 'o', 'r', 'g', '\0', /* "urbexdk.nl", true */ 'u', 'r', 'b', 'e', 'x', 'd', 'k', '.', 'n', 'l', '\0', /* "urcentral.com", true */ 'u', 'r', 'c', 'e', 'n', 't', 'r', 'a', 'l', '.', 'c', 'o', 'm', '\0', @@ -20683,12 +20671,12 @@ static const char kSTSHostTable[] = { /* "uwstartups.com", true */ 'u', 'w', 's', 't', 'a', 'r', 't', 'u', 'p', 's', '.', 'c', 'o', 'm', '\0', /* "uygindir.ml", true */ 'u', 'y', 'g', 'i', 'n', 'd', 'i', 'r', '.', 'm', 'l', '\0', /* "uzmandroid.com", true */ 'u', 'z', 'm', 'a', 'n', 'd', 'r', 'o', 'i', 'd', '.', 'c', 'o', 'm', '\0', + /* "v-u-z.ru", true */ 'v', '-', 'u', '-', 'z', '.', 'r', 'u', '\0', /* "v0rtex.xyz", true */ 'v', '0', 'r', 't', 'e', 'x', '.', 'x', 'y', 'z', '\0', /* "v1sit0r.ru", true */ 'v', '1', 's', 'i', 't', '0', 'r', '.', 'r', 'u', '\0', /* "v2bv.win", true */ 'v', '2', 'b', 'v', '.', 'w', 'i', 'n', '\0', /* "v2ex.com", true */ 'v', '2', 'e', 'x', '.', 'c', 'o', 'm', '\0', /* "v2ex.us", true */ 'v', '2', 'e', 'x', '.', 'u', 's', '\0', - /* "v7.cl", true */ 'v', '7', '.', 'c', 'l', '\0', /* "v789.com", true */ 'v', '7', '8', '9', '.', 'c', 'o', 'm', '\0', /* "va-reitartikel.com", true */ 'v', 'a', '-', 'r', 'e', 'i', 't', 'a', 'r', 't', 'i', 'k', 'e', 'l', '.', 'c', 'o', 'm', '\0', /* "vaaddress.co", true */ 'v', 'a', 'a', 'd', 'd', 'r', 'e', 's', 's', '.', 'c', 'o', '\0', @@ -20903,7 +20891,6 @@ static const char kSTSHostTable[] = { /* "videomail.io", true */ 'v', 'i', 'd', 'e', 'o', 'm', 'a', 'i', 'l', '.', 'i', 'o', '\0', /* "videorullen.se", true */ 'v', 'i', 'd', 'e', 'o', 'r', 'u', 'l', 'l', 'e', 'n', '.', 's', 'e', '\0', /* "videosqr.com", true */ 'v', 'i', 'd', 'e', 'o', 's', 'q', 'r', '.', 'c', 'o', 'm', '\0', - /* "videoueberwachung-set.de", true */ 'v', 'i', 'd', 'e', 'o', 'u', 'e', 'b', 'e', 'r', 'w', 'a', 'c', 'h', 'u', 'n', 'g', '-', 's', 'e', 't', '.', 'd', 'e', '\0', /* "vider.ga", true */ 'v', 'i', 'd', 'e', 'r', '.', 'g', 'a', '\0', /* "vidister.de", true */ 'v', 'i', 'd', 'i', 's', 't', 'e', 'r', '.', 'd', 'e', '\0', /* "vieclam24h.vn", false */ 'v', 'i', 'e', 'c', 'l', 'a', 'm', '2', '4', 'h', '.', 'v', 'n', '\0', @@ -20965,7 +20952,6 @@ static const char kSTSHostTable[] = { /* "viphospitality.se", true */ 'v', 'i', 'p', 'h', 'o', 's', 'p', 'i', 't', 'a', 'l', 'i', 't', 'y', '.', 's', 'e', '\0', /* "vipi.es", true */ 'v', 'i', 'p', 'i', '.', 'e', 's', '\0', /* "vipnettikasinoklubi.com", true */ 'v', 'i', 'p', 'n', 'e', 't', 't', 'i', 'k', 'a', 's', 'i', 'n', 'o', 'k', 'l', 'u', 'b', 'i', '.', 'c', 'o', 'm', '\0', - /* "viral8.jp", true */ 'v', 'i', 'r', 'a', 'l', '8', '.', 'j', 'p', '\0', /* "virtualdesignmedia.com", false */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'd', 'e', 's', 'i', 'g', 'n', 'm', 'e', 'd', 'i', 'a', '.', 'c', 'o', 'm', '\0', /* "virtuallifestyle.nl", true */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'l', 'i', 'f', 'e', 's', 't', 'y', 'l', 'e', '.', 'n', 'l', '\0', /* "virtualperez.com", false */ 'v', 'i', 'r', 't', 'u', 'a', 'l', 'p', 'e', 'r', 'e', 'z', '.', 'c', 'o', 'm', '\0', @@ -21203,6 +21189,7 @@ static const char kSTSHostTable[] = { /* "warekon.dk", true */ 'w', 'a', 'r', 'e', 'k', 'o', 'n', '.', 'd', 'k', '\0', /* "warflame.net", true */ 'w', 'a', 'r', 'f', 'l', 'a', 'm', 'e', '.', 'n', 'e', 't', '\0', /* "wargameexclusive.com", true */ 'w', 'a', 'r', 'g', 'a', 'm', 'e', 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', '.', 'c', 'o', 'm', '\0', + /* "warhaggis.com", true */ 'w', 'a', 'r', 'h', 'a', 'g', 'g', 'i', 's', '.', 'c', 'o', 'm', '\0', /* "warlions.info", false */ 'w', 'a', 'r', 'l', 'i', 'o', 'n', 's', '.', 'i', 'n', 'f', 'o', '\0', /* "warmestwishes.ca", true */ 'w', 'a', 'r', 'm', 'e', 's', 't', 'w', 'i', 's', 'h', 'e', 's', '.', 'c', 'a', '\0', /* "warmlyyours.com", false */ 'w', 'a', 'r', 'm', 'l', 'y', 'y', 'o', 'u', 'r', 's', '.', 'c', 'o', 'm', '\0', @@ -21585,6 +21572,7 @@ static const char kSTSHostTable[] = { /* "willstamper.name", true */ 'w', 'i', 'l', 'l', 's', 't', 'a', 'm', 'p', 'e', 'r', '.', 'n', 'a', 'm', 'e', '\0', /* "wilsonovi.com", true */ 'w', 'i', 'l', 's', 'o', 'n', 'o', 'v', 'i', '.', 'c', 'o', 'm', '\0', /* "wimachtendienk.com", true */ 'w', 'i', 'm', 'a', 'c', 'h', 't', 'e', 'n', 'd', 'i', 'e', 'n', 'k', '.', 'c', 'o', 'm', '\0', + /* "wimake.solutions", true */ 'w', 'i', 'm', 'a', 'k', 'e', '.', 's', 'o', 'l', 'u', 't', 'i', 'o', 'n', 's', '\0', /* "wimbo.nl", true */ 'w', 'i', 'm', 'b', 'o', '.', 'n', 'l', '\0', /* "winbuzzer.com", true */ 'w', 'i', 'n', 'b', 'u', 'z', 'z', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "wind.moe", true */ 'w', 'i', 'n', 'd', '.', 'm', 'o', 'e', '\0', @@ -21740,6 +21728,7 @@ static const char kSTSHostTable[] = { /* "woufbox.com", true */ 'w', 'o', 'u', 'f', 'b', 'o', 'x', '.', 'c', 'o', 'm', '\0', /* "woutergeraedts.nl", true */ 'w', 'o', 'u', 't', 'e', 'r', 'g', 'e', 'r', 'a', 'e', 'd', 't', 's', '.', 'n', 'l', '\0', /* "woutervdb.com", true */ 'w', 'o', 'u', 't', 'e', 'r', 'v', 'd', 'b', '.', 'c', 'o', 'm', '\0', + /* "wow-foederation.de", true */ 'w', 'o', 'w', '-', 'f', 'o', 'e', 'd', 'e', 'r', 'a', 't', 'i', 'o', 'n', '.', 'd', 'e', '\0', /* "wow-travel.eu", true */ 'w', 'o', 'w', '-', 't', 'r', 'a', 'v', 'e', 'l', '.', 'e', 'u', '\0', /* "wowhelp.it", true */ 'w', 'o', 'w', 'h', 'e', 'l', 'p', '.', 'i', 't', '\0', /* "wowinvasion.com", true */ 'w', 'o', 'w', 'i', 'n', 'v', 'a', 's', 'i', 'o', 'n', '.', 'c', 'o', 'm', '\0', @@ -21802,7 +21791,6 @@ static const char kSTSHostTable[] = { /* "wth.in", true */ 'w', 't', 'h', '.', 'i', 'n', '\0', /* "wtpmj.com", true */ 'w', 't', 'p', 'm', 'j', '.', 'c', 'o', 'm', '\0', /* "wubocong.com", true */ 'w', 'u', 'b', 'o', 'c', 'o', 'n', 'g', '.', 'c', 'o', 'm', '\0', - /* "wubthecaptain.eu", true */ 'w', 'u', 'b', 't', 'h', 'e', 'c', 'a', 'p', 't', 'a', 'i', 'n', '.', 'e', 'u', '\0', /* "wuetix.de", true */ 'w', 'u', 'e', 't', 'i', 'x', '.', 'd', 'e', '\0', /* "wug.news", true */ 'w', 'u', 'g', '.', 'n', 'e', 'w', 's', '\0', /* "wuji.cz", true */ 'w', 'u', 'j', 'i', '.', 'c', 'z', '\0', @@ -21891,6 +21879,7 @@ static const char kSTSHostTable[] = { /* "www.wordpress.com", false */ 'w', 'w', 'w', '.', 'w', 'o', 'r', 'd', 'p', 'r', 'e', 's', 's', '.', 'c', 'o', 'm', '\0', /* "wxcafe.net", true */ 'w', 'x', 'c', 'a', 'f', 'e', '.', 'n', 'e', 't', '\0', /* "wxh.jp", true */ 'w', 'x', 'h', '.', 'j', 'p', '\0', + /* "wxrlab.com", true */ 'w', 'x', 'r', 'l', 'a', 'b', '.', 'c', 'o', 'm', '\0', /* "wxster.com", true */ 'w', 'x', 's', 't', 'e', 'r', '.', 'c', 'o', 'm', '\0', /* "wy6.org", true */ 'w', 'y', '6', '.', 'o', 'r', 'g', '\0', /* "wyam.io", true */ 'w', 'y', 'a', 'm', '.', 'i', 'o', '\0', @@ -22012,7 +22001,6 @@ static const char kSTSHostTable[] = { /* "xn--cctsgy36bnvprwpekc.com", true */ 'x', 'n', '-', '-', 'c', 'c', 't', 's', 'g', 'y', '3', '6', 'b', 'n', 'v', 'p', 'r', 'w', 'p', 'e', 'k', 'c', '.', 'c', 'o', 'm', '\0', /* "xn--detrkl13b9sbv53j.com", true */ 'x', 'n', '-', '-', 'd', 'e', 't', 'r', 'k', 'l', '1', '3', 'b', '9', 's', 'b', 'v', '5', '3', 'j', '.', 'c', 'o', 'm', '\0', /* "xn--detrkl13b9sbv53j.org", true */ 'x', 'n', '-', '-', 'd', 'e', 't', 'r', 'k', 'l', '1', '3', 'b', '9', 's', 'b', 'v', '5', '3', 'j', '.', 'o', 'r', 'g', '\0', - /* "xn--dmonenjger-q5ag.net", true */ 'x', 'n', '-', '-', 'd', 'm', 'o', 'n', 'e', 'n', 'j', 'g', 'e', 'r', '-', 'q', '5', 'a', 'g', '.', 'n', 'e', 't', '\0', /* "xn--ekr87w7se89ay98ezcs.biz", true */ 'x', 'n', '-', '-', 'e', 'k', 'r', '8', '7', 'w', '7', 's', 'e', '8', '9', 'a', 'y', '9', '8', 'e', 'z', 'c', 's', '.', 'b', 'i', 'z', '\0', /* "xn--fischereiverein-mnsterhausen-i7c.de", true */ 'x', 'n', '-', '-', 'f', 'i', 's', 'c', 'h', 'e', 'r', 'e', 'i', 'v', 'e', 'r', 'e', 'i', 'n', '-', 'm', 'n', 's', 't', 'e', 'r', 'h', 'a', 'u', 's', 'e', 'n', '-', 'i', '7', 'c', '.', 'd', 'e', '\0', /* "xn--hfk-allgu-schwaben-stb.de", true */ 'x', 'n', '-', '-', 'h', 'f', 'k', '-', 'a', 'l', 'l', 'g', 'u', '-', 's', 'c', 'h', 'w', 'a', 'b', 'e', 'n', '-', 's', 't', 'b', '.', 'd', 'e', '\0', @@ -22110,7 +22098,6 @@ static const char kSTSHostTable[] = { /* "y-s.pw", true */ 'y', '-', 's', '.', 'p', 'w', '\0', /* "yabrt.cn", true */ 'y', 'a', 'b', 'r', 't', '.', 'c', 'n', '\0', /* "yaccin.com", true */ 'y', 'a', 'c', 'c', 'i', 'n', '.', 'c', 'o', 'm', '\0', - /* "yachts-magazine.com", true */ 'y', 'a', 'c', 'h', 't', 's', '-', 'm', 'a', 'g', 'a', 'z', 'i', 'n', 'e', '.', 'c', 'o', 'm', '\0', /* "yacobo.com", true */ 'y', 'a', 'c', 'o', 'b', 'o', '.', 'c', 'o', 'm', '\0', /* "yafuoku.ru", true */ 'y', 'a', 'f', 'u', 'o', 'k', 'u', '.', 'r', 'u', '\0', /* "yagihiro.tech", true */ 'y', 'a', 'g', 'i', 'h', 'i', 'r', 'o', '.', 't', 'e', 'c', 'h', '\0', @@ -22228,7 +22215,6 @@ static const char kSTSHostTable[] = { /* "youkaryote.org", true */ 'y', 'o', 'u', 'k', 'a', 'r', 'y', 'o', 't', 'e', '.', 'o', 'r', 'g', '\0', /* "youkok2.com", true */ 'y', 'o', 'u', 'k', 'o', 'k', '2', '.', 'c', 'o', 'm', '\0', /* "youlend.com", true */ 'y', 'o', 'u', 'l', 'e', 'n', 'd', '.', 'c', 'o', 'm', '\0', - /* "youlog.net", true */ 'y', 'o', 'u', 'l', 'o', 'g', '.', 'n', 'e', 't', '\0', /* "youms.de", true */ 'y', 'o', 'u', 'm', 's', '.', 'd', 'e', '\0', /* "youngdogs.org", true */ 'y', 'o', 'u', 'n', 'g', 'd', 'o', 'g', 's', '.', 'o', 'r', 'g', '\0', /* "youngfree.cn", true */ 'y', 'o', 'u', 'n', 'g', 'f', 'r', 'e', 'e', '.', 'c', 'n', '\0', @@ -22327,6 +22313,7 @@ static const char kSTSHostTable[] = { /* "zaclys.com", true */ 'z', 'a', 'c', 'l', 'y', 's', '.', 'c', 'o', 'm', '\0', /* "zadroweb.com", true */ 'z', 'a', 'd', 'r', 'o', 'w', 'e', 'b', '.', 'c', 'o', 'm', '\0', /* "zafirus.name", true */ 'z', 'a', 'f', 'i', 'r', 'u', 's', '.', 'n', 'a', 'm', 'e', '\0', + /* "zahe.me", true */ 'z', 'a', 'h', 'e', '.', 'm', 'e', '\0', /* "zaidan.de", true */ 'z', 'a', 'i', 'd', 'a', 'n', '.', 'd', 'e', '\0', /* "zaidan.eu", true */ 'z', 'a', 'i', 'd', 'a', 'n', '.', 'e', 'u', '\0', /* "zaidanfood.com", true */ 'z', 'a', 'i', 'd', 'a', 'n', 'f', 'o', 'o', 'd', '.', 'c', 'o', 'm', '\0', @@ -22437,7 +22424,6 @@ static const char kSTSHostTable[] = { /* "zifb.in", true */ 'z', 'i', 'f', 'b', '.', 'i', 'n', '\0', /* "zigi.io", true */ 'z', 'i', 'g', 'i', '.', 'i', 'o', '\0', /* "zigzagmart.com", true */ 'z', 'i', 'g', 'z', 'a', 'g', 'm', 'a', 'r', 't', '.', 'c', 'o', 'm', '\0', - /* "ziin.de", false */ 'z', 'i', 'i', 'n', '.', 'd', 'e', '\0', /* "zillertaleralpen.net", true */ 'z', 'i', 'l', 'l', 'e', 'r', 't', 'a', 'l', 'e', 'r', 'a', 'l', 'p', 'e', 'n', '.', 'n', 'e', 't', '\0', /* "zilore.com", true */ 'z', 'i', 'l', 'o', 'r', 'e', '.', 'c', 'o', 'm', '\0', /* "zima.io", true */ 'z', 'i', 'm', 'a', '.', 'i', 'o', '\0', @@ -22509,9 +22495,9 @@ static const char kSTSHostTable[] = { /* "zten.org", true */ 'z', 't', 'e', 'n', '.', 'o', 'r', 'g', '\0', /* "ztjuh.tk", true */ 'z', 't', 'j', 'u', 'h', '.', 't', 'k', '\0', /* "zuckerfloh.de", true */ 'z', 'u', 'c', 'k', 'e', 'r', 'f', 'l', 'o', 'h', '.', 'd', 'e', '\0', + /* "zudomc.me", true */ 'z', 'u', 'd', 'o', 'm', 'c', '.', 'm', 'e', '\0', /* "zuefle.net", true */ 'z', 'u', 'e', 'f', 'l', 'e', '.', 'n', 'e', 't', '\0', /* "zughilfen-test.de", true */ 'z', 'u', 'g', 'h', 'i', 'l', 'f', 'e', 'n', '-', 't', 'e', 's', 't', '.', 'd', 'e', '\0', - /* "zukix.com", true */ 'z', 'u', 'k', 'i', 'x', '.', 'c', 'o', 'm', '\0', /* "zulu.ro", true */ 'z', 'u', 'l', 'u', '.', 'r', 'o', '\0', /* "zund-app.com", true */ 'z', 'u', 'n', 'd', '-', 'a', 'p', 'p', '.', 'c', 'o', 'm', '\0', /* "zundapp529.nl", true */ 'z', 'u', 'n', 'd', 'a', 'p', 'p', '5', '2', '9', '.', 'n', 'l', '\0', @@ -22647,22448 +22633,22434 @@ static const nsSTSPreload kSTSPreloadList[] = { { 997, true }, { 1022, true }, { 1030, true }, - { 1038, true }, + { 1040, true }, { 1048, true }, - { 1056, true }, - { 1074, true }, - { 1085, true }, - { 1110, true }, - { 1121, true }, - { 1132, true }, - { 1142, true }, - { 1153, false }, - { 1169, true }, - { 1180, true }, - { 1188, false }, - { 1200, true }, - { 1210, true }, - { 1235, true }, - { 1260, true }, - { 1282, true }, - { 1299, true }, - { 1322, true }, - { 1332, true }, - { 1343, true }, - { 1356, true }, - { 1370, true }, - { 1377, true }, - { 1399, true }, - { 1409, true }, - { 1421, true }, - { 1428, true }, - { 1439, true }, + { 1066, true }, + { 1077, true }, + { 1102, true }, + { 1113, true }, + { 1124, true }, + { 1134, true }, + { 1145, false }, + { 1161, true }, + { 1172, true }, + { 1180, false }, + { 1192, true }, + { 1202, true }, + { 1227, true }, + { 1252, true }, + { 1274, true }, + { 1291, true }, + { 1314, true }, + { 1324, true }, + { 1335, true }, + { 1348, true }, + { 1362, true }, + { 1369, true }, + { 1391, true }, + { 1401, true }, + { 1413, true }, + { 1420, true }, + { 1431, true }, + { 1438, true }, { 1446, true }, - { 1454, true }, - { 1465, true }, - { 1476, false }, - { 1482, true }, - { 1495, true }, - { 1505, true }, - { 1512, true }, - { 1519, true }, - { 1530, true }, - { 1537, true }, - { 1548, true }, - { 1560, true }, - { 1577, true }, - { 1591, true }, - { 1603, true }, - { 1614, true }, - { 1623, true }, - { 1629, true }, - { 1643, true }, - { 1658, true }, + { 1457, true }, + { 1468, false }, + { 1474, true }, + { 1487, true }, + { 1497, true }, + { 1504, true }, + { 1511, true }, + { 1522, true }, + { 1529, true }, + { 1540, true }, + { 1552, true }, + { 1569, true }, + { 1583, true }, + { 1595, true }, + { 1606, true }, + { 1615, true }, + { 1621, true }, + { 1635, true }, + { 1650, true }, + { 1657, true }, { 1665, true }, - { 1673, true }, - { 1682, true }, - { 1693, true }, + { 1674, true }, + { 1685, true }, + { 1694, true }, { 1702, true }, - { 1710, true }, - { 1720, true }, - { 1738, true }, - { 1756, true }, + { 1712, true }, + { 1730, true }, + { 1748, true }, + { 1757, true }, { 1765, true }, { 1773, true }, { 1781, true }, - { 1789, true }, - { 1805, true }, - { 1823, true }, - { 1834, true }, - { 1843, true }, - { 1852, true }, - { 1862, true }, - { 1874, true }, + { 1797, true }, + { 1815, true }, + { 1826, true }, + { 1835, true }, + { 1844, true }, + { 1854, true }, + { 1866, true }, + { 1880, true }, { 1888, true }, - { 1896, true }, - { 1909, true }, - { 1919, true }, - { 1928, true }, - { 1937, true }, - { 1946, true }, - { 1955, true }, - { 1966, true }, - { 1977, true }, - { 1988, false }, - { 2001, true }, - { 2010, true }, - { 2024, true }, - { 2031, true }, - { 2042, true }, - { 2051, true }, - { 2072, true }, - { 2081, true }, - { 2093, true }, - { 2107, true }, - { 2117, true }, + { 1901, true }, + { 1911, true }, + { 1920, true }, + { 1929, true }, + { 1938, true }, + { 1947, true }, + { 1958, true }, + { 1969, true }, + { 1980, false }, + { 1993, true }, + { 2002, true }, + { 2016, true }, + { 2023, true }, + { 2034, true }, + { 2043, true }, + { 2064, true }, + { 2073, true }, + { 2085, true }, + { 2099, true }, + { 2109, true }, + { 2124, true }, { 2132, true }, - { 2140, true }, - { 2157, true }, - { 2173, true }, - { 2186, true }, - { 2198, true }, + { 2149, true }, + { 2165, true }, + { 2178, true }, + { 2190, true }, + { 2202, true }, { 2210, true }, - { 2218, true }, - { 2229, true }, - { 2236, true }, - { 2245, true }, + { 2221, true }, + { 2228, true }, + { 2237, true }, + { 2246, true }, { 2254, true }, - { 2262, true }, - { 2269, true }, - { 2282, true }, - { 2291, true }, - { 2302, true }, - { 2311, true }, - { 2323, true }, - { 2342, true }, - { 2353, true }, - { 2372, true }, - { 2391, true }, - { 2403, true }, - { 2417, true }, - { 2426, true }, - { 2438, true }, - { 2449, true }, - { 2459, true }, - { 2468, true }, - { 2478, true }, - { 2486, true }, - { 2501, true }, - { 2514, true }, - { 2522, true }, - { 2532, true }, - { 2550, true }, - { 2557, true }, - { 2571, true }, - { 2582, true }, - { 2594, true }, - { 2607, true }, - { 2627, true }, - { 2642, true }, - { 2662, true }, - { 2682, true }, - { 2691, true }, - { 2701, true }, - { 2711, true }, - { 2725, true }, - { 2739, true }, - { 2749, true }, - { 2758, true }, - { 2777, true }, - { 2791, true }, - { 2799, true }, - { 2806, true }, - { 2820, true }, - { 2839, true }, - { 2850, true }, - { 2863, true }, - { 2872, true }, - { 2884, true }, - { 2895, true }, - { 2914, true }, - { 2925, true }, - { 2935, true }, - { 2946, true }, - { 2957, true }, - { 2967, true }, - { 2975, true }, - { 2985, true }, - { 2996, true }, - { 3011, false }, + { 2261, true }, + { 2274, true }, + { 2283, true }, + { 2294, true }, + { 2303, true }, + { 2315, true }, + { 2334, true }, + { 2345, true }, + { 2364, true }, + { 2383, true }, + { 2395, true }, + { 2409, true }, + { 2418, true }, + { 2430, true }, + { 2441, true }, + { 2451, true }, + { 2460, true }, + { 2470, true }, + { 2485, true }, + { 2498, true }, + { 2506, true }, + { 2516, true }, + { 2534, true }, + { 2541, true }, + { 2555, true }, + { 2566, true }, + { 2578, true }, + { 2591, true }, + { 2611, true }, + { 2626, true }, + { 2646, true }, + { 2666, true }, + { 2675, true }, + { 2685, true }, + { 2695, true }, + { 2709, true }, + { 2723, true }, + { 2733, true }, + { 2742, true }, + { 2761, true }, + { 2775, true }, + { 2783, true }, + { 2790, true }, + { 2804, true }, + { 2823, true }, + { 2834, true }, + { 2847, true }, + { 2856, true }, + { 2868, true }, + { 2879, true }, + { 2898, true }, + { 2909, true }, + { 2920, true }, + { 2931, true }, + { 2941, true }, + { 2949, true }, + { 2959, true }, + { 2970, true }, + { 2985, false }, + { 2998, true }, + { 3008, true }, + { 3016, true }, { 3024, true }, - { 3034, true }, - { 3042, true }, - { 3050, true }, + { 3036, true }, + { 3047, true }, { 3062, true }, - { 3073, true }, - { 3088, true }, - { 3107, true }, - { 3119, true }, - { 3130, true }, - { 3137, true }, - { 3147, true }, - { 3153, true }, - { 3162, true }, - { 3170, true }, - { 3183, true }, + { 3081, true }, + { 3093, true }, + { 3104, true }, + { 3111, true }, + { 3121, true }, + { 3127, true }, + { 3136, true }, + { 3144, true }, + { 3157, true }, + { 3166, true }, + { 3180, true }, { 3192, true }, - { 3206, true }, - { 3218, true }, - { 3227, true }, - { 3240, true }, - { 3250, true }, - { 3289, true }, - { 3299, false }, - { 3306, true }, - { 3317, true }, - { 3329, true }, - { 3341, true }, - { 3353, true }, - { 3365, true }, - { 3376, true }, - { 3387, true }, - { 3399, true }, - { 3407, true }, + { 3201, true }, + { 3214, true }, + { 3224, true }, + { 3263, true }, + { 3273, false }, + { 3280, true }, + { 3291, true }, + { 3303, true }, + { 3315, true }, + { 3327, true }, + { 3339, true }, + { 3350, true }, + { 3361, true }, + { 3373, true }, + { 3381, true }, + { 3397, true }, + { 3404, true }, + { 3413, true }, { 3423, true }, - { 3430, true }, - { 3439, true }, - { 3449, true }, + { 3442, true }, + { 3450, true }, + { 3457, true }, { 3468, true }, - { 3476, true }, - { 3483, true }, - { 3494, true }, - { 3504, true }, - { 3516, true }, - { 3533, true }, - { 3540, true }, - { 3549, true }, - { 3570, true }, - { 3594, true }, - { 3606, true }, - { 3621, true }, - { 3629, true }, - { 3640, true }, - { 3646, true }, - { 3657, true }, - { 3667, true }, - { 3678, true }, - { 3689, true }, - { 3702, true }, - { 3714, true }, - { 3726, true }, - { 3736, true }, - { 3744, true }, - { 3760, true }, - { 3770, false }, + { 3478, true }, + { 3490, true }, + { 3507, true }, + { 3514, true }, + { 3523, true }, + { 3544, true }, + { 3568, true }, + { 3580, true }, + { 3595, true }, + { 3603, true }, + { 3614, true }, + { 3620, true }, + { 3631, true }, + { 3641, true }, + { 3652, true }, + { 3663, true }, + { 3676, true }, + { 3688, true }, + { 3700, true }, + { 3710, true }, + { 3718, true }, + { 3734, true }, + { 3744, false }, + { 3751, true }, + { 3768, true }, { 3777, true }, - { 3794, true }, - { 3803, true }, - { 3810, true }, - { 3819, true }, - { 3840, true }, - { 3853, true }, - { 3868, false }, - { 3881, true }, - { 3891, true }, - { 3944, true }, - { 3956, true }, - { 3965, true }, - { 3975, true }, - { 3985, true }, - { 3999, true }, - { 4009, true }, - { 4017, true }, - { 4024, true }, - { 4052, true }, - { 4064, true }, - { 4073, true }, - { 4095, true }, - { 4111, true }, - { 4116, true }, - { 4140, true }, - { 4150, true }, - { 4158, true }, - { 4169, true }, - { 4177, true }, - { 4196, true }, - { 4213, true }, - { 4224, true }, - { 4235, true }, - { 4249, true }, - { 4263, true }, - { 4273, true }, - { 4291, true }, - { 4302, true }, - { 4315, true }, - { 4332, true }, - { 4348, true }, - { 4363, true }, - { 4371, true }, - { 4388, true }, + { 3784, true }, + { 3793, true }, + { 3814, true }, + { 3827, true }, + { 3842, false }, + { 3855, true }, + { 3865, true }, + { 3918, true }, + { 3930, true }, + { 3939, true }, + { 3949, true }, + { 3959, true }, + { 3973, true }, + { 3983, true }, + { 3991, true }, + { 3998, true }, + { 4026, true }, + { 4038, true }, + { 4047, true }, + { 4069, true }, + { 4085, true }, + { 4090, true }, + { 4114, true }, + { 4124, true }, + { 4132, true }, + { 4143, true }, + { 4151, true }, + { 4170, true }, + { 4187, true }, + { 4198, true }, + { 4209, true }, + { 4223, true }, + { 4237, true }, + { 4247, true }, + { 4265, true }, + { 4276, true }, + { 4289, true }, + { 4306, true }, + { 4322, true }, + { 4337, true }, + { 4345, true }, + { 4362, true }, + { 4377, true }, + { 4392, true }, { 4403, true }, - { 4418, true }, - { 4429, true }, + { 4415, true }, + { 4431, true }, { 4441, true }, - { 4457, true }, - { 4467, true }, - { 4474, true }, - { 4485, true }, - { 4497, true }, - { 4512, false }, - { 4522, false }, - { 4537, true }, - { 4565, true }, - { 4579, true }, - { 4599, true }, - { 4618, true }, - { 4628, true }, - { 4642, true }, - { 4653, true }, - { 4664, true }, - { 4676, true }, - { 4694, true }, - { 4705, true }, - { 4719, true }, - { 4732, true }, - { 4744, true }, - { 4766, true }, - { 4777, false }, - { 4793, false }, + { 4448, true }, + { 4459, true }, + { 4471, true }, + { 4486, false }, + { 4496, false }, + { 4511, true }, + { 4539, true }, + { 4553, true }, + { 4573, true }, + { 4592, true }, + { 4602, true }, + { 4616, true }, + { 4627, true }, + { 4638, true }, + { 4650, true }, + { 4668, true }, + { 4679, true }, + { 4693, true }, + { 4706, true }, + { 4718, true }, + { 4740, true }, + { 4751, false }, + { 4767, false }, + { 4779, true }, + { 4792, true }, { 4805, true }, - { 4818, true }, - { 4831, true }, - { 4853, true }, - { 4872, true }, - { 4885, true }, - { 4899, true }, - { 4915, true }, - { 4934, true }, - { 4951, true }, - { 4967, true }, - { 4984, true }, - { 5000, true }, - { 5025, true }, - { 5050, true }, - { 5066, true }, - { 5085, true }, - { 5102, true }, - { 5118, true }, - { 5135, true }, - { 5151, true }, - { 5173, true }, - { 5197, true }, - { 5221, true }, + { 4827, true }, + { 4846, true }, + { 4859, true }, + { 4873, true }, + { 4889, true }, + { 4908, true }, + { 4925, true }, + { 4941, true }, + { 4958, true }, + { 4974, true }, + { 4999, true }, + { 5024, true }, + { 5040, true }, + { 5059, true }, + { 5076, true }, + { 5092, true }, + { 5109, true }, + { 5125, true }, + { 5147, true }, + { 5171, true }, + { 5195, true }, + { 5214, true }, + { 5232, false }, { 5240, true }, - { 5258, false }, - { 5266, true }, - { 5290, true }, + { 5264, true }, + { 5276, true }, + { 5288, true }, { 5302, true }, - { 5314, true }, - { 5328, true }, - { 5342, true }, - { 5361, true }, - { 5376, true }, + { 5316, true }, + { 5335, true }, + { 5350, true }, + { 5363, true }, + { 5375, true }, { 5389, true }, - { 5401, true }, - { 5415, true }, - { 5426, true }, - { 5443, true }, - { 5478, true }, - { 5496, true }, + { 5400, true }, + { 5417, true }, + { 5452, true }, + { 5470, true }, + { 5494, true }, + { 5507, true }, { 5520, true }, { 5533, true }, - { 5546, true }, - { 5555, true }, - { 5572, true }, - { 5584, true }, - { 5603, true }, - { 5615, true }, - { 5634, true }, - { 5657, true }, - { 5674, true }, - { 5694, true }, - { 5708, true }, - { 5716, true }, - { 5735, true }, + { 5542, true }, + { 5559, true }, + { 5571, true }, + { 5590, true }, + { 5602, true }, + { 5621, true }, + { 5644, true }, + { 5661, true }, + { 5681, true }, + { 5695, true }, + { 5703, true }, + { 5722, true }, + { 5746, true }, { 5759, true }, - { 5772, true }, - { 5791, true }, - { 5806, true }, + { 5778, true }, + { 5793, true }, + { 5817, true }, { 5830, true }, - { 5843, true }, - { 5861, true }, - { 5882, true }, - { 5902, true }, - { 5927, true }, - { 5939, true }, - { 5954, true }, - { 5973, false }, - { 5987, true }, - { 6006, true }, - { 6013, true }, - { 6026, true }, - { 6047, true }, - { 6059, true }, - { 6076, true }, - { 6089, true }, - { 6105, true }, - { 6137, true }, - { 6149, true }, - { 6160, true }, - { 6173, false }, - { 6182, true }, - { 6192, true }, - { 6208, true }, - { 6223, true }, + { 5848, true }, + { 5869, true }, + { 5889, true }, + { 5914, true }, + { 5926, true }, + { 5941, true }, + { 5960, false }, + { 5974, true }, + { 5993, true }, + { 6000, true }, + { 6009, true }, + { 6022, true }, + { 6043, true }, + { 6055, true }, + { 6072, true }, + { 6085, true }, + { 6101, true }, + { 6133, true }, + { 6154, true }, + { 6166, true }, + { 6177, true }, + { 6190, false }, + { 6199, true }, + { 6209, true }, + { 6225, true }, { 6240, true }, - { 6251, true }, - { 6279, false }, - { 6293, true }, - { 6306, true }, - { 6322, true }, - { 6338, true }, - { 6349, true }, - { 6361, true }, - { 6374, true }, - { 6386, true }, - { 6412, true }, - { 6433, true }, - { 6451, false }, - { 6461, true }, - { 6476, true }, - { 6490, true }, - { 6511, false }, - { 6524, true }, - { 6533, true }, - { 6548, true }, - { 6564, true }, - { 6578, true }, - { 6590, true }, - { 6605, true }, - { 6618, true }, - { 6630, true }, - { 6642, true }, - { 6654, true }, - { 6666, true }, - { 6678, true }, - { 6686, true }, - { 6697, true }, + { 6257, true }, + { 6268, true }, + { 6296, false }, + { 6310, true }, + { 6323, true }, + { 6339, true }, + { 6355, true }, + { 6366, true }, + { 6378, true }, + { 6391, true }, + { 6403, true }, + { 6429, true }, + { 6450, true }, + { 6468, false }, + { 6478, true }, + { 6493, true }, + { 6507, true }, + { 6528, false }, + { 6541, true }, + { 6550, true }, + { 6565, true }, + { 6581, true }, + { 6595, true }, + { 6607, true }, + { 6622, true }, + { 6635, true }, + { 6647, true }, + { 6659, true }, + { 6671, true }, + { 6683, true }, + { 6695, true }, + { 6703, true }, { 6714, true }, - { 6728, true }, - { 6744, true }, - { 6758, true }, - { 6771, true }, + { 6731, true }, + { 6745, true }, + { 6761, true }, + { 6775, true }, { 6788, true }, - { 6804, true }, - { 6819, true }, - { 6834, true }, - { 6852, true }, - { 6861, true }, - { 6874, true }, - { 6889, true }, - { 6910, true }, - { 6919, true }, - { 6929, true }, - { 6954, true }, - { 6965, true }, - { 6977, true }, - { 6996, true }, - { 7008, true }, - { 7027, true }, - { 7046, true }, - { 7065, true }, - { 7077, true }, - { 7092, true }, - { 7107, true }, - { 7118, true }, - { 7131, true }, - { 7143, true }, - { 7156, true }, - { 7170, true }, - { 7185, true }, - { 7207, true }, - { 7217, true }, - { 7228, true }, - { 7250, true }, - { 7259, true }, - { 7272, true }, - { 7286, true }, - { 7298, true }, - { 7325, true }, - { 7351, true }, - { 7362, true }, - { 7375, true }, - { 7389, true }, - { 7400, true }, - { 7424, true }, + { 6805, true }, + { 6821, true }, + { 6836, true }, + { 6851, true }, + { 6869, true }, + { 6878, true }, + { 6891, true }, + { 6906, true }, + { 6927, true }, + { 6936, true }, + { 6946, true }, + { 6971, true }, + { 6982, true }, + { 6994, true }, + { 7013, true }, + { 7025, true }, + { 7044, true }, + { 7063, true }, + { 7082, true }, + { 7094, true }, + { 7109, true }, + { 7124, true }, + { 7135, true }, + { 7148, true }, + { 7160, true }, + { 7173, true }, + { 7187, true }, + { 7202, true }, + { 7224, true }, + { 7234, true }, + { 7245, true }, + { 7267, true }, + { 7276, true }, + { 7289, true }, + { 7303, true }, + { 7315, true }, + { 7342, true }, + { 7368, true }, + { 7379, true }, + { 7392, true }, + { 7406, true }, + { 7417, true }, { 7441, true }, - { 7469, true }, - { 7493, true }, - { 7505, true }, - { 7519, true }, - { 7530, true }, - { 7542, true }, - { 7551, true }, - { 7565, true }, - { 7575, true }, - { 7584, true }, - { 7598, true }, - { 7617, true }, - { 7640, true }, - { 7650, true }, + { 7458, true }, + { 7486, true }, + { 7510, true }, + { 7522, true }, + { 7536, true }, + { 7547, true }, + { 7559, true }, + { 7568, true }, + { 7582, true }, + { 7592, true }, + { 7601, true }, + { 7615, true }, + { 7634, true }, + { 7657, true }, { 7667, true }, - { 7679, true }, - { 7693, true }, - { 7701, true }, - { 7716, false }, - { 7737, true }, - { 7755, true }, - { 7773, true }, - { 7791, true }, + { 7684, true }, + { 7696, true }, + { 7710, true }, + { 7718, true }, + { 7733, false }, + { 7754, true }, + { 7772, true }, + { 7790, true }, { 7808, true }, - { 7829, true }, - { 7840, true }, - { 7853, true }, - { 7864, true }, - { 7873, true }, - { 7889, true }, - { 7905, true }, - { 7924, true }, - { 7945, true }, - { 7959, true }, - { 7978, true }, - { 8005, true }, - { 8016, true }, - { 8036, true }, - { 8054, true }, - { 8072, false }, - { 8091, true }, - { 8105, true }, - { 8126, true }, - { 8146, true }, - { 8162, true }, - { 8172, true }, - { 8185, true }, - { 8198, true }, - { 8212, true }, - { 8226, true }, - { 8236, true }, - { 8246, true }, + { 7825, true }, + { 7846, true }, + { 7857, true }, + { 7870, true }, + { 7881, true }, + { 7890, true }, + { 7906, true }, + { 7922, true }, + { 7941, true }, + { 7962, true }, + { 7976, true }, + { 7995, true }, + { 8008, true }, + { 8035, true }, + { 8046, true }, + { 8066, true }, + { 8084, true }, + { 8102, false }, + { 8121, true }, + { 8135, true }, + { 8156, true }, + { 8176, true }, + { 8192, true }, + { 8202, true }, + { 8215, true }, + { 8228, true }, + { 8242, true }, { 8256, true }, { 8266, true }, { 8276, true }, { 8286, true }, - { 8303, true }, - { 8320, true }, - { 8335, true }, - { 8353, true }, - { 8369, true }, - { 8379, true }, - { 8387, true }, - { 8399, false }, - { 8410, true }, - { 8421, true }, - { 8431, true }, + { 8296, true }, + { 8306, true }, + { 8316, true }, + { 8333, true }, + { 8350, true }, + { 8365, true }, + { 8383, true }, + { 8399, true }, + { 8409, true }, + { 8417, true }, + { 8429, false }, { 8440, true }, - { 8454, true }, - { 8466, true }, - { 8477, true }, - { 8489, true }, - { 8498, true }, - { 8512, true }, - { 8532, true }, - { 8564, true }, - { 8576, true }, - { 8600, true }, - { 8625, true }, - { 8654, true }, - { 8668, true }, - { 8687, true }, - { 8709, true }, - { 8721, true }, - { 8737, true }, - { 8748, true }, - { 8756, true }, - { 8770, true }, - { 8786, true }, - { 8801, true }, + { 8451, true }, + { 8461, true }, + { 8470, true }, + { 8484, true }, + { 8494, true }, + { 8506, true }, + { 8517, true }, + { 8529, true }, + { 8538, true }, + { 8552, true }, + { 8572, true }, + { 8604, true }, + { 8616, true }, + { 8640, true }, + { 8665, true }, + { 8694, true }, + { 8708, true }, + { 8727, true }, + { 8749, true }, + { 8761, true }, + { 8777, true }, + { 8788, true }, + { 8796, true }, { 8810, true }, - { 8825, true }, - { 8833, true }, - { 8842, true }, - { 8859, true }, - { 8878, true }, - { 8895, true }, - { 8903, true }, - { 8936, false }, - { 8952, true }, - { 8970, true }, - { 8984, true }, - { 8997, true }, - { 9005, true }, - { 9019, false }, - { 9033, true }, + { 8826, true }, + { 8841, true }, + { 8850, true }, + { 8865, true }, + { 8873, true }, + { 8882, true }, + { 8899, true }, + { 8918, true }, + { 8935, true }, + { 8943, true }, + { 8976, false }, + { 8992, true }, + { 9010, true }, + { 9024, true }, + { 9037, true }, { 9045, true }, - { 9055, true }, - { 9065, false }, - { 9078, true }, - { 9090, true }, - { 9099, true }, - { 9111, true }, - { 9125, true }, - { 9138, true }, - { 9150, true }, - { 9166, true }, + { 9059, false }, + { 9073, true }, + { 9085, true }, + { 9095, true }, + { 9105, false }, + { 9118, true }, + { 9130, true }, + { 9139, true }, + { 9151, true }, + { 9165, true }, { 9178, true }, - { 9198, true }, - { 9208, false }, - { 9218, false }, - { 9226, true }, - { 9236, true }, - { 9245, true }, - { 9259, true }, - { 9272, true }, - { 9286, true }, - { 9294, true }, - { 9306, true }, - { 9318, true }, - { 9342, true }, - { 9361, true }, - { 9380, false }, - { 9389, false }, - { 9403, true }, - { 9413, true }, - { 9446, true }, - { 9456, true }, - { 9470, true }, - { 9477, true }, - { 9489, true }, - { 9502, true }, - { 9513, true }, - { 9527, true }, - { 9544, true }, - { 9555, true }, - { 9566, true }, - { 9582, true }, - { 9589, true }, - { 9603, true }, - { 9611, true }, + { 9190, true }, + { 9206, true }, + { 9218, true }, + { 9238, true }, + { 9248, false }, + { 9258, false }, + { 9266, true }, + { 9276, true }, + { 9285, true }, + { 9299, true }, + { 9312, true }, + { 9326, true }, + { 9334, true }, + { 9346, true }, + { 9358, true }, + { 9382, true }, + { 9401, true }, + { 9420, false }, + { 9429, false }, + { 9443, true }, + { 9453, true }, + { 9486, true }, + { 9496, true }, + { 9510, true }, + { 9517, true }, + { 9529, true }, + { 9542, true }, + { 9553, true }, + { 9567, true }, + { 9584, true }, + { 9595, true }, + { 9606, true }, { 9622, true }, - { 9640, true }, - { 9663, true }, - { 9678, true }, - { 9693, true }, - { 9710, true }, - { 9723, true }, + { 9629, true }, + { 9643, true }, + { 9651, true }, + { 9662, true }, + { 9680, true }, + { 9703, true }, + { 9718, true }, { 9733, true }, - { 9745, true }, - { 9758, true }, - { 9769, true }, - { 9784, true }, - { 9794, true }, - { 9817, true }, - { 9828, true }, - { 9840, true }, - { 9851, true }, - { 9871, true }, - { 9882, true }, - { 9893, true }, - { 9904, true }, - { 9920, true }, - { 9950, true }, - { 9961, true }, - { 9972, true }, - { 9985, true }, - { 10003, true }, - { 10015, true }, - { 10032, true }, - { 10050, true }, - { 10059, true }, - { 10073, true }, - { 10083, true }, - { 10095, true }, - { 10105, true }, - { 10116, true }, - { 10127, true }, - { 10134, true }, - { 10151, true }, + { 9750, true }, + { 9763, true }, + { 9773, true }, + { 9785, true }, + { 9798, true }, + { 9809, true }, + { 9824, true }, + { 9834, true }, + { 9857, true }, + { 9868, true }, + { 9880, true }, + { 9891, true }, + { 9911, true }, + { 9922, true }, + { 9933, true }, + { 9944, true }, + { 9960, true }, + { 9990, true }, + { 10001, true }, + { 10012, true }, + { 10025, true }, + { 10043, true }, + { 10055, true }, + { 10072, true }, + { 10090, true }, + { 10099, true }, + { 10113, true }, + { 10123, true }, + { 10135, true }, + { 10145, true }, + { 10156, true }, { 10167, true }, - { 10180, true }, + { 10174, true }, { 10191, true }, - { 10199, false }, - { 10225, false }, - { 10236, true }, - { 10254, false }, - { 10271, true }, - { 10281, true }, - { 10293, true }, - { 10312, true }, - { 10329, true }, - { 10340, true }, - { 10353, true }, - { 10365, true }, - { 10374, true }, - { 10383, true }, - { 10400, true }, - { 10407, true }, - { 10431, true }, + { 10207, true }, + { 10220, true }, + { 10231, true }, + { 10239, false }, + { 10265, false }, + { 10276, true }, + { 10294, false }, + { 10311, true }, + { 10321, true }, + { 10333, true }, + { 10352, true }, + { 10369, true }, + { 10380, true }, + { 10393, true }, + { 10405, true }, + { 10414, true }, + { 10423, true }, + { 10440, true }, { 10447, true }, - { 10467, true }, - { 10492, true }, - { 10517, true }, - { 10542, true }, - { 10554, true }, - { 10576, true }, - { 10586, true }, - { 10598, true }, - { 10607, true }, - { 10619, true }, - { 10646, true }, - { 10674, true }, - { 10687, false }, - { 10696, true }, - { 10710, true }, - { 10726, true }, - { 10742, true }, - { 10754, true }, - { 10769, true }, - { 10783, true }, - { 10796, true }, - { 10816, true }, - { 10831, true }, - { 10843, true }, - { 10854, true }, - { 10864, true }, - { 10875, true }, - { 10892, true }, + { 10471, true }, + { 10487, true }, + { 10507, true }, + { 10532, true }, + { 10557, true }, + { 10582, true }, + { 10594, true }, + { 10616, true }, + { 10626, true }, + { 10638, true }, + { 10647, true }, + { 10659, true }, + { 10686, true }, + { 10714, true }, + { 10727, false }, + { 10736, true }, + { 10750, true }, + { 10766, true }, + { 10782, true }, + { 10794, true }, + { 10809, true }, + { 10823, true }, + { 10836, true }, + { 10856, true }, + { 10871, true }, + { 10883, true }, + { 10894, true }, { 10904, true }, - { 10916, true }, - { 10934, true }, - { 10943, true }, - { 10955, true }, + { 10915, true }, + { 10932, true }, + { 10944, true }, + { 10956, true }, { 10974, true }, - { 10987, true }, - { 11003, true }, + { 10983, true }, + { 10995, true }, { 11014, true }, - { 11023, true }, - { 11041, true }, - { 11055, true }, - { 11069, true }, - { 11085, true }, - { 11101, true }, - { 11121, true }, - { 11142, true }, - { 11156, true }, - { 11169, true }, - { 11183, true }, - { 11198, true }, - { 11211, true }, - { 11221, true }, - { 11239, true }, - { 11254, true }, - { 11272, true }, - { 11282, true }, - { 11299, true }, - { 11311, true }, - { 11324, true }, - { 11336, true }, - { 11351, true }, - { 11365, true }, - { 11380, true }, - { 11390, true }, - { 11404, true }, - { 11419, true }, - { 11428, true }, - { 11445, true }, - { 11460, true }, - { 11474, true }, - { 11488, true }, - { 11504, true }, - { 11516, true }, - { 11529, false }, - { 11544, true }, - { 11571, true }, - { 11592, true }, - { 11604, true }, - { 11618, true }, - { 11633, true }, - { 11643, true }, - { 11658, true }, - { 11672, true }, + { 11027, true }, + { 11043, true }, + { 11054, true }, + { 11063, true }, + { 11081, true }, + { 11095, true }, + { 11109, true }, + { 11125, true }, + { 11141, true }, + { 11161, true }, + { 11182, true }, + { 11196, true }, + { 11209, true }, + { 11223, true }, + { 11238, true }, + { 11251, true }, + { 11261, true }, + { 11279, true }, + { 11294, true }, + { 11312, true }, + { 11322, true }, + { 11339, true }, + { 11354, true }, + { 11372, true }, + { 11386, true }, + { 11400, true }, + { 11414, true }, + { 11426, true }, + { 11439, true }, + { 11451, true }, + { 11466, true }, + { 11480, true }, + { 11495, true }, + { 11505, true }, + { 11519, true }, + { 11534, true }, + { 11543, true }, + { 11560, true }, + { 11575, true }, + { 11589, true }, + { 11603, true }, + { 11619, true }, + { 11631, true }, + { 11644, false }, + { 11659, true }, { 11686, true }, - { 11708, true }, - { 11720, true }, - { 11743, true }, - { 11764, true }, - { 11783, true }, - { 11795, true }, - { 11811, true }, - { 11825, true }, - { 11843, true }, - { 11856, true }, - { 11868, true }, - { 11881, true }, - { 11891, true }, - { 11902, true }, - { 11917, true }, - { 11928, false }, - { 11944, true }, - { 11962, true }, - { 11973, true }, - { 11985, true }, - { 12005, true }, - { 12027, true }, - { 12047, true }, - { 12060, true }, - { 12072, true }, - { 12092, true }, - { 12105, true }, - { 12119, true }, - { 12132, true }, - { 12156, true }, - { 12169, true }, + { 11707, true }, + { 11719, true }, + { 11733, true }, + { 11748, true }, + { 11758, true }, + { 11773, true }, + { 11787, true }, + { 11801, true }, + { 11823, true }, + { 11835, true }, + { 11858, true }, + { 11879, true }, + { 11898, true }, + { 11910, true }, + { 11926, true }, + { 11940, true }, + { 11958, true }, + { 11971, true }, + { 11983, true }, + { 11996, true }, + { 12006, true }, + { 12017, true }, + { 12032, true }, + { 12043, false }, + { 12059, true }, + { 12077, true }, + { 12088, true }, + { 12100, true }, + { 12120, true }, + { 12142, true }, + { 12162, true }, + { 12175, true }, { 12187, true }, - { 12200, true }, - { 12218, true }, - { 12240, true }, - { 12257, true }, - { 12281, true }, - { 12305, true }, - { 12324, true }, - { 12340, true }, - { 12352, true }, - { 12366, true }, - { 12375, true }, - { 12388, true }, - { 12404, true }, - { 12425, true }, - { 12444, true }, - { 12457, true }, - { 12479, true }, - { 12500, true }, - { 12520, true }, + { 12207, true }, + { 12220, true }, + { 12234, true }, + { 12247, true }, + { 12271, true }, + { 12284, true }, + { 12302, true }, + { 12315, true }, + { 12333, true }, + { 12355, true }, + { 12372, true }, + { 12396, true }, + { 12420, true }, + { 12439, true }, + { 12455, true }, + { 12467, true }, + { 12481, true }, + { 12490, true }, + { 12503, true }, + { 12519, true }, { 12540, true }, - { 12556, true }, - { 12569, false }, - { 12582, true }, - { 12595, true }, - { 12607, true }, - { 12617, true }, - { 12642, true }, + { 12559, true }, + { 12572, true }, + { 12594, true }, + { 12615, true }, + { 12635, true }, { 12655, true }, - { 12669, true }, + { 12671, true }, { 12684, true }, - { 12704, true }, - { 12720, true }, - { 12734, true }, - { 12748, true }, - { 12764, true }, - { 12778, true }, - { 12794, true }, - { 12808, true }, - { 12820, true }, - { 12834, true }, - { 12851, true }, - { 12862, true }, - { 12881, true }, - { 12894, true }, - { 12911, true }, - { 12925, true }, - { 12933, true }, - { 12946, true }, - { 12958, true }, - { 12971, true }, - { 12987, true }, - { 13002, true }, - { 13015, true }, + { 12697, true }, + { 12709, true }, + { 12719, true }, + { 12744, true }, + { 12757, true }, + { 12771, true }, + { 12786, true }, + { 12806, true }, + { 12822, true }, + { 12836, true }, + { 12850, true }, + { 12866, true }, + { 12880, true }, + { 12896, true }, + { 12910, true }, + { 12922, true }, + { 12936, true }, + { 12953, true }, + { 12964, true }, + { 12983, true }, + { 12996, true }, + { 13013, true }, { 13027, true }, - { 13044, true }, - { 13062, true }, - { 13081, true }, - { 13097, true }, - { 13109, true }, - { 13123, true }, - { 13145, true }, - { 13159, true }, - { 13171, true }, + { 13035, true }, + { 13048, true }, + { 13060, true }, + { 13073, true }, + { 13089, true }, + { 13104, true }, + { 13117, true }, + { 13129, true }, + { 13146, true }, + { 13164, true }, { 13183, true }, - { 13197, true }, + { 13199, true }, + { 13211, true }, { 13225, true }, - { 13240, true }, - { 13251, true }, - { 13272, true }, - { 13284, true }, - { 13295, true }, - { 13306, true }, - { 13318, true }, - { 13344, true }, - { 13358, true }, - { 13370, true }, - { 13381, true }, - { 13391, true }, - { 13410, true }, - { 13423, true }, - { 13435, true }, - { 13448, true }, - { 13468, true }, - { 13480, true }, - { 13492, true }, - { 13518, true }, - { 13536, true }, - { 13564, true }, - { 13579, true }, - { 13597, true }, - { 13610, true }, - { 13619, true }, - { 13635, true }, - { 13648, true }, - { 13660, true }, - { 13674, true }, - { 13687, true }, - { 13698, true }, - { 13708, true }, - { 13719, true }, - { 13729, true }, - { 13740, true }, - { 13749, true }, - { 13765, true }, - { 13781, true }, - { 13806, true }, - { 13834, true }, - { 13865, true }, - { 13884, true }, - { 13899, true }, - { 13919, true }, - { 13931, true }, - { 13951, true }, - { 13958, true }, - { 13977, true }, - { 13988, true }, - { 13999, true }, - { 14014, true }, - { 14034, true }, - { 14052, true }, - { 14062, true }, - { 14092, true }, - { 14102, true }, - { 14129, true }, - { 14146, true }, - { 14157, true }, - { 14167, true }, - { 14181, true }, - { 14198, true }, - { 14209, true }, - { 14218, true }, - { 14229, true }, - { 14249, true }, - { 14268, true }, - { 14279, true }, - { 14290, true }, - { 14308, false }, - { 14319, true }, - { 14338, true }, - { 14352, true }, - { 14370, true }, - { 14388, true }, - { 14410, true }, - { 14432, true }, - { 14446, true }, - { 14461, true }, - { 14475, true }, - { 14489, true }, - { 14504, true }, + { 13247, true }, + { 13261, true }, + { 13273, true }, + { 13285, true }, + { 13299, true }, + { 13327, true }, + { 13342, true }, + { 13353, true }, + { 13374, true }, + { 13386, true }, + { 13397, true }, + { 13408, true }, + { 13420, true }, + { 13446, true }, + { 13460, true }, + { 13472, true }, + { 13483, true }, + { 13493, true }, + { 13512, true }, + { 13525, true }, + { 13537, true }, + { 13550, true }, + { 13570, true }, + { 13582, true }, + { 13594, true }, + { 13620, true }, + { 13638, true }, + { 13666, true }, + { 13681, true }, + { 13699, true }, + { 13712, true }, + { 13721, true }, + { 13737, true }, + { 13750, true }, + { 13762, true }, + { 13776, true }, + { 13789, true }, + { 13800, true }, + { 13810, true }, + { 13821, true }, + { 13831, true }, + { 13842, true }, + { 13851, true }, + { 13867, true }, + { 13883, true }, + { 13908, true }, + { 13936, true }, + { 13967, true }, + { 13986, true }, + { 14001, true }, + { 14021, true }, + { 14033, true }, + { 14053, true }, + { 14065, true }, + { 14078, true }, + { 14087, true }, + { 14096, true }, + { 14106, true }, + { 14113, true }, + { 14132, true }, + { 14143, true }, + { 14154, true }, + { 14169, true }, + { 14189, true }, + { 14207, true }, + { 14217, true }, + { 14247, true }, + { 14257, true }, + { 14284, true }, + { 14301, true }, + { 14312, true }, + { 14322, true }, + { 14336, true }, + { 14353, true }, + { 14364, true }, + { 14373, true }, + { 14384, true }, + { 14404, true }, + { 14423, true }, + { 14434, true }, + { 14445, true }, + { 14463, false }, + { 14474, true }, + { 14493, true }, + { 14507, true }, { 14525, true }, - { 14535, true }, - { 14555, true }, - { 14570, true }, - { 14581, false }, - { 14605, true }, - { 14626, true }, + { 14543, true }, + { 14565, true }, + { 14587, true }, + { 14601, true }, + { 14616, true }, + { 14630, true }, { 14644, true }, - { 14655, true }, - { 14673, true }, + { 14659, true }, + { 14680, true }, { 14690, true }, - { 14706, true }, + { 14710, true }, { 14725, true }, - { 14738, true }, - { 14746, true }, - { 14763, true }, - { 14776, true }, - { 14791, true }, - { 14803, true }, - { 14822, true }, - { 14838, true }, - { 14856, false }, - { 14878, true }, + { 14736, false }, + { 14760, true }, + { 14781, true }, + { 14799, true }, + { 14810, true }, + { 14828, true }, + { 14845, true }, + { 14861, true }, + { 14880, true }, { 14893, true }, - { 14910, true }, - { 14932, true }, - { 14947, true }, - { 14964, true }, - { 14985, true }, - { 15001, true }, - { 15017, true }, - { 15034, true }, - { 15051, true }, - { 15066, true }, - { 15081, true }, - { 15094, true }, - { 15108, true }, - { 15124, true }, + { 14901, true }, + { 14918, true }, + { 14931, true }, + { 14946, true }, + { 14958, true }, + { 14977, true }, + { 14993, false }, + { 15015, true }, + { 15030, true }, + { 15047, true }, + { 15069, true }, + { 15084, true }, + { 15101, true }, + { 15122, true }, { 15138, true }, - { 15155, true }, - { 15172, true }, - { 15184, true }, - { 15200, true }, - { 15214, true }, + { 15154, true }, + { 15171, true }, + { 15188, true }, + { 15203, true }, + { 15218, true }, { 15231, true }, - { 15249, true }, - { 15264, true }, - { 15276, true }, - { 15289, true }, - { 15305, true }, - { 15319, true }, - { 15332, true }, - { 15346, true }, - { 15364, true }, - { 15382, true }, - { 15399, true }, - { 15418, true }, - { 15433, true }, - { 15445, true }, - { 15465, true }, - { 15485, true }, - { 15500, true }, - { 15511, true }, - { 15522, true }, - { 15533, true }, - { 15546, true }, - { 15562, true }, - { 15577, true }, - { 15588, true }, + { 15245, true }, + { 15261, true }, + { 15275, true }, + { 15292, true }, + { 15309, true }, + { 15321, true }, + { 15337, true }, + { 15351, true }, + { 15368, true }, + { 15386, true }, + { 15401, true }, + { 15413, true }, + { 15426, true }, + { 15442, true }, + { 15456, true }, + { 15469, true }, + { 15483, true }, + { 15501, true }, + { 15519, true }, + { 15536, true }, + { 15555, true }, + { 15570, true }, + { 15582, true }, { 15602, true }, - { 15619, true }, - { 15635, true }, - { 15654, true }, - { 15665, true }, - { 15676, true }, - { 15698, true }, - { 15710, true }, - { 15720, true }, - { 15735, true }, - { 15748, true }, - { 15767, true }, - { 15778, true }, + { 15622, true }, + { 15637, true }, + { 15648, true }, + { 15659, true }, + { 15670, true }, + { 15683, true }, + { 15699, true }, + { 15714, true }, + { 15725, true }, + { 15739, true }, + { 15756, true }, + { 15772, true }, { 15791, true }, - { 15800, true }, - { 15827, true }, - { 15841, true }, - { 15856, true }, - { 15871, true }, - { 15893, true }, - { 15917, true }, - { 15935, false }, - { 15948, false }, - { 15957, true }, - { 15967, true }, - { 15979, true }, - { 16001, true }, - { 16018, true }, - { 16035, true }, - { 16055, true }, - { 16066, true }, - { 16084, true }, + { 15802, true }, + { 15813, true }, + { 15835, true }, + { 15847, true }, + { 15857, true }, + { 15872, true }, + { 15885, true }, + { 15904, true }, + { 15915, true }, + { 15928, true }, + { 15937, true }, + { 15964, true }, + { 15978, true }, + { 15993, true }, + { 16008, true }, + { 16030, true }, + { 16054, true }, + { 16072, false }, + { 16085, false }, + { 16094, true }, + { 16104, true }, { 16116, true }, - { 16143, true }, - { 16168, true }, + { 16138, true }, + { 16155, true }, + { 16172, true }, { 16192, true }, { 16203, true }, - { 16215, true }, - { 16225, true }, - { 16243, true }, - { 16258, true }, - { 16272, true }, - { 16284, true }, - { 16313, true }, - { 16325, true }, - { 16345, true }, - { 16364, true }, - { 16384, true }, - { 16400, true }, - { 16423, true }, - { 16440, false }, - { 16464, true }, - { 16476, true }, - { 16487, true }, - { 16500, true }, - { 16515, true }, - { 16527, true }, - { 16539, true }, - { 16551, true }, - { 16567, true }, - { 16584, true }, - { 16603, true }, - { 16619, true }, - { 16638, true }, - { 16659, true }, + { 16221, true }, + { 16253, true }, + { 16280, true }, + { 16305, true }, + { 16329, true }, + { 16340, true }, + { 16352, true }, + { 16362, true }, + { 16380, true }, + { 16395, true }, + { 16409, true }, + { 16421, true }, + { 16450, true }, + { 16462, true }, + { 16482, true }, + { 16501, true }, + { 16521, true }, + { 16537, true }, + { 16560, true }, + { 16577, false }, + { 16601, true }, + { 16613, true }, + { 16624, true }, + { 16637, true }, + { 16652, true }, + { 16664, true }, { 16676, true }, - { 16689, true }, - { 16699, true }, - { 16708, true }, - { 16718, true }, - { 16731, true }, - { 16743, true }, - { 16756, true }, - { 16774, true }, - { 16791, false }, - { 16815, true }, - { 16834, true }, - { 16848, true }, - { 16864, true }, - { 16876, true }, - { 16887, true }, - { 16907, true }, - { 16923, true }, - { 16944, true }, - { 16961, true }, - { 16975, true }, - { 16990, true }, - { 17005, true }, - { 17026, true }, - { 17044, true }, - { 17059, true }, - { 17070, true }, - { 17080, true }, - { 17098, true }, - { 17117, true }, - { 17136, true }, - { 17152, true }, - { 17164, true }, - { 17183, true }, - { 17197, true }, - { 17212, true }, - { 17222, true }, - { 17238, true }, - { 17251, true }, - { 17268, true }, - { 17284, false }, - { 17291, true }, - { 17301, true }, - { 17314, true }, - { 17327, true }, - { 17343, true }, - { 17354, true }, - { 17366, true }, - { 17377, true }, - { 17384, false }, - { 17395, true }, - { 17406, true }, + { 16692, true }, + { 16709, true }, + { 16728, true }, + { 16744, true }, + { 16763, true }, + { 16784, true }, + { 16801, true }, + { 16814, true }, + { 16824, true }, + { 16833, true }, + { 16843, true }, + { 16856, true }, + { 16868, true }, + { 16881, true }, + { 16899, true }, + { 16916, false }, + { 16940, true }, + { 16959, true }, + { 16973, true }, + { 16989, true }, + { 17001, true }, + { 17012, true }, + { 17032, true }, + { 17048, true }, + { 17069, true }, + { 17086, true }, + { 17100, true }, + { 17115, true }, + { 17130, true }, + { 17151, true }, + { 17169, true }, + { 17184, true }, + { 17195, true }, + { 17205, true }, + { 17223, true }, + { 17242, true }, + { 17261, true }, + { 17277, true }, + { 17289, true }, + { 17308, true }, + { 17322, true }, + { 17337, true }, + { 17347, true }, + { 17363, true }, + { 17376, true }, + { 17393, true }, + { 17409, false }, { 17416, true }, - { 17429, false }, - { 17437, true }, - { 17447, true }, - { 17454, true }, + { 17426, true }, + { 17439, true }, + { 17452, true }, { 17468, true }, { 17479, true }, - { 17491, false }, - { 17505, true }, - { 17521, true }, - { 17536, true }, - { 17555, true }, - { 17580, true }, - { 17589, true }, - { 17600, true }, - { 17608, true }, - { 17620, true }, - { 17650, true }, - { 17673, true }, - { 17686, true }, + { 17491, true }, + { 17502, true }, + { 17509, false }, + { 17520, true }, + { 17531, true }, + { 17541, true }, + { 17554, false }, + { 17562, true }, + { 17572, true }, + { 17579, true }, + { 17593, true }, + { 17604, true }, + { 17616, false }, + { 17630, true }, + { 17646, true }, + { 17661, true }, + { 17680, true }, { 17705, true }, - { 17717, true }, - { 17730, false }, - { 17749, true }, - { 17765, false }, - { 17781, true }, - { 17797, false }, - { 17812, false }, - { 17825, true }, - { 17836, true }, - { 17845, true }, - { 17861, true }, - { 17873, true }, - { 17895, true }, - { 17914, true }, - { 17922, true }, - { 17943, true }, - { 17953, true }, - { 17966, true }, - { 17975, true }, - { 17988, true }, + { 17714, true }, + { 17725, true }, + { 17733, true }, + { 17745, true }, + { 17775, true }, + { 17798, true }, + { 17811, true }, + { 17830, true }, + { 17842, true }, + { 17855, false }, + { 17874, true }, + { 17890, false }, + { 17906, true }, + { 17922, false }, + { 17937, false }, + { 17950, true }, + { 17961, true }, + { 17970, true }, + { 17986, true }, { 17998, true }, - { 18009, true }, { 18020, true }, - { 18031, true }, - { 18042, true }, - { 18054, true }, - { 18070, true }, - { 18087, false }, - { 18104, true }, - { 18126, true }, - { 18152, true }, - { 18165, true }, + { 18039, true }, + { 18047, true }, + { 18068, true }, + { 18078, true }, + { 18091, true }, + { 18100, true }, + { 18113, true }, + { 18123, true }, + { 18134, true }, + { 18145, true }, + { 18156, true }, + { 18167, true }, { 18179, true }, - { 18198, true }, - { 18219, true }, - { 18231, true }, - { 18245, true }, - { 18254, true }, - { 18267, true }, - { 18280, true }, - { 18294, true }, - { 18307, true }, + { 18195, true }, + { 18212, false }, + { 18229, true }, + { 18251, true }, + { 18277, true }, + { 18290, true }, + { 18304, true }, { 18323, true }, - { 18340, true }, - { 18351, true }, - { 18360, true }, - { 18373, true }, - { 18387, true }, - { 18400, true }, - { 18412, true }, - { 18433, false }, - { 18451, true }, - { 18474, true }, - { 18501, false }, - { 18522, false }, - { 18535, true }, - { 18549, true }, - { 18561, true }, - { 18581, true }, - { 18592, true }, - { 18605, true }, - { 18622, true }, - { 18634, true }, - { 18643, true }, - { 18657, true }, - { 18665, true }, - { 18682, true }, - { 18695, true }, - { 18708, true }, - { 18721, true }, - { 18733, true }, - { 18743, true }, - { 18756, true }, - { 18772, true }, - { 18793, true }, - { 18805, true }, - { 18823, true }, - { 18835, true }, - { 18850, true }, - { 18873, true }, - { 18886, true }, - { 18902, true }, - { 18908, true }, - { 18920, true }, + { 18344, true }, + { 18356, true }, + { 18370, true }, + { 18379, true }, + { 18392, true }, + { 18405, true }, + { 18419, true }, + { 18432, true }, + { 18448, true }, + { 18465, true }, + { 18476, true }, + { 18485, true }, + { 18498, true }, + { 18512, true }, + { 18525, true }, + { 18537, true }, + { 18558, false }, + { 18576, true }, + { 18599, true }, + { 18626, false }, + { 18647, false }, + { 18660, true }, + { 18674, true }, + { 18686, true }, + { 18706, true }, + { 18717, true }, + { 18730, true }, + { 18747, true }, + { 18759, true }, + { 18768, true }, + { 18782, true }, + { 18790, true }, + { 18807, true }, + { 18820, true }, + { 18833, true }, + { 18846, true }, + { 18858, true }, + { 18868, true }, + { 18881, true }, + { 18897, true }, + { 18918, true }, { 18930, true }, - { 18946, true }, - { 18958, true }, - { 18969, true }, - { 18979, true }, - { 18996, true }, - { 19010, true }, - { 19029, true }, - { 19041, false }, - { 19053, true }, - { 19066, true }, - { 19095, true }, + { 18948, true }, + { 18960, true }, + { 18975, true }, + { 18998, true }, + { 19011, true }, + { 19027, true }, + { 19033, true }, + { 19045, true }, + { 19055, true }, + { 19071, true }, + { 19083, true }, + { 19094, true }, + { 19104, true }, { 19121, true }, - { 19137, true }, - { 19150, true }, - { 19164, true }, - { 19179, true }, - { 19190, true }, - { 19200, true }, - { 19216, true }, - { 19235, true }, - { 19259, true }, - { 19287, true }, - { 19300, true }, - { 19314, true }, - { 19326, true }, - { 19336, true }, - { 19347, true }, - { 19365, true }, - { 19378, true }, - { 19387, true }, - { 19400, true }, + { 19135, true }, + { 19154, true }, + { 19166, false }, + { 19178, true }, + { 19191, true }, + { 19220, true }, + { 19246, true }, + { 19262, true }, + { 19275, true }, + { 19289, true }, + { 19304, true }, + { 19315, true }, + { 19325, true }, + { 19341, true }, + { 19360, true }, + { 19384, true }, { 19412, true }, - { 19424, true }, - { 19440, true }, - { 19454, true }, - { 19470, true }, - { 19486, true }, - { 19506, true }, - { 19514, true }, - { 19528, true }, - { 19541, true }, + { 19425, true }, + { 19439, true }, + { 19451, true }, + { 19461, true }, + { 19472, true }, + { 19490, true }, + { 19503, true }, + { 19512, true }, + { 19525, true }, + { 19537, true }, { 19549, true }, - { 19559, true }, + { 19565, true }, { 19579, true }, - { 19601, true }, - { 19614, true }, - { 19626, true }, - { 19642, true }, - { 19656, false }, - { 19669, true }, + { 19595, true }, + { 19611, true }, + { 19631, true }, + { 19639, true }, + { 19653, true }, + { 19666, true }, + { 19674, true }, { 19684, true }, - { 19697, true }, - { 19715, true }, - { 19727, true }, - { 19741, true }, - { 19755, true }, - { 19764, true }, - { 19776, true }, + { 19704, true }, + { 19726, true }, + { 19739, true }, + { 19751, true }, + { 19767, true }, + { 19781, false }, { 19794, true }, - { 19814, false }, - { 19829, true }, - { 19842, true }, - { 19855, true }, - { 19869, true }, - { 19895, true }, - { 19905, true }, + { 19809, true }, + { 19822, true }, + { 19840, true }, + { 19852, true }, + { 19866, true }, + { 19880, true }, + { 19889, true }, + { 19901, true }, { 19919, true }, - { 19931, true }, - { 19945, true }, - { 19963, true }, - { 19981, false }, - { 19997, true }, - { 20007, true }, - { 20015, true }, - { 20026, true }, - { 20039, true }, - { 20055, true }, - { 20068, true }, - { 20090, true }, - { 20105, true }, - { 20116, true }, - { 20126, true }, - { 20148, true }, - { 20163, true }, - { 20182, true }, - { 20195, false }, - { 20210, true }, + { 19939, false }, + { 19954, true }, + { 19967, true }, + { 19980, true }, + { 19994, true }, + { 20020, true }, + { 20030, true }, + { 20044, true }, + { 20056, true }, + { 20070, true }, + { 20088, true }, + { 20106, false }, + { 20122, true }, + { 20132, true }, + { 20140, true }, + { 20151, true }, + { 20164, true }, + { 20180, true }, + { 20193, true }, + { 20215, true }, { 20230, true }, { 20241, true }, { 20251, true }, - { 20263, true }, - { 20275, true }, + { 20273, true }, { 20288, true }, - { 20308, true }, - { 20320, true }, - { 20334, true }, - { 20346, false }, - { 20360, true }, - { 20372, true }, - { 20382, true }, - { 20395, true }, - { 20410, true }, - { 20428, true }, - { 20442, true }, - { 20455, true }, - { 20468, true }, - { 20480, true }, - { 20494, true }, - { 20514, true }, - { 20531, true }, - { 20544, true }, - { 20558, true }, - { 20571, true }, - { 20583, true }, - { 20601, true }, - { 20613, true }, - { 20624, true }, - { 20635, true }, - { 20648, true }, - { 20661, true }, - { 20676, true }, - { 20687, true }, - { 20698, true }, - { 20713, true }, - { 20727, true }, + { 20307, true }, + { 20320, false }, + { 20335, true }, + { 20355, true }, + { 20366, true }, + { 20376, true }, + { 20388, true }, + { 20400, true }, + { 20413, true }, + { 20433, true }, + { 20445, true }, + { 20459, true }, + { 20471, false }, + { 20485, true }, + { 20497, true }, + { 20507, true }, + { 20520, true }, + { 20535, true }, + { 20553, true }, + { 20567, true }, + { 20580, true }, + { 20593, true }, + { 20605, true }, + { 20619, true }, + { 20639, true }, + { 20656, true }, + { 20669, true }, + { 20683, true }, + { 20696, true }, + { 20708, true }, + { 20726, true }, { 20738, true }, - { 20748, true }, - { 20769, true }, - { 20780, true }, - { 20789, true }, - { 20809, true }, - { 20828, true }, - { 20835, true }, + { 20749, true }, + { 20760, true }, + { 20773, true }, + { 20786, true }, + { 20801, true }, + { 20812, true }, + { 20823, true }, + { 20838, true }, { 20852, true }, - { 20866, true }, - { 20876, true }, - { 20888, true }, - { 20900, true }, + { 20863, true }, + { 20873, true }, + { 20885, true }, + { 20906, true }, { 20917, true }, - { 20928, true }, - { 20941, true }, - { 20955, true }, - { 20968, true }, - { 20978, true }, - { 20996, true }, - { 21006, true }, - { 21020, true }, + { 20926, true }, + { 20946, true }, + { 20965, true }, + { 20972, true }, + { 20989, true }, + { 21003, true }, + { 21013, true }, + { 21025, true }, { 21037, true }, - { 21051, true }, + { 21048, true }, { 21061, true }, - { 21077, true }, + { 21075, true }, { 21088, true }, - { 21099, true }, - { 21118, true }, - { 21133, true }, + { 21098, true }, + { 21116, true }, + { 21126, true }, + { 21140, true }, { 21157, true }, - { 21174, true }, - { 21193, true }, - { 21210, true }, - { 21222, true }, + { 21171, true }, + { 21181, true }, + { 21197, true }, + { 21208, true }, + { 21219, true }, { 21238, true }, - { 21260, true }, - { 21286, true }, - { 21301, true }, - { 21314, true }, - { 21332, true }, - { 21343, true }, - { 21353, true }, - { 21363, true }, - { 21373, true }, - { 21392, true }, - { 21404, true }, - { 21424, true }, - { 21436, true }, - { 21454, true }, - { 21468, true }, - { 21482, true }, - { 21489, true }, - { 21504, true }, - { 21529, true }, - { 21551, true }, + { 21253, true }, + { 21277, true }, + { 21294, true }, + { 21313, true }, + { 21330, true }, + { 21342, true }, + { 21358, true }, + { 21380, true }, + { 21406, true }, + { 21421, true }, + { 21434, true }, + { 21452, true }, + { 21463, true }, + { 21473, true }, + { 21483, true }, + { 21493, true }, + { 21512, true }, + { 21524, true }, + { 21544, true }, + { 21556, true }, { 21574, true }, - { 21586, true }, - { 21599, true }, - { 21617, false }, - { 21629, true }, - { 21651, true }, - { 21664, true }, - { 21680, true }, - { 21700, true }, - { 21728, true }, - { 21748, true }, - { 21761, true }, + { 21588, true }, + { 21602, true }, + { 21609, true }, + { 21624, true }, + { 21649, true }, + { 21671, true }, + { 21694, true }, + { 21706, true }, + { 21719, true }, + { 21737, false }, + { 21749, true }, { 21771, true }, - { 21779, true }, - { 21791, true }, - { 21800, false }, - { 21809, true }, - { 21819, false }, - { 21839, true }, - { 21846, true }, - { 21853, true }, - { 21869, true }, - { 21885, true }, - { 21900, true }, - { 21910, true }, - { 21928, true }, - { 21943, true }, - { 21970, true }, - { 21987, true }, - { 22010, true }, - { 22028, true }, - { 22036, true }, - { 22051, true }, - { 22065, true }, - { 22076, true }, - { 22085, true }, - { 22101, true }, - { 22122, true }, - { 22149, true }, - { 22157, true }, - { 22167, true }, - { 22183, true }, - { 22195, true }, - { 22210, true }, - { 22222, true }, - { 22237, true }, - { 22252, true }, - { 22264, true }, + { 21784, true }, + { 21800, true }, + { 21820, true }, + { 21848, true }, + { 21868, true }, + { 21881, true }, + { 21891, true }, + { 21899, true }, + { 21911, true }, + { 21920, false }, + { 21929, true }, + { 21939, false }, + { 21959, true }, + { 21966, true }, + { 21973, true }, + { 21989, true }, + { 22005, true }, + { 22020, true }, + { 22030, true }, + { 22048, true }, + { 22063, true }, + { 22090, true }, + { 22107, true }, + { 22130, true }, + { 22148, true }, + { 22156, true }, + { 22171, true }, + { 22185, true }, + { 22196, true }, + { 22205, true }, + { 22221, true }, + { 22242, true }, + { 22269, true }, + { 22277, true }, { 22287, true }, - { 22300, true }, - { 22318, true }, - { 22340, true }, - { 22361, true }, - { 22381, true }, - { 22398, true }, - { 22424, true }, - { 22433, true }, - { 22455, true }, - { 22473, true }, - { 22487, true }, - { 22499, true }, - { 22513, true }, - { 22523, true }, - { 22537, true }, - { 22547, true }, - { 22562, true }, - { 22577, true }, - { 22588, true }, - { 22601, true }, - { 22613, true }, - { 22626, true }, - { 22638, true }, - { 22646, true }, - { 22664, true }, - { 22685, true }, - { 22706, true }, - { 22727, true }, - { 22741, true }, - { 22757, true }, - { 22770, true }, - { 22781, true }, - { 22793, true }, - { 22805, true }, - { 22817, true }, + { 22303, true }, + { 22315, true }, + { 22330, true }, + { 22342, true }, + { 22357, true }, + { 22372, true }, + { 22384, true }, + { 22407, true }, + { 22420, true }, + { 22438, true }, + { 22460, true }, + { 22481, true }, + { 22501, true }, + { 22518, true }, + { 22544, true }, + { 22553, true }, + { 22575, true }, + { 22593, true }, + { 22607, true }, + { 22619, true }, + { 22633, true }, + { 22643, true }, + { 22657, true }, + { 22667, true }, + { 22682, true }, + { 22697, true }, + { 22708, true }, + { 22721, true }, + { 22733, true }, + { 22746, true }, + { 22758, true }, + { 22766, true }, + { 22787, true }, + { 22808, true }, { 22829, true }, - { 22842, true }, - { 22852, true }, - { 22861, true }, - { 22871, true }, - { 22886, true }, - { 22897, true }, - { 22922, true }, - { 22937, true }, - { 22950, true }, - { 22969, true }, - { 22981, true }, - { 22997, true }, - { 23009, true }, - { 23025, true }, - { 23044, true }, - { 23063, true }, - { 23089, true }, - { 23101, true }, - { 23114, true }, - { 23129, true }, - { 23149, true }, - { 23160, true }, - { 23171, true }, - { 23186, true }, - { 23204, true }, - { 23234, true }, - { 23257, true }, - { 23270, false }, - { 23278, true }, - { 23290, true }, - { 23307, true }, - { 23317, true }, - { 23327, true }, - { 23335, true }, - { 23349, true }, - { 23365, true }, - { 23385, true }, - { 23406, true }, - { 23417, true }, - { 23434, true }, - { 23443, true }, - { 23472, true }, - { 23488, true }, - { 23514, true }, - { 23532, true }, - { 23553, true }, - { 23565, true }, - { 23576, true }, - { 23598, true }, - { 23610, true }, - { 23623, true }, - { 23635, true }, - { 23653, true }, - { 23671, true }, - { 23692, true }, - { 23717, true }, - { 23732, true }, - { 23750, true }, - { 23769, true }, - { 23794, true }, - { 23807, true }, - { 23822, true }, - { 23850, true }, - { 23873, true }, - { 23888, true }, - { 23901, true }, + { 22843, true }, + { 22859, true }, + { 22872, true }, + { 22883, true }, + { 22895, true }, + { 22907, true }, + { 22919, true }, + { 22931, true }, + { 22944, true }, + { 22954, true }, + { 22963, true }, + { 22973, true }, + { 22988, true }, + { 22999, true }, + { 23024, true }, + { 23039, true }, + { 23052, true }, + { 23071, true }, + { 23083, true }, + { 23099, true }, + { 23111, true }, + { 23127, true }, + { 23146, true }, + { 23165, true }, + { 23191, true }, + { 23203, true }, + { 23216, true }, + { 23231, true }, + { 23251, true }, + { 23262, true }, + { 23273, true }, + { 23288, true }, + { 23306, true }, + { 23336, true }, + { 23359, true }, + { 23372, false }, + { 23380, true }, + { 23392, true }, + { 23409, true }, + { 23419, true }, + { 23427, true }, + { 23441, true }, + { 23457, true }, + { 23477, true }, + { 23498, true }, + { 23509, true }, + { 23526, true }, + { 23535, true }, + { 23564, true }, + { 23580, true }, + { 23606, true }, + { 23624, true }, + { 23645, true }, + { 23657, true }, + { 23668, true }, + { 23690, true }, + { 23702, true }, + { 23715, true }, + { 23727, true }, + { 23745, true }, + { 23763, true }, + { 23784, true }, + { 23809, true }, + { 23824, true }, + { 23842, true }, + { 23861, true }, + { 23886, true }, + { 23899, true }, { 23914, true }, - { 23927, true }, - { 23943, true }, - { 23956, true }, - { 23969, true }, - { 23982, true }, - { 24011, true }, - { 24022, true }, - { 24040, true }, - { 24056, true }, - { 24066, true }, - { 24078, true }, - { 24094, true }, - { 24111, true }, - { 24123, true }, - { 24131, true }, - { 24142, true }, - { 24153, true }, - { 24171, true }, - { 24183, true }, - { 24198, true }, - { 24207, true }, - { 24225, true }, - { 24238, true }, - { 24260, true }, - { 24269, true }, - { 24283, true }, - { 24305, true }, - { 24319, true }, + { 23942, true }, + { 23965, true }, + { 23980, true }, + { 23993, true }, + { 24006, true }, + { 24019, true }, + { 24035, true }, + { 24048, true }, + { 24061, true }, + { 24074, true }, + { 24103, true }, + { 24114, true }, + { 24132, true }, + { 24148, true }, + { 24158, true }, + { 24170, true }, + { 24186, true }, + { 24203, true }, + { 24215, true }, + { 24223, true }, + { 24234, true }, + { 24245, true }, + { 24263, true }, + { 24275, true }, + { 24290, true }, + { 24299, true }, + { 24317, true }, { 24330, true }, - { 24338, true }, - { 24348, true }, - { 24371, true }, + { 24352, true }, + { 24361, true }, { 24383, true }, - { 24394, true }, - { 24402, true }, - { 24412, true }, - { 24424, true }, - { 24437, true }, + { 24397, true }, + { 24408, true }, + { 24416, true }, + { 24426, true }, { 24449, true }, - { 24464, true }, + { 24461, true }, { 24472, true }, - { 24482, true }, - { 24498, true }, - { 24508, true }, - { 24532, true }, - { 24541, true }, - { 24548, true }, - { 24565, true }, - { 24584, true }, - { 24592, true }, - { 24603, true }, + { 24480, true }, + { 24490, true }, + { 24502, true }, + { 24515, true }, + { 24527, true }, + { 24542, true }, + { 24550, true }, + { 24560, true }, + { 24576, true }, + { 24586, true }, { 24610, true }, + { 24619, true }, { 24626, true }, - { 24638, true }, - { 24649, true }, - { 24660, true }, - { 24671, true }, - { 24683, true }, - { 24695, false }, + { 24643, true }, + { 24662, true }, + { 24670, true }, + { 24681, true }, + { 24688, true }, { 24704, true }, - { 24720, true }, - { 24733, true }, - { 24742, true }, - { 24751, true }, - { 24772, true }, - { 24781, true }, - { 24796, true }, - { 24806, true }, - { 24818, true }, - { 24836, true }, + { 24716, true }, + { 24727, true }, + { 24738, true }, + { 24749, true }, + { 24761, true }, + { 24773, false }, + { 24782, true }, + { 24798, true }, + { 24811, true }, + { 24820, true }, + { 24829, true }, { 24850, true }, - { 24870, false }, - { 24886, true }, - { 24898, true }, - { 24909, true }, - { 24919, true }, - { 24929, true }, - { 24939, true }, - { 24949, true }, - { 24962, true }, - { 24975, true }, - { 24989, true }, - { 24999, true }, + { 24859, true }, + { 24874, true }, + { 24884, true }, + { 24896, true }, + { 24914, true }, + { 24928, true }, + { 24948, false }, + { 24964, true }, + { 24976, true }, + { 24987, true }, + { 24997, true }, { 25007, true }, { 25017, true }, - { 25029, true }, - { 25041, true }, + { 25027, true }, + { 25040, true }, { 25053, true }, - { 25070, true }, - { 25086, true }, - { 25102, true }, - { 25113, true }, - { 25124, false }, - { 25134, true }, - { 25151, true }, - { 25160, true }, + { 25063, true }, + { 25077, true }, + { 25087, true }, + { 25095, true }, + { 25105, true }, + { 25117, true }, + { 25129, true }, + { 25141, true }, + { 25158, true }, { 25174, true }, - { 25204, true }, - { 25219, false }, - { 25228, true }, - { 25242, true }, - { 25263, true }, - { 25275, true }, - { 25299, true }, - { 25316, true }, - { 25333, true }, - { 25346, true }, - { 25358, true }, - { 25381, true }, - { 25392, true }, - { 25403, true }, - { 25428, true }, - { 25452, true }, - { 25468, true }, - { 25500, true }, - { 25520, true }, - { 25538, true }, - { 25556, true }, - { 25571, true }, - { 25586, true }, - { 25606, true }, - { 25627, true }, - { 25651, true }, - { 25661, true }, - { 25671, true }, - { 25680, true }, - { 25689, true }, - { 25699, true }, - { 25710, true }, - { 25735, true }, - { 25764, true }, - { 25774, true }, - { 25791, false }, - { 25799, false }, - { 25808, true }, - { 25822, false }, - { 25839, true }, - { 25851, true }, - { 25866, true }, - { 25881, true }, + { 25190, true }, + { 25201, true }, + { 25212, false }, + { 25222, true }, + { 25239, true }, + { 25251, true }, + { 25260, true }, + { 25274, true }, + { 25304, true }, + { 25319, false }, + { 25328, true }, + { 25342, true }, + { 25356, true }, + { 25377, true }, + { 25389, true }, + { 25413, true }, + { 25430, true }, + { 25447, true }, + { 25460, true }, + { 25472, true }, + { 25495, true }, + { 25506, true }, + { 25517, true }, + { 25542, true }, + { 25566, true }, + { 25582, true }, + { 25614, true }, + { 25634, true }, + { 25652, true }, + { 25670, true }, + { 25685, true }, + { 25700, true }, + { 25720, true }, + { 25741, true }, + { 25765, true }, + { 25775, true }, + { 25785, true }, + { 25794, true }, + { 25803, true }, + { 25813, true }, + { 25824, true }, + { 25849, true }, + { 25878, true }, { 25888, true }, - { 25901, true }, - { 25913, true }, - { 25937, true }, - { 25951, true }, - { 25959, true }, - { 25983, true }, - { 25998, true }, - { 26007, true }, - { 26020, true }, - { 26032, true }, - { 26046, true }, - { 26057, true }, - { 26066, true }, - { 26085, true }, - { 26102, true }, - { 26112, true }, + { 25905, false }, + { 25913, false }, + { 25922, true }, + { 25936, false }, + { 25953, true }, + { 25965, true }, + { 25980, true }, + { 25995, true }, + { 26002, true }, + { 26015, true }, + { 26027, true }, + { 26041, true }, + { 26049, true }, + { 26073, true }, + { 26088, true }, + { 26097, true }, + { 26110, true }, { 26122, true }, - { 26139, true }, - { 26152, true }, - { 26168, true }, - { 26178, true }, - { 26191, true }, - { 26205, true }, - { 26219, true }, - { 26231, true }, - { 26251, true }, - { 26266, true }, - { 26282, true }, - { 26296, true }, - { 26311, true }, - { 26334, true }, - { 26343, true }, - { 26355, true }, - { 26370, true }, - { 26382, true }, - { 26397, true }, - { 26409, true }, - { 26420, true }, - { 26431, true }, - { 26442, true }, - { 26465, true }, - { 26480, true }, - { 26495, false }, - { 26510, false }, - { 26526, true }, - { 26548, true }, - { 26566, true }, - { 26583, true }, - { 26601, true }, - { 26612, true }, - { 26625, true }, - { 26642, true }, - { 26669, true }, - { 26678, true }, - { 26694, true }, - { 26711, true }, - { 26731, true }, - { 26746, true }, - { 26761, true }, - { 26772, true }, - { 26795, true }, - { 26807, true }, - { 26820, true }, - { 26833, true }, - { 26847, true }, - { 26860, true }, - { 26878, true }, - { 26896, true }, - { 26914, true }, - { 26931, true }, - { 26945, true }, - { 26955, true }, + { 26136, true }, + { 26147, true }, + { 26156, true }, + { 26175, true }, + { 26192, true }, + { 26202, true }, + { 26212, true }, + { 26229, true }, + { 26242, true }, + { 26258, true }, + { 26268, true }, + { 26281, true }, + { 26295, true }, + { 26309, true }, + { 26321, true }, + { 26341, true }, + { 26356, true }, + { 26372, true }, + { 26386, true }, + { 26401, true }, + { 26424, true }, + { 26433, true }, + { 26445, true }, + { 26460, true }, + { 26472, true }, + { 26487, true }, + { 26499, true }, + { 26510, true }, + { 26521, true }, + { 26532, true }, + { 26555, true }, + { 26570, true }, + { 26585, false }, + { 26600, false }, + { 26616, true }, + { 26638, true }, + { 26656, true }, + { 26673, true }, + { 26691, true }, + { 26702, true }, + { 26715, true }, + { 26732, true }, + { 26759, true }, + { 26768, true }, + { 26784, true }, + { 26801, true }, + { 26821, true }, + { 26836, true }, + { 26851, true }, + { 26862, true }, + { 26885, true }, + { 26897, true }, + { 26910, true }, + { 26923, true }, + { 26937, true }, + { 26950, true }, { 26968, true }, - { 26984, true }, - { 26997, true }, - { 27006, true }, + { 26986, true }, + { 27004, true }, { 27021, true }, - { 27038, true }, - { 27049, false }, - { 27059, true }, - { 27070, true }, - { 27084, true }, - { 27097, true }, - { 27107, true }, - { 27120, true }, - { 27134, true }, - { 27145, true }, - { 27155, true }, - { 27166, true }, - { 27189, true }, - { 27209, true }, - { 27222, true }, - { 27241, true }, - { 27269, true }, - { 27290, true }, - { 27300, true }, - { 27317, true }, - { 27337, true }, - { 27356, true }, - { 27371, true }, - { 27384, true }, - { 27404, true }, - { 27422, true }, - { 27433, true }, + { 27035, true }, + { 27045, true }, + { 27058, true }, + { 27074, true }, + { 27087, true }, + { 27096, true }, + { 27111, true }, + { 27128, true }, + { 27139, false }, + { 27149, true }, + { 27160, true }, + { 27174, true }, + { 27187, true }, + { 27197, true }, + { 27210, true }, + { 27224, true }, + { 27235, true }, + { 27245, true }, + { 27256, true }, + { 27279, true }, + { 27299, true }, + { 27312, true }, + { 27331, true }, + { 27359, true }, + { 27380, true }, + { 27390, true }, + { 27407, true }, + { 27427, true }, { 27446, true }, { 27461, true }, - { 27471, true }, - { 27484, true }, - { 27495, true }, - { 27506, true }, - { 27520, true }, + { 27474, true }, + { 27494, true }, + { 27512, true }, + { 27523, true }, { 27536, true }, - { 27562, true }, - { 27578, true }, - { 27588, true }, + { 27551, true }, + { 27561, true }, + { 27574, true }, + { 27585, true }, + { 27596, true }, { 27610, true }, - { 27621, true }, - { 27644, true }, - { 27655, true }, - { 27672, true }, - { 27688, true }, - { 27704, true }, - { 27719, true }, - { 27735, true }, - { 27750, true }, - { 27765, true }, - { 27782, true }, + { 27626, true }, + { 27652, true }, + { 27668, true }, + { 27678, true }, + { 27700, true }, + { 27711, true }, + { 27734, true }, + { 27745, true }, + { 27762, true }, + { 27778, true }, { 27794, true }, - { 27821, true }, - { 27833, false }, - { 27845, true }, - { 27862, true }, - { 27871, true }, - { 27880, true }, - { 27889, true }, - { 27908, true }, - { 27923, true }, - { 27932, true }, - { 27947, true }, - { 27964, true }, - { 27980, true }, - { 27989, true }, - { 28000, true }, - { 28010, true }, - { 28028, true }, - { 28039, true }, - { 28051, true }, - { 28059, true }, - { 28077, true }, + { 27809, true }, + { 27825, true }, + { 27840, true }, + { 27855, true }, + { 27872, true }, + { 27884, true }, + { 27911, true }, + { 27923, false }, + { 27935, true }, + { 27952, true }, + { 27961, true }, + { 27970, true }, + { 27979, true }, + { 27998, true }, + { 28013, true }, + { 28022, true }, + { 28037, true }, + { 28054, true }, + { 28070, true }, + { 28079, true }, { 28090, true }, { 28100, true }, - { 28111, true }, - { 28125, true }, - { 28135, true }, - { 28145, true }, - { 28152, true }, - { 28165, true }, - { 28175, true }, - { 28199, false }, - { 28210, true }, - { 28228, true }, + { 28118, true }, + { 28129, true }, + { 28141, true }, + { 28149, true }, + { 28167, true }, + { 28180, true }, + { 28190, true }, + { 28201, true }, + { 28215, true }, + { 28225, true }, { 28235, true }, - { 28256, true }, - { 28272, true }, - { 28281, true }, - { 28294, true }, - { 28307, true }, - { 28324, true }, - { 28336, true }, - { 28348, true }, - { 28367, true }, - { 28380, false }, - { 28394, true }, - { 28407, true }, - { 28418, true }, - { 28429, true }, - { 28441, true }, - { 28455, true }, - { 28473, true }, - { 28489, true }, - { 28501, true }, - { 28514, true }, - { 28523, true }, - { 28541, true }, - { 28558, true }, + { 28242, true }, + { 28255, true }, + { 28265, true }, + { 28289, false }, + { 28300, true }, + { 28318, true }, + { 28325, true }, + { 28346, true }, + { 28362, true }, + { 28371, true }, + { 28384, true }, + { 28397, true }, + { 28414, true }, + { 28426, true }, + { 28438, true }, + { 28457, true }, + { 28470, false }, + { 28484, true }, + { 28497, true }, + { 28508, true }, + { 28519, true }, + { 28531, true }, + { 28545, true }, + { 28563, true }, { 28579, true }, - { 28590, true }, - { 28601, true }, - { 28626, true }, - { 28639, true }, - { 28650, true }, - { 28660, true }, - { 28674, true }, - { 28687, true }, - { 28701, true }, - { 28714, true }, - { 28728, true }, - { 28743, true }, - { 28755, true }, - { 28772, true }, - { 28788, true }, - { 28808, true }, - { 28825, true }, - { 28835, false }, - { 28846, true }, - { 28861, true }, - { 28879, true }, - { 28892, true }, - { 28905, true }, - { 28921, true }, - { 28935, true }, - { 28949, true }, - { 28968, true }, - { 28990, true }, - { 29002, true }, - { 29015, true }, - { 29030, true }, - { 29042, true }, - { 29058, true }, - { 29071, true }, + { 28591, true }, + { 28604, true }, + { 28613, true }, + { 28631, true }, + { 28648, true }, + { 28669, true }, + { 28680, true }, + { 28691, true }, + { 28716, true }, + { 28729, true }, + { 28740, true }, + { 28750, true }, + { 28764, true }, + { 28777, true }, + { 28791, true }, + { 28804, true }, + { 28818, true }, + { 28833, true }, + { 28845, true }, + { 28862, true }, + { 28878, true }, + { 28898, true }, + { 28915, true }, + { 28931, true }, + { 28941, false }, + { 28952, true }, + { 28967, true }, + { 28985, true }, + { 28998, true }, + { 29011, true }, + { 29027, true }, + { 29041, true }, + { 29055, true }, + { 29074, true }, { 29096, true }, - { 29107, true }, - { 29119, true }, - { 29147, true }, - { 29162, true }, - { 29178, true }, - { 29189, true }, - { 29200, true }, - { 29210, true }, - { 29226, true }, - { 29239, true }, - { 29249, true }, - { 29260, true }, - { 29271, true }, - { 29282, true }, - { 29293, true }, - { 29304, true }, - { 29315, true }, - { 29326, true }, - { 29348, false }, - { 29362, true }, - { 29374, true }, - { 29383, true }, - { 29395, true }, - { 29409, true }, - { 29421, false }, - { 29440, true }, - { 29467, true }, - { 29483, true }, - { 29510, true }, - { 29531, true }, - { 29547, true }, - { 29558, true }, - { 29568, true }, - { 29583, false }, - { 29598, true }, - { 29608, true }, - { 29621, true }, - { 29632, true }, - { 29644, true }, - { 29658, true }, - { 29672, true }, - { 29694, true }, - { 29707, true }, - { 29722, true }, - { 29737, true }, - { 29756, true }, - { 29777, true }, - { 29787, true }, - { 29801, true }, - { 29811, true }, - { 29824, true }, - { 29839, true }, - { 29860, true }, - { 29881, true }, - { 29899, true }, - { 29911, true }, - { 29929, true }, - { 29950, true }, - { 29970, true }, - { 29988, true }, - { 30006, true }, - { 30020, true }, - { 30033, true }, - { 30052, false }, - { 30066, true }, + { 29108, true }, + { 29121, true }, + { 29136, true }, + { 29148, true }, + { 29164, true }, + { 29177, true }, + { 29202, true }, + { 29213, true }, + { 29225, true }, + { 29253, true }, + { 29268, true }, + { 29284, true }, + { 29295, true }, + { 29305, true }, + { 29321, true }, + { 29334, true }, + { 29344, true }, + { 29355, true }, + { 29366, true }, + { 29377, true }, + { 29388, true }, + { 29399, true }, + { 29410, true }, + { 29421, true }, + { 29443, false }, + { 29457, true }, + { 29469, true }, + { 29478, true }, + { 29490, true }, + { 29504, true }, + { 29516, false }, + { 29535, true }, + { 29562, true }, + { 29578, true }, + { 29605, true }, + { 29626, true }, + { 29642, true }, + { 29653, true }, + { 29663, true }, + { 29678, true }, + { 29689, false }, + { 29704, true }, + { 29714, true }, + { 29727, true }, + { 29738, true }, + { 29750, true }, + { 29764, true }, + { 29778, true }, + { 29800, true }, + { 29813, true }, + { 29828, true }, + { 29843, true }, + { 29862, true }, + { 29883, true }, + { 29893, true }, + { 29907, true }, + { 29917, true }, + { 29930, true }, + { 29945, true }, + { 29966, true }, + { 29987, true }, + { 30005, true }, + { 30017, true }, + { 30035, true }, + { 30056, true }, { 30076, true }, - { 30087, true }, - { 30097, true }, + { 30094, true }, { 30112, true }, - { 30127, true }, - { 30141, true }, - { 30155, true }, - { 30168, true }, - { 30181, true }, - { 30195, true }, - { 30212, true }, - { 30229, true }, - { 30239, true }, - { 30252, true }, - { 30269, true }, - { 30278, true }, - { 30292, true }, - { 30312, true }, - { 30330, true }, - { 30350, true }, - { 30364, true }, - { 30380, false }, - { 30393, true }, - { 30402, true }, - { 30423, true }, - { 30433, true }, - { 30462, true }, - { 30490, true }, - { 30507, true }, - { 30515, true }, - { 30524, true }, - { 30543, true }, - { 30560, true }, - { 30569, true }, - { 30586, true }, - { 30603, true }, - { 30628, true }, - { 30641, true }, - { 30651, true }, - { 30661, true }, - { 30679, true }, - { 30698, true }, - { 30722, true }, - { 30748, true }, - { 30768, true }, - { 30783, true }, - { 30798, true }, - { 30831, true }, - { 30849, true }, - { 30877, true }, - { 30893, true }, - { 30911, true }, - { 30933, true }, - { 30950, true }, - { 30964, true }, - { 30990, true }, - { 31004, true }, - { 31022, true }, - { 31044, true }, - { 31058, true }, - { 31078, true }, - { 31091, true }, - { 31104, true }, - { 31116, true }, + { 30126, true }, + { 30139, true }, + { 30158, false }, + { 30172, true }, + { 30182, true }, + { 30193, true }, + { 30203, true }, + { 30218, true }, + { 30233, true }, + { 30247, true }, + { 30261, true }, + { 30274, true }, + { 30287, true }, + { 30301, true }, + { 30318, true }, + { 30335, true }, + { 30345, true }, + { 30358, true }, + { 30375, true }, + { 30384, true }, + { 30398, true }, + { 30418, true }, + { 30436, true }, + { 30456, true }, + { 30470, true }, + { 30486, false }, + { 30499, true }, + { 30508, true }, + { 30529, true }, + { 30539, true }, + { 30568, true }, + { 30596, true }, + { 30613, true }, + { 30621, true }, + { 30630, true }, + { 30649, true }, + { 30666, true }, + { 30675, true }, + { 30692, true }, + { 30709, true }, + { 30734, true }, + { 30747, true }, + { 30757, true }, + { 30767, true }, + { 30785, true }, + { 30804, true }, + { 30828, true }, + { 30854, true }, + { 30874, true }, + { 30889, true }, + { 30904, true }, + { 30937, true }, + { 30955, true }, + { 30983, true }, + { 30999, true }, + { 31017, true }, + { 31039, true }, + { 31056, true }, + { 31070, true }, + { 31096, true }, + { 31110, true }, { 31128, true }, - { 31140, true }, - { 31156, true }, - { 31172, true }, - { 31186, true }, - { 31204, true }, - { 31219, true }, - { 31231, true }, - { 31239, true }, - { 31258, true }, - { 31271, true }, - { 31289, true }, - { 31311, true }, - { 31328, true }, - { 31343, true }, + { 31150, true }, + { 31164, true }, + { 31184, true }, + { 31197, true }, + { 31210, true }, + { 31222, true }, + { 31234, true }, + { 31246, true }, + { 31262, true }, + { 31278, true }, + { 31292, true }, + { 31310, true }, + { 31325, true }, + { 31337, true }, + { 31345, true }, { 31364, true }, - { 31382, true }, - { 31396, true }, - { 31412, true }, - { 31431, true }, - { 31452, true }, - { 31469, true }, - { 31483, true }, - { 31497, true }, + { 31377, true }, + { 31395, true }, + { 31417, true }, + { 31434, true }, + { 31449, true }, + { 31470, true }, + { 31488, true }, + { 31502, true }, { 31518, true }, - { 31531, true }, - { 31542, true }, - { 31552, true }, - { 31582, true }, - { 31598, true }, - { 31611, true }, - { 31630, true }, - { 31647, true }, - { 31665, true }, - { 31683, true }, - { 31692, true }, - { 31708, true }, - { 31715, true }, - { 31735, true }, - { 31754, true }, - { 31772, true }, - { 31788, true }, - { 31802, true }, + { 31537, true }, + { 31558, true }, + { 31575, true }, + { 31589, true }, + { 31603, true }, + { 31624, true }, + { 31637, true }, + { 31648, true }, + { 31658, true }, + { 31688, true }, + { 31704, true }, + { 31717, true }, + { 31736, true }, + { 31753, true }, + { 31771, true }, + { 31789, true }, + { 31798, true }, { 31814, true }, - { 31825, true }, - { 31843, true }, - { 31861, true }, - { 31875, true }, - { 31885, true }, - { 31895, false }, - { 31904, true }, - { 31918, true }, - { 31932, true }, + { 31821, true }, + { 31841, true }, + { 31860, true }, + { 31878, true }, + { 31894, true }, + { 31908, true }, + { 31920, true }, + { 31931, true }, { 31949, true }, - { 31961, true }, - { 31976, true }, - { 31984, true }, - { 31996, true }, + { 31967, true }, + { 31981, true }, + { 31991, true }, + { 32001, false }, { 32010, true }, - { 32025, true }, + { 32024, true }, { 32038, true }, - { 32052, true }, - { 32065, true }, - { 32076, true }, - { 32084, true }, - { 32107, true }, - { 32126, true }, - { 32138, true }, - { 32153, true }, - { 32169, true }, - { 32178, true }, - { 32193, true }, - { 32206, true }, - { 32221, true }, - { 32234, true }, - { 32245, true }, - { 32255, true }, - { 32267, true }, - { 32287, true }, - { 32300, true }, - { 32319, true }, - { 32329, true }, - { 32337, true }, - { 32356, true }, - { 32366, true }, - { 32387, true }, - { 32399, true }, - { 32414, true }, - { 32429, true }, - { 32444, true }, - { 32459, true }, - { 32474, true }, - { 32487, true }, - { 32497, true }, - { 32509, true }, - { 32524, true }, - { 32540, true }, - { 32559, true }, - { 32575, true }, - { 32596, true }, - { 32605, true }, - { 32616, true }, - { 32645, true }, - { 32655, true }, - { 32675, true }, - { 32689, true }, - { 32704, true }, - { 32715, true }, - { 32728, true }, - { 32747, true }, - { 32762, true }, - { 32777, true }, - { 32787, true }, - { 32797, true }, - { 32816, true }, - { 32838, true }, - { 32853, true }, - { 32866, true }, - { 32893, true }, - { 32913, true }, - { 32927, false }, - { 32939, true }, - { 32954, true }, - { 32968, true }, - { 32978, true }, - { 32999, true }, + { 32055, true }, + { 32067, true }, + { 32082, true }, + { 32090, true }, + { 32102, true }, + { 32116, true }, + { 32131, true }, + { 32144, true }, + { 32158, true }, + { 32171, true }, + { 32182, true }, + { 32190, true }, + { 32213, true }, + { 32232, true }, + { 32244, true }, + { 32259, true }, + { 32275, true }, + { 32284, true }, + { 32299, true }, + { 32312, true }, + { 32327, true }, + { 32340, true }, + { 32351, true }, + { 32361, true }, + { 32373, true }, + { 32393, true }, + { 32406, true }, + { 32425, true }, + { 32435, true }, + { 32443, true }, + { 32462, true }, + { 32472, true }, + { 32493, true }, + { 32505, true }, + { 32520, true }, + { 32535, true }, + { 32550, true }, + { 32565, true }, + { 32580, true }, + { 32593, true }, + { 32603, true }, + { 32615, true }, + { 32630, true }, + { 32646, true }, + { 32665, true }, + { 32681, true }, + { 32702, true }, + { 32711, true }, + { 32722, true }, + { 32751, true }, + { 32761, true }, + { 32781, true }, + { 32795, true }, + { 32810, true }, + { 32821, true }, + { 32834, true }, + { 32849, true }, + { 32868, true }, + { 32883, true }, + { 32898, true }, + { 32908, true }, + { 32918, true }, + { 32937, true }, + { 32959, true }, + { 32974, true }, + { 32987, true }, { 33014, true }, - { 33022, true }, - { 33039, true }, - { 33061, true }, - { 33079, false }, - { 33098, true }, - { 33112, true }, - { 33132, true }, - { 33144, true }, - { 33159, true }, - { 33174, true }, - { 33191, true }, - { 33206, true }, - { 33217, true }, - { 33235, true }, - { 33245, true }, - { 33261, true }, - { 33279, true }, - { 33291, true }, - { 33303, true }, - { 33320, true }, - { 33350, false }, - { 33363, true }, - { 33381, true }, - { 33395, true }, + { 33034, true }, + { 33048, false }, + { 33060, true }, + { 33075, true }, + { 33089, true }, + { 33099, true }, + { 33120, true }, + { 33135, true }, + { 33143, true }, + { 33160, true }, + { 33182, true }, + { 33200, false }, + { 33219, true }, + { 33233, true }, + { 33253, true }, + { 33265, true }, + { 33280, true }, + { 33295, true }, + { 33312, true }, + { 33327, true }, + { 33338, true }, + { 33356, true }, + { 33366, true }, + { 33382, true }, + { 33400, true }, { 33412, true }, - { 33430, true }, + { 33424, true }, { 33441, true }, - { 33454, true }, - { 33470, true }, - { 33482, true }, - { 33505, true }, - { 33524, true }, - { 33537, true }, - { 33549, false }, - { 33560, true }, - { 33573, true }, + { 33471, false }, + { 33484, true }, + { 33502, true }, + { 33516, true }, + { 33533, true }, + { 33551, true }, + { 33562, true }, + { 33575, true }, { 33591, true }, - { 33615, true }, - { 33635, true }, - { 33651, true }, - { 33663, true }, - { 33684, true }, - { 33700, true }, - { 33711, true }, - { 33723, true }, - { 33740, true }, - { 33758, true }, - { 33771, true }, - { 33785, true }, - { 33795, false }, - { 33809, true }, - { 33826, true }, - { 33837, true }, - { 33846, true }, - { 33858, true }, - { 33868, true }, - { 33882, true }, - { 33895, true }, - { 33909, true }, - { 33923, true }, - { 33941, true }, - { 33960, true }, - { 33978, true }, - { 33996, true }, - { 34009, true }, - { 34020, true }, - { 34034, true }, - { 34046, true }, - { 34057, true }, - { 34068, true }, - { 34081, true }, - { 34093, true }, - { 34104, true }, - { 34123, true }, - { 34139, true }, - { 34154, true }, - { 34168, true }, - { 34185, true }, + { 33603, true }, + { 33626, true }, + { 33645, true }, + { 33658, true }, + { 33670, false }, + { 33681, true }, + { 33694, true }, + { 33712, true }, + { 33736, true }, + { 33756, true }, + { 33772, true }, + { 33784, true }, + { 33805, true }, + { 33821, true }, + { 33832, true }, + { 33844, true }, + { 33861, true }, + { 33879, true }, + { 33892, true }, + { 33906, true }, + { 33916, true }, + { 33933, true }, + { 33944, true }, + { 33953, true }, + { 33965, true }, + { 33975, true }, + { 33989, true }, + { 34002, true }, + { 34016, true }, + { 34030, true }, + { 34048, true }, + { 34067, true }, + { 34085, true }, + { 34103, true }, + { 34116, true }, + { 34127, true }, + { 34141, true }, + { 34153, true }, + { 34164, true }, + { 34175, true }, + { 34188, true }, { 34200, true }, - { 34225, true }, - { 34243, true }, - { 34255, true }, - { 34264, true }, - { 34279, true }, - { 34293, true }, - { 34306, true }, - { 34318, true }, - { 34328, true }, - { 34340, true }, - { 34355, true }, - { 34374, true }, - { 34389, true }, - { 34409, true }, - { 34432, true }, - { 34451, true }, - { 34465, true }, - { 34476, true }, - { 34490, true }, - { 34501, true }, - { 34512, true }, - { 34522, true }, - { 34536, true }, - { 34546, true }, - { 34559, true }, - { 34570, true }, - { 34585, true }, - { 34598, true }, - { 34612, true }, - { 34624, true }, - { 34638, true }, - { 34650, true }, - { 34663, true }, - { 34688, false }, - { 34700, true }, - { 34717, true }, - { 34728, true }, - { 34739, true }, - { 34750, true }, - { 34769, true }, - { 34784, true }, - { 34800, true }, - { 34810, true }, - { 34820, true }, - { 34834, true }, - { 34851, true }, - { 34862, true }, - { 34874, true }, - { 34889, true }, - { 34898, true }, - { 34915, true }, - { 34923, true }, - { 34941, false }, - { 34949, true }, - { 34962, true }, - { 34974, true }, - { 34986, true }, - { 35000, true }, - { 35013, true }, - { 35026, true }, - { 35042, true }, + { 34211, true }, + { 34230, true }, + { 34246, true }, + { 34261, true }, + { 34275, true }, + { 34292, true }, + { 34307, true }, + { 34332, true }, + { 34350, true }, + { 34362, true }, + { 34371, true }, + { 34386, true }, + { 34400, true }, + { 34413, true }, + { 34425, true }, + { 34435, true }, + { 34447, true }, + { 34462, true }, + { 34481, true }, + { 34496, true }, + { 34516, true }, + { 34539, true }, + { 34558, true }, + { 34572, true }, + { 34583, true }, + { 34597, true }, + { 34608, true }, + { 34619, true }, + { 34629, true }, + { 34643, true }, + { 34653, true }, + { 34666, true }, + { 34677, true }, + { 34692, true }, + { 34705, true }, + { 34719, true }, + { 34731, true }, + { 34745, true }, + { 34757, true }, + { 34770, true }, + { 34795, false }, + { 34807, true }, + { 34824, true }, + { 34835, true }, + { 34846, true }, + { 34857, true }, + { 34876, true }, + { 34891, true }, + { 34907, true }, + { 34917, true }, + { 34927, true }, + { 34941, true }, + { 34958, true }, + { 34969, true }, + { 34981, true }, + { 34996, true }, + { 35005, true }, + { 35022, true }, + { 35030, true }, + { 35048, false }, { 35056, true }, - { 35073, true }, - { 35090, true }, - { 35103, true }, - { 35116, true }, - { 35129, true }, - { 35142, true }, - { 35155, true }, - { 35168, true }, - { 35181, true }, - { 35194, true }, - { 35207, true }, - { 35220, true }, - { 35233, true }, - { 35246, true }, - { 35259, true }, - { 35272, true }, - { 35289, true }, - { 35308, true }, - { 35323, true }, - { 35336, true }, - { 35347, true }, - { 35359, true }, - { 35381, true }, - { 35393, true }, - { 35416, true }, - { 35440, true }, - { 35458, true }, - { 35472, true }, - { 35492, true }, - { 35505, true }, - { 35524, true }, - { 35540, true }, - { 35555, true }, - { 35576, true }, - { 35587, true }, - { 35606, true }, - { 35622, true }, - { 35635, true }, - { 35650, true }, - { 35668, true }, - { 35684, true }, - { 35700, true }, - { 35726, true }, - { 35745, true }, - { 35755, true }, - { 35769, true }, - { 35784, true }, - { 35803, true }, - { 35815, true }, - { 35832, true }, - { 35843, true }, - { 35859, true }, - { 35871, true }, - { 35881, true }, - { 35897, true }, - { 35908, true }, - { 35918, true }, + { 35069, true }, + { 35081, true }, + { 35093, true }, + { 35107, true }, + { 35120, true }, + { 35133, true }, + { 35149, true }, + { 35163, true }, + { 35180, true }, + { 35197, true }, + { 35210, true }, + { 35223, true }, + { 35236, true }, + { 35249, true }, + { 35262, true }, + { 35275, true }, + { 35288, true }, + { 35301, true }, + { 35314, true }, + { 35327, true }, + { 35340, true }, + { 35353, true }, + { 35366, true }, + { 35379, true }, + { 35396, true }, + { 35415, true }, + { 35430, true }, + { 35443, true }, + { 35454, true }, + { 35466, true }, + { 35488, true }, + { 35500, true }, + { 35523, true }, + { 35547, true }, + { 35565, true }, + { 35579, true }, + { 35599, true }, + { 35612, true }, + { 35631, true }, + { 35647, true }, + { 35662, true }, + { 35683, true }, + { 35694, true }, + { 35713, true }, + { 35729, true }, + { 35742, true }, + { 35757, true }, + { 35775, true }, + { 35791, true }, + { 35807, true }, + { 35833, true }, + { 35852, true }, + { 35862, true }, + { 35876, true }, + { 35891, true }, + { 35910, true }, + { 35922, true }, { 35939, true }, - { 35953, true }, - { 35969, true }, - { 35991, true }, - { 36003, true }, - { 36014, true }, - { 36034, true }, - { 36049, true }, - { 36064, true }, - { 36083, true }, - { 36096, true }, + { 35950, true }, + { 35966, true }, + { 35978, true }, + { 35988, true }, + { 36004, true }, + { 36015, true }, + { 36025, true }, + { 36046, true }, + { 36060, true }, + { 36076, true }, + { 36098, true }, { 36110, true }, - { 36132, true }, - { 36151, true }, - { 36170, true }, + { 36121, true }, + { 36141, true }, + { 36156, true }, + { 36171, true }, { 36190, true }, - { 36204, true }, - { 36218, true }, - { 36226, true }, + { 36203, true }, + { 36217, true }, { 36239, true }, - { 36253, true }, - { 36264, true }, + { 36258, true }, { 36277, true }, - { 36292, true }, - { 36308, true }, - { 36323, true }, - { 36335, true }, - { 36349, true }, - { 36361, true }, - { 36373, true }, - { 36390, false }, - { 36406, false }, - { 36423, true }, - { 36435, true }, - { 36448, true }, - { 36463, true }, + { 36297, true }, + { 36311, true }, + { 36325, true }, + { 36333, true }, + { 36346, true }, + { 36360, true }, + { 36371, true }, + { 36384, true }, + { 36399, true }, + { 36415, true }, + { 36430, true }, + { 36442, true }, + { 36456, true }, + { 36468, true }, { 36480, true }, - { 36496, true }, - { 36521, true }, - { 36534, true }, - { 36547, true }, - { 36560, true }, - { 36576, true }, - { 36590, true }, - { 36604, true }, - { 36612, true }, - { 36623, true }, - { 36632, true }, + { 36497, false }, + { 36513, false }, + { 36530, true }, + { 36542, true }, + { 36555, true }, + { 36570, true }, + { 36587, true }, + { 36603, true }, + { 36628, true }, { 36641, true }, - { 36650, true }, - { 36662, true }, - { 36678, true }, - { 36692, true }, - { 36708, true }, + { 36654, true }, + { 36667, true }, + { 36683, true }, + { 36697, true }, + { 36711, true }, { 36719, true }, - { 36732, true }, - { 36747, true }, - { 36758, true }, - { 36772, true }, - { 36786, true }, + { 36730, true }, + { 36739, true }, + { 36748, true }, + { 36757, true }, + { 36769, true }, + { 36785, true }, { 36799, true }, - { 36811, true }, - { 36823, true }, - { 36848, true }, - { 36872, true }, - { 36885, true }, - { 36899, true }, - { 36912, true }, - { 36933, true }, - { 36953, true }, - { 36967, true }, - { 36982, true }, - { 37005, true }, - { 37014, true }, - { 37025, true }, - { 37035, true }, - { 37045, true }, - { 37062, true }, - { 37080, true }, - { 37105, true }, - { 37127, true }, - { 37140, true }, - { 37154, true }, - { 37167, true }, - { 37180, true }, - { 37191, true }, - { 37199, true }, - { 37218, true }, - { 37228, true }, - { 37241, true }, - { 37258, true }, - { 37271, true }, - { 37285, true }, - { 37294, true }, - { 37307, true }, + { 36815, true }, + { 36826, true }, + { 36839, true }, + { 36854, true }, + { 36865, true }, + { 36879, true }, + { 36893, true }, + { 36906, true }, + { 36918, true }, + { 36930, true }, + { 36955, true }, + { 36979, true }, + { 36992, true }, + { 37006, true }, + { 37019, true }, + { 37040, true }, + { 37060, true }, + { 37074, true }, + { 37089, true }, + { 37112, true }, + { 37121, true }, + { 37132, true }, + { 37142, true }, + { 37152, true }, + { 37169, true }, + { 37187, true }, + { 37212, true }, + { 37234, true }, + { 37247, true }, + { 37261, true }, + { 37274, true }, + { 37287, true }, + { 37298, true }, + { 37306, true }, { 37325, true }, { 37335, true }, - { 37352, true }, - { 37364, true }, - { 37380, true }, - { 37389, false }, - { 37400, true }, - { 37411, true }, - { 37424, true }, - { 37436, true }, - { 37446, true }, - { 37457, true }, + { 37348, true }, + { 37365, true }, + { 37378, true }, + { 37392, true }, + { 37401, true }, + { 37414, true }, + { 37432, true }, + { 37442, true }, + { 37459, true }, { 37471, true }, - { 37495, true }, - { 37510, true }, - { 37528, true }, + { 37487, true }, + { 37496, false }, + { 37507, true }, + { 37518, true }, + { 37531, true }, { 37543, true }, - { 37565, true }, - { 37583, true }, - { 37593, true }, - { 37609, true }, - { 37620, true }, - { 37633, true }, - { 37653, true }, - { 37664, true }, - { 37683, true }, - { 37702, true }, - { 37714, true }, - { 37728, true }, - { 37736, true }, - { 37751, true }, - { 37768, true }, - { 37791, true }, - { 37802, true }, - { 37814, true }, - { 37833, true }, + { 37553, true }, + { 37564, true }, + { 37578, true }, + { 37602, true }, + { 37617, true }, + { 37635, true }, + { 37650, true }, + { 37672, true }, + { 37690, true }, + { 37700, true }, + { 37716, true }, + { 37727, true }, + { 37740, true }, + { 37760, true }, + { 37771, true }, + { 37790, true }, + { 37809, true }, + { 37821, true }, + { 37835, true }, { 37843, true }, - { 37857, false }, - { 37867, true }, - { 37882, true }, + { 37858, true }, + { 37875, true }, + { 37898, true }, { 37910, true }, - { 37925, true }, - { 37940, true }, - { 37955, true }, - { 37970, true }, - { 37982, true }, - { 37998, false }, - { 38007, true }, - { 38025, true }, - { 38039, true }, + { 37929, true }, + { 37939, true }, + { 37953, false }, + { 37963, true }, + { 37978, true }, + { 38006, true }, + { 38021, true }, + { 38036, true }, { 38051, true }, - { 38063, true }, - { 38083, true }, - { 38100, true }, - { 38108, true }, - { 38123, true }, - { 38137, true }, - { 38151, true }, - { 38163, true }, - { 38172, true }, - { 38181, true }, - { 38193, true }, - { 38210, true }, - { 38224, true }, - { 38237, true }, - { 38249, true }, - { 38267, true }, - { 38278, true }, - { 38294, true }, + { 38066, true }, + { 38078, true }, + { 38094, false }, + { 38103, true }, + { 38121, true }, + { 38135, true }, + { 38147, true }, + { 38159, true }, + { 38179, true }, + { 38196, true }, + { 38204, true }, + { 38219, true }, + { 38233, true }, + { 38247, true }, + { 38259, true }, + { 38268, true }, + { 38277, true }, + { 38289, true }, { 38306, true }, - { 38323, true }, - { 38341, true }, - { 38359, true }, - { 38371, true }, - { 38383, true }, - { 38397, true }, - { 38409, true }, - { 38423, true }, - { 38431, true }, - { 38448, true }, - { 38457, true }, - { 38478, true }, - { 38497, true }, - { 38523, true }, - { 38537, true }, - { 38547, true }, - { 38569, true }, - { 38579, true }, - { 38591, true }, - { 38608, true }, - { 38625, true }, - { 38647, false }, - { 38661, true }, - { 38677, true }, - { 38694, true }, - { 38706, true }, - { 38724, false }, - { 38746, false }, - { 38771, false }, - { 38795, true }, - { 38823, true }, - { 38833, true }, - { 38846, true }, - { 38856, true }, - { 38866, true }, - { 38876, true }, - { 38886, true }, - { 38896, true }, - { 38906, true }, - { 38916, true }, - { 38930, true }, - { 38947, true }, - { 38965, true }, - { 38979, true }, - { 38997, true }, - { 39009, true }, - { 39020, true }, - { 39032, true }, - { 39043, true }, - { 39057, true }, - { 39072, true }, - { 39080, true }, - { 39094, true }, - { 39101, false }, - { 39121, true }, - { 39132, true }, - { 39153, true }, - { 39172, true }, - { 39187, true }, - { 39199, true }, - { 39214, true }, - { 39239, true }, - { 39252, true }, - { 39267, true }, - { 39285, true }, - { 39296, true }, - { 39311, true }, - { 39325, true }, - { 39337, true }, - { 39350, true }, + { 38320, true }, + { 38333, true }, + { 38345, true }, + { 38363, true }, + { 38374, true }, + { 38390, true }, + { 38402, true }, + { 38419, true }, + { 38437, true }, + { 38455, true }, + { 38467, true }, + { 38479, true }, + { 38493, true }, + { 38505, true }, + { 38519, true }, + { 38527, true }, + { 38544, true }, + { 38553, true }, + { 38574, true }, + { 38593, true }, + { 38619, true }, + { 38633, true }, + { 38643, true }, + { 38665, true }, + { 38675, true }, + { 38687, true }, + { 38704, true }, + { 38721, true }, + { 38743, false }, + { 38757, true }, + { 38773, true }, + { 38790, true }, + { 38802, true }, + { 38820, false }, + { 38842, false }, + { 38867, false }, + { 38891, true }, + { 38919, true }, + { 38929, true }, + { 38942, true }, + { 38952, true }, + { 38962, true }, + { 38972, true }, + { 38982, true }, + { 38992, true }, + { 39002, true }, + { 39012, true }, + { 39026, true }, + { 39044, true }, + { 39058, true }, + { 39076, true }, + { 39088, true }, + { 39099, true }, + { 39111, true }, + { 39122, true }, + { 39136, true }, + { 39151, true }, + { 39159, true }, + { 39173, true }, + { 39180, false }, + { 39200, true }, + { 39211, true }, + { 39232, true }, + { 39251, true }, + { 39266, true }, + { 39278, true }, + { 39293, true }, + { 39318, true }, + { 39331, true }, + { 39346, true }, { 39364, true }, - { 39379, true }, - { 39396, false }, - { 39409, true }, - { 39426, true }, - { 39448, true }, - { 39464, true }, - { 39477, true }, - { 39489, true }, + { 39375, true }, + { 39390, true }, + { 39404, true }, + { 39416, true }, + { 39429, true }, + { 39443, true }, + { 39458, true }, + { 39475, false }, + { 39488, true }, { 39505, true }, - { 39520, true }, - { 39530, true }, - { 39545, true }, - { 39570, true }, - { 39589, true }, - { 39603, true }, - { 39619, true }, - { 39638, true }, - { 39652, true }, - { 39669, true }, - { 39688, true }, + { 39527, true }, + { 39543, true }, + { 39556, true }, + { 39568, true }, + { 39584, true }, + { 39599, true }, + { 39609, true }, + { 39624, true }, + { 39649, true }, + { 39668, true }, + { 39682, true }, { 39698, true }, - { 39708, true }, - { 39728, true }, - { 39740, true }, - { 39756, true }, - { 39774, true }, - { 39794, true }, - { 39822, false }, - { 39834, true }, - { 39847, true }, - { 39861, true }, - { 39878, true }, - { 39895, true }, - { 39904, true }, - { 39914, true }, - { 39931, true }, + { 39717, true }, + { 39731, true }, + { 39748, true }, + { 39767, true }, + { 39777, true }, + { 39787, true }, + { 39807, true }, + { 39819, true }, + { 39835, true }, + { 39853, true }, + { 39873, true }, + { 39901, false }, + { 39913, true }, + { 39926, true }, { 39940, true }, - { 39947, true }, - { 39963, true }, - { 39973, true }, - { 39988, true }, - { 40003, true }, - { 40014, false }, - { 40030, true }, - { 40047, true }, - { 40058, true }, - { 40072, true }, - { 40083, true }, + { 39957, true }, + { 39974, true }, + { 39983, true }, + { 39993, true }, + { 40010, true }, + { 40019, true }, + { 40026, true }, + { 40042, true }, + { 40052, true }, + { 40067, true }, + { 40082, true }, { 40093, true }, - { 40103, true }, - { 40123, true }, - { 40134, true }, - { 40149, true }, - { 40168, true }, - { 40185, true }, - { 40203, true }, - { 40218, true }, + { 40110, true }, + { 40121, true }, + { 40135, true }, + { 40146, true }, + { 40156, true }, + { 40166, true }, + { 40186, true }, + { 40197, true }, + { 40212, true }, { 40231, true }, - { 40246, true }, - { 40257, true }, - { 40273, true }, - { 40299, true }, - { 40316, true }, - { 40333, true }, - { 40351, true }, - { 40364, true }, - { 40385, true }, - { 40393, true }, - { 40416, true }, - { 40430, true }, - { 40440, true }, - { 40465, true }, - { 40482, false }, - { 40503, false }, - { 40522, false }, - { 40540, true }, - { 40556, true }, - { 40580, true }, - { 40608, true }, - { 40619, true }, - { 40632, true }, - { 40657, true }, - { 40672, true }, - { 40688, true }, - { 40712, true }, - { 40731, true }, - { 40747, true }, - { 40770, true }, - { 40788, true }, + { 40248, true }, + { 40266, true }, + { 40281, true }, + { 40294, true }, + { 40309, true }, + { 40320, true }, + { 40336, true }, + { 40362, true }, + { 40379, true }, + { 40396, true }, + { 40414, true }, + { 40427, true }, + { 40435, true }, + { 40458, true }, + { 40472, true }, + { 40482, true }, + { 40507, true }, + { 40524, false }, + { 40545, false }, + { 40564, false }, + { 40582, true }, + { 40598, true }, + { 40622, true }, + { 40650, true }, + { 40661, true }, + { 40674, true }, + { 40699, true }, + { 40714, true }, + { 40730, true }, + { 40754, true }, + { 40773, true }, + { 40789, true }, { 40812, true }, - { 40826, true }, - { 40837, true }, - { 40859, true }, - { 40866, true }, - { 40884, true }, - { 40899, true }, - { 40914, true }, - { 40927, true }, - { 40940, true }, - { 40953, true }, - { 40975, true }, - { 40990, true }, - { 41005, true }, - { 41022, true }, - { 41041, true }, - { 41068, true }, - { 41080, true }, - { 41095, true }, - { 41109, true }, - { 41128, true }, - { 41146, true }, - { 41154, true }, - { 41162, true }, - { 41171, true }, - { 41183, true }, + { 40830, true }, + { 40854, true }, + { 40868, true }, + { 40879, true }, + { 40901, true }, + { 40908, true }, + { 40926, true }, + { 40941, true }, + { 40956, true }, + { 40969, true }, + { 40982, true }, + { 40995, true }, + { 41017, true }, + { 41032, true }, + { 41047, true }, + { 41064, true }, + { 41083, true }, + { 41110, true }, + { 41122, true }, + { 41137, true }, + { 41151, true }, + { 41170, true }, + { 41188, true }, { 41196, true }, - { 41208, true }, - { 41222, true }, - { 41240, true }, - { 41258, true }, - { 41273, true }, - { 41288, true }, - { 41297, true }, - { 41313, true }, + { 41204, true }, + { 41213, true }, + { 41225, true }, + { 41238, true }, + { 41250, true }, + { 41264, true }, + { 41282, true }, + { 41300, true }, + { 41315, true }, { 41330, true }, - { 41339, true }, + { 41345, true }, { 41354, true }, - { 41367, true }, - { 41379, true }, - { 41392, true }, - { 41402, true }, - { 41422, true }, - { 41435, false }, + { 41370, true }, + { 41387, true }, + { 41396, true }, + { 41411, true }, + { 41424, true }, + { 41436, true }, { 41449, true }, - { 41465, true }, - { 41486, true }, - { 41499, true }, - { 41512, true }, - { 41524, true }, - { 41534, true }, - { 41550, false }, - { 41557, true }, - { 41567, true }, + { 41459, true }, + { 41479, true }, + { 41492, false }, + { 41506, true }, + { 41522, true }, + { 41543, true }, + { 41556, true }, + { 41569, true }, { 41581, true }, - { 41596, true }, - { 41606, true }, + { 41591, true }, + { 41607, false }, { 41614, true }, - { 41632, true }, - { 41645, true }, + { 41624, true }, + { 41638, true }, { 41653, true }, { 41663, true }, - { 41673, true }, - { 41691, true }, - { 41709, true }, - { 41722, true }, - { 41735, true }, - { 41752, true }, + { 41671, true }, + { 41689, true }, + { 41702, true }, + { 41710, true }, + { 41720, true }, + { 41730, true }, + { 41748, true }, { 41766, true }, - { 41775, true }, - { 41790, true }, - { 41805, true }, - { 41834, true }, - { 41851, true }, - { 41869, true }, - { 41879, true }, - { 41893, true }, - { 41905, true }, - { 41916, true }, - { 41927, true }, - { 41954, true }, - { 41974, true }, - { 41988, true }, - { 42010, true }, - { 42035, true }, - { 42048, true }, - { 42065, true }, - { 42083, true }, - { 42098, true }, - { 42113, true }, - { 42124, true }, - { 42134, true }, + { 41779, true }, + { 41792, true }, + { 41809, true }, + { 41823, true }, + { 41832, true }, + { 41847, true }, + { 41862, true }, + { 41891, true }, + { 41908, true }, + { 41926, true }, + { 41936, true }, + { 41950, true }, + { 41962, true }, + { 41973, true }, + { 41984, true }, + { 42011, true }, + { 42031, true }, + { 42045, true }, + { 42067, true }, + { 42092, true }, + { 42105, true }, + { 42122, true }, + { 42140, true }, { 42155, true }, - { 42165, false }, - { 42184, true }, - { 42196, true }, - { 42211, true }, - { 42240, true }, - { 42258, true }, - { 42276, true }, - { 42294, true }, - { 42312, true }, - { 42330, true }, - { 42348, true }, - { 42377, true }, - { 42398, true }, - { 42412, true }, - { 42426, true }, + { 42170, true }, + { 42181, true }, + { 42191, true }, + { 42212, true }, + { 42222, false }, + { 42241, true }, + { 42253, true }, + { 42268, true }, + { 42297, true }, + { 42315, true }, + { 42333, true }, + { 42351, true }, + { 42369, true }, + { 42387, true }, + { 42405, true }, { 42434, true }, - { 42444, true }, - { 42457, true }, + { 42455, true }, { 42469, true }, - { 42485, true }, - { 42499, true }, - { 42521, true }, - { 42540, true }, + { 42483, true }, + { 42491, true }, + { 42501, true }, + { 42514, true }, + { 42526, true }, + { 42542, true }, { 42556, true }, - { 42569, true }, - { 42582, true }, - { 42601, true }, - { 42621, true }, - { 42636, true }, - { 42651, true }, - { 42669, true }, - { 42680, true }, - { 42698, false }, + { 42578, true }, + { 42597, true }, + { 42613, true }, + { 42626, true }, + { 42639, true }, + { 42658, true }, + { 42678, true }, + { 42693, true }, { 42708, true }, - { 42730, true }, - { 42744, true }, - { 42767, true }, - { 42783, true }, + { 42726, true }, + { 42737, true }, + { 42755, false }, + { 42765, true }, + { 42787, true }, { 42801, true }, - { 42817, true }, - { 42831, true }, - { 42844, true }, - { 42861, true }, - { 42879, true }, - { 42890, false }, - { 42898, true }, - { 42911, true }, - { 42926, true }, - { 42946, true }, - { 42960, true }, - { 42974, true }, - { 42991, true }, - { 43006, true }, - { 43019, true }, + { 42824, true }, + { 42840, true }, + { 42858, true }, + { 42874, true }, + { 42888, true }, + { 42901, true }, + { 42918, true }, + { 42936, true }, + { 42947, false }, + { 42955, true }, + { 42968, true }, + { 42983, true }, + { 43003, true }, + { 43017, true }, { 43031, true }, { 43048, true }, - { 43061, true }, - { 43072, true }, - { 43085, true }, - { 43098, true }, - { 43118, false }, - { 43140, true }, - { 43164, true }, - { 43191, true }, - { 43211, true }, - { 43234, true }, - { 43252, true }, - { 43267, true }, - { 43283, true }, - { 43306, true }, + { 43063, true }, + { 43076, true }, + { 43088, true }, + { 43105, true }, + { 43118, true }, + { 43129, true }, + { 43142, true }, + { 43155, true }, + { 43175, false }, + { 43197, true }, + { 43221, true }, + { 43248, true }, + { 43268, true }, + { 43291, true }, + { 43309, true }, { 43324, true }, - { 43338, true }, - { 43367, true }, - { 43379, true }, + { 43340, true }, + { 43363, true }, + { 43381, true }, { 43395, true }, - { 43406, true }, - { 43422, true }, - { 43435, true }, - { 43448, true }, - { 43465, true }, - { 43476, true }, - { 43494, true }, - { 43507, true }, - { 43516, true }, - { 43533, true }, - { 43542, true }, - { 43559, true }, - { 43568, true }, + { 43424, true }, + { 43436, true }, + { 43452, true }, + { 43463, true }, + { 43479, true }, + { 43491, true }, + { 43504, true }, + { 43517, true }, + { 43534, true }, + { 43545, true }, + { 43563, true }, { 43576, true }, { 43585, true }, - { 43594, true }, - { 43603, true }, - { 43613, true }, + { 43602, true }, + { 43611, true }, + { 43628, true }, { 43637, true }, - { 43647, true }, - { 43657, true }, - { 43666, true }, - { 43679, true }, - { 43689, true }, - { 43702, true }, - { 43714, true }, - { 43728, true }, - { 43742, true }, - { 43760, true }, - { 43775, true }, - { 43789, true }, - { 43801, true }, - { 43817, true }, - { 43830, true }, - { 43845, true }, - { 43857, true }, - { 43872, true }, + { 43645, true }, + { 43654, true }, + { 43663, true }, + { 43672, true }, + { 43682, true }, + { 43706, true }, + { 43716, true }, + { 43726, true }, + { 43735, true }, + { 43748, true }, + { 43758, true }, + { 43771, true }, + { 43783, true }, + { 43797, true }, + { 43811, true }, + { 43829, true }, + { 43844, true }, + { 43858, true }, + { 43870, true }, { 43886, true }, - { 43895, true }, - { 43904, true }, - { 43915, true }, - { 43929, true }, - { 43938, true }, - { 43952, true }, - { 43962, true }, - { 43975, true }, - { 43990, true }, - { 44003, true }, - { 44013, true }, - { 44026, true }, - { 44036, true }, - { 44051, true }, - { 44066, true }, - { 44080, true }, - { 44093, true }, - { 44111, true }, - { 44126, true }, - { 44145, true }, - { 44161, true }, - { 44175, true }, - { 44191, true }, - { 44206, true }, - { 44217, true }, - { 44231, true }, - { 44241, true }, - { 44252, true }, - { 44268, true }, - { 44278, true }, - { 44290, true }, - { 44306, true }, - { 44320, true }, - { 44325, true }, - { 44333, true }, - { 44341, true }, - { 44348, true }, - { 44354, true }, - { 44364, true }, - { 44373, true }, - { 44383, true }, - { 44412, true }, - { 44427, false }, - { 44447, true }, - { 44457, true }, - { 44470, true }, - { 44488, true }, - { 44508, true }, - { 44521, true }, - { 44537, true }, - { 44549, true }, - { 44561, true }, - { 44574, true }, - { 44585, true }, - { 44595, true }, + { 43899, true }, + { 43914, true }, + { 43926, true }, + { 43941, true }, + { 43955, true }, + { 43964, true }, + { 43973, true }, + { 43984, true }, + { 43998, true }, + { 44007, true }, + { 44021, true }, + { 44031, true }, + { 44044, true }, + { 44059, true }, + { 44072, true }, + { 44082, true }, + { 44095, true }, + { 44105, true }, + { 44120, true }, + { 44135, true }, + { 44149, true }, + { 44162, true }, + { 44180, true }, + { 44195, true }, + { 44214, true }, + { 44230, true }, + { 44244, true }, + { 44260, true }, + { 44275, true }, + { 44286, true }, + { 44300, true }, + { 44310, true }, + { 44321, true }, + { 44337, true }, + { 44347, true }, + { 44359, true }, + { 44375, true }, + { 44389, true }, + { 44394, true }, + { 44402, true }, + { 44410, true }, + { 44417, true }, + { 44423, true }, + { 44433, true }, + { 44442, true }, + { 44452, true }, + { 44481, true }, + { 44496, false }, + { 44516, true }, + { 44526, true }, + { 44539, true }, + { 44557, true }, + { 44577, true }, + { 44590, true }, { 44606, true }, { 44618, true }, - { 44632, true }, - { 44650, false }, - { 44666, true }, - { 44685, true }, - { 44700, true }, - { 44715, true }, + { 44630, true }, + { 44643, true }, + { 44654, true }, + { 44664, true }, + { 44675, true }, + { 44687, true }, + { 44701, true }, + { 44719, false }, { 44735, true }, - { 44745, true }, - { 44765, true }, - { 44773, true }, + { 44754, true }, + { 44769, true }, { 44784, true }, - { 44796, true }, - { 44805, true }, - { 44819, true }, - { 44833, true }, - { 44849, true }, - { 44860, true }, - { 44879, true }, - { 44887, true }, - { 44914, true }, - { 44933, true }, - { 44947, true }, - { 44964, false }, - { 44980, true }, - { 44997, true }, - { 45008, true }, - { 45020, false }, - { 45035, true }, - { 45047, true }, + { 44804, true }, + { 44814, true }, + { 44834, true }, + { 44842, true }, + { 44853, true }, + { 44865, true }, + { 44874, true }, + { 44888, true }, + { 44902, true }, + { 44918, true }, + { 44929, true }, + { 44948, true }, + { 44956, true }, + { 44983, true }, + { 45002, true }, + { 45016, true }, + { 45033, false }, + { 45049, true }, { 45066, true }, - { 45074, true }, - { 45086, true }, - { 45098, true }, - { 45109, true }, - { 45123, true }, - { 45136, true }, - { 45148, true }, - { 45160, true }, - { 45173, true }, - { 45183, true }, - { 45202, false }, - { 45221, true }, - { 45239, true }, - { 45250, true }, - { 45262, true }, - { 45279, true }, - { 45302, true }, - { 45313, true }, - { 45325, true }, - { 45345, true }, - { 45356, true }, - { 45372, true }, - { 45388, false }, - { 45411, true }, - { 45431, true }, - { 45446, true }, - { 45470, true }, - { 45484, true }, - { 45499, true }, - { 45522, true }, - { 45550, true }, - { 45569, true }, - { 45587, true }, - { 45604, true }, - { 45625, true }, - { 45636, true }, - { 45662, true }, - { 45681, true }, - { 45696, true }, - { 45712, true }, + { 45077, true }, + { 45089, false }, + { 45104, true }, + { 45116, true }, + { 45135, true }, + { 45143, true }, + { 45155, true }, + { 45167, true }, + { 45178, true }, + { 45192, true }, + { 45205, true }, + { 45217, true }, + { 45229, true }, + { 45242, true }, + { 45252, true }, + { 45271, false }, + { 45290, true }, + { 45308, true }, + { 45319, true }, + { 45331, true }, + { 45348, true }, + { 45371, true }, + { 45382, true }, + { 45394, true }, + { 45414, true }, + { 45425, true }, + { 45441, true }, + { 45457, false }, + { 45480, true }, + { 45500, true }, + { 45515, true }, + { 45539, true }, + { 45553, true }, + { 45568, true }, + { 45591, true }, + { 45619, true }, + { 45638, true }, + { 45656, true }, + { 45673, true }, + { 45694, true }, + { 45705, true }, { 45731, true }, - { 45747, true }, - { 45761, true }, - { 45782, true }, - { 45798, false }, - { 45823, true }, - { 45848, true }, - { 45866, true }, - { 45885, true }, - { 45911, false }, - { 45925, true }, - { 45943, true }, - { 45957, true }, - { 45966, true }, - { 45978, true }, - { 45993, true }, - { 46006, true }, - { 46019, true }, - { 46031, true }, - { 46051, true }, - { 46066, true }, - { 46089, true }, - { 46107, true }, + { 45750, true }, + { 45765, true }, + { 45781, true }, + { 45800, true }, + { 45816, true }, + { 45830, true }, + { 45851, true }, + { 45867, false }, + { 45892, true }, + { 45917, true }, + { 45935, true }, + { 45954, true }, + { 45980, false }, + { 45994, true }, + { 46012, true }, + { 46026, true }, + { 46035, true }, + { 46047, true }, + { 46062, true }, + { 46075, true }, + { 46088, true }, + { 46100, true }, { 46120, true }, - { 46132, true }, - { 46144, true }, - { 46159, true }, - { 46172, true }, - { 46186, true }, - { 46196, true }, - { 46209, true }, - { 46217, true }, - { 46224, true }, - { 46249, true }, - { 46275, true }, - { 46287, true }, - { 46308, true }, - { 46320, true }, - { 46335, true }, - { 46351, true }, - { 46368, true }, - { 46394, true }, - { 46406, true }, - { 46428, true }, - { 46448, true }, - { 46458, true }, - { 46471, true }, - { 46492, true }, - { 46500, true }, - { 46515, true }, - { 46529, true }, - { 46543, true }, - { 46557, true }, - { 46573, true }, - { 46597, true }, - { 46617, true }, - { 46628, true }, - { 46645, true }, - { 46658, true }, - { 46667, true }, - { 46676, true }, - { 46691, true }, - { 46713, true }, + { 46135, true }, + { 46158, true }, + { 46176, true }, + { 46189, true }, + { 46201, true }, + { 46213, true }, + { 46228, true }, + { 46241, true }, + { 46255, true }, + { 46265, true }, + { 46278, true }, + { 46286, true }, + { 46293, true }, + { 46318, true }, + { 46344, true }, + { 46356, true }, + { 46377, true }, + { 46389, true }, + { 46404, true }, + { 46420, true }, + { 46437, true }, + { 46463, true }, + { 46475, true }, + { 46497, true }, + { 46517, true }, + { 46527, true }, + { 46540, true }, + { 46561, true }, + { 46569, true }, + { 46584, true }, + { 46598, true }, + { 46612, true }, + { 46626, true }, + { 46642, true }, + { 46666, true }, + { 46686, true }, + { 46697, true }, + { 46714, true }, + { 46727, true }, { 46736, true }, + { 46745, true }, { 46760, true }, - { 46783, true }, - { 46807, true }, - { 46826, true }, - { 46839, true }, - { 46857, false }, - { 46872, true }, - { 46884, true }, - { 46893, true }, - { 46906, true }, - { 46920, true }, - { 46934, true }, - { 46948, true }, + { 46782, true }, + { 46805, true }, + { 46829, true }, + { 46852, true }, + { 46876, true }, + { 46895, true }, + { 46908, true }, + { 46926, false }, + { 46941, true }, + { 46953, true }, { 46962, true }, - { 46982, true }, - { 46997, true }, - { 47013, true }, - { 47024, true }, - { 47034, true }, - { 47044, true }, - { 47054, true }, - { 47064, true }, - { 47087, true }, + { 46975, true }, + { 46989, true }, + { 47003, true }, + { 47017, true }, + { 47031, true }, + { 47051, true }, + { 47066, true }, + { 47082, true }, + { 47093, true }, { 47103, true }, - { 47114, true }, - { 47128, true }, - { 47138, true }, - { 47147, false }, - { 47160, true }, - { 47173, true }, - { 47190, true }, - { 47209, true }, - { 47223, true }, - { 47237, true }, - { 47249, true }, - { 47268, true }, - { 47282, true }, - { 47299, true }, - { 47312, true }, - { 47326, true }, - { 47355, true }, - { 47372, true }, - { 47392, true }, - { 47408, true }, - { 47430, true }, - { 47453, true }, - { 47466, true }, - { 47487, true }, - { 47498, true }, - { 47509, true }, - { 47521, true }, - { 47533, true }, - { 47544, true }, - { 47562, true }, - { 47576, true }, - { 47587, true }, - { 47603, true }, - { 47620, true }, - { 47648, true }, - { 47664, true }, - { 47673, true }, - { 47686, true }, - { 47701, true }, - { 47715, true }, - { 47736, true }, - { 47753, true }, - { 47769, true }, - { 47782, true }, - { 47795, true }, - { 47807, true }, - { 47824, true }, - { 47837, true }, - { 47850, true }, - { 47873, true }, - { 47885, true }, - { 47897, true }, - { 47909, true }, - { 47924, true }, - { 47943, true }, - { 47958, true }, - { 47974, true }, - { 47986, true }, - { 48007, true }, - { 48020, true }, - { 48038, true }, - { 48049, true }, - { 48057, true }, - { 48068, false }, - { 48091, true }, - { 48105, true }, - { 48122, true }, - { 48139, true }, - { 48152, true }, - { 48176, true }, - { 48193, true }, - { 48204, true }, - { 48215, true }, - { 48227, false }, - { 48237, true }, - { 48250, true }, - { 48266, false }, - { 48277, true }, - { 48308, true }, - { 48345, true }, - { 48360, true }, - { 48367, true }, - { 48401, true }, - { 48417, true }, - { 48427, true }, + { 47113, true }, + { 47123, true }, + { 47133, true }, + { 47156, true }, + { 47172, true }, + { 47183, true }, + { 47197, true }, + { 47207, true }, + { 47216, false }, + { 47229, true }, + { 47242, true }, + { 47259, true }, + { 47278, true }, + { 47292, true }, + { 47306, true }, + { 47318, true }, + { 47337, true }, + { 47351, true }, + { 47368, true }, + { 47381, true }, + { 47395, true }, + { 47424, true }, + { 47441, true }, + { 47461, true }, + { 47477, true }, + { 47499, true }, + { 47522, true }, + { 47535, true }, + { 47556, true }, + { 47567, true }, + { 47578, true }, + { 47590, true }, + { 47602, true }, + { 47613, true }, + { 47631, true }, + { 47645, true }, + { 47656, true }, + { 47672, true }, + { 47689, true }, + { 47717, true }, + { 47733, true }, + { 47742, true }, + { 47755, true }, + { 47770, true }, + { 47784, true }, + { 47805, true }, + { 47822, true }, + { 47838, true }, + { 47851, true }, + { 47864, true }, + { 47876, true }, + { 47893, true }, + { 47906, true }, + { 47919, true }, + { 47942, true }, + { 47954, true }, + { 47966, true }, + { 47978, true }, + { 47993, true }, + { 48012, true }, + { 48027, true }, + { 48043, true }, + { 48055, true }, + { 48076, true }, + { 48089, true }, + { 48107, true }, + { 48118, true }, + { 48126, true }, + { 48137, false }, + { 48160, true }, + { 48174, true }, + { 48191, true }, + { 48208, true }, + { 48221, true }, + { 48245, true }, + { 48262, true }, + { 48273, true }, + { 48284, true }, + { 48296, false }, + { 48306, true }, + { 48319, true }, + { 48335, false }, + { 48346, true }, + { 48377, true }, + { 48414, true }, + { 48429, true }, + { 48436, true }, { 48445, true }, - { 48463, true }, - { 48474, true }, - { 48484, true }, + { 48479, true }, { 48495, true }, - { 48506, true }, - { 48515, true }, - { 48527, true }, - { 48553, true }, - { 48562, true }, - { 48578, true }, - { 48586, false }, - { 48594, true }, - { 48605, true }, - { 48615, true }, - { 48625, true }, - { 48639, true }, + { 48513, true }, + { 48531, true }, + { 48542, true }, + { 48552, true }, + { 48563, true }, + { 48574, true }, + { 48583, true }, + { 48595, true }, + { 48621, true }, + { 48630, true }, { 48646, true }, - { 48659, true }, - { 48676, true }, - { 48690, true }, - { 48700, true }, - { 48715, true }, - { 48729, true }, - { 48743, true }, - { 48756, true }, - { 48767, true }, - { 48775, true }, - { 48785, true }, - { 48793, true }, - { 48807, true }, - { 48820, true }, - { 48829, true }, - { 48850, true }, - { 48869, true }, - { 48883, true }, - { 48899, true }, - { 48916, true }, - { 48934, true }, - { 48941, true }, - { 48952, true }, - { 48965, true }, - { 48975, true }, - { 48990, false }, - { 49000, true }, - { 49011, true }, - { 49030, false }, + { 48654, false }, + { 48662, true }, + { 48673, true }, + { 48683, true }, + { 48693, true }, + { 48707, true }, + { 48714, true }, + { 48727, true }, + { 48744, true }, + { 48758, true }, + { 48768, true }, + { 48783, true }, + { 48797, true }, + { 48811, true }, + { 48824, true }, + { 48835, true }, + { 48843, true }, + { 48853, true }, + { 48861, true }, + { 48875, true }, + { 48888, true }, + { 48897, true }, + { 48918, true }, + { 48937, true }, + { 48951, true }, + { 48967, true }, + { 48984, true }, + { 49002, true }, + { 49009, true }, + { 49020, true }, + { 49033, true }, { 49043, true }, - { 49061, true }, - { 49077, true }, - { 49088, true }, - { 49106, true }, - { 49114, true }, - { 49130, true }, - { 49146, true }, + { 49058, false }, + { 49068, true }, + { 49079, true }, + { 49098, false }, + { 49111, true }, + { 49129, true }, + { 49145, true }, { 49156, true }, - { 49178, true }, - { 49198, false }, - { 49215, true }, - { 49231, true }, - { 49242, true }, - { 49254, true }, - { 49266, true }, - { 49280, true }, - { 49296, true }, - { 49315, true }, - { 49332, true }, - { 49347, true }, - { 49366, true }, - { 49381, true }, - { 49396, true }, - { 49417, true }, - { 49435, true }, - { 49452, true }, - { 49471, true }, - { 49483, true }, - { 49496, true }, - { 49509, true }, - { 49519, true }, - { 49533, true }, - { 49547, true }, - { 49558, true }, - { 49571, true }, - { 49590, true }, - { 49608, true }, - { 49619, true }, - { 49633, true }, - { 49650, true }, - { 49665, true }, - { 49679, true }, - { 49693, true }, - { 49706, true }, - { 49717, true }, - { 49740, true }, - { 49750, true }, - { 49767, true }, - { 49783, true }, - { 49799, true }, - { 49814, true }, - { 49824, true }, - { 49839, true }, + { 49174, true }, + { 49182, true }, + { 49198, true }, + { 49214, true }, + { 49224, true }, + { 49246, true }, + { 49266, false }, + { 49283, true }, + { 49299, true }, + { 49310, true }, + { 49322, true }, + { 49334, true }, + { 49348, true }, + { 49364, true }, + { 49383, true }, + { 49400, true }, + { 49415, true }, + { 49434, true }, + { 49449, true }, + { 49464, true }, + { 49485, true }, + { 49503, true }, + { 49520, true }, + { 49539, true }, + { 49551, true }, + { 49564, true }, + { 49577, true }, + { 49587, true }, + { 49601, true }, + { 49615, true }, + { 49626, true }, + { 49639, true }, + { 49658, true }, + { 49676, true }, + { 49687, true }, + { 49701, true }, + { 49718, true }, + { 49733, true }, + { 49747, true }, + { 49761, true }, + { 49774, true }, + { 49785, true }, + { 49808, true }, + { 49818, true }, + { 49835, true }, { 49851, true }, - { 49862, true }, - { 49874, false }, + { 49867, true }, { 49882, true }, - { 49903, true }, - { 49913, true }, - { 49921, true }, - { 49934, true }, - { 49942, true }, + { 49892, true }, + { 49907, true }, + { 49919, true }, + { 49930, true }, + { 49942, false }, { 49950, true }, - { 49964, true }, - { 49978, true }, - { 49986, true }, - { 49994, true }, - { 50011, true }, - { 50025, true }, - { 50045, true }, - { 50059, true }, - { 50067, true }, - { 50076, false }, - { 50096, true }, - { 50114, false }, - { 50125, true }, - { 50152, true }, - { 50163, true }, - { 50179, true }, - { 50197, true }, - { 50208, false }, - { 50226, true }, - { 50246, true }, - { 50258, true }, - { 50270, true }, - { 50280, true }, - { 50296, true }, - { 50309, true }, - { 50328, true }, - { 50343, true }, - { 50356, true }, - { 50370, true }, - { 50383, true }, - { 50399, true }, - { 50413, true }, - { 50430, true }, - { 50447, true }, - { 50465, true }, - { 50484, true }, - { 50502, true }, - { 50523, true }, + { 49971, true }, + { 49981, true }, + { 49989, true }, + { 50002, true }, + { 50010, true }, + { 50018, true }, + { 50032, true }, + { 50046, true }, + { 50054, true }, + { 50062, true }, + { 50079, true }, + { 50093, true }, + { 50113, true }, + { 50127, true }, + { 50135, true }, + { 50144, false }, + { 50164, true }, + { 50182, false }, + { 50193, true }, + { 50220, true }, + { 50231, true }, + { 50247, true }, + { 50265, true }, + { 50276, false }, + { 50294, true }, + { 50314, true }, + { 50326, true }, + { 50338, true }, + { 50348, true }, + { 50364, true }, + { 50377, true }, + { 50396, true }, + { 50411, true }, + { 50424, true }, + { 50438, true }, + { 50451, true }, + { 50467, true }, + { 50481, true }, + { 50498, true }, + { 50515, true }, { 50533, true }, - { 50546, true }, - { 50556, true }, - { 50573, true }, - { 50586, true }, - { 50599, true }, - { 50612, true }, + { 50552, true }, + { 50570, true }, + { 50591, true }, + { 50601, true }, + { 50614, true }, { 50624, true }, - { 50638, true }, - { 50657, true }, + { 50641, true }, + { 50654, true }, { 50667, true }, - { 50683, true }, + { 50680, true }, { 50692, true }, - { 50712, true }, - { 50731, true }, - { 50748, true }, - { 50768, true }, - { 50796, true }, - { 50810, true }, - { 50830, true }, - { 50848, true }, - { 50869, true }, - { 50889, true }, - { 50924, true }, - { 50938, true }, - { 50947, true }, + { 50706, true }, + { 50725, true }, + { 50735, true }, + { 50751, true }, + { 50760, true }, + { 50780, true }, + { 50799, true }, + { 50816, true }, + { 50836, true }, + { 50864, true }, + { 50878, true }, + { 50898, true }, + { 50916, true }, + { 50937, true }, { 50957, true }, - { 50987, true }, - { 51002, true }, - { 51013, true }, + { 50992, true }, + { 51006, true }, + { 51015, true }, { 51025, true }, - { 51040, true }, - { 51053, true }, - { 51069, true }, - { 51082, true }, - { 51111, true }, - { 51122, true }, - { 51136, true }, - { 51151, true }, - { 51171, true }, - { 51191, true }, - { 51217, true }, - { 51232, true }, - { 51244, true }, - { 51258, true }, - { 51272, true }, - { 51289, true }, - { 51306, true }, - { 51323, true }, - { 51332, true }, - { 51341, true }, - { 51360, true }, - { 51371, true }, - { 51387, true }, - { 51402, true }, - { 51419, false }, - { 51433, true }, - { 51443, false }, - { 51454, true }, - { 51462, true }, + { 51055, true }, + { 51070, true }, + { 51081, true }, + { 51093, true }, + { 51108, true }, + { 51121, true }, + { 51137, true }, + { 51150, true }, + { 51179, true }, + { 51190, true }, + { 51204, true }, + { 51219, true }, + { 51239, true }, + { 51259, true }, + { 51285, true }, + { 51300, true }, + { 51312, true }, + { 51326, true }, + { 51340, true }, + { 51357, true }, + { 51374, true }, + { 51391, true }, + { 51400, true }, + { 51409, true }, + { 51428, true }, + { 51439, true }, + { 51455, true }, { 51470, true }, - { 51493, true }, - { 51506, true }, - { 51527, true }, - { 51548, true }, - { 51569, false }, - { 51585, true }, - { 51598, true }, - { 51613, false }, - { 51634, true }, - { 51654, true }, - { 51676, true }, - { 51690, true }, + { 51487, false }, + { 51501, true }, + { 51511, false }, + { 51522, true }, + { 51530, true }, + { 51538, true }, + { 51561, true }, + { 51574, true }, + { 51595, true }, + { 51616, true }, + { 51637, false }, + { 51653, true }, + { 51666, true }, + { 51681, false }, { 51702, true }, - { 51720, true }, - { 51743, true }, - { 51763, true }, - { 51779, true }, - { 51793, true }, - { 51809, true }, - { 51827, true }, - { 51842, true }, - { 51853, true }, - { 51864, true }, + { 51722, true }, + { 51744, true }, + { 51758, true }, + { 51770, true }, + { 51788, true }, + { 51811, true }, + { 51831, true }, + { 51847, true }, + { 51861, true }, { 51877, true }, - { 51890, true }, - { 51907, true }, - { 51924, true }, - { 51939, true }, + { 51895, true }, + { 51910, true }, + { 51921, true }, + { 51932, true }, + { 51945, true }, { 51958, true }, - { 51974, true }, - { 51986, true }, - { 51996, true }, - { 52007, false }, - { 52029, true }, - { 52040, true }, - { 52048, true }, + { 51975, true }, + { 51992, true }, + { 52007, true }, + { 52026, true }, + { 52042, true }, + { 52054, true }, { 52064, true }, - { 52079, true }, - { 52095, true }, - { 52105, true }, - { 52122, true }, - { 52137, true }, - { 52154, true }, - { 52172, true }, - { 52184, true }, - { 52204, true }, - { 52215, true }, - { 52241, true }, - { 52265, true }, - { 52281, true }, - { 52291, true }, - { 52300, true }, - { 52316, true }, - { 52331, true }, - { 52346, true }, - { 52359, true }, - { 52380, true }, + { 52075, false }, + { 52097, true }, + { 52108, true }, + { 52116, true }, + { 52132, true }, + { 52147, true }, + { 52163, true }, + { 52180, true }, + { 52195, true }, + { 52212, true }, + { 52230, true }, + { 52242, true }, + { 52262, true }, + { 52273, true }, + { 52299, true }, + { 52323, true }, + { 52339, true }, + { 52349, true }, + { 52358, true }, + { 52374, true }, { 52389, true }, { 52404, true }, - { 52417, false }, - { 52427, true }, - { 52446, true }, - { 52460, true }, - { 52480, true }, - { 52495, true }, + { 52417, true }, + { 52438, true }, + { 52447, true }, + { 52462, true }, + { 52475, false }, + { 52485, true }, { 52504, true }, - { 52522, true }, - { 52544, false }, - { 52566, true }, - { 52585, true }, - { 52601, true }, - { 52616, false }, - { 52632, true }, - { 52656, false }, - { 52670, true }, - { 52684, true }, - { 52700, true }, - { 52719, true }, - { 52731, true }, - { 52740, true }, - { 52755, true }, - { 52770, true }, - { 52783, true }, - { 52795, true }, - { 52807, true }, - { 52825, true }, - { 52845, true }, - { 52867, true }, - { 52885, true }, - { 52895, true }, - { 52906, true }, - { 52923, true }, - { 52940, true }, - { 52955, true }, - { 52972, true }, - { 52987, true }, - { 53004, true }, - { 53018, true }, - { 53032, true }, - { 53049, true }, - { 53065, true }, - { 53084, true }, - { 53101, true }, - { 53118, false }, - { 53133, true }, - { 53160, true }, - { 53180, true }, - { 53200, true }, - { 53222, true }, - { 53241, true }, - { 53261, true }, - { 53282, true }, - { 53305, true }, - { 53331, true }, - { 53351, true }, - { 53369, true }, - { 53387, true }, - { 53410, true }, - { 53429, true }, - { 53448, true }, - { 53470, true }, - { 53489, true }, + { 52518, true }, + { 52538, true }, + { 52553, true }, + { 52562, true }, + { 52580, true }, + { 52602, false }, + { 52624, true }, + { 52643, true }, + { 52659, true }, + { 52674, false }, + { 52690, true }, + { 52714, false }, + { 52728, true }, + { 52742, true }, + { 52758, true }, + { 52777, true }, + { 52789, true }, + { 52798, true }, + { 52813, true }, + { 52828, true }, + { 52841, true }, + { 52853, true }, + { 52865, true }, + { 52883, true }, + { 52903, true }, + { 52925, true }, + { 52943, true }, + { 52953, true }, + { 52964, true }, + { 52981, true }, + { 52998, true }, + { 53013, true }, + { 53030, true }, + { 53045, true }, + { 53062, true }, + { 53076, true }, + { 53090, true }, + { 53107, true }, + { 53123, true }, + { 53142, true }, + { 53159, true }, + { 53176, false }, + { 53191, true }, + { 53218, true }, + { 53238, true }, + { 53258, true }, + { 53280, true }, + { 53299, true }, + { 53319, true }, + { 53340, true }, + { 53363, true }, + { 53389, true }, + { 53409, true }, + { 53427, true }, + { 53445, true }, + { 53468, true }, + { 53487, true }, { 53506, true }, - { 53529, true }, - { 53549, true }, - { 53566, true }, - { 53593, true }, - { 53613, true }, - { 53636, true }, - { 53659, true }, - { 53677, true }, - { 53691, true }, - { 53708, true }, - { 53724, true }, - { 53738, true }, - { 53752, true }, - { 53765, true }, - { 53802, false }, - { 53813, true }, - { 53831, true }, - { 53851, true }, - { 53874, true }, - { 53899, false }, - { 53930, true }, - { 53953, true }, - { 53967, true }, - { 53981, true }, - { 53992, true }, - { 54001, true }, - { 54012, true }, - { 54024, true }, - { 54040, true }, - { 54052, true }, - { 54061, true }, - { 54073, true }, - { 54090, true }, - { 54102, true }, - { 54121, true }, - { 54142, true }, - { 54152, true }, - { 54166, true }, - { 54178, true }, - { 54196, false }, - { 54204, true }, - { 54215, true }, - { 54229, true }, - { 54248, true }, - { 54259, true }, - { 54271, true }, - { 54288, false }, + { 53528, true }, + { 53547, true }, + { 53564, true }, + { 53587, true }, + { 53607, true }, + { 53624, true }, + { 53651, true }, + { 53671, true }, + { 53694, true }, + { 53717, true }, + { 53735, true }, + { 53749, true }, + { 53766, true }, + { 53782, true }, + { 53796, true }, + { 53810, true }, + { 53823, true }, + { 53860, false }, + { 53871, true }, + { 53889, true }, + { 53909, true }, + { 53932, true }, + { 53957, false }, + { 53988, true }, + { 54011, true }, + { 54025, true }, + { 54039, true }, + { 54050, true }, + { 54059, true }, + { 54070, true }, + { 54082, true }, + { 54098, true }, + { 54110, true }, + { 54119, true }, + { 54131, true }, + { 54148, true }, + { 54160, true }, + { 54179, true }, + { 54200, true }, + { 54210, true }, + { 54224, true }, + { 54236, true }, + { 54254, false }, + { 54262, true }, + { 54273, true }, + { 54287, true }, { 54306, true }, - { 54319, true }, - { 54332, true }, - { 54344, true }, - { 54357, true }, - { 54368, true }, - { 54385, true }, - { 54399, true }, - { 54415, true }, - { 54426, true }, - { 54440, true }, - { 54458, true }, + { 54317, true }, + { 54329, true }, + { 54346, false }, + { 54364, true }, + { 54377, true }, + { 54389, true }, + { 54402, true }, + { 54413, true }, + { 54430, true }, + { 54444, true }, + { 54460, true }, { 54471, true }, - { 54489, true }, - { 54506, true }, - { 54524, true }, - { 54536, true }, - { 54544, true }, - { 54564, true }, - { 54578, true }, - { 54592, true }, - { 54604, true }, - { 54616, true }, - { 54627, true }, - { 54642, true }, - { 54654, true }, - { 54663, true }, - { 54673, true }, - { 54684, true }, - { 54698, true }, - { 54709, true }, - { 54723, true }, - { 54746, true }, + { 54485, true }, + { 54503, true }, + { 54516, true }, + { 54534, true }, + { 54551, true }, + { 54569, true }, + { 54581, true }, + { 54589, true }, + { 54609, true }, + { 54623, true }, + { 54637, true }, + { 54649, true }, + { 54661, true }, + { 54672, true }, + { 54687, true }, + { 54699, true }, + { 54708, true }, + { 54718, true }, + { 54729, true }, + { 54743, true }, { 54754, true }, - { 54772, true }, - { 54787, true }, - { 54806, true }, - { 54825, true }, - { 54844, true }, - { 54857, true }, - { 54869, true }, - { 54885, true }, - { 54895, true }, + { 54768, true }, + { 54791, true }, + { 54799, true }, + { 54817, true }, + { 54832, true }, + { 54851, true }, + { 54870, true }, + { 54889, true }, + { 54902, true }, { 54914, true }, - { 54928, true }, - { 54942, true }, + { 54930, true }, + { 54940, true }, { 54959, true }, { 54973, true }, - { 54993, true }, - { 55006, true }, - { 55020, true }, - { 55034, true }, - { 55049, true }, - { 55057, true }, - { 55070, true }, - { 55076, true }, - { 55090, true }, - { 55103, true }, - { 55112, true }, - { 55126, true }, - { 55140, true }, - { 55153, false }, - { 55173, true }, - { 55190, true }, - { 55206, true }, - { 55217, true }, - { 55229, true }, - { 55245, true }, - { 55258, true }, - { 55278, true }, - { 55294, true }, - { 55308, true }, - { 55328, true }, - { 55342, true }, - { 55354, true }, - { 55369, true }, - { 55383, true }, - { 55404, true }, - { 55417, true }, - { 55426, true }, - { 55444, true }, - { 55454, true }, - { 55467, true }, - { 55486, true }, - { 55507, true }, - { 55523, true }, - { 55545, true }, - { 55577, true }, - { 55585, true }, - { 55603, true }, - { 55619, true }, - { 55640, true }, - { 55660, true }, - { 55673, true }, - { 55687, true }, - { 55702, true }, - { 55717, false }, - { 55737, true }, - { 55751, true }, - { 55770, true }, - { 55789, true }, - { 55804, true }, - { 55817, true }, - { 55832, true }, - { 55844, true }, - { 55857, true }, - { 55872, true }, - { 55895, true }, - { 55911, true }, - { 55926, true }, - { 55949, true }, - { 55968, true }, - { 55980, false }, - { 56001, true }, - { 56020, false }, - { 56028, true }, - { 56041, true }, - { 56055, true }, - { 56064, true }, - { 56077, true }, - { 56089, true }, - { 56105, true }, + { 54987, true }, + { 55004, true }, + { 55018, true }, + { 55038, true }, + { 55051, true }, + { 55065, true }, + { 55079, true }, + { 55094, true }, + { 55102, true }, + { 55115, true }, + { 55121, true }, + { 55135, true }, + { 55148, true }, + { 55157, true }, + { 55171, true }, + { 55185, true }, + { 55198, false }, + { 55218, true }, + { 55235, true }, + { 55251, true }, + { 55262, true }, + { 55274, true }, + { 55290, true }, + { 55303, true }, + { 55323, true }, + { 55339, true }, + { 55353, true }, + { 55373, true }, + { 55387, true }, + { 55399, true }, + { 55414, true }, + { 55428, true }, + { 55449, true }, + { 55462, true }, + { 55471, true }, + { 55489, true }, + { 55499, true }, + { 55512, true }, + { 55531, true }, + { 55552, true }, + { 55568, true }, + { 55590, true }, + { 55622, true }, + { 55630, true }, + { 55648, true }, + { 55664, true }, + { 55685, true }, + { 55705, true }, + { 55718, true }, + { 55732, true }, + { 55747, true }, + { 55762, false }, + { 55782, true }, + { 55796, true }, + { 55815, true }, + { 55834, true }, + { 55849, true }, + { 55862, true }, + { 55877, true }, + { 55889, true }, + { 55902, true }, + { 55917, true }, + { 55940, true }, + { 55956, true }, + { 55971, true }, + { 55994, true }, + { 56013, true }, + { 56025, false }, + { 56046, true }, + { 56065, false }, + { 56073, true }, + { 56086, true }, + { 56100, true }, + { 56109, true }, { 56122, true }, - { 56139, false }, - { 56149, true }, - { 56160, false }, - { 56172, true }, - { 56196, true }, - { 56218, true }, - { 56234, true }, - { 56247, true }, - { 56266, true }, - { 56285, true }, - { 56302, true }, - { 56319, false }, - { 56329, true }, + { 56134, true }, + { 56150, true }, + { 56167, true }, + { 56184, false }, + { 56194, true }, + { 56205, false }, + { 56217, true }, + { 56241, true }, + { 56263, true }, + { 56279, true }, + { 56292, true }, + { 56311, true }, + { 56330, true }, { 56347, true }, - { 56363, true }, - { 56382, true }, - { 56399, true }, - { 56421, true }, - { 56433, true }, - { 56446, true }, - { 56467, true }, - { 56489, true }, - { 56506, true }, - { 56528, true }, - { 56544, true }, - { 56558, true }, + { 56364, false }, + { 56374, true }, + { 56392, true }, + { 56408, true }, + { 56427, true }, + { 56444, true }, + { 56466, true }, + { 56478, true }, + { 56491, true }, + { 56512, true }, + { 56534, true }, + { 56551, true }, { 56573, true }, - { 56587, true }, - { 56613, true }, - { 56629, true }, - { 56654, true }, - { 56670, true }, - { 56683, true }, - { 56695, true }, - { 56710, true }, - { 56725, true }, - { 56734, true }, - { 56751, true }, - { 56761, true }, - { 56776, true }, - { 56785, true }, - { 56798, true }, - { 56812, true }, - { 56823, true }, - { 56834, true }, - { 56854, true }, - { 56870, true }, - { 56885, true }, - { 56900, true }, - { 56912, true }, - { 56925, true }, - { 56940, true }, - { 56950, true }, - { 56960, true }, - { 56973, true }, - { 56982, true }, - { 56994, true }, - { 57006, true }, - { 57022, true }, - { 57033, true }, - { 57045, true }, - { 57062, true }, - { 57075, true }, - { 57095, true }, - { 57113, true }, - { 57125, true }, - { 57138, true }, - { 57149, true }, + { 56589, true }, + { 56603, true }, + { 56618, true }, + { 56632, true }, + { 56658, true }, + { 56674, true }, + { 56699, true }, + { 56715, true }, + { 56728, true }, + { 56740, true }, + { 56755, true }, + { 56770, true }, + { 56779, true }, + { 56796, true }, + { 56806, true }, + { 56821, true }, + { 56830, true }, + { 56843, true }, + { 56857, true }, + { 56868, true }, + { 56879, true }, + { 56899, true }, + { 56915, true }, + { 56930, true }, + { 56945, true }, + { 56957, true }, + { 56970, true }, + { 56985, true }, + { 56995, true }, + { 57005, true }, + { 57018, true }, + { 57027, true }, + { 57039, true }, + { 57051, true }, + { 57067, true }, + { 57078, true }, + { 57090, true }, + { 57107, true }, + { 57120, true }, + { 57140, true }, { 57158, true }, - { 57166, true }, - { 57182, true }, - { 57196, true }, - { 57206, true }, - { 57216, true }, + { 57170, true }, + { 57183, true }, + { 57194, true }, + { 57203, true }, + { 57211, true }, { 57227, true }, - { 57246, true }, - { 57259, true }, - { 57273, false }, - { 57293, true }, - { 57302, true }, - { 57322, true }, - { 57346, true }, - { 57370, true }, + { 57241, true }, + { 57251, true }, + { 57261, true }, + { 57272, true }, + { 57291, true }, + { 57304, true }, + { 57318, false }, + { 57338, true }, + { 57347, true }, + { 57367, true }, { 57391, true }, - { 57399, true }, - { 57420, true }, - { 57430, true }, - { 57441, true }, - { 57463, true }, - { 57477, true }, - { 57497, true }, - { 57510, true }, - { 57518, true }, - { 57530, false }, - { 57540, true }, - { 57570, true }, - { 57597, false }, - { 57611, true }, - { 57627, true }, - { 57640, true }, - { 57657, true }, - { 57670, true }, - { 57687, true }, - { 57701, false }, - { 57719, true }, - { 57727, true }, - { 57743, true }, - { 57753, true }, - { 57764, false }, - { 57779, true }, - { 57792, true }, - { 57808, true }, - { 57821, true }, - { 57836, false }, - { 57851, true }, - { 57865, true }, - { 57877, true }, - { 57887, true }, - { 57899, true }, - { 57911, true }, - { 57924, true }, - { 57939, true }, - { 57952, true }, - { 57965, true }, - { 57980, false }, - { 58003, false }, - { 58027, true }, - { 58044, true }, - { 58058, true }, - { 58071, true }, - { 58087, true }, - { 58098, true }, + { 57415, true }, + { 57436, true }, + { 57444, true }, + { 57465, true }, + { 57475, true }, + { 57486, true }, + { 57508, true }, + { 57522, true }, + { 57542, true }, + { 57555, true }, + { 57563, true }, + { 57575, false }, + { 57585, true }, + { 57615, true }, + { 57642, false }, + { 57656, true }, + { 57672, true }, + { 57685, true }, + { 57702, true }, + { 57715, true }, + { 57732, true }, + { 57746, false }, + { 57764, true }, + { 57772, true }, + { 57788, true }, + { 57798, true }, + { 57809, false }, + { 57824, true }, + { 57837, true }, + { 57853, true }, + { 57866, true }, + { 57881, false }, + { 57896, true }, + { 57910, true }, + { 57922, true }, + { 57932, true }, + { 57944, true }, + { 57956, true }, + { 57969, true }, + { 57984, true }, + { 57997, true }, + { 58010, true }, + { 58025, false }, + { 58048, false }, + { 58072, true }, + { 58089, true }, + { 58103, true }, { 58116, true }, - { 58128, true }, - { 58148, true }, - { 58160, true }, - { 58174, true }, - { 58192, true }, - { 58202, true }, - { 58213, true }, + { 58132, true }, + { 58143, true }, + { 58161, true }, + { 58181, true }, + { 58193, true }, + { 58211, true }, + { 58221, true }, { 58232, true }, - { 58254, true }, + { 58251, true }, { 58268, true }, - { 58281, true }, - { 58300, true }, - { 58310, true }, - { 58322, true }, + { 58290, true }, + { 58304, true }, + { 58317, true }, { 58336, true }, - { 58350, true }, - { 58383, true }, - { 58404, true }, - { 58416, true }, - { 58431, true }, - { 58445, true }, - { 58456, true }, - { 58470, true }, - { 58483, true }, - { 58497, true }, - { 58513, true }, - { 58530, true }, - { 58543, true }, - { 58556, true }, - { 58576, true }, - { 58593, true }, - { 58604, true }, - { 58623, true }, - { 58631, true }, - { 58638, true }, - { 58654, true }, + { 58346, true }, + { 58358, true }, + { 58372, true }, + { 58386, true }, + { 58419, true }, + { 58440, true }, + { 58452, true }, + { 58467, true }, + { 58481, true }, + { 58492, true }, + { 58506, true }, + { 58519, true }, + { 58533, true }, + { 58549, true }, + { 58566, true }, + { 58579, true }, + { 58592, true }, + { 58612, true }, + { 58629, true }, + { 58640, true }, + { 58659, true }, { 58667, true }, - { 58679, false }, - { 58691, true }, - { 58702, true }, - { 58724, true }, - { 58737, true }, - { 58757, true }, - { 58769, true }, - { 58781, true }, - { 58794, true }, - { 58811, true }, - { 58829, true }, - { 58843, true }, - { 58858, false }, - { 58873, true }, - { 58894, true }, - { 58907, true }, - { 58923, true }, - { 58939, true }, - { 58953, true }, - { 58966, true }, - { 58982, true }, - { 58999, true }, - { 59012, true }, - { 59036, true }, - { 59058, true }, - { 59078, true }, - { 59097, true }, - { 59112, true }, - { 59126, true }, - { 59138, true }, - { 59149, true }, - { 59165, true }, - { 59181, true }, - { 59202, true }, - { 59221, true }, - { 59239, true }, - { 59266, true }, - { 59285, true }, - { 59305, true }, - { 59319, true }, - { 59333, true }, - { 59350, true }, - { 59362, true }, - { 59382, true }, - { 59395, true }, - { 59409, true }, - { 59430, true }, - { 59451, true }, - { 59458, true }, - { 59470, true }, - { 59492, true }, - { 59508, true }, - { 59519, true }, - { 59535, true }, - { 59550, true }, - { 59563, true }, - { 59581, true }, - { 59601, true }, - { 59615, true }, - { 59629, true }, - { 59645, true }, - { 59660, true }, - { 59670, true }, - { 59686, true }, - { 59697, true }, - { 59707, true }, - { 59719, true }, - { 59731, true }, + { 58674, true }, + { 58690, true }, + { 58703, true }, + { 58715, false }, + { 58727, true }, + { 58738, true }, + { 58760, true }, + { 58773, true }, + { 58793, true }, + { 58805, true }, + { 58817, true }, + { 58830, true }, + { 58847, true }, + { 58865, true }, + { 58879, true }, + { 58894, false }, + { 58909, true }, + { 58930, true }, + { 58943, true }, + { 58959, true }, + { 58975, true }, + { 58989, true }, + { 59002, true }, + { 59018, true }, + { 59035, true }, + { 59048, true }, + { 59072, true }, + { 59094, true }, + { 59114, true }, + { 59133, true }, + { 59148, true }, + { 59162, true }, + { 59174, true }, + { 59185, true }, + { 59201, true }, + { 59217, true }, + { 59238, true }, + { 59257, true }, + { 59275, true }, + { 59302, true }, + { 59321, true }, + { 59341, true }, + { 59355, true }, + { 59369, true }, + { 59386, true }, + { 59398, true }, + { 59418, true }, + { 59431, true }, + { 59445, true }, + { 59466, true }, + { 59487, true }, + { 59494, true }, + { 59506, true }, + { 59528, true }, + { 59544, true }, + { 59555, true }, + { 59571, true }, + { 59586, true }, + { 59599, true }, + { 59617, true }, + { 59637, true }, + { 59651, true }, + { 59665, true }, + { 59681, true }, + { 59696, true }, + { 59706, true }, + { 59722, true }, + { 59733, true }, { 59743, true }, - { 59752, true }, - { 59774, true }, - { 59793, true }, - { 59801, true }, - { 59816, true }, - { 59837, false }, - { 59858, true }, - { 59878, true }, - { 59888, true }, - { 59906, true }, - { 59920, true }, - { 59940, true }, - { 59960, true }, - { 59992, true }, - { 60019, true }, - { 60033, true }, - { 60043, true }, - { 60056, true }, - { 60075, true }, - { 60092, false }, - { 60116, false }, - { 60138, true }, - { 60162, true }, - { 60178, true }, - { 60202, true }, - { 60228, true }, - { 60245, true }, - { 60257, true }, - { 60272, true }, - { 60299, true }, - { 60327, true }, - { 60353, true }, - { 60382, true }, - { 60399, true }, - { 60413, true }, + { 59755, true }, + { 59767, true }, + { 59779, true }, + { 59788, true }, + { 59810, true }, + { 59829, true }, + { 59837, true }, + { 59852, true }, + { 59873, false }, + { 59894, true }, + { 59914, true }, + { 59924, true }, + { 59942, true }, + { 59956, true }, + { 59976, true }, + { 59996, true }, + { 60028, true }, + { 60055, true }, + { 60069, true }, + { 60079, true }, + { 60092, true }, + { 60111, true }, + { 60128, false }, + { 60152, false }, + { 60174, true }, + { 60198, true }, + { 60214, true }, + { 60238, true }, + { 60264, true }, + { 60281, true }, + { 60293, true }, + { 60308, true }, + { 60335, true }, + { 60363, true }, + { 60389, true }, + { 60418, true }, { 60435, true }, - { 60460, true }, + { 60449, true }, { 60471, true }, - { 60484, true }, - { 60499, true }, - { 60521, true }, - { 60546, true }, - { 60562, true }, - { 60586, true }, - { 60610, true }, - { 60625, true }, - { 60639, true }, - { 60654, true }, - { 60669, true }, - { 60683, true }, - { 60702, true }, - { 60718, true }, - { 60737, true }, + { 60496, true }, + { 60507, true }, + { 60520, true }, + { 60535, true }, + { 60557, true }, + { 60582, true }, + { 60598, true }, + { 60622, true }, + { 60646, true }, + { 60661, true }, + { 60675, true }, + { 60690, true }, + { 60705, true }, + { 60719, true }, + { 60738, true }, { 60754, true }, - { 60777, true }, - { 60795, true }, - { 60819, false }, - { 60841, true }, - { 60854, true }, - { 60865, true }, + { 60773, true }, + { 60790, true }, + { 60813, true }, + { 60831, true }, + { 60855, false }, { 60877, true }, - { 60899, true }, - { 60909, true }, - { 60923, true }, - { 60932, true }, + { 60890, true }, + { 60901, true }, + { 60913, true }, + { 60935, true }, { 60945, true }, - { 60964, true }, - { 60979, true }, - { 61002, true }, + { 60959, true }, + { 60968, true }, + { 60981, true }, + { 61000, true }, { 61015, true }, - { 61026, true }, - { 61039, true }, - { 61050, true }, - { 61069, true }, - { 61087, true }, - { 61109, true }, - { 61134, true }, - { 61157, true }, - { 61186, true }, - { 61206, true }, - { 61225, true }, - { 61243, true }, - { 61255, true }, - { 61269, true }, - { 61282, true }, - { 61295, true }, - { 61313, true }, - { 61330, true }, - { 61340, true }, - { 61353, true }, - { 61380, true }, - { 61398, true }, - { 61419, true }, + { 61038, true }, + { 61051, true }, + { 61062, true }, + { 61075, true }, + { 61086, true }, + { 61105, true }, + { 61123, true }, + { 61145, true }, + { 61170, true }, + { 61193, true }, + { 61222, true }, + { 61242, true }, + { 61261, true }, + { 61279, true }, + { 61291, true }, + { 61305, true }, + { 61318, true }, + { 61331, true }, + { 61349, true }, + { 61366, true }, + { 61376, true }, + { 61389, true }, + { 61416, true }, { 61434, true }, - { 61454, true }, - { 61472, true }, - { 61497, true }, - { 61517, true }, - { 61532, false }, - { 61555, true }, - { 61572, true }, - { 61594, false }, - { 61603, true }, - { 61624, true }, + { 61455, true }, + { 61470, true }, + { 61490, true }, + { 61508, true }, + { 61533, true }, + { 61553, true }, + { 61568, false }, + { 61591, true }, + { 61608, true }, + { 61630, false }, { 61639, true }, - { 61656, true }, - { 61667, true }, - { 61680, false }, - { 61719, true }, - { 61729, true }, - { 61742, true }, - { 61754, true }, - { 61770, true }, - { 61784, true }, - { 61802, false }, - { 61817, false }, - { 61833, true }, - { 61842, true }, - { 61861, true }, - { 61872, true }, - { 61885, true }, + { 61660, true }, + { 61675, true }, + { 61692, true }, + { 61703, true }, + { 61716, false }, + { 61755, true }, + { 61765, true }, + { 61778, true }, + { 61790, true }, + { 61806, true }, + { 61820, true }, + { 61838, false }, + { 61853, false }, + { 61869, true }, + { 61878, true }, { 61897, true }, - { 61913, true }, - { 61925, true }, - { 61935, true }, - { 61958, true }, - { 61970, true }, - { 61979, true }, - { 61993, true }, - { 62008, true }, - { 62028, true }, - { 62042, true }, - { 62059, true }, - { 62075, true }, - { 62091, true }, - { 62108, true }, - { 62120, true }, - { 62134, true }, - { 62146, true }, - { 62169, true }, - { 62194, true }, - { 62214, true }, - { 62231, true }, - { 62241, true }, + { 61908, true }, + { 61921, true }, + { 61933, true }, + { 61949, true }, + { 61961, true }, + { 61971, true }, + { 61994, true }, + { 62006, true }, + { 62015, true }, + { 62029, true }, + { 62044, true }, + { 62064, true }, + { 62078, true }, + { 62095, true }, + { 62111, true }, + { 62127, true }, + { 62144, true }, + { 62156, true }, + { 62170, true }, + { 62182, true }, + { 62205, true }, + { 62230, true }, { 62250, true }, { 62267, true }, - { 62279, true }, - { 62290, true }, - { 62305, true }, + { 62277, true }, + { 62286, true }, + { 62303, true }, { 62315, true }, - { 62334, true }, - { 62347, true }, - { 62365, true }, - { 62377, true }, - { 62396, true }, - { 62408, true }, - { 62420, true }, + { 62326, true }, + { 62341, true }, + { 62351, true }, + { 62370, true }, + { 62383, true }, + { 62401, true }, + { 62413, true }, + { 62432, true }, { 62444, true }, - { 62469, true }, - { 62499, true }, - { 62513, true }, - { 62526, true }, - { 62550, true }, - { 62573, true }, - { 62587, true }, - { 62600, true }, - { 62612, true }, - { 62634, true }, - { 62654, true }, - { 62679, true }, - { 62691, true }, - { 62705, true }, - { 62728, true }, - { 62740, true }, - { 62759, true }, - { 62770, true }, - { 62782, true }, - { 62796, true }, - { 62808, true }, - { 62819, true }, - { 62835, true }, - { 62853, true }, - { 62869, true }, - { 62887, true }, - { 62908, true }, - { 62926, true }, + { 62456, true }, + { 62480, true }, + { 62505, true }, + { 62535, true }, + { 62549, true }, + { 62562, true }, + { 62586, true }, + { 62609, true }, + { 62623, true }, + { 62636, true }, + { 62648, true }, + { 62670, true }, + { 62690, true }, + { 62715, true }, + { 62727, true }, + { 62741, true }, + { 62764, true }, + { 62776, true }, + { 62795, true }, + { 62806, true }, + { 62818, true }, + { 62832, true }, + { 62844, true }, + { 62855, true }, + { 62871, true }, + { 62889, true }, + { 62905, true }, + { 62923, true }, { 62944, true }, - { 62960, true }, - { 62977, true }, - { 62990, true }, - { 63003, true }, - { 63014, true }, - { 63034, true }, - { 63052, true }, + { 62962, true }, + { 62980, true }, + { 62996, true }, + { 63013, true }, + { 63026, true }, + { 63039, true }, + { 63050, true }, { 63070, true }, - { 63093, true }, - { 63112, true }, - { 63129, false }, - { 63144, true }, - { 63154, true }, - { 63166, true }, - { 63178, true }, - { 63191, true }, - { 63200, true }, - { 63215, true }, - { 63223, true }, + { 63088, true }, + { 63106, true }, + { 63129, true }, + { 63148, true }, + { 63165, false }, + { 63180, true }, + { 63190, true }, + { 63202, true }, + { 63214, true }, + { 63227, true }, { 63236, true }, - { 63255, true }, - { 63270, true }, - { 63281, true }, + { 63251, true }, + { 63259, true }, + { 63272, true }, + { 63291, true }, { 63306, true }, { 63317, true }, - { 63330, true }, - { 63340, true }, - { 63354, true }, - { 63368, true }, - { 63380, true }, - { 63387, true }, - { 63399, true }, - { 63413, false }, - { 63430, true }, - { 63441, true }, - { 63457, true }, - { 63470, true }, - { 63483, true }, - { 63500, true }, + { 63342, true }, + { 63353, true }, + { 63366, true }, + { 63376, true }, + { 63390, true }, + { 63404, true }, + { 63416, true }, + { 63423, true }, + { 63435, true }, + { 63449, false }, + { 63466, true }, + { 63477, true }, + { 63493, true }, + { 63506, true }, { 63519, true }, - { 63536, false }, - { 63549, true }, - { 63567, true }, - { 63584, true }, - { 63610, true }, - { 63624, true }, - { 63641, true }, + { 63536, true }, + { 63555, true }, + { 63572, false }, + { 63585, true }, + { 63603, true }, + { 63620, true }, + { 63646, true }, { 63660, true }, - { 63675, true }, - { 63689, true }, - { 63700, true }, - { 63712, true }, - { 63726, true }, - { 63743, true }, - { 63756, true }, - { 63769, true }, - { 63781, true }, - { 63799, true }, - { 63818, true }, - { 63834, true }, - { 63853, true }, - { 63872, true }, - { 63892, true }, - { 63908, true }, - { 63924, true }, - { 63938, true }, + { 63677, true }, + { 63696, true }, + { 63711, true }, + { 63725, true }, + { 63736, true }, + { 63748, true }, + { 63762, true }, + { 63779, true }, + { 63792, true }, + { 63805, true }, + { 63817, true }, + { 63835, true }, + { 63854, true }, + { 63870, true }, + { 63889, true }, + { 63909, true }, + { 63925, true }, + { 63941, true }, { 63955, true }, - { 63965, true }, - { 63980, true }, - { 63993, true }, - { 64007, true }, - { 64015, true }, - { 64030, true }, - { 64051, true }, - { 64071, true }, + { 63972, true }, + { 63982, true }, + { 63997, true }, + { 64010, true }, + { 64024, true }, + { 64032, true }, + { 64047, true }, + { 64068, true }, { 64088, true }, - { 64109, true }, + { 64105, true }, { 64126, true }, - { 64144, true }, - { 64163, true }, - { 64182, true }, - { 64202, true }, - { 64233, true }, - { 64248, true }, - { 64267, true }, - { 64286, true }, - { 64302, true }, - { 64322, true }, - { 64334, true }, - { 64345, true }, - { 64359, true }, - { 64369, true }, - { 64388, true }, - { 64400, true }, - { 64416, true }, - { 64437, false }, - { 64456, true }, - { 64470, true }, - { 64479, true }, - { 64494, true }, + { 64143, true }, + { 64161, true }, + { 64180, true }, + { 64199, true }, + { 64219, true }, + { 64250, true }, + { 64265, true }, + { 64284, true }, + { 64303, true }, + { 64319, true }, + { 64339, true }, + { 64351, true }, + { 64362, true }, + { 64376, true }, + { 64386, true }, + { 64405, true }, + { 64417, true }, + { 64433, true }, + { 64454, false }, + { 64473, true }, + { 64487, true }, + { 64496, true }, { 64511, true }, - { 64530, true }, - { 64544, true }, - { 64552, true }, + { 64528, true }, + { 64547, true }, { 64561, true }, - { 64570, true }, - { 64585, true }, - { 64600, true }, + { 64569, true }, + { 64578, true }, + { 64587, true }, + { 64602, true }, { 64617, true }, - { 64631, true }, - { 64643, true }, - { 64651, false }, - { 64662, true }, - { 64683, true }, - { 64704, true }, - { 64715, true }, - { 64745, true }, - { 64754, true }, - { 64768, true }, - { 64787, true }, - { 64805, true }, - { 64818, false }, - { 64833, true }, - { 64849, true }, - { 64871, true }, - { 64881, true }, - { 64895, false }, - { 64909, true }, - { 64925, true }, - { 64938, true }, - { 64963, true }, - { 64978, true }, - { 64992, true }, - { 65004, true }, - { 65019, true }, - { 65031, true }, - { 65054, true }, - { 65077, true }, - { 65090, true }, - { 65109, true }, - { 65117, true }, - { 65133, true }, - { 65148, true }, - { 65173, true }, - { 65183, true }, - { 65193, true }, + { 64634, true }, + { 64648, true }, + { 64660, true }, + { 64668, false }, + { 64679, true }, + { 64700, true }, + { 64721, true }, + { 64732, true }, + { 64762, true }, + { 64771, true }, + { 64785, true }, + { 64804, true }, + { 64822, true }, + { 64835, false }, + { 64850, true }, + { 64866, true }, + { 64888, true }, + { 64898, true }, + { 64912, false }, + { 64926, true }, + { 64942, true }, + { 64955, true }, + { 64980, true }, + { 64995, true }, + { 65009, true }, + { 65021, true }, + { 65036, true }, + { 65048, true }, + { 65071, true }, + { 65094, true }, + { 65107, true }, + { 65126, true }, + { 65134, true }, + { 65150, true }, + { 65165, true }, + { 65190, true }, { 65200, true }, + { 65210, true }, { 65217, true }, - { 65231, true }, - { 65252, true }, - { 65261, true }, - { 65279, true }, - { 65287, true }, - { 65298, true }, + { 65234, true }, + { 65248, true }, + { 65269, true }, + { 65278, true }, + { 65296, true }, + { 65304, true }, { 65315, true }, - { 65329, true }, - { 65342, false }, - { 65353, true }, - { 65369, false }, - { 65379, false }, - { 65395, true }, - { 65408, true }, - { 65423, true }, + { 65332, true }, + { 65346, true }, + { 65359, false }, + { 65370, true }, + { 65386, false }, + { 65396, false }, + { 65412, true }, + { 65425, true }, { 65439, true }, - { 65461, true }, - { 65479, true }, - { 65491, true }, - { 65505, true }, - { 65520, true }, - { 65535, true }, - { 65560, true }, - { 65580, true }, - { 65593, true }, - { 65607, true }, - { 65620, true }, - { 65650, true }, - { 65669, true }, + { 65454, true }, + { 65470, true }, + { 65492, true }, + { 65510, true }, + { 65522, true }, + { 65536, true }, + { 65551, true }, + { 65566, true }, + { 65591, true }, + { 65611, true }, + { 65624, true }, + { 65638, true }, + { 65651, true }, { 65681, true }, - { 65710, true }, - { 65725, true }, - { 65735, true }, - { 65751, true }, - { 65759, true }, - { 65769, true }, - { 65780, true }, - { 65789, true }, - { 65799, true }, - { 65810, true }, - { 65828, true }, - { 65843, true }, - { 65860, true }, - { 65876, true }, - { 65889, true }, - { 65905, true }, - { 65918, true }, - { 65925, true }, - { 65942, true }, - { 65950, true }, - { 65964, true }, - { 65972, false }, - { 65983, true }, - { 66002, true }, - { 66011, true }, - { 66023, true }, - { 66036, true }, - { 66044, true }, - { 66062, true }, - { 66071, true }, - { 66081, true }, - { 66090, true }, - { 66098, true }, - { 66113, true }, + { 65700, true }, + { 65712, true }, + { 65741, true }, + { 65756, true }, + { 65766, true }, + { 65782, true }, + { 65790, true }, + { 65800, true }, + { 65811, true }, + { 65820, true }, + { 65830, true }, + { 65841, true }, + { 65859, true }, + { 65874, true }, + { 65891, true }, + { 65907, true }, + { 65920, true }, + { 65936, true }, + { 65949, true }, + { 65956, true }, + { 65973, true }, + { 65981, true }, + { 65995, true }, + { 66003, false }, + { 66014, true }, + { 66033, true }, + { 66042, true }, + { 66054, true }, + { 66067, true }, + { 66075, true }, + { 66093, true }, + { 66102, true }, + { 66112, true }, { 66121, true }, - { 66141, true }, - { 66164, true }, - { 66177, true }, - { 66191, true }, - { 66210, true }, - { 66229, true }, - { 66243, true }, - { 66255, true }, - { 66264, true }, - { 66275, false }, - { 66284, false }, - { 66307, true }, - { 66317, true }, - { 66335, true }, - { 66352, true }, - { 66372, true }, - { 66385, true }, - { 66399, true }, - { 66415, true }, - { 66425, true }, - { 66435, true }, - { 66452, true }, - { 66468, true }, - { 66475, true }, - { 66484, true }, - { 66503, true }, - { 66516, true }, - { 66528, true }, - { 66539, true }, - { 66546, true }, - { 66557, true }, - { 66568, true }, - { 66576, false }, - { 66592, true }, - { 66602, true }, - { 66616, true }, - { 66634, true }, - { 66654, true }, - { 66670, true }, - { 66686, true }, - { 66707, true }, - { 66726, true }, - { 66748, true }, - { 66760, true }, - { 66771, false }, - { 66793, true }, - { 66812, true }, - { 66828, true }, - { 66846, true }, - { 66861, true }, - { 66878, true }, - { 66894, true }, - { 66911, true }, - { 66928, true }, - { 66947, true }, + { 66129, true }, + { 66144, true }, + { 66152, true }, + { 66172, true }, + { 66195, true }, + { 66208, true }, + { 66222, true }, + { 66241, true }, + { 66260, true }, + { 66274, true }, + { 66286, true }, + { 66295, true }, + { 66306, false }, + { 66315, false }, + { 66338, true }, + { 66348, true }, + { 66366, true }, + { 66383, true }, + { 66403, true }, + { 66416, true }, + { 66430, true }, + { 66446, true }, + { 66456, true }, + { 66466, true }, + { 66483, true }, + { 66499, true }, + { 66506, true }, + { 66515, true }, + { 66534, true }, + { 66547, true }, + { 66559, true }, + { 66570, true }, + { 66577, true }, + { 66588, true }, + { 66599, true }, + { 66607, false }, + { 66623, true }, + { 66633, true }, + { 66647, true }, + { 66665, true }, + { 66685, true }, + { 66701, true }, + { 66717, true }, + { 66738, true }, + { 66757, true }, + { 66779, true }, + { 66791, true }, + { 66802, false }, + { 66824, true }, + { 66843, true }, + { 66859, true }, + { 66877, true }, + { 66892, true }, + { 66909, true }, + { 66925, true }, + { 66942, true }, { 66959, true }, - { 66974, true }, - { 66994, true }, - { 67011, true }, - { 67030, true }, + { 66978, true }, + { 66990, true }, + { 67005, true }, + { 67025, true }, { 67042, true }, - { 67051, true }, - { 67063, true }, + { 67061, true }, { 67073, true }, - { 67083, true }, + { 67082, true }, { 67092, true }, - { 67101, true }, - { 67121, true }, - { 67130, true }, + { 67102, true }, + { 67111, true }, + { 67120, true }, { 67140, true }, - { 67158, true }, - { 67174, true }, - { 67182, true }, + { 67149, true }, + { 67159, true }, + { 67177, true }, { 67193, true }, - { 67200, true }, - { 67213, true }, - { 67230, true }, - { 67244, true }, - { 67251, true }, - { 67261, true }, - { 67272, true }, - { 67286, true }, - { 67298, true }, - { 67318, true }, - { 67335, true }, - { 67346, true }, - { 67364, true }, - { 67376, true }, - { 67393, true }, - { 67406, true }, - { 67426, true }, - { 67445, false }, - { 67459, true }, - { 67477, true }, - { 67490, true }, - { 67507, true }, - { 67521, true }, - { 67535, true }, - { 67549, true }, - { 67566, true }, - { 67592, true }, - { 67606, true }, - { 67621, true }, - { 67635, true }, - { 67650, true }, - { 67665, true }, - { 67676, true }, - { 67689, true }, - { 67702, true }, - { 67712, true }, - { 67723, true }, + { 67201, true }, + { 67212, true }, + { 67219, true }, + { 67232, true }, + { 67249, true }, + { 67263, true }, + { 67270, true }, + { 67280, true }, + { 67291, true }, + { 67305, true }, + { 67317, true }, + { 67337, true }, + { 67354, true }, + { 67365, true }, + { 67383, true }, + { 67395, true }, + { 67412, true }, + { 67425, true }, + { 67445, true }, + { 67464, false }, + { 67478, true }, + { 67496, true }, + { 67509, true }, + { 67526, true }, + { 67540, true }, + { 67554, true }, + { 67568, true }, + { 67585, true }, + { 67611, true }, + { 67625, true }, + { 67640, true }, + { 67654, true }, + { 67669, true }, + { 67684, true }, + { 67695, true }, + { 67708, true }, + { 67721, true }, + { 67731, true }, { 67742, true }, - { 67757, true }, - { 67772, true }, - { 67799, true }, - { 67809, true }, - { 67821, true }, - { 67832, true }, - { 67844, true }, - { 67854, true }, - { 67862, true }, + { 67761, true }, + { 67776, true }, + { 67791, true }, + { 67818, true }, + { 67828, true }, + { 67840, true }, + { 67851, true }, + { 67863, true }, { 67873, true }, - { 67882, true }, - { 67898, true }, - { 67906, true }, - { 67914, true }, + { 67881, true }, + { 67892, true }, + { 67901, true }, + { 67917, true }, { 67925, true }, { 67933, true }, - { 67948, true }, - { 67962, true }, - { 67989, true }, - { 67999, true }, - { 68010, true }, - { 68021, true }, - { 68031, true }, - { 68045, true }, - { 68059, true }, - { 68070, true }, - { 68077, true }, - { 68085, true }, - { 68097, true }, - { 68113, true }, - { 68127, true }, - { 68143, true }, - { 68157, true }, - { 68171, true }, - { 68179, true }, - { 68186, true }, - { 68195, true }, - { 68202, true }, - { 68214, true }, - { 68221, true }, - { 68235, true }, - { 68242, true }, - { 68249, true }, - { 68255, true }, - { 68271, true }, - { 68283, true }, - { 68294, true }, - { 68308, true }, + { 67944, true }, + { 67952, true }, + { 67967, true }, + { 67981, true }, + { 68008, true }, + { 68018, true }, + { 68029, true }, + { 68040, true }, + { 68050, true }, + { 68064, true }, + { 68078, true }, + { 68089, true }, + { 68096, false }, + { 68104, true }, + { 68112, true }, + { 68124, true }, + { 68140, true }, + { 68154, true }, + { 68170, true }, + { 68184, true }, + { 68198, true }, + { 68206, true }, + { 68213, true }, + { 68222, true }, + { 68229, true }, + { 68241, true }, + { 68248, true }, + { 68262, true }, + { 68269, true }, + { 68276, true }, + { 68282, true }, + { 68298, true }, + { 68310, true }, + { 68321, true }, { 68335, true }, - { 68367, true }, - { 68381, true }, - { 68403, true }, - { 68414, true }, - { 68425, true }, - { 68436, true }, - { 68447, true }, - { 68466, true }, - { 68482, true }, - { 68495, true }, - { 68512, true }, - { 68526, true }, - { 68543, true }, - { 68569, true }, - { 68590, false }, - { 68613, true }, - { 68628, true }, - { 68644, false }, - { 68654, true }, - { 68667, true }, - { 68677, true }, - { 68690, true }, - { 68701, true }, - { 68716, true }, - { 68734, true }, - { 68746, true }, - { 68760, true }, - { 68772, true }, - { 68788, true }, - { 68802, true }, - { 68819, true }, - { 68836, true }, - { 68848, true }, - { 68866, true }, - { 68876, true }, - { 68889, true }, - { 68908, true }, - { 68918, true }, - { 68929, true }, - { 68942, true }, - { 68959, true }, - { 68977, true }, - { 68989, true }, - { 69020, true }, - { 69033, true }, - { 69042, true }, + { 68362, true }, + { 68394, true }, + { 68408, true }, + { 68430, true }, + { 68441, true }, + { 68452, true }, + { 68463, true }, + { 68474, true }, + { 68493, true }, + { 68509, true }, + { 68522, true }, + { 68539, true }, + { 68553, true }, + { 68570, true }, + { 68596, true }, + { 68617, false }, + { 68640, true }, + { 68655, true }, + { 68671, false }, + { 68681, true }, + { 68694, true }, + { 68704, true }, + { 68717, true }, + { 68728, true }, + { 68743, true }, + { 68761, true }, + { 68773, true }, + { 68787, true }, + { 68799, true }, + { 68815, true }, + { 68829, true }, + { 68846, true }, + { 68863, true }, + { 68875, true }, + { 68893, true }, + { 68903, true }, + { 68916, true }, + { 68935, true }, + { 68945, true }, + { 68956, true }, + { 68969, true }, + { 68986, true }, + { 69004, true }, + { 69016, true }, + { 69047, true }, { 69060, true }, - { 69074, true }, - { 69090, true }, - { 69110, true }, - { 69124, true }, - { 69143, true }, - { 69161, true }, - { 69177, true }, - { 69197, true }, - { 69218, true }, - { 69239, true }, - { 69255, true }, - { 69271, true }, - { 69290, true }, - { 69305, true }, - { 69326, true }, - { 69346, true }, - { 69366, true }, - { 69382, true }, - { 69397, true }, - { 69417, true }, - { 69433, true }, - { 69452, true }, - { 69470, true }, - { 69486, true }, - { 69497, true }, - { 69511, false }, - { 69521, true }, - { 69536, true }, - { 69545, true }, - { 69557, true }, - { 69571, true }, - { 69589, true }, - { 69598, true }, - { 69616, true }, - { 69630, true }, - { 69648, true }, - { 69658, false }, - { 69670, true }, - { 69683, true }, - { 69698, true }, - { 69713, true }, - { 69728, true }, - { 69736, true }, - { 69770, true }, - { 69781, true }, - { 69798, true }, - { 69811, false }, - { 69825, true }, - { 69843, true }, - { 69854, true }, - { 69870, true }, - { 69888, true }, - { 69899, true }, - { 69914, true }, - { 69925, true }, - { 69940, true }, - { 69955, true }, - { 69971, true }, - { 69991, true }, - { 70008, true }, - { 70020, true }, - { 70049, true }, - { 70082, true }, - { 70094, true }, - { 70106, true }, - { 70123, true }, - { 70135, true }, - { 70147, true }, - { 70162, true }, - { 70171, true }, - { 70183, true }, - { 70195, true }, - { 70212, true }, - { 70227, true }, - { 70241, true }, - { 70256, true }, - { 70268, false }, - { 70282, true }, - { 70292, true }, - { 70312, true }, - { 70330, true }, - { 70343, false }, - { 70357, true }, - { 70368, true }, - { 70381, true }, - { 70390, true }, - { 70400, false }, - { 70416, true }, - { 70428, true }, - { 70443, true }, - { 70457, true }, - { 70471, true }, - { 70485, true }, - { 70505, true }, - { 70526, true }, - { 70544, true }, - { 70555, true }, - { 70575, true }, - { 70588, true }, - { 70601, true }, - { 70614, true }, - { 70641, true }, - { 70652, true }, - { 70669, true }, - { 70695, true }, - { 70715, true }, - { 70729, true }, - { 70746, false }, - { 70760, true }, - { 70774, false }, - { 70791, true }, - { 70816, true }, - { 70832, true }, - { 70845, true }, - { 70858, true }, - { 70874, true }, - { 70901, true }, - { 70920, true }, - { 70939, false }, - { 70951, true }, - { 70962, true }, - { 70977, true }, - { 70989, true }, - { 71005, true }, - { 71020, true }, - { 71037, true }, - { 71052, true }, - { 71067, true }, - { 71082, true }, - { 71104, true }, - { 71122, true }, - { 71138, true }, - { 71155, true }, - { 71175, true }, - { 71189, true }, - { 71205, true }, - { 71223, true }, - { 71236, true }, - { 71253, true }, - { 71266, true }, - { 71280, true }, - { 71295, true }, - { 71309, true }, - { 71324, true }, - { 71340, true }, - { 71359, true }, - { 71380, true }, - { 71397, true }, - { 71413, true }, - { 71429, true }, - { 71448, true }, - { 71468, true }, - { 71480, true }, - { 71493, true }, - { 71503, true }, - { 71513, true }, - { 71529, true }, - { 71545, true }, - { 71556, true }, - { 71569, true }, - { 71595, true }, - { 71608, true }, - { 71628, false }, - { 71639, true }, - { 71657, true }, - { 71671, true }, - { 71683, true }, - { 71694, true }, - { 71702, true }, - { 71711, true }, - { 71719, true }, - { 71736, true }, - { 71747, true }, - { 71755, true }, - { 71767, true }, - { 71775, true }, - { 71785, true }, - { 71795, true }, - { 71806, true }, - { 71819, true }, - { 71840, true }, - { 71852, true }, - { 71864, true }, - { 71875, true }, - { 71883, true }, - { 71895, true }, - { 71903, true }, - { 71914, true }, - { 71925, true }, - { 71935, true }, - { 71946, false }, - { 71954, false }, - { 71970, true }, - { 71983, true }, - { 71998, true }, - { 72015, true }, - { 72037, true }, - { 72058, true }, - { 72066, true }, - { 72079, true }, - { 72089, true }, - { 72103, true }, - { 72114, false }, - { 72134, true }, - { 72149, true }, - { 72161, true }, - { 72174, true }, - { 72187, true }, - { 72199, true }, - { 72211, true }, - { 72232, true }, - { 72246, true }, - { 72260, true }, - { 72277, true }, - { 72292, true }, - { 72306, true }, - { 72320, true }, - { 72334, true }, - { 72348, true }, - { 72362, true }, - { 72377, true }, - { 72389, true }, - { 72403, true }, - { 72421, true }, - { 72436, true }, - { 72452, true }, - { 72467, true }, - { 72479, true }, - { 72491, true }, - { 72503, true }, - { 72513, true }, - { 72531, true }, - { 72544, true }, - { 72557, true }, - { 72585, true }, - { 72606, true }, - { 72626, true }, - { 72641, true }, - { 72658, true }, - { 72679, true }, - { 72692, true }, - { 72704, true }, - { 72717, true }, - { 72732, true }, - { 72757, true }, - { 72774, true }, - { 72791, true }, - { 72814, true }, - { 72826, true }, - { 72834, true }, - { 72846, true }, - { 72855, true }, - { 72875, true }, - { 72886, true }, - { 72901, true }, - { 72917, true }, - { 72924, true }, - { 72931, true }, - { 72954, true }, - { 72968, true }, - { 72983, true }, - { 72998, true }, - { 73013, true }, - { 73031, true }, - { 73042, true }, - { 73052, true }, - { 73061, true }, - { 73073, true }, - { 73084, true }, - { 73095, true }, - { 73108, true }, - { 73129, true }, - { 73139, true }, - { 73155, true }, - { 73170, true }, - { 73186, true }, - { 73203, true }, - { 73219, true }, - { 73236, true }, - { 73250, true }, - { 73265, true }, - { 73281, true }, - { 73296, true }, - { 73307, true }, - { 73317, true }, - { 73328, true }, - { 73341, true }, - { 73351, true }, - { 73364, true }, - { 73376, true }, - { 73400, true }, - { 73428, true }, - { 73440, true }, - { 73454, true }, - { 73464, true }, - { 73478, true }, - { 73494, true }, - { 73512, true }, - { 73523, true }, - { 73535, true }, - { 73551, true }, - { 73562, true }, - { 73575, true }, - { 73595, true }, - { 73606, true }, - { 73627, true }, - { 73649, true }, - { 73669, true }, - { 73690, true }, - { 73705, true }, - { 73719, true }, - { 73734, true }, - { 73751, true }, - { 73763, true }, - { 73774, true }, - { 73793, true }, - { 73805, true }, - { 73821, true }, - { 73829, true }, - { 73842, true }, - { 73866, true }, - { 73880, true }, - { 73892, true }, - { 73905, true }, - { 73922, true }, - { 73935, true }, - { 73947, true }, - { 73960, true }, - { 73972, true }, - { 73985, true }, - { 73998, true }, - { 74009, true }, - { 74027, true }, - { 74045, true }, - { 74057, true }, - { 74072, true }, - { 74089, false }, - { 74104, true }, - { 74118, true }, - { 74134, true }, - { 74148, true }, - { 74156, true }, - { 74185, true }, - { 74204, true }, - { 74217, true }, - { 74242, true }, - { 74266, true }, - { 74283, true }, - { 74298, true }, - { 74319, true }, - { 74331, true }, - { 74344, true }, - { 74361, true }, - { 74381, true }, - { 74393, true }, - { 74417, true }, - { 74450, true }, - { 74473, true }, - { 74485, true }, - { 74507, true }, - { 74524, true }, - { 74539, true }, - { 74553, true }, - { 74563, true }, - { 74582, true }, - { 74592, true }, - { 74605, true }, - { 74615, true }, - { 74625, true }, - { 74646, true }, - { 74655, true }, - { 74673, true }, - { 74691, true }, - { 74704, true }, - { 74722, true }, - { 74734, true }, - { 74751, true }, - { 74773, true }, - { 74790, true }, - { 74802, true }, - { 74816, true }, + { 69069, true }, + { 69087, true }, + { 69101, true }, + { 69117, true }, + { 69137, true }, + { 69151, true }, + { 69170, true }, + { 69188, true }, + { 69204, true }, + { 69224, true }, + { 69245, true }, + { 69266, true }, + { 69282, true }, + { 69298, true }, + { 69317, true }, + { 69332, true }, + { 69353, true }, + { 69373, true }, + { 69393, true }, + { 69409, true }, + { 69424, true }, + { 69440, true }, + { 69459, true }, + { 69477, true }, + { 69493, true }, + { 69504, true }, + { 69518, false }, + { 69528, true }, + { 69543, true }, + { 69552, true }, + { 69564, true }, + { 69578, true }, + { 69596, true }, + { 69605, true }, + { 69623, true }, + { 69637, true }, + { 69655, true }, + { 69665, false }, + { 69677, true }, + { 69690, true }, + { 69705, true }, + { 69720, true }, + { 69735, true }, + { 69743, true }, + { 69777, true }, + { 69788, true }, + { 69805, true }, + { 69818, false }, + { 69832, true }, + { 69850, true }, + { 69861, true }, + { 69877, true }, + { 69895, true }, + { 69906, true }, + { 69921, true }, + { 69932, true }, + { 69947, true }, + { 69962, true }, + { 69978, true }, + { 69998, true }, + { 70015, true }, + { 70027, true }, + { 70056, true }, + { 70089, true }, + { 70101, true }, + { 70113, true }, + { 70130, true }, + { 70142, true }, + { 70154, true }, + { 70169, true }, + { 70178, true }, + { 70190, true }, + { 70202, true }, + { 70219, true }, + { 70234, true }, + { 70248, true }, + { 70263, true }, + { 70275, false }, + { 70289, true }, + { 70299, true }, + { 70319, true }, + { 70337, true }, + { 70350, false }, + { 70364, true }, + { 70375, true }, + { 70388, true }, + { 70397, true }, + { 70407, false }, + { 70423, true }, + { 70435, true }, + { 70450, true }, + { 70464, true }, + { 70478, true }, + { 70492, true }, + { 70512, true }, + { 70533, true }, + { 70551, true }, + { 70562, true }, + { 70582, true }, + { 70595, true }, + { 70611, true }, + { 70624, true }, + { 70637, true }, + { 70664, true }, + { 70675, true }, + { 70692, true }, + { 70718, true }, + { 70738, true }, + { 70752, true }, + { 70769, false }, + { 70783, true }, + { 70797, false }, + { 70814, true }, + { 70839, true }, + { 70855, true }, + { 70868, true }, + { 70881, true }, + { 70897, true }, + { 70924, true }, + { 70943, true }, + { 70962, false }, + { 70974, true }, + { 70985, true }, + { 71000, true }, + { 71012, true }, + { 71028, true }, + { 71043, true }, + { 71058, true }, + { 71073, true }, + { 71088, true }, + { 71110, true }, + { 71128, true }, + { 71144, true }, + { 71161, true }, + { 71181, true }, + { 71195, true }, + { 71211, true }, + { 71229, true }, + { 71242, true }, + { 71259, true }, + { 71272, true }, + { 71286, true }, + { 71301, true }, + { 71315, true }, + { 71330, true }, + { 71346, true }, + { 71365, true }, + { 71386, true }, + { 71403, true }, + { 71419, true }, + { 71435, true }, + { 71454, true }, + { 71474, true }, + { 71486, true }, + { 71499, true }, + { 71509, true }, + { 71519, true }, + { 71535, true }, + { 71551, true }, + { 71562, true }, + { 71575, true }, + { 71601, true }, + { 71614, true }, + { 71634, false }, + { 71645, true }, + { 71663, true }, + { 71677, true }, + { 71689, true }, + { 71700, true }, + { 71708, true }, + { 71717, true }, + { 71725, true }, + { 71742, true }, + { 71753, true }, + { 71761, true }, + { 71773, true }, + { 71781, true }, + { 71791, true }, + { 71801, true }, + { 71812, true }, + { 71825, true }, + { 71846, true }, + { 71858, true }, + { 71870, true }, + { 71881, true }, + { 71889, true }, + { 71901, true }, + { 71909, true }, + { 71920, true }, + { 71931, true }, + { 71941, true }, + { 71952, false }, + { 71960, false }, + { 71976, true }, + { 71989, true }, + { 72004, true }, + { 72021, true }, + { 72043, true }, + { 72064, true }, + { 72072, true }, + { 72085, true }, + { 72095, true }, + { 72109, true }, + { 72120, false }, + { 72140, true }, + { 72155, true }, + { 72167, true }, + { 72180, true }, + { 72193, true }, + { 72205, true }, + { 72217, true }, + { 72238, true }, + { 72252, true }, + { 72266, true }, + { 72283, true }, + { 72298, true }, + { 72312, true }, + { 72326, true }, + { 72340, true }, + { 72354, true }, + { 72368, true }, + { 72383, true }, + { 72395, true }, + { 72409, true }, + { 72427, true }, + { 72442, true }, + { 72458, true }, + { 72473, true }, + { 72485, true }, + { 72497, true }, + { 72509, true }, + { 72519, true }, + { 72537, true }, + { 72550, true }, + { 72563, true }, + { 72591, true }, + { 72612, true }, + { 72632, true }, + { 72647, true }, + { 72664, true }, + { 72685, true }, + { 72698, true }, + { 72710, true }, + { 72723, true }, + { 72738, true }, + { 72763, true }, + { 72780, true }, + { 72797, true }, + { 72820, true }, + { 72832, true }, + { 72840, true }, + { 72852, true }, + { 72861, true }, + { 72881, true }, + { 72892, true }, + { 72907, true }, + { 72923, true }, + { 72930, true }, + { 72937, true }, + { 72960, true }, + { 72974, true }, + { 72989, true }, + { 73004, true }, + { 73019, true }, + { 73037, true }, + { 73048, true }, + { 73058, true }, + { 73067, true }, + { 73079, true }, + { 73090, true }, + { 73101, true }, + { 73114, true }, + { 73135, true }, + { 73145, true }, + { 73161, true }, + { 73176, true }, + { 73192, true }, + { 73209, true }, + { 73225, true }, + { 73242, true }, + { 73256, true }, + { 73271, true }, + { 73287, true }, + { 73302, true }, + { 73313, true }, + { 73323, true }, + { 73334, true }, + { 73347, true }, + { 73357, true }, + { 73370, true }, + { 73382, true }, + { 73406, true }, + { 73434, true }, + { 73446, true }, + { 73460, true }, + { 73470, true }, + { 73484, true }, + { 73500, true }, + { 73518, true }, + { 73529, true }, + { 73541, true }, + { 73557, true }, + { 73568, true }, + { 73581, true }, + { 73601, true }, + { 73612, true }, + { 73633, true }, + { 73655, true }, + { 73675, true }, + { 73696, true }, + { 73711, true }, + { 73725, true }, + { 73740, true }, + { 73757, true }, + { 73769, true }, + { 73780, true }, + { 73799, true }, + { 73811, true }, + { 73827, true }, + { 73835, true }, + { 73848, true }, + { 73872, true }, + { 73886, true }, + { 73898, true }, + { 73911, true }, + { 73928, true }, + { 73941, true }, + { 73953, true }, + { 73966, true }, + { 73978, true }, + { 73991, true }, + { 74004, true }, + { 74015, true }, + { 74033, true }, + { 74051, true }, + { 74063, true }, + { 74078, true }, + { 74095, false }, + { 74110, true }, + { 74124, true }, + { 74140, true }, + { 74154, true }, + { 74162, true }, + { 74191, true }, + { 74210, true }, + { 74223, true }, + { 74248, true }, + { 74272, true }, + { 74289, true }, + { 74304, true }, + { 74325, true }, + { 74337, true }, + { 74350, true }, + { 74367, true }, + { 74387, true }, + { 74399, true }, + { 74423, true }, + { 74456, true }, + { 74479, true }, + { 74491, true }, + { 74513, true }, + { 74530, true }, + { 74545, true }, + { 74559, true }, + { 74585, true }, + { 74595, true }, + { 74614, true }, + { 74624, true }, + { 74637, true }, + { 74647, true }, + { 74657, true }, + { 74678, true }, + { 74687, true }, + { 74705, true }, + { 74723, true }, + { 74736, true }, + { 74754, true }, + { 74766, true }, + { 74783, true }, + { 74805, true }, + { 74822, true }, { 74834, true }, - { 74861, true }, - { 74879, true }, - { 74904, true }, - { 74924, true }, - { 74939, true }, - { 74954, true }, - { 74967, true }, - { 74988, true }, - { 74997, true }, - { 75022, true }, - { 75038, false }, - { 75049, true }, - { 75062, true }, - { 75075, true }, - { 75106, true }, - { 75135, true }, - { 75146, true }, - { 75156, true }, - { 75173, true }, - { 75184, true }, - { 75200, false }, - { 75214, true }, - { 75228, true }, - { 75247, true }, - { 75266, true }, - { 75288, true }, - { 75302, true }, - { 75317, true }, + { 74848, true }, + { 74866, true }, + { 74893, true }, + { 74911, true }, + { 74936, true }, + { 74956, true }, + { 74971, true }, + { 74986, true }, + { 74999, true }, + { 75020, true }, + { 75029, true }, + { 75054, true }, + { 75070, false }, + { 75081, true }, + { 75094, true }, + { 75107, true }, + { 75138, true }, + { 75167, true }, + { 75178, true }, + { 75188, true }, + { 75205, true }, + { 75216, true }, + { 75232, false }, + { 75246, true }, + { 75260, true }, + { 75279, true }, + { 75298, true }, + { 75320, true }, { 75334, true }, - { 75343, true }, - { 75381, true }, - { 75409, true }, - { 75420, true }, + { 75349, true }, + { 75366, true }, + { 75375, true }, + { 75413, true }, { 75428, true }, - { 75437, true }, - { 75450, true }, - { 75460, true }, - { 75474, true }, - { 75483, true }, - { 75496, true }, - { 75512, false }, - { 75537, true }, - { 75555, false }, - { 75579, true }, - { 75593, true }, - { 75612, true }, - { 75639, true }, - { 75651, true }, - { 75663, true }, - { 75671, true }, - { 75680, true }, - { 75694, true }, - { 75711, true }, + { 75439, true }, + { 75451, true }, + { 75469, true }, + { 75497, true }, + { 75508, true }, + { 75516, true }, + { 75525, true }, + { 75538, true }, + { 75548, true }, + { 75562, true }, + { 75571, true }, + { 75584, true }, + { 75600, false }, + { 75625, true }, + { 75643, false }, + { 75667, true }, + { 75681, true }, + { 75700, true }, { 75727, true }, - { 75742, false }, - { 75754, true }, - { 75766, true }, - { 75781, true }, - { 75798, true }, - { 75810, true }, - { 75822, true }, - { 75832, true }, - { 75846, true }, - { 75863, true }, - { 75881, false }, - { 75901, true }, - { 75913, true }, - { 75925, true }, - { 75937, true }, - { 75946, true }, - { 75957, true }, - { 75969, true }, - { 75982, true }, - { 75991, true }, + { 75739, true }, + { 75751, true }, + { 75759, true }, + { 75768, true }, + { 75782, true }, + { 75799, true }, + { 75815, true }, + { 75830, false }, + { 75842, true }, + { 75854, true }, + { 75869, true }, + { 75886, true }, + { 75898, true }, + { 75910, true }, + { 75920, true }, + { 75934, true }, + { 75951, true }, + { 75969, false }, + { 75989, true }, { 76001, true }, - { 76014, true }, - { 76030, true }, - { 76052, true }, - { 76062, true }, - { 76076, true }, - { 76085, true }, - { 76097, true }, - { 76104, true }, - { 76117, false }, - { 76126, true }, - { 76138, true }, - { 76147, true }, - { 76156, true }, - { 76166, true }, - { 76180, true }, - { 76187, true }, - { 76204, true }, - { 76215, true }, - { 76228, true }, - { 76242, true }, - { 76251, true }, - { 76263, true }, - { 76272, true }, + { 76013, true }, + { 76025, true }, + { 76034, true }, + { 76045, true }, + { 76057, true }, + { 76070, true }, + { 76079, true }, + { 76089, true }, + { 76102, true }, + { 76118, true }, + { 76140, true }, + { 76150, true }, + { 76164, true }, + { 76173, true }, + { 76185, true }, + { 76192, true }, + { 76205, false }, + { 76214, true }, + { 76226, true }, + { 76235, true }, + { 76244, true }, + { 76254, true }, + { 76268, true }, + { 76275, true }, { 76292, true }, - { 76306, true }, - { 76321, true }, - { 76333, true }, - { 76349, true }, - { 76365, true }, + { 76303, true }, + { 76316, true }, + { 76330, true }, + { 76339, true }, + { 76351, true }, + { 76360, true }, { 76380, true }, - { 76397, true }, - { 76414, true }, - { 76423, true }, - { 76433, true }, - { 76455, true }, - { 76464, true }, - { 76476, true }, - { 76499, true }, - { 76513, true }, - { 76527, true }, - { 76541, true }, - { 76556, true }, - { 76582, true }, - { 76607, true }, - { 76640, true }, - { 76668, true }, - { 76697, true }, - { 76706, true }, - { 76722, true }, - { 76734, true }, - { 76745, true }, + { 76394, true }, + { 76409, true }, + { 76421, true }, + { 76437, true }, + { 76453, true }, + { 76468, true }, + { 76485, true }, + { 76502, true }, + { 76511, true }, + { 76521, true }, + { 76543, true }, + { 76552, true }, + { 76564, true }, + { 76587, true }, + { 76601, true }, + { 76615, true }, + { 76629, true }, + { 76644, true }, + { 76670, true }, + { 76695, true }, + { 76728, true }, { 76756, true }, - { 76772, true }, - { 76797, true }, - { 76819, true }, + { 76785, true }, + { 76794, true }, + { 76810, true }, + { 76822, true }, + { 76833, true }, { 76844, true }, { 76860, true }, - { 76891, true }, - { 76902, true }, - { 76914, true }, - { 76930, true }, - { 76944, true }, - { 76959, true }, - { 76977, true }, - { 76986, true }, - { 77000, true }, - { 77018, true }, - { 77032, true }, - { 77055, true }, - { 77073, true }, - { 77083, true }, - { 77096, true }, - { 77106, true }, - { 77118, true }, - { 77133, true }, - { 77147, true }, - { 77160, true }, - { 77174, true }, + { 76885, true }, + { 76900, true }, + { 76922, true }, + { 76947, true }, + { 76963, true }, + { 76994, true }, + { 77005, true }, + { 77017, true }, + { 77033, true }, + { 77047, true }, + { 77062, true }, + { 77080, true }, + { 77089, true }, + { 77103, true }, + { 77121, true }, + { 77135, true }, + { 77158, true }, + { 77176, true }, { 77186, true }, - { 77200, true }, - { 77211, true }, - { 77222, true }, - { 77234, true }, - { 77246, true }, - { 77259, true }, - { 77270, true }, - { 77282, true }, - { 77298, false }, - { 77311, true }, - { 77322, true }, - { 77334, false }, - { 77351, true }, - { 77371, true }, - { 77388, true }, - { 77412, true }, - { 77430, true }, - { 77447, true }, - { 77463, true }, - { 77479, true }, - { 77494, true }, - { 77509, true }, - { 77532, true }, - { 77558, true }, - { 77578, true }, - { 77593, true }, - { 77613, true }, - { 77635, false }, - { 77653, true }, - { 77672, true }, - { 77689, true }, - { 77708, true }, - { 77724, true }, - { 77737, true }, - { 77754, true }, - { 77764, false }, - { 77781, true }, - { 77800, true }, - { 77808, true }, - { 77820, true }, - { 77839, true }, - { 77856, true }, - { 77870, true }, - { 77887, true }, - { 77895, true }, - { 77904, true }, - { 77915, true }, - { 77933, true }, - { 77945, true }, - { 77956, true }, - { 77966, true }, - { 77977, true }, - { 77987, true }, - { 77995, true }, - { 78005, true }, + { 77199, true }, + { 77209, true }, + { 77221, true }, + { 77236, true }, + { 77250, true }, + { 77263, true }, + { 77277, true }, + { 77289, true }, + { 77303, true }, + { 77314, true }, + { 77325, true }, + { 77337, true }, + { 77349, true }, + { 77362, true }, + { 77373, true }, + { 77385, true }, + { 77401, false }, + { 77414, true }, + { 77425, true }, + { 77437, false }, + { 77454, true }, + { 77474, true }, + { 77491, true }, + { 77515, true }, + { 77533, true }, + { 77550, true }, + { 77566, true }, + { 77582, true }, + { 77597, true }, + { 77612, true }, + { 77635, true }, + { 77661, true }, + { 77681, true }, + { 77696, true }, + { 77716, true }, + { 77738, false }, + { 77756, true }, + { 77775, true }, + { 77792, true }, + { 77811, true }, + { 77827, true }, + { 77840, true }, + { 77857, true }, + { 77867, false }, + { 77884, true }, + { 77903, true }, + { 77911, true }, + { 77923, true }, + { 77942, true }, + { 77959, true }, + { 77973, true }, + { 77990, true }, + { 77998, true }, + { 78007, true }, { 78018, true }, - { 78032, true }, - { 78043, true }, - { 78056, true }, - { 78068, true }, - { 78087, false }, - { 78095, true }, - { 78106, true }, - { 78117, true }, - { 78130, true }, - { 78143, true }, - { 78162, true }, - { 78178, true }, - { 78202, true }, - { 78214, true }, - { 78228, true }, - { 78244, true }, - { 78258, true }, - { 78269, true }, - { 78280, true }, - { 78294, true }, - { 78306, true }, - { 78321, true }, - { 78337, true }, - { 78350, true }, - { 78362, true }, - { 78376, true }, + { 78036, true }, + { 78048, true }, + { 78059, true }, + { 78069, true }, + { 78080, true }, + { 78090, true }, + { 78098, true }, + { 78108, true }, + { 78121, true }, + { 78135, true }, + { 78146, true }, + { 78159, true }, + { 78171, true }, + { 78190, false }, + { 78198, true }, + { 78209, true }, + { 78220, true }, + { 78233, true }, + { 78246, true }, + { 78265, true }, + { 78281, true }, + { 78305, true }, + { 78317, true }, + { 78331, true }, + { 78347, true }, + { 78361, true }, + { 78372, true }, + { 78383, true }, { 78397, true }, - { 78412, true }, - { 78430, true }, - { 78445, true }, - { 78459, true }, - { 78480, false }, - { 78502, true }, - { 78524, true }, - { 78540, true }, - { 78561, true }, - { 78578, true }, - { 78594, true }, - { 78608, true }, - { 78629, true }, - { 78645, true }, - { 78662, true }, - { 78677, false }, + { 78409, true }, + { 78424, true }, + { 78440, true }, + { 78453, true }, + { 78465, true }, + { 78479, true }, + { 78500, true }, + { 78515, true }, + { 78533, true }, + { 78548, true }, + { 78562, true }, + { 78583, false }, + { 78605, true }, + { 78627, true }, + { 78643, true }, + { 78664, true }, + { 78681, true }, { 78697, true }, - { 78727, true }, - { 78753, true }, - { 78775, true }, - { 78784, true }, - { 78797, true }, - { 78805, true }, - { 78825, true }, - { 78837, true }, - { 78851, true }, - { 78874, true }, - { 78897, true }, - { 78916, true }, - { 78938, true }, - { 78956, true }, - { 78975, true }, - { 78993, true }, - { 79004, true }, - { 79015, true }, - { 79025, true }, - { 79042, true }, - { 79054, true }, - { 79073, true }, - { 79083, true }, - { 79093, true }, - { 79112, true }, - { 79130, true }, - { 79149, true }, - { 79156, true }, - { 79167, true }, - { 79177, true }, - { 79195, true }, - { 79219, true }, - { 79228, false }, - { 79248, true }, - { 79256, true }, - { 79266, false }, - { 79281, true }, - { 79295, true }, - { 79308, true }, - { 79316, true }, - { 79323, true }, - { 79333, true }, - { 79342, true }, - { 79355, true }, - { 79365, true }, - { 79374, false }, - { 79389, true }, - { 79398, false }, - { 79407, true }, - { 79421, true }, - { 79438, true }, - { 79447, true }, - { 79454, true }, - { 79462, true }, - { 79474, true }, - { 79484, true }, - { 79501, true }, - { 79509, false }, - { 79517, true }, - { 79525, true }, - { 79532, true }, - { 79543, true }, + { 78711, true }, + { 78732, true }, + { 78748, true }, + { 78765, true }, + { 78780, false }, + { 78800, true }, + { 78830, true }, + { 78856, true }, + { 78878, true }, + { 78887, true }, + { 78900, true }, + { 78908, true }, + { 78928, true }, + { 78940, true }, + { 78954, true }, + { 78977, true }, + { 79000, true }, + { 79019, true }, + { 79041, true }, + { 79059, true }, + { 79078, true }, + { 79096, true }, + { 79107, true }, + { 79118, true }, + { 79128, true }, + { 79145, true }, + { 79157, true }, + { 79176, true }, + { 79186, true }, + { 79196, true }, + { 79215, true }, + { 79233, true }, + { 79252, true }, + { 79259, true }, + { 79270, true }, + { 79280, true }, + { 79298, true }, + { 79322, true }, + { 79331, false }, + { 79351, true }, + { 79359, true }, + { 79369, false }, + { 79384, true }, + { 79398, true }, + { 79411, true }, + { 79419, true }, + { 79426, true }, + { 79436, true }, + { 79445, true }, + { 79458, true }, + { 79468, true }, + { 79477, false }, + { 79492, true }, + { 79501, false }, + { 79510, true }, + { 79524, true }, + { 79541, true }, { 79550, true }, - { 79561, true }, - { 79571, true }, - { 79586, true }, - { 79603, true }, - { 79618, true }, - { 79631, true }, - { 79643, true }, - { 79658, true }, - { 79669, true }, - { 79679, true }, - { 79697, true }, - { 79703, true }, - { 79711, true }, - { 79720, true }, + { 79557, true }, + { 79565, true }, + { 79577, true }, + { 79587, true }, + { 79604, true }, + { 79612, false }, + { 79620, true }, + { 79628, true }, + { 79635, true }, + { 79646, true }, + { 79659, true }, + { 79666, true }, + { 79677, true }, + { 79687, true }, + { 79702, true }, + { 79719, true }, { 79734, true }, - { 79746, true }, - { 79758, true }, - { 79773, true }, - { 79780, true }, - { 79790, true }, - { 79800, true }, - { 79817, true }, - { 79835, true }, - { 79852, true }, - { 79864, true }, + { 79747, true }, + { 79759, true }, + { 79774, true }, + { 79785, true }, + { 79795, true }, + { 79813, true }, + { 79819, true }, + { 79827, true }, + { 79836, true }, + { 79850, true }, + { 79862, true }, { 79874, true }, - { 79884, true }, - { 79898, true }, - { 79911, false }, - { 79927, true }, - { 79943, true }, - { 79962, true }, - { 79976, true }, - { 79992, true }, - { 80005, true }, - { 80020, true }, - { 80031, true }, + { 79889, true }, + { 79896, true }, + { 79906, true }, + { 79916, true }, + { 79933, true }, + { 79951, true }, + { 79968, true }, + { 79980, true }, + { 79990, true }, + { 80000, true }, + { 80014, true }, + { 80027, false }, { 80043, true }, - { 80061, true }, - { 80070, true }, - { 80083, false }, + { 80059, true }, + { 80078, true }, { 80092, true }, - { 80112, true }, + { 80108, true }, { 80121, true }, - { 80143, true }, - { 80153, true }, - { 80166, true }, - { 80178, true }, - { 80193, true }, - { 80207, true }, - { 80219, true }, - { 80241, true }, - { 80252, true }, - { 80260, true }, - { 80271, true }, - { 80285, true }, - { 80298, true }, - { 80318, true }, - { 80332, true }, - { 80355, true }, - { 80371, true }, - { 80379, true }, - { 80393, true }, + { 80136, true }, + { 80147, true }, + { 80159, true }, + { 80177, true }, + { 80186, true }, + { 80199, false }, + { 80208, true }, + { 80228, true }, + { 80237, true }, + { 80259, true }, + { 80269, true }, + { 80282, true }, + { 80294, true }, + { 80309, true }, + { 80323, true }, + { 80335, true }, + { 80357, true }, + { 80368, true }, + { 80376, true }, + { 80387, true }, + { 80401, true }, { 80414, true }, - { 80429, true }, - { 80448, false }, - { 80465, true }, - { 80479, true }, - { 80498, true }, - { 80514, true }, - { 80529, true }, - { 80540, true }, - { 80560, true }, - { 80583, true }, - { 80610, true }, - { 80621, true }, - { 80633, true }, - { 80654, true }, - { 80671, true }, - { 80692, true }, - { 80707, true }, - { 80724, true }, - { 80736, true }, - { 80754, true }, + { 80434, true }, + { 80448, true }, + { 80471, true }, + { 80487, true }, + { 80495, true }, + { 80509, true }, + { 80530, true }, + { 80545, true }, + { 80564, false }, + { 80581, true }, + { 80595, true }, + { 80614, true }, + { 80630, true }, + { 80645, true }, + { 80656, true }, + { 80676, true }, + { 80699, true }, + { 80726, true }, + { 80737, true }, + { 80749, true }, { 80770, true }, - { 80783, true }, - { 80798, true }, - { 80812, true }, + { 80787, true }, + { 80808, true }, + { 80823, true }, { 80840, true }, - { 80859, false }, - { 80871, true }, - { 80885, true }, - { 80898, true }, - { 80917, true }, - { 80933, true }, - { 80947, true }, - { 80962, true }, - { 80985, true }, - { 80994, true }, - { 81007, true }, - { 81022, true }, - { 81043, true }, - { 81058, true }, - { 81071, true }, - { 81084, true }, - { 81096, true }, - { 81121, false }, - { 81131, true }, - { 81145, true }, - { 81156, true }, - { 81175, true }, - { 81188, true }, - { 81205, true }, - { 81222, true }, - { 81233, true }, + { 80852, true }, + { 80870, true }, + { 80886, true }, + { 80899, true }, + { 80914, true }, + { 80928, true }, + { 80956, true }, + { 80975, false }, + { 80987, true }, + { 81001, true }, + { 81014, true }, + { 81033, true }, + { 81049, true }, + { 81063, true }, + { 81078, true }, + { 81101, true }, + { 81110, true }, + { 81123, true }, + { 81138, true }, + { 81159, true }, + { 81174, true }, + { 81187, true }, + { 81200, true }, + { 81212, true }, + { 81237, false }, { 81247, true }, { 81261, true }, - { 81283, true }, - { 81296, true }, - { 81305, true }, - { 81314, true }, - { 81323, true }, - { 81342, true }, - { 81362, true }, - { 81369, true }, - { 81384, true }, - { 81395, true }, - { 81409, true }, - { 81433, true }, - { 81453, true }, - { 81464, true }, - { 81474, true }, - { 81487, true }, - { 81499, true }, - { 81510, true }, - { 81521, true }, - { 81533, true }, - { 81554, true }, - { 81568, true }, - { 81587, true }, + { 81272, true }, + { 81291, true }, + { 81304, true }, + { 81321, true }, + { 81338, true }, + { 81349, true }, + { 81363, true }, + { 81377, true }, + { 81399, true }, + { 81412, true }, + { 81421, true }, + { 81430, true }, + { 81439, true }, + { 81458, true }, + { 81478, true }, + { 81485, true }, + { 81500, true }, + { 81511, true }, + { 81525, true }, + { 81549, true }, + { 81569, true }, + { 81580, true }, + { 81590, true }, { 81603, true }, - { 81618, true }, - { 81630, true }, - { 81645, true }, - { 81657, true }, - { 81667, true }, - { 81683, true }, - { 81704, true }, - { 81721, true }, - { 81750, true }, - { 81766, true }, - { 81780, true }, - { 81791, true }, - { 81800, false }, - { 81823, false }, + { 81615, true }, + { 81626, true }, + { 81637, true }, + { 81649, true }, + { 81670, true }, + { 81684, true }, + { 81703, true }, + { 81719, true }, + { 81734, true }, + { 81746, true }, + { 81763, true }, + { 81778, true }, + { 81790, true }, + { 81800, true }, + { 81816, true }, { 81837, true }, - { 81847, true }, - { 81856, true }, - { 81867, true }, - { 81879, true }, - { 81889, true }, - { 81902, true }, - { 81914, true }, - { 81928, true }, - { 81946, true }, - { 81961, true }, - { 81981, true }, - { 82001, true }, - { 82017, true }, - { 82031, false }, - { 82043, true }, - { 82060, true }, - { 82077, true }, - { 82091, true }, - { 82102, true }, - { 82120, true }, + { 81854, true }, + { 81883, true }, + { 81899, true }, + { 81913, true }, + { 81924, true }, + { 81933, false }, + { 81956, false }, + { 81970, true }, + { 81980, true }, + { 81989, true }, + { 82000, true }, + { 82012, true }, + { 82022, true }, + { 82035, true }, + { 82047, true }, + { 82061, true }, + { 82079, true }, + { 82094, true }, + { 82114, true }, { 82134, true }, - { 82153, true }, - { 82164, true }, - { 82183, true }, - { 82197, true }, - { 82208, true }, - { 82218, true }, - { 82231, true }, - { 82247, true }, - { 82261, true }, - { 82281, true }, - { 82290, true }, - { 82307, true }, - { 82327, true }, - { 82346, true }, - { 82365, false }, - { 82383, true }, - { 82399, true }, - { 82413, true }, - { 82429, true }, - { 82444, true }, - { 82458, true }, - { 82467, true }, - { 82482, true }, - { 82500, true }, - { 82508, true }, - { 82521, true }, - { 82536, true }, - { 82549, true }, - { 82561, true }, - { 82574, true }, - { 82596, true }, - { 82611, true }, - { 82627, false }, - { 82637, false }, + { 82150, true }, + { 82164, false }, + { 82176, true }, + { 82193, true }, + { 82210, true }, + { 82224, true }, + { 82235, true }, + { 82253, true }, + { 82267, true }, + { 82286, true }, + { 82297, true }, + { 82316, true }, + { 82330, true }, + { 82341, true }, + { 82351, true }, + { 82364, true }, + { 82380, true }, + { 82394, true }, + { 82414, true }, + { 82423, true }, + { 82440, true }, + { 82460, true }, + { 82479, true }, + { 82498, false }, + { 82516, true }, + { 82532, true }, + { 82546, true }, + { 82562, true }, + { 82577, true }, + { 82591, true }, + { 82600, true }, + { 82615, true }, + { 82633, true }, + { 82641, true }, { 82654, true }, - { 82670, true }, - { 82683, true }, - { 82701, true }, - { 82715, true }, - { 82737, true }, - { 82759, true }, - { 82777, true }, - { 82788, true }, - { 82807, true }, + { 82669, true }, + { 82682, true }, + { 82694, true }, + { 82707, true }, + { 82729, true }, + { 82744, true }, + { 82760, false }, + { 82770, false }, + { 82787, true }, + { 82803, true }, { 82816, true }, - { 82837, true }, - { 82847, true }, - { 82859, true }, - { 82867, false }, - { 82880, true }, - { 82901, true }, - { 82913, true }, - { 82926, true }, - { 82941, true }, - { 82954, true }, - { 82971, true }, - { 82983, true }, - { 83000, true }, - { 83009, true }, - { 83024, true }, - { 83054, true }, - { 83092, true }, - { 83123, true }, - { 83155, true }, - { 83183, true }, - { 83212, true }, - { 83246, true }, - { 83284, true }, - { 83314, true }, - { 83344, true }, - { 83373, true }, - { 83409, true }, - { 83421, true }, - { 83435, true }, - { 83451, true }, - { 83472, true }, - { 83488, true }, - { 83498, true }, - { 83508, true }, - { 83523, true }, - { 83545, true }, + { 82834, true }, + { 82848, true }, + { 82870, true }, + { 82892, true }, + { 82910, true }, + { 82921, true }, + { 82940, true }, + { 82949, true }, + { 82970, true }, + { 82980, true }, + { 82992, true }, + { 83000, false }, + { 83013, true }, + { 83034, true }, + { 83046, true }, + { 83059, true }, + { 83074, true }, + { 83087, true }, + { 83104, true }, + { 83116, true }, + { 83133, true }, + { 83142, true }, + { 83157, true }, + { 83187, true }, + { 83225, true }, + { 83256, true }, + { 83288, true }, + { 83316, true }, + { 83345, true }, + { 83379, true }, + { 83417, true }, + { 83447, true }, + { 83477, true }, + { 83506, true }, + { 83542, true }, { 83554, true }, { 83568, true }, - { 83578, true }, - { 83598, true }, - { 83613, true }, - { 83630, true }, + { 83584, true }, + { 83605, true }, + { 83621, true }, + { 83631, true }, { 83641, true }, - { 83657, true }, - { 83673, true }, - { 83695, true }, - { 83714, true }, - { 83732, true }, - { 83740, true }, - { 83754, true }, - { 83769, true }, - { 83783, true }, - { 83792, true }, - { 83800, true }, - { 83809, true }, - { 83833, true }, - { 83846, true }, - { 83858, true }, - { 83881, true }, - { 83897, true }, - { 83908, true }, - { 83923, true }, - { 83936, true }, - { 83954, true }, + { 83656, true }, + { 83678, true }, + { 83687, true }, + { 83701, true }, + { 83711, true }, + { 83731, true }, + { 83746, true }, + { 83763, true }, + { 83774, true }, + { 83790, true }, + { 83806, true }, + { 83828, true }, + { 83847, true }, + { 83865, true }, + { 83873, true }, + { 83887, true }, + { 83902, true }, + { 83916, true }, + { 83925, true }, + { 83933, true }, + { 83942, true }, { 83966, true }, - { 83982, true }, - { 83997, true }, - { 84010, true }, - { 84026, true }, - { 84037, true }, - { 84052, true }, + { 83979, true }, + { 83991, true }, + { 84014, true }, + { 84030, true }, + { 84041, true }, + { 84056, true }, { 84069, true }, - { 84080, true }, - { 84098, true }, - { 84107, true }, - { 84116, true }, - { 84126, true }, - { 84142, true }, - { 84159, true }, - { 84169, false }, - { 84188, true }, - { 84202, true }, - { 84216, true }, - { 84234, true }, - { 84242, true }, - { 84251, true }, - { 84266, true }, + { 84087, true }, + { 84099, true }, + { 84115, true }, + { 84130, true }, + { 84140, true }, + { 84153, true }, + { 84169, true }, + { 84180, true }, + { 84195, true }, + { 84212, true }, + { 84223, true }, + { 84241, true }, + { 84250, true }, + { 84259, true }, + { 84269, true }, { 84285, true }, - { 84293, true }, - { 84303, true }, - { 84318, true }, + { 84302, true }, + { 84312, false }, { 84331, true }, - { 84341, true }, - { 84362, true }, - { 84371, true }, - { 84380, true }, - { 84392, true }, - { 84403, true }, - { 84419, true }, - { 84429, true }, - { 84448, true }, + { 84345, true }, + { 84359, true }, + { 84377, true }, + { 84385, true }, + { 84394, true }, + { 84409, true }, + { 84428, true }, + { 84436, true }, + { 84446, true }, { 84461, true }, - { 84479, true }, - { 84499, true }, - { 84519, true }, - { 84532, true }, - { 84543, true }, - { 84561, true }, - { 84571, true }, - { 84580, true }, - { 84590, true }, - { 84599, true }, - { 84608, true }, - { 84619, true }, - { 84627, true }, - { 84641, false }, - { 84648, true }, - { 84658, true }, - { 84672, true }, + { 84474, true }, + { 84484, true }, + { 84505, true }, + { 84514, true }, + { 84523, true }, + { 84535, true }, + { 84546, true }, + { 84562, true }, + { 84572, true }, + { 84585, true }, + { 84603, true }, + { 84623, true }, + { 84643, true }, + { 84656, true }, + { 84667, true }, { 84685, true }, - { 84697, true }, - { 84711, true }, - { 84725, true }, - { 84739, true }, - { 84754, true }, - { 84761, true }, - { 84774, false }, - { 84789, true }, + { 84695, true }, + { 84704, true }, + { 84714, true }, + { 84723, true }, + { 84732, true }, + { 84743, true }, + { 84751, true }, + { 84765, false }, + { 84772, true }, + { 84782, true }, + { 84796, true }, { 84809, true }, - { 84829, true }, - { 84846, true }, - { 84858, true }, - { 84866, true }, - { 84880, true }, - { 84895, true }, - { 84912, true }, - { 84926, true }, + { 84821, true }, + { 84835, true }, + { 84849, true }, + { 84863, true }, + { 84878, true }, + { 84885, true }, + { 84898, false }, + { 84913, true }, { 84933, true }, - { 84943, true }, - { 84958, true }, - { 84968, true }, - { 84978, true }, - { 84988, true }, - { 84998, true }, - { 85014, true }, - { 85025, true }, - { 85039, true }, - { 85056, true }, - { 85077, true }, - { 85086, true }, - { 85101, true }, - { 85115, true }, - { 85131, true }, - { 85151, true }, - { 85164, true }, - { 85174, true }, - { 85186, true }, - { 85200, true }, - { 85209, true }, - { 85218, true }, - { 85233, true }, - { 85243, true }, - { 85254, true }, - { 85268, true }, - { 85279, true }, - { 85287, true }, - { 85294, true }, - { 85308, true }, - { 85327, true }, - { 85341, true }, - { 85366, true }, - { 85384, true }, - { 85402, true }, - { 85416, true }, - { 85425, true }, - { 85438, true }, - { 85455, true }, - { 85467, true }, - { 85485, true }, - { 85498, true }, - { 85515, true }, - { 85532, true }, - { 85550, true }, - { 85565, true }, - { 85577, true }, - { 85606, true }, - { 85624, false }, - { 85637, true }, - { 85653, true }, - { 85669, true }, - { 85681, true }, - { 85694, true }, - { 85707, true }, - { 85720, true }, - { 85732, true }, - { 85749, true }, - { 85759, false }, + { 84953, true }, + { 84970, true }, + { 84982, true }, + { 84990, true }, + { 85004, true }, + { 85019, true }, + { 85036, true }, + { 85050, true }, + { 85057, true }, + { 85067, true }, + { 85082, true }, + { 85092, true }, + { 85102, true }, + { 85112, true }, + { 85122, true }, + { 85138, true }, + { 85149, true }, + { 85163, true }, + { 85180, true }, + { 85201, true }, + { 85210, true }, + { 85225, true }, + { 85239, true }, + { 85255, true }, + { 85275, true }, + { 85288, true }, + { 85298, true }, + { 85310, true }, + { 85324, true }, + { 85333, true }, + { 85342, true }, + { 85357, true }, + { 85367, true }, + { 85378, true }, + { 85392, true }, + { 85403, true }, + { 85411, true }, + { 85418, true }, + { 85432, true }, + { 85451, true }, + { 85465, true }, + { 85490, true }, + { 85508, true }, + { 85526, true }, + { 85540, true }, + { 85549, true }, + { 85562, true }, + { 85579, true }, + { 85591, true }, + { 85609, true }, + { 85622, true }, + { 85639, true }, + { 85656, true }, + { 85674, true }, + { 85689, true }, + { 85701, true }, + { 85730, true }, + { 85748, false }, + { 85761, true }, { 85777, true }, - { 85790, true }, - { 85807, true }, - { 85820, true }, - { 85836, true }, - { 85855, true }, - { 85869, true }, - { 85884, true }, - { 85891, true }, - { 85920, true }, - { 85942, true }, - { 85963, true }, - { 85990, true }, - { 86010, true }, - { 86018, true }, - { 86029, true }, - { 86041, true }, - { 86061, true }, - { 86080, false }, - { 86097, true }, - { 86113, true }, - { 86127, true }, - { 86146, true }, - { 86157, true }, - { 86169, true }, - { 86187, true }, - { 86203, false }, - { 86218, true }, - { 86239, true }, - { 86254, true }, - { 86266, true }, - { 86278, true }, - { 86295, true }, - { 86310, true }, - { 86324, true }, + { 85793, true }, + { 85805, true }, + { 85818, true }, + { 85831, true }, + { 85844, true }, + { 85856, true }, + { 85873, true }, + { 85883, false }, + { 85901, true }, + { 85914, true }, + { 85931, true }, + { 85944, true }, + { 85960, true }, + { 85979, true }, + { 85993, true }, + { 86008, true }, + { 86015, true }, + { 86044, true }, + { 86066, true }, + { 86087, true }, + { 86114, true }, + { 86134, true }, + { 86142, true }, + { 86153, true }, + { 86165, true }, + { 86185, true }, + { 86204, false }, + { 86221, true }, + { 86237, true }, + { 86251, true }, + { 86270, true }, + { 86281, true }, + { 86293, true }, + { 86311, true }, + { 86327, false }, { 86342, true }, - { 86356, true }, - { 86365, true }, - { 86375, true }, - { 86386, true }, + { 86363, true }, + { 86378, true }, + { 86390, true }, { 86402, true }, - { 86418, true }, - { 86435, true }, - { 86453, true }, - { 86467, true }, - { 86481, true }, - { 86492, true }, + { 86419, true }, + { 86434, true }, + { 86448, true }, + { 86466, true }, + { 86480, true }, + { 86489, true }, + { 86499, true }, { 86510, true }, - { 86523, true }, - { 86537, true }, - { 86551, true }, - { 86564, true }, - { 86575, true }, - { 86589, true }, - { 86598, true }, - { 86609, true }, - { 86628, true }, - { 86652, true }, - { 86673, true }, - { 86685, true }, - { 86696, false }, - { 86709, true }, - { 86715, true }, - { 86725, true }, - { 86734, true }, - { 86748, true }, - { 86760, true }, - { 86770, true }, - { 86786, true }, - { 86806, true }, - { 86818, true }, - { 86834, true }, - { 86845, true }, - { 86857, true }, + { 86526, true }, + { 86542, true }, + { 86559, true }, + { 86577, true }, + { 86591, true }, + { 86605, true }, + { 86616, true }, + { 86634, true }, + { 86647, true }, + { 86661, true }, + { 86675, true }, + { 86688, true }, + { 86699, true }, + { 86713, true }, + { 86722, true }, + { 86733, true }, + { 86752, true }, + { 86776, true }, + { 86797, true }, + { 86809, true }, + { 86820, false }, + { 86833, true }, + { 86839, true }, + { 86849, true }, + { 86858, true }, { 86872, true }, - { 86889, true }, - { 86900, true }, - { 86916, true }, - { 86938, false }, - { 86953, true }, - { 86963, true }, - { 86982, true }, - { 86998, true }, - { 87010, true }, - { 87032, true }, - { 87043, true }, - { 87060, true }, - { 87079, true }, - { 87093, true }, - { 87115, true }, - { 87138, true }, - { 87155, true }, - { 87171, true }, + { 86884, true }, + { 86894, true }, + { 86910, true }, + { 86930, true }, + { 86942, true }, + { 86958, true }, + { 86969, true }, + { 86981, true }, + { 86996, true }, + { 87013, true }, + { 87024, true }, + { 87040, true }, + { 87062, false }, + { 87077, true }, + { 87087, true }, + { 87106, true }, + { 87122, true }, + { 87134, true }, + { 87156, true }, + { 87167, true }, { 87184, true }, - { 87195, true }, - { 87208, true }, - { 87217, false }, - { 87226, true }, - { 87238, true }, - { 87249, true }, - { 87266, true }, - { 87282, true }, - { 87296, true }, - { 87305, true }, + { 87203, true }, + { 87217, true }, + { 87239, true }, + { 87262, true }, + { 87279, true }, + { 87295, true }, + { 87308, true }, { 87319, true }, - { 87337, true }, - { 87354, false }, + { 87332, true }, + { 87341, false }, + { 87350, true }, { 87362, true }, - { 87371, true }, - { 87384, true }, - { 87401, true }, - { 87411, true }, - { 87423, true }, - { 87433, true }, - { 87481, true }, + { 87373, true }, + { 87390, true }, + { 87406, true }, + { 87420, true }, + { 87429, true }, + { 87443, true }, + { 87461, true }, + { 87478, false }, + { 87486, true }, + { 87495, true }, + { 87508, true }, { 87525, true }, - { 87563, true }, - { 87602, true }, - { 87637, true }, - { 87677, true }, - { 87721, true }, - { 87757, true }, - { 87798, true }, - { 87835, true }, - { 87879, true }, - { 87906, true }, - { 87918, true }, - { 87925, true }, - { 87947, true }, - { 87955, true }, - { 87965, true }, - { 87972, true }, - { 87987, true }, - { 87993, true }, - { 88001, true }, - { 88013, true }, - { 88036, true }, - { 88045, true }, - { 88061, true }, - { 88074, true }, - { 88083, true }, - { 88105, true }, - { 88112, true }, - { 88124, true }, + { 87535, true }, + { 87547, true }, + { 87557, true }, + { 87605, true }, + { 87649, true }, + { 87687, true }, + { 87726, true }, + { 87761, true }, + { 87801, true }, + { 87845, true }, + { 87881, true }, + { 87922, true }, + { 87959, true }, + { 88003, true }, + { 88030, true }, + { 88042, true }, + { 88049, true }, + { 88071, true }, + { 88079, true }, + { 88089, true }, + { 88096, true }, + { 88111, true }, + { 88117, true }, + { 88125, true }, { 88137, true }, - { 88146, true }, - { 88161, true }, - { 88175, true }, + { 88160, true }, + { 88169, true }, { 88185, true }, - { 88194, true }, - { 88205, false }, - { 88217, true }, - { 88230, true }, - { 88246, true }, - { 88255, true }, - { 88264, true }, + { 88198, true }, + { 88207, true }, + { 88229, true }, + { 88236, true }, + { 88248, true }, + { 88261, true }, + { 88270, true }, { 88285, true }, - { 88296, true }, - { 88310, true }, - { 88327, true }, - { 88344, true }, - { 88356, true }, - { 88366, true }, - { 88389, true }, - { 88403, true }, - { 88425, true }, - { 88441, true }, - { 88456, true }, - { 88471, true }, - { 88481, true }, - { 88507, true }, - { 88518, true }, - { 88529, true }, - { 88545, true }, - { 88554, true }, + { 88299, true }, + { 88309, true }, + { 88318, true }, + { 88329, false }, + { 88341, true }, + { 88354, true }, + { 88370, true }, + { 88379, true }, + { 88388, true }, + { 88409, true }, + { 88420, true }, + { 88434, true }, + { 88451, true }, + { 88468, true }, + { 88480, true }, + { 88490, true }, + { 88513, true }, + { 88527, true }, + { 88549, true }, { 88565, true }, { 88580, true }, - { 88609, true }, - { 88622, true }, - { 88638, true }, - { 88666, true }, - { 88686, true }, - { 88702, true }, - { 88723, true }, - { 88735, false }, - { 88753, true }, - { 88763, false }, - { 88771, false }, - { 88782, true }, - { 88792, true }, - { 88813, true }, - { 88831, true }, - { 88841, true }, - { 88862, true }, - { 88871, true }, - { 88881, true }, - { 88891, true }, + { 88595, true }, + { 88605, true }, + { 88631, true }, + { 88642, true }, + { 88653, true }, + { 88669, true }, + { 88678, true }, + { 88689, true }, + { 88704, true }, + { 88733, true }, + { 88746, true }, + { 88762, true }, + { 88790, true }, + { 88810, true }, + { 88826, true }, + { 88847, true }, + { 88859, false }, + { 88877, true }, + { 88887, false }, + { 88895, false }, { 88906, true }, - { 88920, true }, + { 88916, true }, { 88937, true }, - { 88950, true }, + { 88955, true }, { 88965, true }, - { 88980, true }, - { 88991, true }, - { 89003, true }, + { 88986, true }, + { 88995, true }, + { 89005, true }, { 89015, true }, - { 89024, true }, - { 89033, false }, - { 89045, true }, + { 89030, true }, + { 89044, true }, { 89061, true }, - { 89072, true }, - { 89088, true }, - { 89108, true }, + { 89074, true }, + { 89089, true }, + { 89104, true }, + { 89115, true }, { 89127, true }, - { 89149, true }, - { 89170, true }, - { 89201, true }, - { 89225, true }, - { 89244, true }, - { 89264, true }, - { 89284, true }, - { 89300, true }, - { 89318, true }, - { 89335, true }, - { 89354, true }, - { 89378, true }, - { 89397, true }, - { 89415, true }, - { 89432, true }, - { 89454, true }, - { 89470, true }, - { 89490, true }, - { 89510, true }, - { 89527, true }, - { 89549, true }, - { 89566, true }, - { 89582, true }, - { 89599, true }, + { 89139, true }, + { 89148, true }, + { 89157, false }, + { 89169, true }, + { 89185, true }, + { 89196, true }, + { 89212, true }, + { 89232, true }, + { 89251, true }, + { 89273, true }, + { 89294, true }, + { 89325, true }, + { 89349, true }, + { 89368, true }, + { 89388, true }, + { 89408, true }, + { 89424, true }, + { 89442, true }, + { 89459, true }, + { 89478, true }, + { 89502, true }, + { 89521, true }, + { 89539, true }, + { 89556, true }, + { 89578, true }, + { 89594, true }, { 89614, true }, - { 89630, false }, - { 89645, true }, - { 89664, true }, - { 89686, true }, - { 89708, true }, - { 89730, true }, - { 89745, true }, - { 89762, true }, - { 89777, true }, - { 89796, true }, + { 89634, true }, + { 89651, true }, + { 89673, true }, + { 89690, true }, + { 89706, true }, + { 89723, true }, + { 89738, true }, + { 89754, false }, + { 89769, true }, + { 89788, true }, { 89810, true }, - { 89823, true }, - { 89836, true }, - { 89852, true }, - { 89867, true }, - { 89882, true }, - { 89893, true }, - { 89903, true }, - { 89916, true }, - { 89932, true }, - { 89944, true }, - { 89957, false }, - { 89967, false }, + { 89832, true }, + { 89854, true }, + { 89869, true }, + { 89886, true }, + { 89901, true }, + { 89920, true }, + { 89934, true }, + { 89947, true }, + { 89960, true }, { 89976, true }, - { 89998, true }, - { 90018, true }, - { 90039, true }, - { 90053, true }, - { 90064, true }, - { 90081, true }, - { 90102, true }, - { 90118, true }, - { 90140, true }, - { 90164, false }, - { 90181, true }, - { 90190, true }, - { 90203, true }, - { 90217, true }, - { 90231, true }, - { 90247, true }, - { 90260, true }, - { 90273, true }, - { 90286, true }, + { 89991, true }, + { 90006, true }, + { 90017, true }, + { 90027, true }, + { 90040, true }, + { 90056, true }, + { 90068, true }, + { 90081, false }, + { 90091, false }, + { 90100, true }, + { 90122, true }, + { 90142, true }, + { 90163, true }, + { 90177, true }, + { 90188, true }, + { 90205, true }, + { 90226, true }, + { 90242, true }, + { 90264, true }, + { 90288, false }, { 90305, true }, - { 90316, true }, - { 90325, true }, - { 90334, true }, - { 90344, true }, - { 90354, true }, - { 90363, true }, - { 90379, true }, - { 90395, true }, - { 90406, true }, - { 90433, true }, - { 90457, true }, + { 90314, true }, + { 90327, true }, + { 90341, true }, + { 90355, true }, + { 90371, true }, + { 90384, true }, + { 90397, true }, + { 90410, true }, + { 90429, true }, + { 90440, true }, + { 90449, true }, + { 90458, true }, { 90468, true }, - { 90485, true }, - { 90505, true }, - { 90518, true }, - { 90532, true }, - { 90549, true }, - { 90564, true }, - { 90587, true }, - { 90597, true }, - { 90607, true }, - { 90622, true }, - { 90643, true }, - { 90653, true }, - { 90672, true }, - { 90692, true }, - { 90706, true }, + { 90478, true }, + { 90487, true }, + { 90503, true }, + { 90519, true }, + { 90530, true }, + { 90557, true }, + { 90581, true }, + { 90592, true }, + { 90609, true }, + { 90629, true }, + { 90642, true }, + { 90656, true }, + { 90673, true }, + { 90688, true }, + { 90711, true }, + { 90721, true }, { 90731, true }, - { 90755, true }, - { 90764, true }, - { 90781, true }, - { 90802, true }, - { 90809, true }, - { 90829, true }, - { 90841, true }, - { 90854, true }, - { 90868, true }, - { 90885, false }, - { 90898, true }, - { 90916, true }, + { 90746, true }, + { 90767, true }, + { 90777, true }, + { 90796, true }, + { 90816, true }, + { 90830, true }, + { 90855, true }, + { 90879, true }, + { 90888, true }, + { 90905, true }, + { 90926, true }, { 90933, true }, - { 90942, true }, - { 90960, true }, - { 90976, true }, - { 90989, true }, - { 91004, true }, - { 91020, true }, - { 91031, true }, - { 91051, true }, - { 91072, true }, - { 91085, true }, - { 91103, true }, - { 91119, true }, - { 91133, true }, + { 90953, true }, + { 90965, true }, + { 90978, true }, + { 90992, true }, + { 91009, false }, + { 91022, true }, + { 91040, true }, + { 91057, true }, + { 91066, true }, + { 91084, true }, + { 91100, true }, + { 91113, true }, + { 91128, true }, { 91144, true }, - { 91158, true }, - { 91167, true }, - { 91176, true }, - { 91190, false }, - { 91218, true }, + { 91155, true }, + { 91175, true }, + { 91196, true }, + { 91209, true }, { 91227, true }, - { 91236, true }, - { 91246, true }, - { 91262, true }, - { 91272, true }, - { 91284, false }, - { 91297, true }, - { 91311, false }, - { 91325, false }, - { 91340, true }, - { 91364, true }, - { 91385, true }, - { 91407, true }, - { 91417, true }, - { 91429, true }, - { 91455, true }, - { 91469, true }, - { 91486, true }, - { 91499, true }, - { 91527, true }, - { 91539, true }, - { 91552, true }, - { 91564, true }, - { 91576, false }, - { 91600, true }, - { 91613, true }, - { 91632, true }, - { 91656, true }, - { 91672, true }, - { 91682, true }, - { 91698, true }, - { 91714, true }, - { 91733, true }, - { 91752, true }, - { 91769, true }, - { 91783, true }, - { 91801, true }, - { 91824, true }, - { 91842, true }, - { 91850, true }, - { 91867, true }, - { 91884, true }, - { 91892, false }, - { 91918, true }, - { 91935, true }, - { 91949, true }, - { 91960, true }, - { 91972, true }, - { 91992, true }, - { 92011, true }, - { 92027, true }, - { 92045, true }, - { 92063, true }, - { 92073, true }, - { 92088, true }, - { 92100, true }, - { 92115, true }, + { 91243, true }, + { 91257, true }, + { 91268, true }, + { 91282, true }, + { 91299, true }, + { 91308, true }, + { 91317, true }, + { 91331, false }, + { 91359, true }, + { 91368, true }, + { 91377, true }, + { 91387, true }, + { 91403, true }, + { 91413, true }, + { 91425, false }, + { 91438, true }, + { 91452, false }, + { 91466, false }, + { 91481, true }, + { 91505, true }, + { 91526, true }, + { 91548, true }, + { 91558, true }, + { 91570, true }, + { 91596, true }, + { 91610, true }, + { 91627, true }, + { 91640, true }, + { 91668, true }, + { 91680, true }, + { 91693, true }, + { 91705, true }, + { 91717, false }, + { 91741, true }, + { 91754, true }, + { 91773, true }, + { 91797, true }, + { 91813, true }, + { 91823, true }, + { 91839, true }, + { 91855, true }, + { 91874, true }, + { 91893, true }, + { 91910, true }, + { 91924, true }, + { 91942, true }, + { 91965, true }, + { 91983, true }, + { 91991, true }, + { 92008, true }, + { 92025, true }, + { 92033, false }, + { 92059, true }, + { 92076, true }, + { 92090, true }, + { 92101, true }, + { 92113, true }, { 92133, true }, - { 92151, true }, - { 92170, true }, - { 92180, true }, - { 92194, true }, + { 92152, true }, + { 92168, true }, + { 92186, true }, { 92204, true }, - { 92215, true }, - { 92234, true }, - { 92244, true }, - { 92260, true }, - { 92279, true }, - { 92289, true }, - { 92301, true }, - { 92312, true }, - { 92322, true }, - { 92337, true }, - { 92353, true }, - { 92366, true }, - { 92389, true }, - { 92413, true }, - { 92428, true }, - { 92448, true }, - { 92461, false }, - { 92473, true }, - { 92486, true }, - { 92500, true }, - { 92510, true }, - { 92523, true }, - { 92538, true }, - { 92558, true }, - { 92568, true }, - { 92591, true }, - { 92609, true }, - { 92619, false }, - { 92636, true }, - { 92644, true }, - { 92660, true }, - { 92675, true }, - { 92691, true }, - { 92707, true }, - { 92721, true }, - { 92737, true }, + { 92214, true }, + { 92229, true }, + { 92241, true }, + { 92256, true }, + { 92274, true }, + { 92292, true }, + { 92311, true }, + { 92321, true }, + { 92335, true }, + { 92345, true }, + { 92356, true }, + { 92375, true }, + { 92385, true }, + { 92401, true }, + { 92420, true }, + { 92430, true }, + { 92442, true }, + { 92453, true }, + { 92463, true }, + { 92478, true }, + { 92494, true }, + { 92507, true }, + { 92530, true }, + { 92554, true }, + { 92569, true }, + { 92589, true }, + { 92602, false }, + { 92614, true }, + { 92627, true }, + { 92641, true }, + { 92651, true }, + { 92664, true }, + { 92679, true }, + { 92699, true }, + { 92709, true }, + { 92732, true }, { 92750, true }, - { 92764, true }, - { 92776, true }, - { 92796, true }, - { 92812, true }, - { 92829, true }, - { 92839, true }, - { 92854, true }, - { 92867, true }, - { 92886, true }, - { 92897, true }, - { 92910, true }, - { 92923, true }, - { 92931, true }, - { 92941, true }, - { 92956, true }, - { 92970, false }, - { 92984, false }, - { 93010, true }, - { 93022, true }, - { 93040, true }, - { 93056, true }, - { 93067, true }, - { 93073, true }, - { 93081, true }, - { 93102, true }, - { 93126, true }, + { 92760, false }, + { 92777, true }, + { 92785, true }, + { 92801, true }, + { 92816, true }, + { 92832, true }, + { 92848, true }, + { 92862, true }, + { 92878, true }, + { 92891, true }, + { 92905, true }, + { 92917, true }, + { 92937, true }, + { 92953, true }, + { 92970, true }, + { 92980, true }, + { 92995, true }, + { 93008, true }, + { 93027, true }, + { 93038, true }, + { 93051, true }, + { 93064, true }, + { 93072, true }, + { 93082, true }, + { 93097, true }, + { 93111, false }, + { 93125, false }, { 93151, true }, { 93163, true }, - { 93176, true }, - { 93189, true }, - { 93201, true }, - { 93220, true }, - { 93235, true }, - { 93248, true }, - { 93268, true }, - { 93283, true }, - { 93299, true }, - { 93310, true }, - { 93328, true }, - { 93337, true }, - { 93348, true }, - { 93359, true }, - { 93370, true }, - { 93381, true }, - { 93391, true }, - { 93405, true }, - { 93417, true }, - { 93432, true }, - { 93448, true }, - { 93458, true }, - { 93467, true }, - { 93477, true }, - { 93491, true }, - { 93525, true }, - { 93535, true }, - { 93548, true }, - { 93560, true }, - { 93569, true }, - { 93580, false }, - { 93593, true }, - { 93607, true }, - { 93619, true }, - { 93631, true }, - { 93653, true }, + { 93181, true }, + { 93197, true }, + { 93208, true }, + { 93214, true }, + { 93222, true }, + { 93243, true }, + { 93267, true }, + { 93292, true }, + { 93304, true }, + { 93317, true }, + { 93330, true }, + { 93342, true }, + { 93361, true }, + { 93376, true }, + { 93389, true }, + { 93409, true }, + { 93424, true }, + { 93440, true }, + { 93451, true }, + { 93469, true }, + { 93478, true }, + { 93489, true }, + { 93500, true }, + { 93511, true }, + { 93522, true }, + { 93532, true }, + { 93546, true }, + { 93558, true }, + { 93573, true }, + { 93589, true }, + { 93599, true }, + { 93608, true }, + { 93618, true }, + { 93632, true }, { 93666, true }, - { 93678, true }, - { 93690, true }, - { 93702, true }, - { 93714, true }, - { 93726, true }, - { 93738, true }, - { 93750, true }, - { 93762, true }, - { 93778, true }, - { 93793, true }, - { 93812, true }, - { 93829, true }, - { 93851, true }, - { 93864, false }, - { 93884, true }, - { 93902, true }, - { 93912, true }, - { 93925, true }, - { 93939, true }, - { 93950, true }, - { 93963, true }, - { 93978, true }, - { 93997, true }, - { 94011, true }, - { 94022, true }, - { 94046, true }, - { 94063, false }, - { 94084, true }, - { 94096, true }, - { 94106, true }, + { 93676, true }, + { 93689, true }, + { 93701, true }, + { 93710, true }, + { 93721, false }, + { 93734, true }, + { 93748, true }, + { 93760, true }, + { 93772, true }, + { 93794, true }, + { 93807, true }, + { 93819, true }, + { 93831, true }, + { 93843, true }, + { 93855, true }, + { 93867, true }, + { 93879, true }, + { 93891, true }, + { 93903, true }, + { 93919, true }, + { 93934, true }, + { 93953, true }, + { 93970, true }, + { 93992, true }, + { 94005, false }, + { 94025, true }, + { 94043, true }, + { 94053, true }, + { 94066, true }, + { 94080, true }, + { 94091, true }, + { 94104, true }, { 94119, true }, - { 94133, true }, - { 94142, true }, - { 94157, true }, - { 94165, true }, - { 94178, true }, - { 94189, true }, - { 94200, true }, - { 94212, true }, + { 94138, true }, + { 94152, true }, + { 94163, true }, + { 94187, true }, + { 94204, false }, { 94225, true }, - { 94234, true }, - { 94246, true }, - { 94255, true }, - { 94264, true }, - { 94278, true }, - { 94292, true }, - { 94310, true }, - { 94332, true }, - { 94352, false }, - { 94377, true }, - { 94390, true }, - { 94399, true }, - { 94420, true }, - { 94430, true }, - { 94445, true }, - { 94457, true }, - { 94472, true }, - { 94484, true }, - { 94496, true }, - { 94516, true }, - { 94541, true }, - { 94557, false }, - { 94585, true }, - { 94596, true }, - { 94609, true }, - { 94624, true }, - { 94639, true }, - { 94653, true }, - { 94662, true }, - { 94696, true }, - { 94706, true }, - { 94717, true }, - { 94743, false }, - { 94758, true }, - { 94767, true }, - { 94779, true }, - { 94789, true }, - { 94798, true }, - { 94812, false }, - { 94823, true }, - { 94840, true }, - { 94848, true }, - { 94856, true }, - { 94867, true }, - { 94876, true }, - { 94891, true }, - { 94903, true }, - { 94917, true }, - { 94931, true }, - { 94951, true }, - { 94963, true }, - { 94975, true }, - { 94993, true }, - { 95009, true }, - { 95026, true }, - { 95039, true }, - { 95053, true }, - { 95065, true }, - { 95077, true }, - { 95091, true }, - { 95098, true }, - { 95107, true }, - { 95115, true }, - { 95128, true }, - { 95138, true }, - { 95157, true }, - { 95171, true }, - { 95186, true }, - { 95199, true }, - { 95213, true }, - { 95230, true }, - { 95247, true }, - { 95264, true }, - { 95277, true }, - { 95290, true }, - { 95303, true }, - { 95316, true }, - { 95329, true }, - { 95342, true }, - { 95355, true }, - { 95368, true }, + { 94237, true }, + { 94247, true }, + { 94260, true }, + { 94274, true }, + { 94283, true }, + { 94298, true }, + { 94306, true }, + { 94319, true }, + { 94330, true }, + { 94341, true }, + { 94353, true }, + { 94366, true }, + { 94375, true }, + { 94387, true }, + { 94396, true }, + { 94405, true }, + { 94419, true }, + { 94433, true }, + { 94451, true }, + { 94473, true }, + { 94493, false }, + { 94518, true }, + { 94531, true }, + { 94540, true }, + { 94561, true }, + { 94571, true }, + { 94586, true }, + { 94598, true }, + { 94613, true }, + { 94625, true }, + { 94637, true }, + { 94657, true }, + { 94682, true }, + { 94698, false }, + { 94726, true }, + { 94737, true }, + { 94750, true }, + { 94765, true }, + { 94780, true }, + { 94794, false }, + { 94803, true }, + { 94837, true }, + { 94847, true }, + { 94858, true }, + { 94884, false }, + { 94899, true }, + { 94908, true }, + { 94920, true }, + { 94930, true }, + { 94939, true }, + { 94953, false }, + { 94964, true }, + { 94981, true }, + { 94989, true }, + { 94997, true }, + { 95008, true }, + { 95017, true }, + { 95032, true }, + { 95044, true }, + { 95058, true }, + { 95072, true }, + { 95092, true }, + { 95104, true }, + { 95116, true }, + { 95134, true }, + { 95150, true }, + { 95167, true }, + { 95180, true }, + { 95190, true }, + { 95204, true }, + { 95216, true }, + { 95228, true }, + { 95242, true }, + { 95249, true }, + { 95258, true }, + { 95266, true }, + { 95279, true }, + { 95289, true }, + { 95308, true }, + { 95322, true }, + { 95337, true }, + { 95350, true }, + { 95364, true }, { 95381, true }, - { 95394, true }, - { 95407, true }, - { 95420, true }, - { 95433, true }, - { 95447, true }, - { 95458, true }, + { 95398, true }, + { 95415, true }, + { 95428, true }, + { 95441, true }, + { 95454, true }, { 95467, true }, - { 95475, true }, - { 95488, true }, - { 95504, true }, - { 95527, true }, + { 95480, true }, + { 95493, true }, + { 95506, true }, + { 95519, true }, + { 95532, true }, { 95545, true }, - { 95559, true }, - { 95573, true }, - { 95587, true }, - { 95602, true }, - { 95616, true }, - { 95630, true }, - { 95644, true }, - { 95659, true }, - { 95673, true }, - { 95687, true }, - { 95701, true }, - { 95715, true }, - { 95732, true }, - { 95752, true }, - { 95773, true }, - { 95805, true }, - { 95830, true }, - { 95842, true }, + { 95558, true }, + { 95571, true }, + { 95584, true }, + { 95598, true }, + { 95609, true }, + { 95618, true }, + { 95626, true }, + { 95639, true }, + { 95655, true }, + { 95678, true }, + { 95696, true }, + { 95710, true }, + { 95724, true }, + { 95738, true }, + { 95753, true }, + { 95767, true }, + { 95781, true }, + { 95795, true }, + { 95810, true }, + { 95824, true }, + { 95838, true }, { 95852, true }, - { 95864, true }, - { 95879, true }, - { 95901, true }, - { 95920, true }, - { 95932, true }, - { 95946, true }, - { 95964, true }, - { 95978, true }, - { 95989, true }, - { 96007, true }, - { 96014, true }, - { 96024, true }, - { 96036, true }, - { 96051, true }, - { 96068, true }, - { 96086, true }, - { 96099, true }, - { 96118, true }, - { 96128, true }, - { 96148, true }, - { 96166, true }, - { 96179, true }, - { 96189, true }, - { 96201, true }, - { 96215, true }, - { 96232, true }, - { 96245, true }, - { 96258, true }, - { 96271, true }, - { 96288, true }, - { 96298, true }, - { 96314, true }, + { 95866, true }, + { 95883, true }, + { 95903, true }, + { 95924, true }, + { 95956, true }, + { 95981, true }, + { 95993, true }, + { 96003, true }, + { 96015, true }, + { 96030, true }, + { 96052, true }, + { 96071, true }, + { 96083, true }, + { 96097, true }, + { 96115, true }, + { 96129, true }, + { 96140, true }, + { 96158, true }, + { 96165, true }, + { 96175, true }, + { 96187, true }, + { 96202, true }, + { 96219, true }, + { 96237, true }, + { 96250, true }, + { 96269, true }, + { 96279, true }, + { 96299, true }, + { 96317, true }, + { 96330, true }, { 96340, true }, { 96352, true }, - { 96364, true }, - { 96377, false }, - { 96392, true }, - { 96405, true }, - { 96421, true }, - { 96438, true }, - { 96452, true }, - { 96469, true }, - { 96481, true }, - { 96495, true }, - { 96514, true }, - { 96525, true }, - { 96532, true }, - { 96544, true }, + { 96366, true }, + { 96383, true }, + { 96396, true }, + { 96409, true }, + { 96422, true }, + { 96439, true }, + { 96449, true }, + { 96465, true }, + { 96491, true }, + { 96503, true }, + { 96515, true }, + { 96528, false }, + { 96543, true }, { 96556, true }, - { 96568, true }, - { 96577, true }, - { 96588, true }, - { 96602, true }, - { 96614, true }, - { 96627, true }, - { 96652, true }, - { 96675, true }, - { 96686, true }, - { 96696, true }, + { 96572, true }, + { 96589, true }, + { 96603, true }, + { 96620, true }, + { 96632, true }, + { 96646, true }, + { 96665, true }, + { 96676, true }, + { 96683, true }, + { 96695, true }, { 96707, true }, - { 96718, true }, - { 96731, true }, - { 96746, true }, - { 96760, true }, - { 96772, true }, - { 96783, true }, - { 96794, true }, + { 96719, true }, + { 96728, true }, + { 96739, true }, + { 96753, true }, + { 96765, true }, + { 96778, true }, { 96803, true }, - { 96813, true }, - { 96822, true }, - { 96835, true }, - { 96843, true }, - { 96854, true }, - { 96874, true }, - { 96894, false }, - { 96912, true }, - { 96930, true }, - { 96949, true }, - { 96967, true }, - { 96984, true }, - { 96996, true }, - { 97010, true }, - { 97033, true }, - { 97043, true }, - { 97058, true }, - { 97072, true }, - { 97088, true }, - { 97101, true }, - { 97124, true }, - { 97132, true }, - { 97144, true }, - { 97158, true }, - { 97179, true }, - { 97186, true }, - { 97199, true }, - { 97212, true }, - { 97232, true }, - { 97250, true }, - { 97268, true }, - { 97290, true }, - { 97303, true }, - { 97323, true }, - { 97338, true }, - { 97349, true }, + { 96826, true }, + { 96837, true }, + { 96847, true }, + { 96858, true }, + { 96869, true }, + { 96882, true }, + { 96897, true }, + { 96911, true }, + { 96923, true }, + { 96934, true }, + { 96945, true }, + { 96954, true }, + { 96964, true }, + { 96973, true }, + { 96986, true }, + { 96994, true }, + { 97005, true }, + { 97025, true }, + { 97045, false }, + { 97063, true }, + { 97081, true }, + { 97100, true }, + { 97118, true }, + { 97135, true }, + { 97147, true }, + { 97161, true }, + { 97184, true }, + { 97194, true }, + { 97209, true }, + { 97223, true }, + { 97239, true }, + { 97252, true }, + { 97275, true }, + { 97283, true }, + { 97295, true }, + { 97309, true }, + { 97330, true }, + { 97337, true }, + { 97350, true }, { 97363, true }, - { 97374, true }, - { 97387, true }, - { 97400, true }, + { 97383, true }, + { 97401, true }, { 97419, true }, - { 97434, true }, - { 97449, true }, - { 97469, true }, - { 97486, true }, - { 97502, true }, - { 97521, true }, + { 97441, true }, + { 97454, true }, + { 97474, true }, + { 97489, true }, + { 97500, true }, + { 97514, true }, + { 97525, true }, { 97538, true }, - { 97553, true }, - { 97565, true }, - { 97572, true }, - { 97588, true }, - { 97615, true }, - { 97643, true }, - { 97667, true }, - { 97686, true }, - { 97703, true }, - { 97721, true }, - { 97739, false }, - { 97757, true }, - { 97766, true }, - { 97789, true }, - { 97803, true }, - { 97815, true }, - { 97830, true }, - { 97842, true }, - { 97855, true }, - { 97869, true }, - { 97879, true }, - { 97890, false }, - { 97900, true }, - { 97920, true }, - { 97930, true }, - { 97943, true }, - { 97958, true }, - { 97967, true }, - { 97979, true }, - { 97995, true }, - { 98005, true }, + { 97551, true }, + { 97570, true }, + { 97585, true }, + { 97600, true }, + { 97620, true }, + { 97637, true }, + { 97653, true }, + { 97672, true }, + { 97691, true }, + { 97708, true }, + { 97723, true }, + { 97735, true }, + { 97742, true }, + { 97758, true }, + { 97785, true }, + { 97813, true }, + { 97837, true }, + { 97856, true }, + { 97873, true }, + { 97891, true }, + { 97909, false }, + { 97927, true }, + { 97936, true }, + { 97959, true }, + { 97973, true }, + { 97985, true }, + { 98000, true }, { 98012, true }, - { 98029, true }, - { 98046, true }, - { 98059, true }, - { 98067, true }, - { 98074, true }, - { 98087, true }, - { 98096, true }, - { 98109, true }, - { 98122, true }, - { 98140, true }, - { 98155, true }, - { 98171, true }, - { 98187, true }, - { 98198, true }, - { 98212, true }, - { 98230, true }, - { 98241, true }, - { 98258, true }, - { 98275, true }, - { 98285, true }, - { 98312, true }, - { 98347, true }, - { 98364, true }, - { 98380, true }, - { 98406, true }, - { 98418, false }, - { 98431, true }, - { 98452, true }, - { 98465, true }, - { 98477, true }, - { 98496, true }, - { 98521, true }, - { 98543, true }, - { 98564, true }, - { 98579, true }, - { 98599, false }, - { 98609, true }, - { 98628, true }, - { 98645, true }, - { 98662, true }, - { 98672, true }, - { 98682, true }, - { 98695, true }, - { 98707, true }, - { 98718, true }, - { 98733, true }, - { 98746, true }, - { 98761, true }, - { 98774, true }, - { 98787, true }, - { 98801, true }, - { 98824, true }, - { 98849, true }, - { 98864, true }, - { 98876, true }, - { 98889, true }, + { 98025, true }, + { 98039, true }, + { 98049, true }, + { 98060, false }, + { 98070, true }, + { 98090, true }, + { 98100, true }, + { 98113, true }, + { 98128, true }, + { 98137, true }, + { 98149, true }, + { 98165, true }, + { 98175, true }, + { 98182, true }, + { 98199, true }, + { 98216, true }, + { 98229, true }, + { 98237, true }, + { 98244, true }, + { 98257, true }, + { 98266, true }, + { 98279, true }, + { 98292, true }, + { 98310, true }, + { 98325, true }, + { 98341, true }, + { 98357, true }, + { 98368, true }, + { 98382, true }, + { 98400, true }, + { 98411, true }, + { 98428, true }, + { 98445, true }, + { 98455, true }, + { 98482, true }, + { 98517, true }, + { 98534, true }, + { 98550, true }, + { 98576, true }, + { 98588, false }, + { 98601, true }, + { 98622, true }, + { 98635, true }, + { 98647, true }, + { 98666, true }, + { 98691, true }, + { 98713, true }, + { 98734, true }, + { 98749, true }, + { 98769, false }, + { 98779, true }, + { 98798, true }, + { 98815, true }, + { 98832, true }, + { 98842, true }, + { 98852, true }, + { 98865, true }, + { 98877, true }, + { 98888, true }, { 98903, true }, - { 98922, true }, - { 98934, true }, - { 98945, true }, - { 98969, true }, - { 98991, true }, - { 99012, true }, - { 99037, true }, - { 99060, true }, - { 99080, true }, - { 99091, true }, - { 99103, true }, + { 98916, true }, + { 98931, true }, + { 98944, true }, + { 98957, true }, + { 98971, true }, + { 98994, true }, + { 99019, true }, + { 99034, true }, + { 99046, true }, + { 99059, true }, + { 99073, true }, + { 99092, true }, + { 99104, true }, { 99115, true }, - { 99131, true }, - { 99148, true }, - { 99168, true }, - { 99185, true }, - { 99202, true }, - { 99223, true }, - { 99246, true }, - { 99262, true }, - { 99282, true }, - { 99295, true }, - { 99309, true }, - { 99325, true }, - { 99340, true }, - { 99350, true }, - { 99367, true }, - { 99378, true }, - { 99397, true }, - { 99413, true }, - { 99425, true }, - { 99435, true }, - { 99445, true }, - { 99453, true }, - { 99488, true }, - { 99522, true }, - { 99559, true }, - { 99579, true }, - { 99593, true }, - { 99606, true }, - { 99619, true }, - { 99628, true }, - { 99635, true }, - { 99642, false }, + { 99139, true }, + { 99161, true }, + { 99182, true }, + { 99207, true }, + { 99230, true }, + { 99250, true }, + { 99261, true }, + { 99273, true }, + { 99285, true }, + { 99301, true }, + { 99318, true }, + { 99338, true }, + { 99355, true }, + { 99372, true }, + { 99393, true }, + { 99416, true }, + { 99432, true }, + { 99452, true }, + { 99465, true }, + { 99479, true }, + { 99495, true }, + { 99510, true }, + { 99520, true }, + { 99537, true }, + { 99548, true }, + { 99567, true }, + { 99583, true }, + { 99595, true }, + { 99605, true }, + { 99615, true }, + { 99623, true }, { 99658, true }, - { 99667, true }, - { 99684, true }, - { 99699, true }, - { 99713, true }, - { 99725, true }, - { 99737, true }, - { 99760, true }, - { 99774, true }, + { 99692, true }, + { 99729, true }, + { 99749, true }, + { 99763, true }, + { 99776, true }, { 99789, true }, - { 99800, true }, - { 99811, true }, - { 99821, true }, - { 99831, true }, - { 99847, true }, - { 99859, true }, - { 99874, true }, - { 99890, true }, + { 99798, true }, + { 99805, true }, + { 99812, false }, + { 99828, true }, + { 99837, true }, + { 99854, true }, + { 99869, true }, + { 99883, true }, + { 99895, true }, { 99907, true }, - { 99924, true }, - { 99942, true }, - { 99963, true }, - { 99980, true }, - { 99997, true }, - { 100014, true }, - { 100031, true }, - { 100048, true }, - { 100065, true }, - { 100082, true }, - { 100099, true }, - { 100118, true }, - { 100134, true }, - { 100148, true }, - { 100173, true }, + { 99930, true }, + { 99944, true }, + { 99959, true }, + { 99970, true }, + { 99981, true }, + { 99991, true }, + { 100001, true }, + { 100017, true }, + { 100029, true }, + { 100044, true }, + { 100060, true }, + { 100077, true }, + { 100094, true }, + { 100112, true }, + { 100133, true }, + { 100150, true }, + { 100167, true }, { 100184, true }, - { 100199, true }, - { 100215, true }, - { 100231, true }, - { 100247, true }, - { 100269, false }, - { 100282, true }, - { 100299, false }, - { 100319, true }, - { 100332, true }, - { 100341, false }, - { 100357, false }, - { 100371, true }, - { 100384, true }, - { 100394, true }, - { 100405, true }, - { 100419, true }, - { 100435, true }, - { 100446, true }, - { 100453, true }, - { 100465, true }, - { 100479, true }, - { 100494, true }, - { 100504, true }, - { 100513, true }, - { 100523, true }, - { 100534, false }, - { 100544, true }, - { 100553, true }, - { 100566, true }, - { 100585, true }, - { 100595, true }, - { 100617, true }, - { 100626, true }, + { 100201, true }, + { 100218, true }, + { 100235, true }, + { 100252, true }, + { 100269, true }, + { 100288, true }, + { 100304, true }, + { 100318, true }, + { 100343, true }, + { 100354, true }, + { 100369, true }, + { 100385, true }, + { 100401, true }, + { 100417, true }, + { 100439, false }, + { 100452, true }, + { 100469, false }, + { 100489, true }, + { 100502, true }, + { 100511, false }, + { 100527, false }, + { 100541, true }, + { 100554, true }, + { 100564, true }, + { 100575, true }, + { 100589, true }, + { 100605, true }, + { 100616, true }, + { 100623, true }, + { 100635, true }, { 100649, true }, - { 100665, false }, - { 100685, true }, - { 100708, true }, - { 100722, true }, - { 100734, true }, - { 100742, true }, - { 100759, true }, - { 100778, true }, - { 100795, true }, - { 100807, true }, - { 100818, true }, - { 100831, false }, - { 100843, true }, - { 100854, true }, - { 100868, true }, - { 100885, true }, - { 100900, true }, - { 100918, true }, - { 100928, true }, - { 100949, true }, - { 100957, true }, - { 100968, true }, - { 100982, true }, - { 100996, true }, - { 101009, false }, - { 101022, true }, - { 101034, true }, - { 101049, true }, - { 101078, true }, - { 101092, true }, - { 101106, true }, - { 101121, true }, - { 101135, true }, - { 101147, true }, - { 101161, true }, - { 101175, true }, - { 101187, true }, - { 101201, true }, - { 101213, true }, - { 101227, true }, - { 101245, true }, - { 101253, true }, - { 101269, true }, - { 101285, true }, - { 101297, true }, + { 100664, true }, + { 100674, true }, + { 100683, true }, + { 100693, true }, + { 100704, false }, + { 100714, true }, + { 100723, true }, + { 100736, true }, + { 100755, true }, + { 100765, true }, + { 100787, true }, + { 100796, true }, + { 100819, true }, + { 100835, false }, + { 100855, true }, + { 100878, true }, + { 100892, true }, + { 100904, true }, + { 100912, true }, + { 100929, true }, + { 100948, true }, + { 100965, true }, + { 100977, true }, + { 100988, true }, + { 101001, false }, + { 101013, true }, + { 101024, true }, + { 101038, true }, + { 101055, true }, + { 101070, true }, + { 101088, true }, + { 101098, true }, + { 101119, true }, + { 101127, true }, + { 101138, true }, + { 101152, true }, + { 101166, true }, + { 101179, false }, + { 101192, true }, + { 101204, true }, + { 101219, true }, + { 101248, true }, + { 101262, true }, + { 101276, true }, + { 101291, true }, + { 101305, true }, { 101317, true }, { 101331, true }, - { 101350, false }, - { 101379, true }, - { 101393, false }, - { 101407, true }, - { 101425, false }, - { 101446, true }, - { 101461, true }, - { 101474, true }, - { 101485, true }, - { 101499, true }, - { 101517, true }, - { 101537, true }, + { 101345, true }, + { 101357, true }, + { 101371, true }, + { 101383, true }, + { 101397, true }, + { 101415, true }, + { 101423, true }, + { 101439, true }, + { 101455, true }, + { 101467, true }, + { 101487, true }, + { 101501, true }, + { 101520, false }, { 101549, true }, - { 101564, true }, - { 101587, true }, - { 101611, true }, - { 101635, true }, - { 101659, true }, + { 101563, false }, + { 101577, true }, + { 101595, false }, + { 101616, true }, + { 101631, true }, + { 101644, true }, + { 101655, true }, { 101669, true }, - { 101683, true }, - { 101705, true }, - { 101723, true }, - { 101755, true }, - { 101770, true }, + { 101687, true }, + { 101707, true }, + { 101719, true }, + { 101734, true }, + { 101757, true }, { 101781, true }, - { 101789, true }, - { 101803, true }, - { 101812, true }, - { 101822, true }, - { 101833, true }, - { 101845, true }, - { 101857, true }, - { 101876, true }, - { 101891, true }, - { 101905, false }, + { 101805, true }, + { 101829, true }, + { 101839, true }, + { 101853, true }, + { 101875, true }, + { 101893, true }, { 101925, true }, - { 101938, true }, - { 101953, true }, - { 101967, true }, - { 101978, true }, - { 101987, true }, - { 101994, true }, - { 102005, true }, - { 102014, true }, + { 101940, true }, + { 101951, true }, + { 101959, true }, + { 101973, true }, + { 101982, true }, + { 101992, true }, + { 102003, true }, + { 102015, true }, { 102027, true }, - { 102044, true }, - { 102058, true }, - { 102078, true }, - { 102096, true }, - { 102119, true }, - { 102134, false }, - { 102145, false }, - { 102157, false }, - { 102168, true }, - { 102187, true }, - { 102203, true }, - { 102216, true }, - { 102229, true }, - { 102239, true }, - { 102249, true }, - { 102275, false }, - { 102291, true }, - { 102301, true }, - { 102309, true }, - { 102318, true }, - { 102332, true }, - { 102344, true }, - { 102356, false }, - { 102368, true }, - { 102378, true }, - { 102392, true }, - { 102404, true }, - { 102421, true }, - { 102433, true }, - { 102453, true }, - { 102464, true }, - { 102485, true }, - { 102501, true }, - { 102510, true }, - { 102528, true }, - { 102540, true }, - { 102557, true }, - { 102577, true }, - { 102604, true }, - { 102625, true }, + { 102046, true }, + { 102061, true }, + { 102075, false }, + { 102095, true }, + { 102108, true }, + { 102123, true }, + { 102137, true }, + { 102148, true }, + { 102157, true }, + { 102164, true }, + { 102175, true }, + { 102184, true }, + { 102197, true }, + { 102214, true }, + { 102228, true }, + { 102248, true }, + { 102266, true }, + { 102289, true }, + { 102304, false }, + { 102315, false }, + { 102327, false }, + { 102338, true }, + { 102357, true }, + { 102373, true }, + { 102386, true }, + { 102399, true }, + { 102409, true }, + { 102419, true }, + { 102445, false }, + { 102461, true }, + { 102471, true }, + { 102479, true }, + { 102488, true }, + { 102502, true }, + { 102514, true }, + { 102526, false }, + { 102538, true }, + { 102548, true }, + { 102562, true }, + { 102574, true }, + { 102591, true }, + { 102603, true }, + { 102623, true }, { 102634, true }, - { 102650, true }, - { 102663, true }, - { 102676, true }, - { 102695, true }, - { 102721, true }, - { 102734, true }, - { 102752, true }, - { 102765, true }, - { 102789, true }, - { 102803, true }, + { 102655, true }, + { 102671, true }, + { 102680, true }, + { 102698, true }, + { 102710, true }, + { 102727, true }, + { 102747, true }, + { 102774, true }, + { 102795, true }, + { 102804, true }, { 102820, true }, - { 102838, true }, - { 102853, true }, - { 102864, true }, - { 102876, true }, - { 102888, true }, - { 102903, true }, - { 102920, true }, - { 102928, true }, - { 102940, true }, - { 102955, true }, - { 102974, true }, - { 102991, true }, - { 103010, true }, - { 103026, true }, - { 103043, true }, + { 102833, true }, + { 102846, true }, + { 102865, true }, + { 102891, true }, + { 102904, true }, + { 102922, true }, + { 102935, true }, + { 102959, true }, + { 102973, true }, + { 102990, true }, + { 103008, true }, + { 103023, true }, + { 103034, true }, + { 103046, true }, { 103058, true }, - { 103083, true }, + { 103073, true }, + { 103090, true }, { 103098, true }, - { 103115, true }, - { 103128, true }, - { 103140, true }, - { 103160, true }, - { 103172, true }, - { 103185, true }, - { 103197, true }, - { 103211, true }, - { 103229, true }, - { 103241, true }, - { 103265, true }, - { 103278, true }, - { 103297, true }, - { 103309, true }, - { 103321, true }, - { 103336, true }, - { 103360, true }, - { 103370, true }, - { 103391, true }, - { 103405, true }, - { 103419, true }, - { 103432, false }, + { 103110, true }, + { 103125, true }, + { 103144, true }, + { 103161, true }, + { 103180, true }, + { 103196, true }, + { 103213, true }, + { 103228, true }, + { 103253, true }, + { 103268, true }, + { 103285, true }, + { 103298, true }, + { 103310, true }, + { 103330, true }, + { 103342, true }, + { 103355, true }, + { 103367, true }, + { 103381, true }, + { 103399, true }, + { 103411, true }, + { 103435, true }, { 103448, true }, - { 103472, true }, - { 103484, true }, - { 103497, true }, - { 103511, true }, - { 103526, true }, - { 103559, true }, - { 103591, true }, - { 103606, true }, - { 103621, true }, - { 103630, true }, - { 103640, true }, - { 103655, true }, - { 103664, true }, - { 103675, true }, - { 103687, true }, - { 103697, true }, - { 103708, true }, - { 103720, true }, + { 103467, true }, + { 103479, true }, + { 103491, true }, + { 103506, true }, + { 103530, true }, + { 103540, true }, + { 103561, true }, + { 103575, true }, + { 103589, true }, + { 103602, false }, + { 103618, true }, + { 103642, true }, + { 103654, true }, + { 103667, true }, + { 103681, true }, + { 103696, true }, { 103729, true }, - { 103749, true }, - { 103758, true }, - { 103779, true }, + { 103761, true }, + { 103776, true }, + { 103791, true }, { 103800, true }, { 103810, true }, - { 103824, true }, - { 103836, true }, - { 103852, true }, - { 103874, true }, - { 103896, true }, - { 103915, true }, - { 103934, true }, - { 103948, false }, - { 103962, true }, - { 103971, true }, - { 103984, true }, - { 104005, true }, - { 104017, true }, - { 104030, true }, - { 104039, true }, - { 104052, true }, - { 104065, true }, - { 104073, false }, - { 104090, true }, + { 103825, true }, + { 103834, true }, + { 103845, true }, + { 103857, true }, + { 103867, true }, + { 103878, true }, + { 103890, true }, + { 103899, true }, + { 103919, true }, + { 103928, true }, + { 103949, true }, + { 103970, true }, + { 103980, true }, + { 103994, true }, + { 104006, true }, + { 104022, true }, + { 104044, true }, + { 104066, true }, + { 104085, true }, { 104104, true }, - { 104120, true }, - { 104139, true }, - { 104158, true }, - { 104168, true }, - { 104189, true }, - { 104203, true }, - { 104216, true }, - { 104224, true }, - { 104244, true }, - { 104264, true }, - { 104278, true }, - { 104287, true }, - { 104306, false }, - { 104324, true }, - { 104333, true }, - { 104346, true }, + { 104118, false }, + { 104132, true }, + { 104141, true }, + { 104154, true }, + { 104175, true }, + { 104187, true }, + { 104200, true }, + { 104209, true }, + { 104222, true }, + { 104235, true }, + { 104243, false }, + { 104260, true }, + { 104274, true }, + { 104290, true }, + { 104309, true }, + { 104328, true }, + { 104338, true }, { 104359, true }, - { 104374, true }, - { 104394, false }, - { 104407, true }, - { 104424, true }, - { 104437, true }, - { 104450, true }, - { 104471, true }, - { 104495, true }, - { 104522, true }, - { 104532, true }, - { 104545, false }, - { 104559, true }, - { 104571, true }, - { 104584, true }, - { 104598, true }, - { 104614, true }, - { 104626, true }, + { 104373, true }, + { 104386, true }, + { 104394, true }, + { 104414, true }, + { 104434, true }, + { 104448, true }, + { 104457, true }, + { 104476, false }, + { 104494, true }, + { 104503, true }, + { 104516, true }, + { 104529, true }, + { 104544, true }, + { 104564, false }, + { 104577, true }, + { 104594, true }, + { 104607, true }, + { 104620, true }, { 104641, true }, - { 104659, true }, - { 104672, true }, - { 104685, true }, - { 104694, true }, - { 104717, true }, - { 104740, false }, - { 104751, true }, - { 104762, true }, - { 104778, true }, + { 104665, true }, + { 104692, true }, + { 104702, true }, + { 104715, false }, + { 104729, true }, + { 104741, true }, + { 104754, true }, + { 104768, true }, + { 104784, true }, { 104796, true }, - { 104816, true }, - { 104838, true }, - { 104854, true }, - { 104872, true }, - { 104889, true }, - { 104906, true }, - { 104923, true }, - { 104938, true }, - { 104956, true }, - { 104970, true }, - { 104983, true }, - { 105000, true }, - { 105014, true }, - { 105033, true }, - { 105049, true }, - { 105058, true }, - { 105073, true }, - { 105081, true }, - { 105090, true }, - { 105101, true }, - { 105116, true }, - { 105134, true }, - { 105149, true }, - { 105157, false }, - { 105168, true }, + { 104811, true }, + { 104829, true }, + { 104842, true }, + { 104855, true }, + { 104864, true }, + { 104887, true }, + { 104910, false }, + { 104921, true }, + { 104932, true }, + { 104948, true }, + { 104966, true }, + { 104986, true }, + { 105008, true }, + { 105024, true }, + { 105042, true }, + { 105059, true }, + { 105076, true }, + { 105093, true }, + { 105108, true }, + { 105126, true }, + { 105140, true }, + { 105153, true }, + { 105170, true }, { 105184, true }, - { 105198, true }, - { 105210, true }, - { 105224, true }, - { 105232, true }, - { 105252, true }, - { 105267, true }, - { 105288, true }, - { 105301, true }, - { 105311, true }, - { 105320, true }, - { 105336, true }, - { 105346, true }, - { 105352, true }, - { 105370, true }, - { 105382, true }, - { 105390, true }, - { 105404, true }, - { 105416, true }, - { 105438, true }, - { 105452, true }, - { 105460, true }, - { 105475, true }, - { 105486, true }, - { 105498, true }, - { 105513, true }, - { 105526, true }, - { 105542, true }, + { 105203, true }, + { 105219, true }, + { 105228, true }, + { 105243, true }, + { 105251, true }, + { 105260, true }, + { 105271, true }, + { 105286, true }, + { 105304, true }, + { 105319, true }, + { 105327, false }, + { 105338, true }, + { 105354, true }, + { 105368, true }, + { 105380, true }, + { 105394, true }, + { 105402, true }, + { 105422, true }, + { 105437, true }, + { 105458, true }, + { 105471, true }, + { 105481, true }, + { 105490, true }, + { 105506, true }, + { 105516, true }, + { 105522, true }, + { 105540, true }, + { 105552, true }, { 105560, true }, - { 105581, true }, - { 105595, true }, - { 105604, true }, - { 105613, true }, + { 105574, true }, + { 105586, true }, + { 105608, true }, { 105622, true }, - { 105633, true }, - { 105640, true }, - { 105660, true }, - { 105672, true }, - { 105684, true }, - { 105703, true }, - { 105722, true }, - { 105730, true }, - { 105747, true }, - { 105766, true }, - { 105775, true }, - { 105784, true }, - { 105803, true }, - { 105814, true }, - { 105830, true }, - { 105837, true }, - { 105849, true }, - { 105870, true }, + { 105630, true }, + { 105645, true }, + { 105656, true }, + { 105668, true }, + { 105683, true }, + { 105696, true }, + { 105712, true }, + { 105730, false }, + { 105743, true }, + { 105764, true }, + { 105778, true }, + { 105787, true }, + { 105796, true }, + { 105805, true }, + { 105816, true }, + { 105823, true }, + { 105843, true }, + { 105855, true }, + { 105867, true }, { 105886, true }, - { 105903, true }, - { 105916, true }, - { 105927, true }, - { 105952, true }, + { 105905, true }, + { 105913, true }, + { 105930, true }, + { 105949, true }, + { 105958, true }, { 105967, true }, { 105986, true }, - { 106005, false }, - { 106019, true }, - { 106030, true }, - { 106045, true }, - { 106057, true }, - { 106068, true }, - { 106083, true }, - { 106092, true }, - { 106106, true }, - { 106118, true }, - { 106132, true }, - { 106150, true }, - { 106167, true }, - { 106178, true }, - { 106194, true }, - { 106209, true }, - { 106229, true }, + { 105997, true }, + { 106013, true }, + { 106020, true }, + { 106032, true }, + { 106053, true }, + { 106069, true }, + { 106086, true }, + { 106097, true }, + { 106122, true }, + { 106137, true }, + { 106156, true }, + { 106175, false }, + { 106189, true }, + { 106200, true }, + { 106215, true }, + { 106227, true }, { 106238, true }, - { 106251, false }, - { 106265, true }, - { 106282, true }, - { 106305, true }, - { 106322, true }, - { 106342, false }, - { 106366, true }, - { 106381, true }, - { 106403, true }, - { 106414, false }, - { 106422, true }, - { 106440, true }, - { 106464, true }, - { 106482, true }, - { 106500, true }, - { 106522, true }, - { 106544, true }, - { 106569, true }, - { 106586, true }, - { 106605, true }, - { 106621, true }, - { 106633, true }, - { 106645, true }, - { 106657, true }, - { 106678, true }, + { 106253, true }, + { 106262, true }, + { 106276, true }, + { 106288, true }, + { 106302, true }, + { 106320, true }, + { 106337, true }, + { 106348, true }, + { 106364, true }, + { 106379, true }, + { 106399, true }, + { 106408, true }, + { 106421, false }, + { 106435, true }, + { 106452, true }, + { 106475, true }, + { 106492, true }, + { 106512, false }, + { 106536, true }, + { 106551, true }, + { 106573, true }, + { 106584, false }, + { 106592, true }, + { 106610, true }, + { 106634, true }, + { 106652, true }, + { 106670, true }, { 106692, true }, - { 106705, true }, - { 106718, false }, - { 106735, true }, - { 106758, true }, - { 106767, true }, - { 106787, true }, - { 106810, true }, - { 106821, true }, - { 106843, true }, - { 106863, true }, - { 106890, true }, + { 106714, true }, + { 106739, true }, + { 106756, true }, + { 106775, true }, + { 106791, true }, + { 106803, true }, + { 106815, true }, + { 106827, true }, + { 106848, true }, + { 106862, true }, + { 106875, true }, + { 106888, false }, { 106905, true }, - { 106924, true }, - { 106936, true }, - { 106956, true }, - { 106973, true }, - { 106989, true }, - { 106997, true }, - { 107006, true }, - { 107023, true }, - { 107038, true }, - { 107053, true }, - { 107082, true }, - { 107098, true }, - { 107113, true }, - { 107134, true }, - { 107157, true }, - { 107179, true }, - { 107201, true }, - { 107219, true }, - { 107233, true }, - { 107247, true }, - { 107262, true }, - { 107275, true }, + { 106928, true }, + { 106937, true }, + { 106957, true }, + { 106980, true }, + { 106991, true }, + { 107013, true }, + { 107033, true }, + { 107060, true }, + { 107075, true }, + { 107094, true }, + { 107106, true }, + { 107126, true }, + { 107143, true }, + { 107159, true }, + { 107167, true }, + { 107176, true }, + { 107193, true }, + { 107208, true }, + { 107223, true }, + { 107252, true }, + { 107268, true }, + { 107283, true }, { 107304, true }, - { 107317, true }, { 107327, true }, - { 107340, true }, - { 107356, true }, - { 107369, true }, - { 107387, true }, - { 107400, true }, - { 107418, true }, - { 107426, true }, - { 107439, true }, - { 107446, false }, - { 107466, true }, - { 107478, true }, + { 107349, true }, + { 107371, true }, + { 107389, true }, + { 107403, true }, + { 107417, true }, + { 107432, true }, + { 107445, true }, + { 107474, true }, { 107487, true }, - { 107502, true }, - { 107518, true }, - { 107536, true }, - { 107548, true }, - { 107562, true }, - { 107571, true }, - { 107585, true }, - { 107593, true }, - { 107614, true }, - { 107630, true }, - { 107649, true }, - { 107663, true }, - { 107680, true }, - { 107693, true }, - { 107712, true }, + { 107497, true }, + { 107510, true }, + { 107526, true }, + { 107539, true }, + { 107557, true }, + { 107570, true }, + { 107588, true }, + { 107596, true }, + { 107609, true }, + { 107616, false }, + { 107636, true }, + { 107648, true }, + { 107657, true }, + { 107672, true }, + { 107688, true }, + { 107706, true }, + { 107718, true }, { 107732, true }, - { 107743, true }, - { 107757, true }, - { 107767, true }, + { 107741, true }, + { 107755, true }, + { 107763, true }, { 107784, true }, - { 107806, true }, - { 107827, true }, - { 107842, true }, - { 107859, true }, - { 107869, true }, - { 107884, true }, - { 107899, true }, - { 107915, true }, + { 107800, true }, + { 107819, true }, + { 107833, true }, + { 107850, true }, + { 107863, true }, + { 107882, true }, + { 107902, true }, + { 107913, true }, { 107927, true }, - { 107953, true }, - { 107975, true }, - { 107995, true }, - { 108008, true }, - { 108023, true }, - { 108036, true }, - { 108056, true }, - { 108072, true }, - { 108086, true }, - { 108096, true }, - { 108108, true }, - { 108116, true }, - { 108134, true }, - { 108153, false }, - { 108172, true }, - { 108185, true }, - { 108196, true }, - { 108213, true }, - { 108225, true }, - { 108241, true }, - { 108255, true }, - { 108275, true }, - { 108287, true }, - { 108300, true }, - { 108311, true }, - { 108325, true }, - { 108350, true }, - { 108365, true }, - { 108379, true }, + { 107937, true }, + { 107954, true }, + { 107976, true }, + { 107997, true }, + { 108012, true }, + { 108029, true }, + { 108039, true }, + { 108054, true }, + { 108069, true }, + { 108085, true }, + { 108097, true }, + { 108123, true }, + { 108145, true }, + { 108165, true }, + { 108178, true }, + { 108193, true }, + { 108206, true }, + { 108226, true }, + { 108242, true }, + { 108256, true }, + { 108266, true }, + { 108278, true }, + { 108286, true }, + { 108304, true }, + { 108323, false }, + { 108342, true }, + { 108355, true }, + { 108366, true }, + { 108383, true }, { 108395, true }, - { 108414, true }, - { 108436, true }, - { 108452, true }, - { 108462, true }, + { 108411, true }, + { 108425, true }, + { 108445, true }, + { 108457, true }, + { 108470, true }, { 108481, true }, - { 108494, true }, - { 108512, true }, - { 108525, true }, + { 108495, true }, + { 108520, true }, { 108535, true }, - { 108550, true }, - { 108567, true }, - { 108582, true }, - { 108592, true }, - { 108605, true }, - { 108630, true }, - { 108645, true }, - { 108663, true }, - { 108681, true }, - { 108698, true }, - { 108714, true }, - { 108727, true }, - { 108739, true }, - { 108750, true }, - { 108764, true }, - { 108777, true }, - { 108790, true }, - { 108808, true }, - { 108832, true }, - { 108853, true }, - { 108872, true }, - { 108894, true }, - { 108908, true }, - { 108927, true }, - { 108943, true }, - { 108962, true }, - { 108974, true }, - { 108987, true }, - { 109003, true }, - { 109015, true }, - { 109031, true }, - { 109047, true }, - { 109061, true }, - { 109074, true }, - { 109090, true }, - { 109101, true }, - { 109116, true }, - { 109131, true }, - { 109145, true }, - { 109163, true }, + { 108549, true }, + { 108565, true }, + { 108584, true }, + { 108606, true }, + { 108622, true }, + { 108632, true }, + { 108651, true }, + { 108664, true }, + { 108682, true }, + { 108695, true }, + { 108705, true }, + { 108720, true }, + { 108737, true }, + { 108752, true }, + { 108762, true }, + { 108775, true }, + { 108800, true }, + { 108815, true }, + { 108833, true }, + { 108851, true }, + { 108868, true }, + { 108884, true }, + { 108897, true }, + { 108909, true }, + { 108920, true }, + { 108934, true }, + { 108947, true }, + { 108960, true }, + { 108978, true }, + { 109002, true }, + { 109023, true }, + { 109042, true }, + { 109064, true }, + { 109078, true }, + { 109097, true }, + { 109113, true }, + { 109132, true }, + { 109144, true }, + { 109157, true }, + { 109173, true }, { 109185, true }, - { 109209, true }, - { 109229, true }, - { 109248, true }, - { 109261, true }, - { 109285, true }, - { 109295, true }, - { 109304, true }, - { 109317, true }, - { 109329, true }, - { 109341, true }, - { 109354, true }, - { 109364, true }, - { 109376, true }, - { 109392, true }, - { 109402, true }, - { 109410, true }, + { 109201, true }, + { 109217, true }, + { 109231, true }, + { 109244, true }, + { 109260, true }, + { 109271, true }, + { 109286, true }, + { 109301, true }, + { 109315, true }, + { 109333, true }, + { 109355, true }, + { 109379, true }, + { 109399, true }, { 109418, true }, - { 109433, true }, - { 109446, true }, - { 109457, true }, - { 109470, false }, - { 109481, true }, - { 109497, true }, - { 109508, true }, - { 109520, true }, - { 109530, true }, - { 109547, true }, - { 109565, true }, - { 109579, false }, - { 109592, true }, - { 109607, true }, - { 109622, true }, - { 109639, true }, - { 109657, true }, - { 109671, false }, - { 109689, true }, - { 109705, true }, - { 109721, true }, - { 109730, true }, - { 109739, true }, - { 109754, true }, - { 109769, true }, - { 109788, true }, - { 109798, true }, - { 109813, true }, - { 109826, true }, - { 109836, true }, - { 109850, true }, - { 109862, true }, - { 109873, true }, - { 109890, true }, - { 109904, true }, - { 109914, true }, - { 109922, true }, - { 109930, true }, + { 109431, true }, + { 109455, true }, + { 109465, true }, + { 109474, true }, + { 109487, true }, + { 109499, true }, + { 109511, true }, + { 109524, true }, + { 109534, true }, + { 109546, true }, + { 109562, true }, + { 109572, true }, + { 109580, true }, + { 109588, true }, + { 109603, true }, + { 109616, true }, + { 109627, true }, + { 109640, false }, + { 109651, true }, + { 109667, true }, + { 109678, true }, + { 109690, true }, + { 109700, true }, + { 109717, true }, + { 109735, true }, + { 109749, false }, + { 109762, true }, + { 109777, true }, + { 109792, true }, + { 109809, true }, + { 109827, true }, + { 109841, false }, + { 109859, true }, + { 109875, true }, + { 109891, true }, + { 109900, true }, + { 109909, true }, + { 109924, true }, { 109939, true }, - { 109951, true }, - { 109962, true }, - { 109970, true }, - { 109979, false }, - { 109987, true }, - { 110013, true }, - { 110026, true }, - { 110039, true }, - { 110047, true }, - { 110061, true }, - { 110071, true }, - { 110088, true }, - { 110098, true }, - { 110110, true }, - { 110123, true }, - { 110138, true }, - { 110147, true }, - { 110158, true }, - { 110167, true }, - { 110180, true }, - { 110190, true }, - { 110201, true }, - { 110212, true }, - { 110233, true }, - { 110247, true }, - { 110262, true }, - { 110276, true }, - { 110288, true }, - { 110301, true }, - { 110320, true }, - { 110331, false }, - { 110345, true }, - { 110366, true }, - { 110377, true }, - { 110390, true }, - { 110404, true }, - { 110422, true }, - { 110433, true }, - { 110451, true }, - { 110462, true }, - { 110481, true }, - { 110501, true }, + { 109958, true }, + { 109968, true }, + { 109983, true }, + { 109996, true }, + { 110006, true }, + { 110020, true }, + { 110032, true }, + { 110043, true }, + { 110060, true }, + { 110074, true }, + { 110084, true }, + { 110092, true }, + { 110100, true }, + { 110109, true }, + { 110121, true }, + { 110132, true }, + { 110140, true }, + { 110149, false }, + { 110157, true }, + { 110183, true }, + { 110196, true }, + { 110209, true }, + { 110217, true }, + { 110231, true }, + { 110241, true }, + { 110258, true }, + { 110268, true }, + { 110280, true }, + { 110293, true }, + { 110308, true }, + { 110317, true }, + { 110328, true }, + { 110337, true }, + { 110350, true }, + { 110360, true }, + { 110371, true }, + { 110382, true }, + { 110403, true }, + { 110417, true }, + { 110432, true }, + { 110446, true }, + { 110458, true }, + { 110471, true }, + { 110490, true }, + { 110501, false }, { 110515, true }, - { 110528, true }, - { 110541, false }, - { 110557, true }, - { 110577, true }, - { 110588, true }, - { 110607, true }, - { 110618, true }, - { 110628, true }, - { 110638, true }, - { 110648, true }, - { 110658, true }, - { 110668, true }, - { 110678, true }, - { 110691, true }, - { 110716, true }, - { 110739, true }, - { 110748, true }, - { 110764, true }, - { 110775, true }, - { 110786, true }, - { 110800, true }, - { 110809, true }, - { 110827, true }, - { 110841, true }, - { 110858, true }, - { 110876, true }, - { 110895, true }, - { 110908, true }, + { 110536, true }, + { 110547, true }, + { 110560, true }, + { 110574, true }, + { 110592, true }, + { 110603, true }, + { 110621, true }, + { 110632, true }, + { 110651, true }, + { 110671, true }, + { 110685, true }, + { 110698, true }, + { 110711, false }, + { 110727, true }, + { 110747, true }, + { 110758, true }, + { 110777, true }, + { 110788, true }, + { 110798, true }, + { 110808, true }, + { 110818, true }, + { 110828, true }, + { 110838, true }, + { 110848, true }, + { 110861, true }, + { 110886, true }, + { 110909, true }, { 110918, true }, - { 110931, true }, - { 110942, true }, - { 110951, true }, - { 110968, true }, - { 110988, true }, - { 111002, true }, - { 111010, true }, - { 111020, true }, - { 111030, true }, - { 111038, true }, - { 111045, true }, - { 111058, true }, - { 111069, true }, - { 111083, true }, - { 111097, true }, - { 111111, true }, + { 110934, true }, + { 110945, true }, + { 110956, true }, + { 110970, true }, + { 110979, true }, + { 110997, true }, + { 111011, true }, + { 111028, true }, + { 111046, true }, + { 111065, true }, + { 111078, true }, + { 111088, true }, + { 111101, true }, + { 111112, true }, { 111121, true }, - { 111131, true }, - { 111144, true }, - { 111154, true }, - { 111166, true }, - { 111173, true }, - { 111196, true }, - { 111205, true }, - { 111220, true }, - { 111227, true }, - { 111243, true }, - { 111249, true }, - { 111257, true }, + { 111138, true }, + { 111158, true }, + { 111172, true }, + { 111180, true }, + { 111190, true }, + { 111200, true }, + { 111208, true }, + { 111215, true }, + { 111228, true }, + { 111239, true }, + { 111253, true }, { 111267, true }, - { 111279, true }, - { 111289, true }, - { 111300, true }, - { 111310, true }, - { 111317, true }, - { 111331, true }, - { 111344, true }, - { 111353, true }, - { 111362, true }, - { 111376, true }, - { 111394, true }, - { 111410, true }, - { 111432, true }, - { 111447, true }, + { 111281, true }, + { 111291, true }, + { 111301, true }, + { 111314, true }, + { 111324, true }, + { 111336, true }, + { 111343, true }, + { 111366, true }, + { 111375, true }, + { 111390, true }, + { 111397, true }, + { 111413, true }, + { 111419, true }, + { 111427, true }, + { 111437, true }, + { 111449, true }, + { 111459, true }, { 111470, true }, - { 111483, true }, - { 111492, true }, - { 111505, true }, - { 111517, true }, - { 111543, true }, - { 111553, true }, - { 111566, true }, - { 111575, true }, - { 111587, true }, - { 111609, true }, - { 111624, true }, - { 111639, true }, - { 111658, true }, - { 111676, true }, - { 111686, true }, - { 111701, true }, - { 111720, true }, - { 111739, true }, + { 111480, true }, + { 111487, true }, + { 111501, true }, + { 111514, true }, + { 111523, true }, + { 111532, true }, + { 111546, true }, + { 111564, true }, + { 111580, true }, + { 111602, true }, + { 111617, true }, + { 111640, true }, + { 111653, true }, + { 111662, true }, + { 111675, true }, + { 111687, true }, + { 111713, true }, + { 111723, true }, + { 111736, true }, + { 111745, true }, { 111757, true }, - { 111774, true }, - { 111790, true }, - { 111810, true }, - { 111820, true }, - { 111831, true }, - { 111849, true }, - { 111861, true }, - { 111872, true }, - { 111888, true }, - { 111905, true }, - { 111920, true }, - { 111936, true }, - { 111952, true }, - { 111961, true }, - { 111978, true }, + { 111779, true }, + { 111794, true }, + { 111809, true }, + { 111828, true }, + { 111846, true }, + { 111856, true }, + { 111871, true }, + { 111890, true }, + { 111909, true }, + { 111927, true }, + { 111944, true }, + { 111960, true }, + { 111980, true }, { 111990, true }, - { 112007, true }, + { 112001, true }, + { 112019, true }, { 112031, true }, - { 112049, true }, - { 112061, true }, - { 112078, true }, - { 112092, true }, + { 112042, true }, + { 112058, true }, + { 112075, true }, + { 112090, true }, { 112106, true }, - { 112121, true }, - { 112135, true }, - { 112152, true }, - { 112167, true }, - { 112182, true }, - { 112195, true }, - { 112213, true }, - { 112226, true }, - { 112238, true }, - { 112252, true }, - { 112269, true }, - { 112290, true }, - { 112314, true }, - { 112336, true }, - { 112348, true }, - { 112361, true }, - { 112376, true }, - { 112397, true }, - { 112414, true }, - { 112430, true }, - { 112443, true }, - { 112462, true }, - { 112482, true }, - { 112500, true }, - { 112521, true }, - { 112536, false }, - { 112557, true }, - { 112575, true }, - { 112598, true }, + { 112122, true }, + { 112131, true }, + { 112148, true }, + { 112160, true }, + { 112177, true }, + { 112201, true }, + { 112219, true }, + { 112231, true }, + { 112248, true }, + { 112262, true }, + { 112276, true }, + { 112291, true }, + { 112305, true }, + { 112322, true }, + { 112337, true }, + { 112352, true }, + { 112365, true }, + { 112383, true }, + { 112396, true }, + { 112408, true }, + { 112422, true }, + { 112439, true }, + { 112460, true }, + { 112484, true }, + { 112506, true }, + { 112518, true }, + { 112531, true }, + { 112546, true }, + { 112567, true }, + { 112584, true }, + { 112600, true }, { 112613, true }, - { 112629, true }, - { 112648, true }, - { 112663, true }, - { 112680, true }, - { 112694, true }, - { 112715, true }, - { 112728, true }, - { 112739, true }, - { 112764, true }, - { 112780, true }, - { 112796, true }, - { 112813, true }, + { 112632, true }, + { 112652, true }, + { 112670, true }, + { 112691, true }, + { 112706, false }, + { 112727, true }, + { 112745, true }, + { 112768, true }, + { 112783, true }, + { 112799, true }, + { 112818, true }, { 112833, true }, { 112850, true }, - { 112862, false }, - { 112879, true }, - { 112896, true }, - { 112914, true }, - { 112928, true }, - { 112941, true }, - { 112959, true }, - { 112970, true }, - { 112985, false }, + { 112864, true }, + { 112885, true }, + { 112898, true }, + { 112909, true }, + { 112934, true }, + { 112950, true }, + { 112966, true }, + { 112983, true }, { 113003, true }, - { 113015, false }, - { 113026, true }, - { 113042, true }, - { 113058, true }, - { 113070, true }, - { 113086, true }, - { 113100, true }, - { 113113, true }, - { 113123, true }, + { 113020, true }, + { 113032, false }, + { 113049, true }, + { 113066, true }, + { 113084, true }, + { 113098, true }, + { 113111, true }, + { 113129, true }, { 113140, true }, - { 113159, true }, - { 113174, true }, - { 113183, true }, - { 113190, true }, - { 113201, true }, - { 113209, true }, - { 113218, true }, - { 113235, true }, - { 113247, true }, + { 113155, false }, + { 113173, true }, + { 113185, false }, + { 113196, true }, + { 113212, true }, + { 113228, true }, + { 113240, true }, { 113256, true }, - { 113269, true }, - { 113278, true }, - { 113290, true }, - { 113297, true }, + { 113270, true }, + { 113283, true }, + { 113293, true }, { 113312, true }, { 113327, true }, - { 113334, false }, - { 113341, false }, - { 113350, true }, - { 113386, true }, - { 113397, true }, + { 113336, true }, + { 113343, true }, + { 113354, true }, + { 113362, true }, + { 113371, true }, + { 113388, true }, + { 113400, true }, { 113409, true }, - { 113421, true }, - { 113432, true }, - { 113453, true }, - { 113473, true }, - { 113499, true }, - { 113509, true }, - { 113518, true }, - { 113527, true }, - { 113534, true }, - { 113546, false }, - { 113558, false }, - { 113566, true }, - { 113578, true }, - { 113591, true }, - { 113605, false }, - { 113620, true }, - { 113634, true }, - { 113647, true }, - { 113659, true }, + { 113422, true }, + { 113431, true }, + { 113443, true }, + { 113450, true }, + { 113465, true }, + { 113480, true }, + { 113487, false }, + { 113494, false }, + { 113503, true }, + { 113539, true }, + { 113550, true }, + { 113562, true }, + { 113574, true }, + { 113585, true }, + { 113606, true }, + { 113626, true }, + { 113652, true }, + { 113662, true }, { 113671, true }, - { 113684, true }, - { 113695, true }, - { 113705, true }, + { 113680, true }, + { 113687, true }, + { 113699, false }, + { 113711, false }, { 113719, true }, - { 113739, true }, - { 113750, true }, - { 113762, true }, - { 113775, true }, + { 113731, true }, + { 113744, true }, + { 113758, false }, + { 113773, true }, { 113787, true }, - { 113798, true }, - { 113810, true }, - { 113827, true }, + { 113800, true }, + { 113812, true }, + { 113824, true }, { 113837, true }, - { 113854, true }, - { 113864, false }, - { 113882, true }, - { 113900, false }, - { 113918, true }, - { 113930, true }, - { 113952, true }, - { 113974, true }, - { 113985, true }, - { 113998, true }, - { 114010, true }, - { 114025, true }, - { 114041, true }, - { 114052, true }, - { 114068, true }, - { 114092, true }, - { 114117, true }, - { 114140, true }, + { 113848, true }, + { 113858, true }, + { 113872, true }, + { 113892, true }, + { 113903, true }, + { 113915, true }, + { 113928, true }, + { 113940, true }, + { 113951, true }, + { 113963, true }, + { 113980, true }, + { 113990, true }, + { 114007, true }, + { 114017, false }, + { 114035, true }, + { 114053, false }, + { 114071, true }, + { 114083, true }, + { 114105, true }, + { 114127, true }, + { 114138, true }, + { 114151, true }, { 114163, true }, - { 114182, true }, - { 114200, true }, - { 114211, true }, - { 114232, true }, - { 114250, true }, - { 114277, true }, - { 114292, true }, - { 114305, true }, - { 114332, true }, - { 114352, true }, - { 114363, true }, - { 114382, true }, - { 114394, true }, - { 114412, true }, - { 114426, true }, - { 114442, true }, + { 114178, true }, + { 114194, true }, + { 114205, true }, + { 114221, true }, + { 114245, true }, + { 114270, true }, + { 114293, true }, + { 114316, true }, + { 114335, true }, + { 114353, true }, + { 114364, true }, + { 114385, true }, + { 114403, true }, + { 114430, true }, + { 114445, true }, { 114458, true }, - { 114472, true }, { 114485, true }, - { 114499, true }, - { 114513, true }, - { 114526, true }, - { 114541, true }, + { 114505, true }, + { 114516, true }, + { 114535, true }, + { 114547, true }, { 114565, true }, - { 114593, false }, - { 114604, true }, - { 114617, true }, - { 114628, true }, - { 114646, true }, - { 114664, true }, - { 114682, true }, - { 114705, true }, - { 114729, true }, - { 114750, true }, - { 114771, true }, - { 114792, true }, - { 114806, true }, - { 114819, true }, - { 114841, true }, - { 114852, true }, - { 114871, true }, - { 114886, true }, - { 114904, true }, - { 114914, true }, + { 114579, true }, + { 114595, true }, + { 114611, true }, + { 114625, true }, + { 114638, true }, + { 114652, true }, + { 114666, true }, + { 114679, true }, + { 114694, true }, + { 114718, true }, + { 114746, false }, + { 114757, true }, + { 114770, true }, + { 114781, true }, + { 114799, true }, + { 114817, true }, + { 114835, true }, + { 114858, true }, + { 114882, true }, + { 114903, true }, { 114924, true }, - { 114942, true }, - { 114961, true }, - { 114979, true }, - { 115000, true }, - { 115021, true }, - { 115037, true }, + { 114945, true }, + { 114959, true }, + { 114972, true }, + { 114994, true }, + { 115005, true }, + { 115024, true }, + { 115039, true }, { 115057, true }, { 115067, true }, - { 115081, true }, - { 115103, true }, - { 115119, true }, - { 115135, true }, - { 115146, true }, - { 115157, true }, - { 115167, true }, - { 115176, true }, - { 115186, true }, - { 115203, false }, - { 115216, true }, - { 115228, true }, - { 115239, true }, + { 115077, true }, + { 115095, true }, + { 115114, true }, + { 115132, true }, + { 115153, true }, + { 115174, true }, + { 115190, true }, + { 115210, true }, + { 115220, true }, + { 115234, true }, { 115256, true }, - { 115266, true }, - { 115280, true }, + { 115272, true }, + { 115288, true }, { 115299, true }, - { 115317, true }, - { 115333, true }, - { 115353, true }, - { 115364, true }, - { 115377, true }, - { 115393, true }, - { 115406, true }, - { 115416, true }, - { 115431, true }, - { 115442, true }, - { 115456, true }, + { 115310, true }, + { 115320, true }, + { 115329, true }, + { 115339, true }, + { 115356, false }, + { 115369, true }, + { 115381, true }, + { 115392, true }, + { 115409, true }, + { 115419, true }, + { 115433, true }, + { 115452, true }, { 115470, true }, - { 115482, true }, - { 115500, true }, - { 115515, true }, - { 115528, true }, - { 115545, true }, - { 115562, true }, - { 115576, true }, - { 115591, true }, - { 115606, true }, - { 115619, true }, - { 115633, true }, - { 115645, true }, - { 115654, true }, - { 115673, true }, - { 115687, true }, + { 115486, true }, + { 115506, true }, + { 115517, true }, + { 115530, true }, + { 115546, true }, + { 115559, true }, + { 115569, true }, + { 115584, true }, + { 115595, true }, + { 115609, true }, + { 115623, true }, + { 115635, true }, + { 115653, true }, + { 115668, true }, + { 115681, true }, { 115698, true }, - { 115707, false }, - { 115718, true }, + { 115715, true }, + { 115729, true }, { 115744, true }, - { 115754, true }, - { 115765, true }, - { 115778, true }, - { 115789, true }, - { 115803, true }, - { 115813, true }, - { 115830, true }, - { 115839, true }, - { 115846, true }, - { 115860, true }, - { 115868, true }, - { 115875, true }, - { 115887, true }, - { 115894, true }, - { 115903, true }, - { 115922, true }, - { 115937, true }, - { 115952, true }, - { 115965, true }, - { 115986, true }, - { 116006, true }, - { 116025, true }, - { 116042, true }, - { 116058, true }, - { 116078, true }, - { 116088, true }, - { 116117, true }, - { 116136, true }, - { 116152, true }, - { 116173, true }, - { 116192, true }, - { 116205, true }, - { 116225, true }, - { 116239, true }, - { 116249, true }, - { 116259, true }, - { 116274, true }, - { 116286, false }, - { 116300, false }, - { 116313, false }, - { 116320, true }, - { 116328, true }, - { 116342, true }, - { 116352, true }, - { 116366, true }, - { 116381, true }, - { 116394, true }, - { 116405, true }, - { 116420, true }, - { 116442, true }, - { 116452, true }, + { 115759, true }, + { 115772, true }, + { 115786, true }, + { 115798, true }, + { 115807, true }, + { 115826, true }, + { 115840, true }, + { 115851, true }, + { 115860, false }, + { 115871, true }, + { 115897, true }, + { 115907, true }, + { 115918, true }, + { 115931, true }, + { 115942, true }, + { 115956, true }, + { 115966, true }, + { 115983, true }, + { 115992, true }, + { 115999, true }, + { 116013, true }, + { 116021, true }, + { 116028, true }, + { 116040, true }, + { 116047, true }, + { 116056, true }, + { 116075, true }, + { 116090, true }, + { 116105, true }, + { 116118, true }, + { 116139, true }, + { 116159, true }, + { 116178, true }, + { 116195, true }, + { 116211, true }, + { 116231, true }, + { 116260, true }, + { 116279, true }, + { 116295, true }, + { 116316, true }, + { 116335, true }, + { 116348, true }, + { 116368, true }, + { 116382, true }, + { 116392, true }, + { 116402, true }, + { 116417, true }, + { 116429, false }, + { 116443, false }, + { 116456, false }, + { 116463, true }, { 116471, true }, + { 116485, true }, { 116495, true }, - { 116507, true }, - { 116519, true }, - { 116530, true }, - { 116545, true }, - { 116561, true }, - { 116578, true }, - { 116596, true }, + { 116509, true }, + { 116524, true }, + { 116537, true }, + { 116548, true }, + { 116563, true }, + { 116585, true }, + { 116595, true }, { 116614, true }, - { 116627, true }, - { 116635, true }, - { 116646, true }, - { 116666, true }, - { 116680, true }, - { 116690, true }, - { 116700, true }, - { 116709, true }, - { 116722, true }, - { 116729, true }, - { 116740, true }, - { 116751, false }, - { 116764, true }, - { 116776, true }, - { 116785, true }, - { 116797, false }, - { 116817, true }, - { 116828, true }, - { 116841, false }, - { 116857, true }, - { 116868, true }, + { 116638, true }, + { 116650, true }, + { 116662, true }, + { 116673, true }, + { 116688, true }, + { 116704, true }, + { 116721, true }, + { 116739, true }, + { 116757, true }, + { 116770, true }, + { 116778, true }, + { 116789, true }, + { 116809, true }, + { 116823, true }, + { 116833, true }, + { 116843, true }, + { 116852, true }, + { 116865, true }, + { 116872, true }, { 116883, true }, - { 116896, true }, - { 116909, true }, - { 116921, true }, - { 116931, true }, - { 116944, true }, - { 116961, true }, - { 116974, false }, - { 116985, true }, - { 116996, true }, + { 116894, false }, + { 116907, true }, + { 116919, true }, + { 116928, true }, + { 116940, false }, + { 116960, true }, + { 116971, true }, + { 116984, false }, + { 117000, true }, { 117011, true }, { 117026, true }, - { 117041, true }, - { 117057, true }, - { 117086, true }, - { 117105, true }, - { 117119, true }, - { 117136, true }, - { 117151, true }, - { 117164, true }, - { 117192, true }, - { 117207, true }, - { 117222, true }, - { 117237, true }, - { 117251, true }, - { 117270, true }, - { 117280, true }, - { 117297, false }, - { 117311, true }, - { 117333, true }, - { 117349, true }, - { 117370, true }, - { 117387, true }, - { 117403, true }, - { 117422, true }, - { 117456, true }, - { 117480, true }, - { 117509, true }, - { 117525, true }, - { 117549, true }, - { 117574, true }, - { 117590, true }, - { 117602, true }, - { 117622, true }, - { 117647, true }, - { 117659, true }, - { 117686, true }, - { 117700, true }, - { 117720, true }, - { 117738, true }, - { 117747, true }, - { 117756, true }, - { 117768, false }, - { 117778, true }, + { 117039, true }, + { 117052, true }, + { 117064, true }, + { 117074, true }, + { 117087, true }, + { 117104, true }, + { 117117, false }, + { 117128, true }, + { 117139, true }, + { 117154, true }, + { 117169, true }, + { 117184, true }, + { 117200, true }, + { 117229, true }, + { 117248, true }, + { 117262, true }, + { 117279, true }, + { 117294, true }, + { 117307, true }, + { 117335, true }, + { 117350, true }, + { 117365, true }, + { 117380, true }, + { 117394, true }, + { 117413, true }, + { 117423, true }, + { 117440, false }, + { 117454, true }, + { 117476, true }, + { 117492, true }, + { 117513, true }, + { 117530, true }, + { 117546, true }, + { 117565, true }, + { 117599, true }, + { 117623, true }, + { 117652, true }, + { 117668, true }, + { 117692, true }, + { 117717, true }, + { 117733, true }, + { 117745, true }, + { 117765, true }, { 117790, true }, - { 117805, true }, - { 117813, true }, - { 117822, true }, - { 117830, true }, - { 117844, true }, - { 117852, true }, - { 117868, true }, + { 117802, true }, + { 117829, true }, + { 117843, true }, + { 117863, true }, + { 117881, true }, { 117890, true }, { 117899, true }, - { 117911, true }, - { 117923, true }, - { 117931, true }, - { 117942, true }, - { 117950, true }, - { 117960, true }, - { 117970, false }, - { 117982, true }, - { 117998, true }, - { 118014, true }, - { 118030, true }, - { 118043, true }, - { 118058, true }, - { 118081, true }, - { 118095, true }, - { 118109, true }, - { 118120, true }, - { 118135, true }, - { 118149, true }, - { 118174, true }, - { 118185, true }, - { 118203, true }, - { 118218, true }, - { 118229, false }, - { 118241, true }, - { 118260, true }, - { 118274, true }, - { 118285, true }, - { 118296, true }, - { 118307, true }, + { 117911, false }, + { 117921, true }, + { 117933, true }, + { 117948, true }, + { 117956, true }, + { 117965, true }, + { 117973, true }, + { 117987, true }, + { 117995, true }, + { 118011, true }, + { 118033, true }, + { 118042, true }, + { 118054, true }, + { 118066, true }, + { 118074, true }, + { 118085, true }, + { 118093, true }, + { 118103, true }, + { 118113, false }, + { 118125, true }, + { 118141, true }, + { 118157, true }, + { 118173, true }, + { 118186, true }, + { 118201, true }, + { 118224, true }, + { 118238, true }, + { 118252, true }, + { 118263, true }, + { 118278, true }, + { 118292, true }, { 118317, true }, - { 118338, true }, - { 118355, true }, - { 118373, true }, - { 118383, true }, - { 118413, true }, - { 118436, true }, + { 118328, true }, + { 118346, true }, + { 118361, true }, + { 118372, false }, + { 118384, true }, + { 118403, true }, + { 118417, true }, + { 118428, true }, + { 118439, true }, { 118450, true }, - { 118466, true }, - { 118485, true }, - { 118502, true }, - { 118520, false }, - { 118533, true }, - { 118554, true }, - { 118568, true }, - { 118581, true }, - { 118594, true }, - { 118606, true }, - { 118616, true }, - { 118632, true }, - { 118646, true }, - { 118657, true }, - { 118664, true }, - { 118678, true }, - { 118692, true }, - { 118708, true }, - { 118715, true }, - { 118736, true }, - { 118746, true }, - { 118763, false }, - { 118778, true }, - { 118793, true }, - { 118810, true }, + { 118460, true }, + { 118481, true }, + { 118498, true }, + { 118516, true }, + { 118526, true }, + { 118556, true }, + { 118579, true }, + { 118593, true }, + { 118609, true }, + { 118628, true }, + { 118645, true }, + { 118663, false }, + { 118676, true }, + { 118697, true }, + { 118711, true }, + { 118724, true }, + { 118737, true }, + { 118749, true }, + { 118759, true }, + { 118775, true }, + { 118789, true }, + { 118800, true }, + { 118807, true }, { 118821, true }, - { 118831, true }, - { 118850, true }, - { 118860, true }, - { 118872, true }, - { 118891, true }, - { 118909, true }, - { 118919, true }, - { 118929, true }, - { 118942, true }, - { 118955, true }, - { 118967, true }, - { 118975, false }, - { 118986, true }, - { 119001, true }, - { 119012, true }, - { 119028, true }, - { 119041, true }, - { 119051, true }, - { 119070, true }, - { 119086, true }, - { 119108, true }, - { 119121, false }, - { 119135, true }, - { 119149, true }, - { 119164, true }, - { 119180, true }, - { 119192, true }, - { 119203, true }, - { 119215, true }, - { 119228, true }, - { 119238, true }, - { 119255, true }, - { 119272, true }, - { 119287, true }, + { 118835, true }, + { 118851, true }, + { 118858, true }, + { 118879, true }, + { 118889, true }, + { 118906, false }, + { 118921, true }, + { 118936, true }, + { 118953, true }, + { 118964, true }, + { 118974, true }, + { 118993, true }, + { 119003, true }, + { 119015, true }, + { 119034, true }, + { 119052, true }, + { 119062, true }, + { 119072, true }, + { 119085, true }, + { 119098, true }, + { 119110, true }, + { 119118, false }, + { 119129, true }, + { 119144, true }, + { 119155, true }, + { 119171, true }, + { 119184, true }, + { 119194, true }, + { 119213, true }, + { 119229, true }, + { 119251, true }, + { 119264, false }, + { 119278, true }, + { 119292, true }, { 119307, true }, - { 119316, true }, + { 119323, true }, { 119335, true }, - { 119351, true }, - { 119363, false }, - { 119373, true }, - { 119389, true }, - { 119400, true }, - { 119420, false }, - { 119428, true }, - { 119440, true }, - { 119451, true }, - { 119463, true }, - { 119482, true }, - { 119491, false }, - { 119511, true }, - { 119520, true }, - { 119531, true }, - { 119562, true }, - { 119576, true }, - { 119592, true }, + { 119346, true }, + { 119358, true }, + { 119371, true }, + { 119381, true }, + { 119398, true }, + { 119415, true }, + { 119430, true }, + { 119450, true }, + { 119459, true }, + { 119478, true }, + { 119494, true }, + { 119506, false }, + { 119516, true }, + { 119532, true }, + { 119543, true }, + { 119563, false }, + { 119571, true }, + { 119583, true }, + { 119594, true }, { 119606, true }, - { 119626, true }, - { 119645, true }, - { 119659, true }, - { 119683, true }, - { 119699, true }, - { 119714, true }, - { 119728, true }, - { 119742, true }, - { 119756, true }, - { 119772, true }, - { 119784, true }, - { 119792, true }, - { 119805, true }, - { 119816, true }, - { 119828, true }, - { 119840, true }, - { 119856, true }, - { 119867, true }, - { 119882, true }, - { 119907, true }, - { 119923, true }, - { 119939, true }, - { 119955, true }, - { 119977, true }, - { 119991, true }, - { 120007, true }, - { 120026, true }, + { 119625, true }, + { 119634, false }, + { 119654, true }, + { 119663, true }, + { 119674, true }, + { 119705, true }, + { 119719, true }, + { 119735, true }, + { 119749, true }, + { 119769, true }, + { 119788, true }, + { 119802, true }, + { 119826, true }, + { 119842, true }, + { 119857, true }, + { 119871, true }, + { 119885, true }, + { 119899, true }, + { 119915, true }, + { 119927, true }, + { 119935, true }, + { 119948, true }, + { 119959, true }, + { 119971, true }, + { 119983, true }, + { 119999, true }, + { 120010, true }, + { 120025, true }, { 120050, true }, { 120066, true }, { 120082, true }, - { 120092, true }, - { 120110, true }, - { 120122, true }, - { 120142, true }, - { 120159, true }, - { 120177, true }, - { 120189, true }, - { 120203, true }, - { 120218, true }, - { 120238, true }, + { 120098, true }, + { 120120, true }, + { 120134, true }, + { 120150, true }, + { 120169, true }, + { 120193, true }, + { 120209, true }, + { 120225, true }, + { 120235, true }, { 120253, true }, - { 120273, true }, - { 120294, false }, - { 120310, true }, - { 120328, true }, - { 120343, true }, - { 120359, true }, - { 120374, true }, - { 120386, true }, - { 120405, false }, - { 120413, true }, - { 120427, true }, - { 120444, true }, - { 120458, true }, - { 120470, true }, - { 120485, true }, - { 120499, true }, - { 120512, true }, - { 120530, true }, - { 120544, true }, - { 120560, true }, - { 120580, true }, - { 120611, true }, - { 120642, true }, + { 120265, true }, + { 120285, true }, + { 120302, true }, + { 120320, true }, + { 120332, true }, + { 120346, true }, + { 120361, true }, + { 120381, true }, + { 120396, true }, + { 120416, true }, + { 120437, false }, + { 120453, true }, + { 120471, true }, + { 120486, true }, + { 120501, true }, + { 120513, true }, + { 120532, false }, + { 120540, true }, + { 120554, true }, + { 120571, true }, + { 120585, true }, + { 120597, true }, + { 120612, true }, + { 120626, true }, + { 120639, true }, { 120657, true }, - { 120673, true }, + { 120671, true }, { 120687, true }, - { 120706, true }, - { 120728, true }, - { 120746, true }, - { 120760, true }, - { 120782, true }, - { 120797, true }, - { 120816, true }, - { 120829, true }, - { 120839, true }, - { 120854, true }, - { 120869, true }, - { 120884, true }, - { 120899, true }, - { 120919, true }, - { 120936, true }, - { 120949, true }, - { 120964, true }, - { 120977, true }, - { 120990, true }, - { 121000, true }, - { 121023, true }, - { 121038, true }, - { 121054, true }, - { 121065, true }, - { 121077, true }, - { 121088, true }, - { 121105, true }, - { 121122, true }, - { 121137, true }, - { 121144, true }, - { 121157, true }, - { 121167, true }, - { 121184, true }, - { 121194, true }, + { 120707, true }, + { 120738, true }, + { 120769, true }, + { 120784, true }, + { 120800, true }, + { 120814, true }, + { 120833, true }, + { 120855, true }, + { 120873, true }, + { 120887, true }, + { 120909, true }, + { 120924, true }, + { 120943, true }, + { 120956, true }, + { 120966, true }, + { 120981, true }, + { 120996, true }, + { 121011, true }, + { 121026, true }, + { 121046, true }, + { 121063, true }, + { 121076, true }, + { 121091, true }, + { 121104, true }, + { 121117, true }, + { 121127, true }, + { 121150, true }, + { 121165, true }, + { 121181, true }, + { 121192, true }, { 121204, true }, - { 121213, true }, - { 121223, true }, - { 121242, true }, - { 121260, true }, - { 121281, true }, - { 121301, true }, - { 121314, true }, + { 121215, true }, + { 121232, true }, + { 121249, true }, + { 121264, true }, + { 121271, true }, + { 121284, true }, + { 121294, true }, + { 121311, true }, + { 121321, true }, { 121331, true }, - { 121348, true }, - { 121361, true }, - { 121383, true }, - { 121395, true }, - { 121405, true }, - { 121418, true }, - { 121440, true }, - { 121454, true }, - { 121476, true }, - { 121491, true }, - { 121512, true }, - { 121520, true }, + { 121340, true }, + { 121350, true }, + { 121369, true }, + { 121387, true }, + { 121408, true }, + { 121428, true }, + { 121441, true }, + { 121458, true }, + { 121475, true }, + { 121488, true }, + { 121510, true }, + { 121522, true }, { 121532, true }, { 121545, true }, - { 121560, true }, - { 121579, true }, - { 121589, true }, - { 121600, true }, - { 121619, true }, - { 121631, true }, - { 121652, true }, - { 121663, true }, + { 121567, true }, + { 121581, true }, + { 121603, true }, + { 121618, true }, + { 121639, true }, + { 121647, true }, + { 121659, true }, { 121672, true }, - { 121682, true }, - { 121702, true }, - { 121719, true }, - { 121741, true }, - { 121753, true }, - { 121771, true }, - { 121784, true }, - { 121797, true }, - { 121810, true }, - { 121819, true }, - { 121830, true }, - { 121845, true }, - { 121858, true }, - { 121881, true }, - { 121895, true }, - { 121909, true }, - { 121919, true }, - { 121933, true }, - { 121948, true }, - { 121960, true }, - { 121970, true }, - { 121978, true }, - { 121994, true }, - { 122012, true }, - { 122026, true }, - { 122042, true }, - { 122050, true }, - { 122058, true }, - { 122068, true }, - { 122082, true }, - { 122096, true }, - { 122108, true }, + { 121687, true }, + { 121706, true }, + { 121716, true }, + { 121727, true }, + { 121746, true }, + { 121758, true }, + { 121779, true }, + { 121790, true }, + { 121799, true }, + { 121809, true }, + { 121829, true }, + { 121846, true }, + { 121868, true }, + { 121880, true }, + { 121898, true }, + { 121911, true }, + { 121924, true }, + { 121937, true }, + { 121946, true }, + { 121957, true }, + { 121972, true }, + { 121985, true }, + { 122008, true }, + { 122022, true }, + { 122036, true }, + { 122046, true }, + { 122060, true }, + { 122075, true }, + { 122090, true }, + { 122102, true }, + { 122112, true }, { 122120, true }, - { 122133, true }, - { 122149, true }, - { 122159, false }, - { 122175, true }, - { 122188, true }, - { 122199, true }, - { 122214, true }, - { 122225, true }, - { 122241, true }, + { 122136, true }, + { 122154, true }, + { 122168, true }, + { 122184, true }, + { 122192, true }, + { 122200, true }, + { 122210, true }, + { 122224, true }, + { 122238, true }, + { 122250, true }, { 122262, true }, - { 122285, true }, - { 122297, true }, - { 122306, true }, - { 122315, true }, - { 122328, false }, - { 122346, true }, - { 122354, true }, - { 122366, true }, - { 122382, true }, - { 122405, true }, - { 122415, false }, - { 122433, true }, - { 122451, true }, - { 122481, true }, - { 122500, true }, - { 122517, true }, - { 122538, true }, - { 122557, true }, - { 122571, true }, - { 122602, true }, - { 122613, true }, - { 122627, true }, - { 122647, false }, - { 122667, false }, - { 122679, true }, - { 122692, true }, - { 122714, true }, - { 122742, true }, - { 122759, true }, - { 122778, true }, - { 122792, true }, - { 122807, false }, - { 122817, true }, - { 122827, true }, - { 122837, true }, - { 122849, true }, - { 122864, true }, - { 122879, true }, - { 122888, true }, - { 122896, true }, - { 122909, true }, - { 122936, true }, - { 122944, true }, - { 122961, true }, - { 122973, true }, - { 122990, true }, + { 122275, true }, + { 122291, true }, + { 122301, false }, + { 122317, true }, + { 122330, true }, + { 122341, true }, + { 122356, true }, + { 122367, true }, + { 122383, true }, + { 122404, true }, + { 122427, true }, + { 122439, true }, + { 122448, true }, + { 122457, true }, + { 122470, false }, + { 122488, true }, + { 122496, true }, + { 122508, true }, + { 122524, true }, + { 122547, true }, + { 122557, false }, + { 122575, true }, + { 122593, true }, + { 122623, true }, + { 122642, true }, + { 122659, true }, + { 122680, true }, + { 122699, true }, + { 122713, true }, + { 122744, true }, + { 122755, true }, + { 122769, true }, + { 122789, false }, + { 122809, false }, + { 122821, true }, + { 122834, true }, + { 122856, true }, + { 122884, true }, + { 122901, true }, + { 122920, true }, + { 122934, true }, + { 122949, false }, + { 122959, true }, + { 122969, true }, + { 122979, true }, + { 122991, true }, { 123006, true }, - { 123027, true }, - { 123042, true }, - { 123056, true }, - { 123066, true }, - { 123074, true }, - { 123088, true }, - { 123101, true }, - { 123110, true }, - { 123119, true }, - { 123136, true }, + { 123021, true }, + { 123030, true }, + { 123038, true }, + { 123051, true }, + { 123078, true }, + { 123086, true }, + { 123103, true }, + { 123115, true }, + { 123132, true }, { 123148, true }, - { 123156, true }, - { 123167, true }, - { 123185, true }, - { 123206, true }, + { 123169, true }, + { 123184, true }, + { 123198, true }, + { 123208, true }, { 123216, true }, - { 123235, true }, - { 123249, true }, + { 123230, true }, + { 123243, true }, + { 123252, true }, { 123261, true }, - { 123279, true }, - { 123291, true }, - { 123302, true }, + { 123278, true }, + { 123290, true }, + { 123298, true }, { 123309, true }, - { 123321, true }, - { 123333, true }, - { 123345, true }, - { 123354, true }, - { 123370, true }, - { 123378, true }, - { 123385, true }, - { 123393, true }, - { 123400, true }, - { 123414, true }, + { 123327, true }, + { 123348, true }, + { 123358, true }, + { 123377, true }, + { 123391, true }, + { 123403, true }, { 123421, true }, - { 123428, false }, - { 123439, true }, - { 123450, true }, - { 123465, true }, + { 123433, true }, + { 123444, true }, + { 123451, true }, + { 123463, true }, { 123475, true }, { 123487, true }, - { 123498, true }, - { 123508, true }, - { 123516, true }, - { 123531, true }, - { 123546, true }, - { 123561, true }, - { 123575, true }, - { 123595, true }, - { 123610, true }, - { 123623, true }, - { 123634, true }, - { 123647, true }, - { 123659, true }, - { 123674, true }, - { 123687, true }, - { 123714, true }, - { 123728, true }, - { 123742, true }, - { 123759, true }, - { 123774, true }, - { 123787, true }, + { 123496, true }, + { 123512, true }, + { 123520, true }, + { 123527, true }, + { 123535, true }, + { 123542, true }, + { 123556, true }, + { 123563, true }, + { 123570, false }, + { 123581, true }, + { 123592, true }, + { 123607, true }, + { 123617, true }, + { 123629, true }, + { 123640, true }, + { 123650, true }, + { 123658, true }, + { 123673, true }, + { 123688, true }, + { 123703, true }, + { 123717, true }, + { 123737, true }, + { 123752, true }, + { 123765, true }, + { 123776, true }, + { 123789, true }, { 123801, true }, - { 123811, true }, - { 123826, true }, - { 123839, true }, + { 123816, true }, + { 123829, true }, { 123856, true }, - { 123869, true }, - { 123889, true }, - { 123899, true }, - { 123926, true }, - { 123936, true }, - { 123948, true }, - { 123966, true }, - { 123975, true }, - { 123991, true }, - { 124003, true }, - { 124014, true }, - { 124025, true }, - { 124039, true }, - { 124050, true }, - { 124060, true }, - { 124081, true }, - { 124089, true }, - { 124100, true }, - { 124110, true }, - { 124122, true }, + { 123870, true }, + { 123884, true }, + { 123901, true }, + { 123916, true }, + { 123929, true }, + { 123943, true }, + { 123953, true }, + { 123968, true }, + { 123981, true }, + { 123998, true }, + { 124011, true }, + { 124031, true }, + { 124041, true }, + { 124068, true }, + { 124078, true }, + { 124090, true }, + { 124108, true }, + { 124117, true }, + { 124133, true }, { 124145, true }, - { 124159, true }, - { 124174, true }, - { 124193, true }, - { 124210, true }, - { 124228, true }, - { 124236, true }, + { 124156, true }, + { 124167, true }, + { 124181, true }, + { 124192, true }, + { 124202, true }, + { 124223, true }, + { 124231, true }, + { 124242, true }, + { 124252, true }, { 124264, true }, - { 124275, true }, - { 124285, true }, - { 124296, true }, - { 124314, true }, - { 124324, true }, - { 124333, true }, - { 124349, true }, - { 124365, true }, - { 124380, true }, - { 124389, true }, - { 124405, true }, - { 124415, true }, - { 124433, true }, - { 124450, true }, - { 124482, true }, - { 124508, true }, - { 124536, true }, + { 124287, true }, + { 124301, true }, + { 124316, true }, + { 124335, true }, + { 124352, true }, + { 124370, true }, + { 124378, true }, + { 124406, true }, + { 124417, true }, + { 124427, true }, + { 124438, true }, + { 124456, true }, + { 124466, true }, + { 124475, true }, + { 124491, true }, + { 124507, true }, + { 124522, true }, + { 124531, true }, + { 124547, true }, { 124557, true }, - { 124578, true }, - { 124598, true }, - { 124619, true }, - { 124635, true }, - { 124652, true }, - { 124679, true }, - { 124693, true }, - { 124704, true }, - { 124716, true }, - { 124736, true }, - { 124751, true }, - { 124768, true }, - { 124780, true }, - { 124801, true }, - { 124813, true }, - { 124827, true }, + { 124575, true }, + { 124592, true }, + { 124624, true }, + { 124650, true }, + { 124678, true }, + { 124699, true }, + { 124720, true }, + { 124740, true }, + { 124761, true }, + { 124777, true }, + { 124794, true }, + { 124821, true }, + { 124835, true }, { 124846, true }, - { 124864, true }, - { 124875, true }, - { 124883, true }, - { 124892, true }, - { 124904, true }, - { 124918, true }, - { 124930, true }, + { 124858, true }, + { 124878, true }, + { 124893, true }, + { 124910, true }, + { 124922, true }, { 124943, true }, - { 124953, true }, - { 124965, true }, - { 124976, true }, + { 124955, true }, + { 124969, true }, { 124988, true }, - { 125002, true }, + { 125006, true }, + { 125017, true }, { 125025, true }, - { 125038, false }, - { 125053, true }, - { 125065, true }, - { 125080, true }, - { 125099, true }, - { 125117, true }, - { 125131, true }, - { 125145, true }, - { 125164, true }, - { 125174, true }, - { 125187, true }, - { 125200, false }, - { 125215, true }, - { 125227, true }, + { 125034, true }, + { 125046, true }, + { 125060, true }, + { 125072, true }, + { 125085, true }, + { 125095, true }, + { 125107, true }, + { 125118, true }, + { 125130, true }, + { 125144, true }, + { 125167, true }, + { 125180, false }, + { 125195, true }, + { 125207, true }, + { 125222, true }, { 125241, true }, - { 125257, true }, - { 125270, true }, - { 125285, true }, - { 125299, true }, - { 125308, true }, - { 125324, true }, - { 125340, true }, - { 125358, true }, - { 125385, true }, - { 125400, true }, - { 125413, true }, - { 125429, true }, - { 125446, false }, - { 125463, true }, - { 125485, true }, - { 125507, true }, - { 125526, true }, - { 125548, true }, - { 125562, true }, - { 125574, true }, - { 125588, true }, - { 125599, true }, - { 125614, true }, + { 125259, true }, + { 125273, true }, + { 125287, true }, + { 125306, true }, + { 125316, true }, + { 125329, true }, + { 125342, false }, + { 125357, true }, + { 125369, true }, + { 125383, true }, + { 125399, true }, + { 125412, true }, + { 125427, true }, + { 125441, true }, + { 125450, true }, + { 125466, true }, + { 125482, true }, + { 125500, true }, + { 125527, true }, + { 125542, true }, + { 125555, true }, + { 125571, true }, + { 125588, false }, + { 125605, true }, { 125627, true }, - { 125643, true }, - { 125652, true }, + { 125649, true }, { 125668, true }, - { 125685, true }, - { 125693, true }, + { 125690, true }, { 125704, true }, { 125716, true }, - { 125725, true }, - { 125739, true }, - { 125752, true }, - { 125766, true }, - { 125780, true }, - { 125792, true }, - { 125804, true }, - { 125816, true }, - { 125829, true }, - { 125842, true }, - { 125852, true }, - { 125866, true }, - { 125879, true }, - { 125901, true }, - { 125923, true }, + { 125730, true }, + { 125741, true }, + { 125756, true }, + { 125769, true }, + { 125785, true }, + { 125794, true }, + { 125810, true }, + { 125827, true }, + { 125835, true }, + { 125846, true }, + { 125858, true }, + { 125867, true }, + { 125881, true }, + { 125894, true }, + { 125908, true }, + { 125922, true }, { 125934, true }, - { 125949, true }, - { 125960, false }, - { 125980, true }, - { 126006, true }, - { 126026, true }, + { 125946, true }, + { 125958, true }, + { 125971, true }, + { 125984, true }, + { 125994, true }, + { 126008, true }, + { 126021, true }, { 126043, true }, - { 126062, true }, - { 126082, true }, - { 126100, true }, - { 126119, true }, - { 126131, true }, - { 126152, true }, - { 126167, true }, - { 126181, true }, - { 126192, true }, + { 126065, true }, + { 126076, true }, + { 126091, true }, + { 126102, false }, + { 126122, true }, + { 126148, true }, + { 126168, true }, + { 126185, true }, { 126204, true }, - { 126223, true }, - { 126238, true }, - { 126258, true }, - { 126271, false }, - { 126279, true }, - { 126288, true }, - { 126300, true }, - { 126316, true }, + { 126224, true }, + { 126242, true }, + { 126261, true }, + { 126273, true }, + { 126294, true }, + { 126309, true }, + { 126323, true }, { 126334, true }, - { 126351, true }, - { 126359, true }, - { 126373, true }, - { 126383, true }, - { 126396, true }, - { 126404, true }, - { 126422, true }, - { 126429, true }, - { 126443, true }, - { 126455, true }, - { 126472, true }, - { 126479, true }, - { 126486, true }, - { 126498, true }, - { 126509, true }, - { 126519, true }, - { 126532, true }, - { 126539, true }, - { 126553, true }, - { 126569, true }, - { 126580, true }, - { 126594, true }, - { 126601, true }, + { 126346, true }, + { 126365, true }, + { 126380, true }, + { 126400, true }, + { 126413, false }, + { 126421, true }, + { 126430, true }, + { 126442, true }, + { 126458, true }, + { 126476, true }, + { 126493, true }, + { 126501, true }, + { 126515, true }, + { 126525, true }, + { 126538, true }, + { 126546, true }, + { 126564, true }, + { 126571, true }, + { 126585, true }, + { 126597, true }, { 126614, true }, - { 126627, true }, - { 126636, true }, - { 126650, true }, - { 126664, true }, - { 126680, true }, - { 126696, false }, + { 126621, true }, + { 126628, true }, + { 126640, true }, + { 126651, true }, + { 126661, true }, + { 126674, true }, + { 126681, true }, + { 126695, true }, { 126711, true }, - { 126739, true }, - { 126754, true }, - { 126775, true }, - { 126789, true }, - { 126817, true }, - { 126836, true }, - { 126850, true }, - { 126871, true }, - { 126887, true }, - { 126902, true }, - { 126914, true }, - { 126924, true }, - { 126935, true }, - { 126945, true }, - { 126955, true }, - { 126971, true }, - { 126991, true }, - { 127010, true }, + { 126722, true }, + { 126736, true }, + { 126743, true }, + { 126756, true }, + { 126769, true }, + { 126778, true }, + { 126792, true }, + { 126806, true }, + { 126822, true }, + { 126838, false }, + { 126853, true }, + { 126881, true }, + { 126896, true }, + { 126917, true }, + { 126931, true }, + { 126959, true }, + { 126978, true }, + { 126992, true }, + { 127013, true }, { 127029, true }, - { 127049, true }, - { 127067, true }, - { 127084, true }, - { 127096, true }, - { 127108, true }, + { 127044, true }, + { 127056, true }, + { 127066, true }, + { 127077, true }, + { 127087, true }, + { 127097, true }, + { 127113, true }, { 127133, true }, - { 127144, true }, - { 127157, true }, - { 127172, true }, - { 127190, true }, - { 127202, true }, - { 127217, true }, - { 127230, true }, - { 127256, true }, - { 127269, true }, - { 127282, true }, - { 127293, true }, - { 127304, true }, - { 127315, true }, - { 127327, true }, - { 127338, true }, - { 127348, true }, - { 127368, true }, - { 127382, true }, - { 127395, true }, - { 127404, true }, - { 127413, true }, - { 127426, true }, - { 127433, false }, - { 127441, true }, - { 127454, true }, - { 127462, true }, - { 127479, true }, + { 127152, true }, + { 127171, true }, + { 127191, true }, + { 127209, true }, + { 127226, true }, + { 127238, true }, + { 127250, true }, + { 127275, true }, + { 127286, true }, + { 127299, true }, + { 127314, true }, + { 127332, true }, + { 127344, true }, + { 127359, true }, + { 127372, true }, + { 127398, true }, + { 127411, true }, + { 127424, true }, + { 127435, true }, + { 127446, true }, + { 127457, true }, + { 127469, true }, + { 127480, true }, { 127490, true }, - { 127502, true }, - { 127516, false }, - { 127528, true }, - { 127542, true }, - { 127566, true }, - { 127581, true }, - { 127594, true }, - { 127608, true }, - { 127619, true }, - { 127637, true }, - { 127652, true }, - { 127660, true }, - { 127677, true }, - { 127702, true }, - { 127714, true }, - { 127725, true }, - { 127741, true }, - { 127755, true }, - { 127764, true }, - { 127780, true }, - { 127798, true }, - { 127813, true }, - { 127833, true }, - { 127846, true }, - { 127862, true }, - { 127879, true }, - { 127893, true }, - { 127909, true }, - { 127926, true }, - { 127946, true }, - { 127964, true }, - { 127983, true }, - { 128000, true }, - { 128011, true }, - { 128029, true }, - { 128045, true }, - { 128055, true }, - { 128084, true }, - { 128099, true }, - { 128119, true }, - { 128136, true }, + { 127510, true }, + { 127524, true }, + { 127537, true }, + { 127546, true }, + { 127555, true }, + { 127568, true }, + { 127575, false }, + { 127583, true }, + { 127596, true }, + { 127604, true }, + { 127621, true }, + { 127632, true }, + { 127644, true }, + { 127658, false }, + { 127670, true }, + { 127684, true }, + { 127708, true }, + { 127723, true }, + { 127736, true }, + { 127750, true }, + { 127761, true }, + { 127779, true }, + { 127794, true }, + { 127802, true }, + { 127819, true }, + { 127844, true }, + { 127856, true }, + { 127867, true }, + { 127883, true }, + { 127897, true }, + { 127906, true }, + { 127922, true }, + { 127940, true }, + { 127955, true }, + { 127975, true }, + { 127988, true }, + { 128004, true }, + { 128021, true }, + { 128035, true }, + { 128051, true }, + { 128068, true }, + { 128088, true }, + { 128106, true }, + { 128125, true }, + { 128142, true }, { 128153, true }, - { 128178, true }, - { 128194, true }, - { 128203, true }, - { 128219, true }, - { 128232, true }, - { 128244, true }, - { 128253, false }, - { 128267, true }, - { 128281, true }, - { 128298, true }, - { 128315, true }, - { 128348, true }, - { 128368, true }, - { 128380, true }, - { 128394, true }, - { 128407, true }, - { 128417, true }, - { 128432, true }, - { 128443, true }, - { 128460, true }, - { 128472, true }, - { 128484, true }, - { 128496, true }, - { 128505, true }, - { 128517, true }, - { 128525, true }, - { 128542, true }, - { 128556, true }, - { 128570, true }, - { 128588, true }, - { 128604, true }, - { 128619, true }, - { 128633, true }, - { 128644, true }, - { 128658, true }, - { 128676, true }, - { 128697, true }, - { 128711, true }, - { 128725, true }, - { 128741, true }, - { 128752, true }, + { 128171, true }, + { 128187, true }, + { 128197, true }, + { 128226, true }, + { 128241, true }, + { 128261, true }, + { 128278, true }, + { 128295, true }, + { 128320, true }, + { 128336, true }, + { 128345, true }, + { 128361, true }, + { 128374, true }, + { 128386, true }, + { 128395, false }, + { 128409, true }, + { 128423, true }, + { 128440, true }, + { 128457, true }, + { 128490, true }, + { 128510, true }, + { 128522, true }, + { 128536, true }, + { 128549, true }, + { 128559, true }, + { 128574, true }, + { 128585, true }, + { 128602, true }, + { 128614, true }, + { 128626, true }, + { 128638, true }, + { 128647, true }, + { 128659, true }, + { 128667, true }, + { 128684, true }, + { 128698, true }, + { 128712, true }, + { 128730, true }, + { 128746, true }, + { 128761, true }, { 128775, true }, { 128786, true }, - { 128802, true }, - { 128809, true }, - { 128821, true }, - { 128832, true }, - { 128846, true }, - { 128855, true }, - { 128864, true }, - { 128879, true }, - { 128888, true }, - { 128901, true }, - { 128909, true }, - { 128922, true }, - { 128933, false }, + { 128800, true }, + { 128818, true }, + { 128839, true }, + { 128853, true }, + { 128867, true }, + { 128883, true }, + { 128894, true }, + { 128917, true }, + { 128928, true }, { 128944, true }, - { 128958, true }, - { 128973, true }, - { 128987, true }, + { 128951, true }, + { 128963, true }, + { 128974, true }, + { 128988, true }, { 128997, true }, - { 129008, true }, - { 129018, true }, - { 129028, true }, - { 129036, true }, - { 129045, true }, - { 129057, true }, - { 129066, true }, - { 129080, true }, - { 129092, true }, + { 129006, true }, + { 129021, true }, + { 129030, true }, + { 129043, true }, + { 129051, true }, + { 129064, true }, + { 129075, false }, + { 129086, true }, + { 129100, true }, { 129115, true }, - { 129130, true }, - { 129146, true }, - { 129163, true }, - { 129185, true }, - { 129213, true }, - { 129231, true }, - { 129246, true }, - { 129254, true }, - { 129265, true }, - { 129283, true }, - { 129293, true }, - { 129311, true }, - { 129325, true }, - { 129337, true }, - { 129349, true }, - { 129364, true }, - { 129377, true }, - { 129387, false }, - { 129396, false }, - { 129405, false }, - { 129414, true }, - { 129431, true }, - { 129446, true }, - { 129469, true }, - { 129484, true }, - { 129503, true }, - { 129513, true }, - { 129524, true }, - { 129535, true }, - { 129550, true }, - { 129566, true }, - { 129585, true }, - { 129599, true }, - { 129614, true }, - { 129633, true }, - { 129646, true }, - { 129662, true }, - { 129675, true }, - { 129688, true }, - { 129704, true }, - { 129722, true }, - { 129736, true }, - { 129753, true }, - { 129769, true }, - { 129784, true }, - { 129794, true }, - { 129810, true }, - { 129827, true }, - { 129845, true }, + { 129129, true }, + { 129139, true }, + { 129150, true }, + { 129160, true }, + { 129170, true }, + { 129178, true }, + { 129187, true }, + { 129199, true }, + { 129208, true }, + { 129222, true }, + { 129234, true }, + { 129257, true }, + { 129272, true }, + { 129288, true }, + { 129305, true }, + { 129327, true }, + { 129355, true }, + { 129373, true }, + { 129388, true }, + { 129396, true }, + { 129407, true }, + { 129425, true }, + { 129435, true }, + { 129453, true }, + { 129467, true }, + { 129479, true }, + { 129491, true }, + { 129506, true }, + { 129519, true }, + { 129529, false }, + { 129538, false }, + { 129547, false }, + { 129556, true }, + { 129573, true }, + { 129588, true }, + { 129611, true }, + { 129626, true }, + { 129645, true }, + { 129655, true }, + { 129666, true }, + { 129677, true }, + { 129692, true }, + { 129708, true }, + { 129727, true }, + { 129741, true }, + { 129756, true }, + { 129775, true }, + { 129788, true }, + { 129804, true }, + { 129817, true }, + { 129830, true }, + { 129846, true }, { 129864, true }, - { 129879, true }, - { 129898, true }, - { 129909, true }, - { 129927, true }, - { 129941, true }, - { 129958, true }, - { 129972, true }, - { 129982, true }, - { 129996, true }, - { 130012, true }, - { 130030, true }, - { 130044, false }, - { 130064, true }, - { 130077, true }, - { 130086, true }, - { 130101, true }, - { 130113, true }, - { 130128, true }, - { 130146, true }, - { 130157, true }, - { 130169, true }, - { 130179, true }, - { 130189, true }, - { 130203, true }, - { 130212, true }, - { 130225, true }, - { 130241, true }, - { 130256, true }, - { 130271, true }, - { 130296, true }, - { 130316, true }, - { 130342, true }, - { 130357, true }, - { 130369, true }, - { 130390, true }, - { 130415, true }, + { 129878, true }, + { 129895, true }, + { 129911, true }, + { 129926, true }, + { 129936, true }, + { 129952, true }, + { 129969, true }, + { 129987, true }, + { 130006, true }, + { 130021, true }, + { 130040, true }, + { 130051, true }, + { 130069, true }, + { 130083, true }, + { 130100, true }, + { 130114, true }, + { 130124, true }, + { 130138, true }, + { 130154, true }, + { 130172, true }, + { 130186, false }, + { 130206, true }, + { 130219, true }, + { 130228, true }, + { 130243, true }, + { 130255, true }, + { 130270, true }, + { 130288, true }, + { 130299, true }, + { 130311, true }, + { 130321, true }, + { 130331, true }, + { 130345, true }, + { 130354, true }, + { 130367, true }, + { 130383, true }, + { 130398, true }, + { 130413, true }, { 130438, true }, - { 130453, true }, - { 130474, true }, - { 130481, true }, - { 130505, true }, - { 130527, true }, - { 130542, true }, - { 130558, true }, - { 130569, true }, + { 130458, true }, + { 130484, true }, + { 130499, true }, + { 130511, true }, + { 130532, true }, + { 130557, true }, { 130580, true }, - { 130588, true }, - { 130596, true }, - { 130607, true }, + { 130595, true }, + { 130616, true }, { 130623, true }, - { 130640, true }, - { 130666, true }, - { 130682, true }, - { 130696, true }, - { 130710, true }, - { 130724, true }, - { 130740, true }, - { 130767, true }, - { 130781, true }, - { 130790, true }, - { 130803, true }, - { 130815, true }, - { 130831, true }, - { 130854, true }, - { 130874, true }, - { 130888, true }, - { 130908, true }, - { 130927, true }, - { 130949, true }, - { 130971, false }, - { 130982, true }, - { 130999, true }, - { 131013, true }, - { 131038, true }, - { 131058, true }, - { 131083, true }, - { 131108, true }, + { 130647, true }, + { 130669, true }, + { 130684, true }, + { 130700, true }, + { 130711, true }, + { 130722, true }, + { 130730, true }, + { 130738, true }, + { 130749, true }, + { 130765, true }, + { 130782, true }, + { 130808, true }, + { 130824, true }, + { 130838, true }, + { 130852, true }, + { 130866, true }, + { 130882, true }, + { 130909, true }, + { 130923, true }, + { 130932, true }, + { 130945, true }, + { 130957, true }, + { 130973, true }, + { 130996, true }, + { 131016, true }, + { 131030, true }, + { 131050, true }, + { 131069, true }, + { 131091, true }, + { 131113, false }, { 131124, true }, - { 131136, true }, - { 131158, true }, - { 131173, true }, - { 131189, true }, - { 131205, true }, - { 131220, true }, - { 131237, true }, - { 131252, true }, - { 131267, true }, - { 131282, true }, - { 131294, true }, - { 131309, true }, - { 131328, true }, - { 131342, false }, - { 131352, true }, - { 131369, true }, - { 131380, false }, - { 131395, true }, - { 131412, true }, - { 131426, true }, - { 131439, true }, - { 131455, true }, - { 131469, true }, - { 131482, true }, + { 131141, true }, + { 131155, true }, + { 131180, true }, + { 131200, true }, + { 131225, true }, + { 131250, true }, + { 131266, true }, + { 131278, true }, + { 131300, true }, + { 131315, true }, + { 131331, true }, + { 131347, true }, + { 131362, true }, + { 131379, true }, + { 131394, true }, + { 131409, true }, + { 131424, true }, + { 131436, true }, + { 131451, true }, + { 131470, true }, + { 131484, false }, { 131494, true }, - { 131506, true }, - { 131516, true }, - { 131528, true }, - { 131543, true }, - { 131555, true }, - { 131566, true }, - { 131586, true }, - { 131598, true }, - { 131609, true }, + { 131511, true }, + { 131522, false }, + { 131537, true }, + { 131554, true }, + { 131568, true }, + { 131581, true }, + { 131597, true }, + { 131611, true }, { 131624, true }, - { 131640, true }, - { 131651, true }, - { 131676, true }, + { 131636, true }, + { 131648, true }, + { 131658, true }, + { 131670, true }, { 131685, true }, - { 131696, true }, - { 131711, true }, - { 131719, true }, - { 131732, true }, - { 131755, true }, - { 131772, true }, - { 131783, true }, - { 131801, true }, - { 131819, true }, - { 131835, false }, - { 131847, true }, - { 131855, true }, - { 131865, true }, - { 131880, true }, - { 131894, true }, - { 131904, false }, - { 131922, true }, - { 131946, true }, + { 131697, true }, + { 131708, true }, + { 131728, true }, + { 131740, true }, + { 131751, true }, + { 131766, true }, + { 131782, true }, + { 131793, true }, + { 131818, true }, + { 131827, true }, + { 131838, true }, + { 131853, true }, + { 131861, true }, + { 131874, true }, + { 131897, true }, + { 131914, true }, + { 131925, true }, + { 131943, true }, { 131961, true }, - { 131973, true }, - { 132001, true }, - { 132017, true }, - { 132029, true }, - { 132043, true }, - { 132071, true }, - { 132087, true }, - { 132100, true }, - { 132117, true }, - { 132134, true }, - { 132156, true }, - { 132166, true }, - { 132176, true }, - { 132194, true }, - { 132212, true }, - { 132221, true }, - { 132234, true }, - { 132248, true }, + { 131977, false }, + { 131989, true }, + { 131997, true }, + { 132007, true }, + { 132022, true }, + { 132036, true }, + { 132046, false }, + { 132064, true }, + { 132088, true }, + { 132103, true }, + { 132115, true }, + { 132143, true }, + { 132159, true }, + { 132171, true }, + { 132185, true }, + { 132213, true }, + { 132229, true }, + { 132242, true }, { 132259, true }, - { 132277, true }, - { 132296, true }, - { 132321, true }, - { 132337, true }, - { 132356, true }, - { 132377, true }, - { 132394, true }, - { 132408, true }, - { 132421, true }, - { 132450, true }, - { 132480, true }, - { 132488, true }, - { 132497, true }, - { 132510, true }, - { 132521, true }, - { 132543, true }, - { 132555, true }, - { 132566, true }, - { 132595, true }, - { 132613, true }, - { 132633, true }, - { 132651, true }, - { 132661, true }, - { 132690, true }, - { 132703, true }, - { 132715, true }, - { 132731, true }, - { 132748, true }, - { 132771, true }, - { 132787, true }, - { 132810, true }, - { 132836, true }, - { 132850, true }, - { 132864, true }, - { 132883, true }, - { 132902, true }, - { 132916, true }, - { 132931, false }, - { 132941, true }, - { 132953, true }, - { 132969, true }, - { 132977, true }, - { 132989, true }, - { 133000, true }, - { 133011, true }, - { 133030, true }, - { 133042, true }, - { 133053, true }, - { 133063, true }, - { 133074, false }, - { 133085, true }, - { 133093, true }, - { 133108, true }, - { 133124, true }, - { 133138, true }, - { 133150, true }, - { 133163, false }, + { 132276, true }, + { 132298, true }, + { 132308, true }, + { 132318, true }, + { 132336, true }, + { 132354, true }, + { 132363, true }, + { 132376, true }, + { 132390, true }, + { 132401, true }, + { 132419, true }, + { 132438, true }, + { 132463, true }, + { 132479, true }, + { 132498, true }, + { 132519, true }, + { 132536, true }, + { 132550, true }, + { 132563, true }, + { 132592, true }, + { 132622, true }, + { 132630, true }, + { 132639, true }, + { 132652, true }, + { 132663, true }, + { 132685, true }, + { 132697, true }, + { 132708, true }, + { 132737, true }, + { 132755, true }, + { 132775, true }, + { 132793, true }, + { 132803, true }, + { 132832, true }, + { 132845, true }, + { 132857, true }, + { 132873, true }, + { 132890, true }, + { 132913, true }, + { 132929, true }, + { 132952, true }, + { 132978, true }, + { 132992, true }, + { 133006, true }, + { 133025, true }, + { 133044, true }, + { 133058, true }, + { 133073, false }, + { 133083, true }, + { 133095, true }, + { 133111, true }, + { 133119, true }, + { 133131, true }, + { 133142, true }, + { 133153, true }, { 133172, true }, - { 133186, true }, + { 133184, true }, + { 133195, true }, { 133205, true }, - { 133212, true }, - { 133221, true }, - { 133232, true }, - { 133244, true }, - { 133262, true }, - { 133282, true }, - { 133295, true }, - { 133305, true }, - { 133318, true }, - { 133330, true }, - { 133346, true }, - { 133354, false }, - { 133362, true }, - { 133384, true }, - { 133392, true }, - { 133413, true }, + { 133216, false }, + { 133227, true }, + { 133235, true }, + { 133250, true }, + { 133266, true }, + { 133280, true }, + { 133292, true }, + { 133305, false }, + { 133314, true }, + { 133328, true }, + { 133347, true }, + { 133354, true }, + { 133363, true }, + { 133374, true }, + { 133386, true }, + { 133404, true }, + { 133424, true }, { 133437, true }, - { 133453, true }, - { 133469, true }, - { 133479, true }, - { 133493, true }, - { 133510, true }, - { 133520, true }, - { 133530, true }, - { 133545, true }, - { 133557, true }, - { 133567, true }, - { 133577, true }, - { 133587, true }, - { 133596, true }, - { 133606, true }, + { 133447, true }, + { 133460, true }, + { 133472, true }, + { 133488, true }, + { 133496, false }, + { 133504, true }, + { 133526, true }, + { 133534, true }, + { 133555, true }, + { 133579, true }, + { 133595, true }, + { 133611, true }, { 133621, true }, - { 133633, true }, - { 133649, true }, + { 133635, true }, + { 133652, true }, + { 133662, true }, { 133672, true }, - { 133685, true }, - { 133698, true }, - { 133712, true }, - { 133727, true }, - { 133740, true }, - { 133752, true }, - { 133761, true }, - { 133777, true }, - { 133795, true }, - { 133811, true }, - { 133824, true }, - { 133838, true }, - { 133853, true }, - { 133868, true }, - { 133878, true }, - { 133898, true }, - { 133912, true }, - { 133924, true }, - { 133947, true }, - { 133959, true }, - { 133974, true }, - { 133982, true }, - { 133993, true }, - { 134015, true }, - { 134026, false }, + { 133687, true }, + { 133699, true }, + { 133709, true }, + { 133719, true }, + { 133729, true }, + { 133738, true }, + { 133748, true }, + { 133760, true }, + { 133776, true }, + { 133799, true }, + { 133812, true }, + { 133825, true }, + { 133839, true }, + { 133854, true }, + { 133867, true }, + { 133879, true }, + { 133888, true }, + { 133904, true }, + { 133922, true }, + { 133938, true }, + { 133951, true }, + { 133965, true }, + { 133980, true }, + { 133995, true }, + { 134005, true }, + { 134025, true }, { 134039, true }, - { 134049, true }, - { 134065, true }, - { 134079, true }, - { 134095, true }, - { 134111, true }, - { 134121, true }, - { 134134, true }, - { 134147, true }, - { 134168, true }, - { 134181, true }, - { 134194, true }, - { 134211, true }, - { 134220, true }, - { 134233, true }, - { 134241, true }, - { 134249, true }, - { 134264, true }, - { 134276, true }, - { 134286, true }, - { 134296, true }, - { 134323, true }, - { 134348, true }, - { 134356, true }, - { 134364, true }, - { 134373, true }, - { 134384, true }, - { 134396, true }, - { 134408, true }, - { 134418, true }, - { 134430, true }, - { 134444, true }, - { 134459, true }, - { 134476, true }, - { 134490, true }, - { 134502, true }, - { 134513, true }, - { 134527, true }, - { 134538, true }, - { 134549, true }, - { 134560, true }, - { 134572, true }, - { 134580, true }, - { 134595, true }, - { 134609, true }, - { 134623, true }, - { 134638, true }, - { 134653, true }, - { 134666, true }, - { 134678, true }, - { 134693, true }, - { 134711, true }, - { 134724, true }, - { 134731, true }, - { 134743, true }, - { 134763, true }, - { 134772, true }, - { 134785, true }, - { 134802, true }, - { 134817, true }, - { 134834, true }, - { 134846, true }, - { 134860, true }, - { 134875, true }, - { 134891, true }, - { 134907, true }, - { 134920, true }, - { 134936, true }, - { 134956, true }, - { 134973, true }, - { 134993, true }, - { 135016, true }, - { 135028, true }, - { 135037, true }, - { 135053, true }, - { 135065, true }, - { 135075, true }, - { 135084, true }, - { 135092, true }, - { 135102, false }, - { 135109, true }, - { 135120, true }, - { 135136, true }, - { 135149, true }, - { 135158, true }, - { 135173, true }, - { 135188, true }, - { 135200, true }, - { 135221, true }, - { 135238, true }, - { 135245, true }, - { 135265, true }, - { 135275, true }, - { 135286, false }, - { 135299, true }, + { 134051, true }, + { 134074, true }, + { 134086, true }, + { 134101, true }, + { 134109, true }, + { 134120, true }, + { 134142, true }, + { 134153, false }, + { 134166, true }, + { 134176, true }, + { 134192, true }, + { 134206, true }, + { 134222, true }, + { 134238, true }, + { 134248, true }, + { 134261, true }, + { 134274, true }, + { 134295, true }, + { 134308, true }, + { 134321, true }, + { 134338, true }, + { 134347, true }, + { 134360, true }, + { 134368, true }, + { 134376, true }, + { 134391, true }, + { 134403, true }, + { 134413, true }, + { 134423, true }, + { 134450, true }, + { 134475, true }, + { 134483, true }, + { 134491, true }, + { 134500, true }, + { 134511, true }, + { 134523, true }, + { 134535, true }, + { 134545, true }, + { 134557, true }, + { 134571, true }, + { 134586, true }, + { 134603, true }, + { 134617, true }, + { 134629, true }, + { 134640, true }, + { 134654, true }, + { 134665, true }, + { 134676, true }, + { 134687, true }, + { 134699, true }, + { 134707, true }, + { 134722, true }, + { 134736, true }, + { 134750, true }, + { 134765, true }, + { 134780, true }, + { 134793, true }, + { 134805, true }, + { 134820, true }, + { 134833, true }, + { 134851, true }, + { 134864, true }, + { 134871, true }, + { 134883, true }, + { 134903, true }, + { 134912, true }, + { 134925, true }, + { 134942, true }, + { 134957, true }, + { 134974, true }, + { 134986, true }, + { 135000, true }, + { 135015, true }, + { 135031, true }, + { 135047, true }, + { 135060, true }, + { 135076, true }, + { 135096, true }, + { 135113, true }, + { 135133, true }, + { 135156, true }, + { 135168, true }, + { 135177, true }, + { 135193, true }, + { 135205, true }, + { 135215, true }, + { 135224, true }, + { 135232, true }, + { 135242, false }, + { 135249, true }, + { 135260, true }, + { 135276, true }, + { 135289, true }, + { 135298, true }, { 135313, true }, { 135328, true }, - { 135338, true }, - { 135349, true }, + { 135340, true }, { 135361, true }, - { 135374, true }, - { 135394, true }, - { 135402, true }, - { 135411, false }, - { 135420, true }, + { 135378, true }, + { 135385, true }, + { 135405, true }, + { 135415, true }, + { 135426, false }, { 135439, true }, - { 135447, true }, - { 135460, true }, - { 135472, true }, - { 135483, true }, + { 135453, true }, + { 135468, true }, + { 135478, true }, + { 135489, true }, { 135501, true }, - { 135517, true }, - { 135529, true }, - { 135541, true }, - { 135554, true }, - { 135573, true }, - { 135591, true }, - { 135604, true }, - { 135621, true }, - { 135634, false }, - { 135643, true }, - { 135654, true }, - { 135667, true }, - { 135684, true }, - { 135696, true }, - { 135707, true }, - { 135722, true }, - { 135738, false }, - { 135753, true }, - { 135767, true }, - { 135780, true }, - { 135799, true }, - { 135811, true }, + { 135514, true }, + { 135534, true }, + { 135542, true }, + { 135551, false }, + { 135560, true }, + { 135579, true }, + { 135587, true }, + { 135600, true }, + { 135612, true }, + { 135623, true }, + { 135641, true }, + { 135657, true }, + { 135669, true }, + { 135681, true }, + { 135694, true }, + { 135713, true }, + { 135731, true }, + { 135744, true }, + { 135761, true }, + { 135774, false }, + { 135783, true }, + { 135794, true }, + { 135807, true }, { 135824, true }, - { 135841, true }, - { 135852, true }, - { 135863, true }, - { 135880, false }, - { 135901, false }, - { 135917, false }, - { 135937, true }, - { 135949, true }, - { 135956, true }, - { 135979, true }, - { 135991, true }, - { 136004, true }, - { 136016, true }, - { 136031, true }, - { 136046, true }, - { 136058, true }, - { 136072, true }, - { 136089, true }, - { 136104, false }, - { 136115, true }, - { 136130, true }, - { 136139, true }, - { 136150, true }, - { 136165, true }, - { 136186, true }, - { 136204, true }, - { 136231, true }, - { 136241, true }, - { 136255, true }, - { 136263, true }, - { 136277, true }, - { 136289, true }, - { 136306, true }, + { 135836, true }, + { 135851, true }, + { 135867, false }, + { 135882, true }, + { 135896, true }, + { 135909, true }, + { 135928, true }, + { 135940, true }, + { 135953, true }, + { 135970, true }, + { 135981, true }, + { 135992, true }, + { 136009, false }, + { 136030, false }, + { 136046, false }, + { 136066, true }, + { 136078, true }, + { 136085, true }, + { 136108, true }, + { 136120, true }, + { 136133, true }, + { 136145, true }, + { 136160, true }, + { 136175, true }, + { 136189, true }, + { 136206, true }, + { 136221, false }, + { 136232, true }, + { 136247, true }, + { 136256, true }, + { 136267, true }, + { 136282, true }, + { 136303, true }, { 136321, true }, - { 136331, true }, - { 136342, true }, - { 136356, true }, - { 136365, true }, - { 136384, true }, - { 136397, true }, - { 136409, true }, - { 136419, true }, - { 136427, true }, - { 136440, true }, + { 136348, true }, + { 136358, true }, + { 136372, true }, + { 136380, true }, + { 136394, true }, + { 136406, true }, + { 136423, true }, + { 136438, true }, { 136448, true }, - { 136472, true }, - { 136481, true }, - { 136493, true }, - { 136502, true }, + { 136459, true }, + { 136473, true }, + { 136482, true }, + { 136501, true }, { 136514, true }, - { 136525, true }, + { 136526, true }, { 136536, true }, - { 136559, true }, - { 136582, true }, - { 136605, true }, - { 136614, true }, - { 136624, false }, + { 136544, true }, + { 136557, true }, + { 136565, true }, + { 136589, true }, + { 136598, true }, + { 136610, false }, + { 136620, true }, + { 136629, true }, { 136641, true }, - { 136650, true }, - { 136660, true }, - { 136673, true }, - { 136681, true }, - { 136691, true }, - { 136702, true }, - { 136712, true }, - { 136725, true }, - { 136737, true }, - { 136752, true }, - { 136764, true }, - { 136780, true }, - { 136794, true }, + { 136652, true }, + { 136663, true }, + { 136686, true }, + { 136709, true }, + { 136732, true }, + { 136741, true }, + { 136751, false }, + { 136768, true }, + { 136777, true }, + { 136787, true }, + { 136800, true }, { 136808, true }, - { 136815, true }, - { 136825, true }, - { 136837, true }, - { 136846, true }, - { 136860, true }, - { 136874, true }, - { 136890, false }, - { 136904, true }, - { 136915, true }, - { 136927, true }, - { 136939, true }, - { 136948, true }, - { 136962, true }, - { 136974, true }, - { 136984, true }, - { 136996, true }, - { 137006, true }, - { 137016, true }, - { 137026, true }, - { 137036, true }, - { 137054, true }, - { 137069, true }, - { 137080, true }, - { 137093, true }, - { 137104, true }, - { 137111, true }, - { 137128, true }, - { 137138, false }, + { 136818, true }, + { 136829, true }, + { 136839, true }, + { 136852, true }, + { 136864, true }, + { 136879, true }, + { 136891, true }, + { 136907, true }, + { 136921, true }, + { 136935, true }, + { 136942, true }, + { 136952, true }, + { 136964, true }, + { 136973, true }, + { 136987, true }, + { 137001, true }, + { 137017, true }, + { 137028, true }, + { 137040, true }, + { 137052, true }, + { 137061, true }, + { 137075, true }, + { 137087, true }, + { 137097, true }, + { 137109, true }, + { 137119, true }, + { 137129, true }, + { 137139, true }, { 137149, true }, - { 137159, true }, - { 137169, true }, - { 137180, true }, - { 137189, true }, - { 137211, true }, - { 137236, true }, - { 137255, true }, + { 137167, true }, + { 137182, true }, + { 137193, true }, + { 137206, true }, + { 137217, true }, + { 137224, true }, + { 137241, true }, + { 137251, false }, { 137262, true }, - { 137278, true }, - { 137292, true }, - { 137309, true }, - { 137318, true }, - { 137331, true }, - { 137346, true }, - { 137356, true }, - { 137372, true }, - { 137385, true }, - { 137407, true }, - { 137417, true }, + { 137272, true }, + { 137282, true }, + { 137293, true }, + { 137302, true }, + { 137324, true }, + { 137349, true }, + { 137368, true }, + { 137375, true }, + { 137391, true }, + { 137405, true }, + { 137422, true }, { 137431, true }, { 137444, true }, - { 137458, true }, - { 137477, true }, - { 137500, true }, - { 137511, true }, + { 137459, true }, + { 137469, true }, + { 137485, true }, + { 137498, true }, { 137520, true }, - { 137531, true }, - { 137545, true }, - { 137554, true }, - { 137565, true }, - { 137576, true }, + { 137530, true }, + { 137544, true }, + { 137557, true }, + { 137571, true }, { 137590, true }, - { 137607, true }, - { 137618, true }, - { 137627, true }, - { 137637, true }, - { 137649, true }, - { 137664, true }, - { 137676, true }, - { 137695, true }, - { 137708, true }, - { 137721, true }, - { 137741, true }, - { 137765, true }, - { 137774, true }, + { 137613, true }, + { 137624, true }, + { 137633, true }, + { 137644, true }, + { 137658, true }, + { 137667, true }, + { 137678, true }, + { 137689, true }, + { 137703, true }, + { 137720, true }, + { 137731, true }, + { 137740, true }, + { 137750, true }, + { 137762, true }, + { 137777, true }, { 137789, true }, - { 137802, true }, - { 137814, true }, - { 137827, true }, - { 137839, true }, - { 137847, true }, - { 137859, true }, - { 137868, true }, - { 137883, true }, - { 137892, true }, - { 137914, true }, - { 137926, true }, - { 137934, true }, - { 137944, true }, - { 137959, true }, - { 137967, true }, - { 137980, true }, - { 137995, true }, - { 138006, true }, - { 138017, true }, - { 138032, true }, - { 138054, true }, - { 138068, true }, - { 138082, true }, - { 138096, true }, - { 138116, true }, + { 137808, true }, + { 137821, true }, + { 137834, true }, + { 137854, true }, + { 137878, true }, + { 137887, true }, + { 137902, true }, + { 137915, true }, + { 137927, true }, + { 137940, true }, + { 137952, true }, + { 137960, true }, + { 137972, true }, + { 137981, true }, + { 137996, true }, + { 138005, true }, + { 138027, true }, + { 138039, true }, + { 138047, true }, + { 138057, true }, + { 138072, true }, + { 138080, true }, + { 138093, true }, + { 138108, true }, + { 138119, true }, + { 138130, true }, { 138139, true }, - { 138164, true }, - { 138175, true }, + { 138154, true }, + { 138176, true }, + { 138190, true }, { 138204, true }, - { 138225, true }, - { 138244, true }, + { 138218, true }, + { 138238, true }, { 138261, true }, - { 138281, true }, + { 138286, true }, { 138297, true }, - { 138310, true }, - { 138324, true }, - { 138340, true }, - { 138357, true }, - { 138372, true }, - { 138387, true }, - { 138397, true }, - { 138410, true }, - { 138427, true }, - { 138445, true }, - { 138458, true }, - { 138473, true }, - { 138483, true }, - { 138499, true }, - { 138515, true }, - { 138526, true }, - { 138537, true }, - { 138547, true }, - { 138560, true }, - { 138572, true }, - { 138593, true }, - { 138607, false }, - { 138627, false }, - { 138639, false }, - { 138652, true }, - { 138662, true }, - { 138673, true }, - { 138686, true }, - { 138699, true }, + { 138326, true }, + { 138347, true }, + { 138366, true }, + { 138383, true }, + { 138403, true }, + { 138419, true }, + { 138432, true }, + { 138446, true }, + { 138462, true }, + { 138479, true }, + { 138494, true }, + { 138509, true }, + { 138519, true }, + { 138532, true }, + { 138549, true }, + { 138567, true }, + { 138580, true }, + { 138595, true }, + { 138605, true }, + { 138621, true }, + { 138637, true }, + { 138648, true }, + { 138659, true }, + { 138669, true }, + { 138682, true }, + { 138694, true }, { 138715, true }, - { 138732, true }, - { 138744, true }, - { 138770, true }, - { 138803, true }, + { 138729, false }, + { 138749, false }, + { 138761, false }, + { 138774, true }, + { 138784, true }, + { 138795, true }, + { 138808, true }, + { 138821, true }, { 138837, true }, - { 138849, true }, - { 138863, true }, - { 138883, true }, - { 138897, true }, - { 138913, true }, + { 138854, true }, + { 138866, true }, + { 138892, true }, { 138925, true }, - { 138938, true }, - { 138964, true }, + { 138959, true }, + { 138971, true }, { 138985, true }, - { 139001, true }, - { 139015, true }, + { 139005, true }, + { 139019, true }, { 139035, true }, - { 139053, true }, - { 139069, true }, - { 139090, false }, - { 139104, true }, - { 139118, true }, - { 139131, true }, - { 139149, true }, - { 139166, true }, - { 139178, true }, + { 139047, true }, + { 139060, true }, + { 139086, true }, + { 139107, true }, + { 139123, true }, + { 139137, true }, + { 139157, true }, + { 139175, true }, { 139191, true }, - { 139211, true }, - { 139223, true }, - { 139245, true }, - { 139267, true }, - { 139286, true }, - { 139296, true }, + { 139212, false }, + { 139226, true }, + { 139240, true }, + { 139253, true }, + { 139271, true }, + { 139288, true }, + { 139300, true }, { 139313, true }, { 139333, true }, - { 139355, true }, + { 139345, true }, { 139367, true }, - { 139384, true }, - { 139395, true }, + { 139389, true }, { 139408, true }, - { 139428, true }, - { 139438, true }, - { 139446, true }, - { 139457, true }, - { 139482, true }, - { 139494, true }, - { 139509, true }, - { 139536, true }, - { 139564, true }, - { 139581, true }, - { 139600, true }, - { 139619, true }, - { 139643, true }, - { 139654, false }, - { 139667, true }, - { 139678, true }, - { 139691, true }, - { 139707, true }, + { 139418, true }, + { 139435, true }, + { 139455, true }, + { 139477, true }, + { 139489, true }, + { 139506, true }, + { 139517, true }, + { 139530, true }, + { 139550, true }, + { 139560, true }, + { 139568, true }, + { 139579, true }, + { 139604, true }, + { 139616, true }, + { 139631, true }, + { 139658, true }, + { 139686, true }, + { 139703, true }, { 139722, true }, - { 139742, true }, - { 139753, true }, - { 139767, true }, - { 139779, true }, - { 139802, true }, - { 139827, true }, - { 139850, true }, - { 139866, true }, - { 139883, true }, - { 139894, true }, - { 139911, true }, - { 139925, true }, - { 139937, true }, - { 139953, false }, - { 139966, true }, - { 139978, true }, - { 139993, true }, - { 140006, true }, - { 140018, true }, - { 140032, true }, - { 140043, true }, - { 140063, true }, - { 140080, true }, - { 140093, true }, - { 140105, true }, - { 140115, false }, - { 140124, true }, - { 140138, true }, - { 140148, true }, - { 140161, true }, - { 140172, true }, - { 140195, true }, - { 140208, true }, - { 140226, true }, - { 140237, true }, - { 140251, true }, - { 140267, true }, - { 140278, true }, - { 140286, true }, - { 140297, true }, - { 140312, true }, - { 140331, true }, - { 140344, true }, - { 140367, true }, - { 140381, true }, - { 140396, true }, - { 140417, true }, - { 140427, true }, - { 140437, true }, - { 140451, true }, - { 140464, true }, - { 140477, true }, - { 140492, true }, - { 140510, true }, - { 140533, true }, - { 140545, true }, - { 140561, true }, - { 140577, true }, - { 140594, true }, - { 140607, true }, - { 140619, true }, + { 139741, true }, + { 139765, true }, + { 139776, false }, + { 139789, true }, + { 139800, true }, + { 139813, true }, + { 139829, true }, + { 139844, true }, + { 139864, true }, + { 139875, true }, + { 139889, true }, + { 139901, true }, + { 139924, true }, + { 139949, true }, + { 139972, true }, + { 139988, true }, + { 140005, true }, + { 140016, true }, + { 140033, true }, + { 140047, true }, + { 140059, true }, + { 140075, false }, + { 140088, true }, + { 140100, true }, + { 140115, true }, + { 140128, true }, + { 140140, true }, + { 140154, true }, + { 140165, true }, + { 140185, true }, + { 140202, true }, + { 140215, true }, + { 140227, true }, + { 140237, false }, + { 140246, true }, + { 140260, true }, + { 140270, true }, + { 140283, true }, + { 140294, true }, + { 140317, true }, + { 140330, true }, + { 140348, true }, + { 140359, true }, + { 140373, true }, + { 140389, true }, + { 140400, true }, + { 140408, true }, + { 140419, true }, + { 140434, true }, + { 140453, true }, + { 140466, true }, + { 140489, true }, + { 140503, true }, + { 140518, true }, + { 140539, true }, + { 140549, true }, + { 140559, true }, + { 140573, true }, + { 140586, true }, + { 140599, true }, + { 140614, true }, { 140632, true }, - { 140644, true }, - { 140659, true }, - { 140671, true }, + { 140655, true }, + { 140667, true }, + { 140683, true }, { 140699, true }, { 140716, true }, - { 140726, true }, - { 140753, true }, - { 140774, true }, - { 140792, true }, - { 140809, true }, - { 140820, true }, + { 140729, true }, + { 140741, true }, + { 140754, true }, + { 140766, true }, + { 140781, true }, + { 140793, true }, + { 140821, true }, { 140838, true }, - { 140853, true }, - { 140865, true }, - { 140877, true }, - { 140889, true }, - { 140904, true }, - { 140939, true }, - { 140962, true }, - { 140984, true }, - { 141001, true }, + { 140848, true }, + { 140875, true }, + { 140896, true }, + { 140914, true }, + { 140931, true }, + { 140942, true }, + { 140960, true }, + { 140975, true }, + { 140987, true }, + { 140999, true }, { 141011, true }, - { 141024, true }, - { 141036, true }, - { 141053, true }, - { 141070, true }, - { 141085, false }, - { 141104, true }, - { 141122, true }, - { 141136, true }, - { 141167, true }, - { 141184, true }, - { 141199, true }, - { 141211, true }, - { 141223, true }, - { 141242, true }, - { 141264, true }, - { 141291, true }, - { 141303, true }, - { 141320, true }, - { 141337, true }, - { 141359, true }, - { 141375, true }, - { 141388, true }, - { 141400, true }, - { 141421, true }, - { 141436, true }, - { 141455, true }, - { 141467, true }, - { 141494, true }, - { 141511, true }, - { 141528, true }, - { 141544, true }, - { 141559, false }, - { 141598, true }, - { 141627, true }, - { 141643, true }, - { 141667, true }, - { 141689, true }, - { 141714, true }, - { 141736, true }, - { 141751, true }, - { 141778, true }, - { 141803, true }, - { 141821, true }, - { 141838, true }, - { 141861, true }, - { 141887, true }, - { 141902, true }, - { 141920, true }, + { 141026, true }, + { 141061, true }, + { 141084, true }, + { 141106, true }, + { 141123, true }, + { 141133, true }, + { 141146, true }, + { 141158, true }, + { 141175, true }, + { 141192, true }, + { 141207, false }, + { 141226, true }, + { 141244, true }, + { 141258, true }, + { 141289, true }, + { 141306, true }, + { 141321, true }, + { 141333, true }, + { 141345, true }, + { 141364, true }, + { 141386, true }, + { 141413, true }, + { 141425, true }, + { 141442, true }, + { 141459, true }, + { 141481, true }, + { 141497, true }, + { 141510, true }, + { 141522, true }, + { 141543, true }, + { 141558, true }, + { 141577, true }, + { 141589, true }, + { 141616, true }, + { 141633, true }, + { 141650, true }, + { 141666, true }, + { 141681, false }, + { 141720, true }, + { 141749, true }, + { 141765, true }, + { 141781, true }, + { 141805, true }, + { 141827, true }, + { 141852, true }, + { 141874, true }, + { 141889, true }, + { 141916, true }, { 141941, true }, - { 141963, true }, - { 141984, true }, - { 142012, true }, - { 142031, true }, - { 142050, true }, - { 142065, true }, - { 142089, true }, - { 142102, true }, - { 142115, true }, - { 142132, true }, - { 142147, true }, - { 142161, true }, - { 142182, false }, - { 142196, true }, - { 142206, false }, - { 142222, true }, - { 142235, true }, - { 142254, true }, + { 141959, true }, + { 141976, true }, + { 141999, true }, + { 142025, true }, + { 142040, true }, + { 142058, true }, + { 142079, true }, + { 142101, true }, + { 142122, true }, + { 142150, true }, + { 142169, true }, + { 142188, true }, + { 142203, true }, + { 142227, true }, + { 142240, true }, + { 142253, true }, { 142270, true }, - { 142294, true }, - { 142311, false }, - { 142320, true }, - { 142335, true }, - { 142345, true }, - { 142357, true }, - { 142378, true }, - { 142391, true }, + { 142285, true }, + { 142299, true }, + { 142320, false }, + { 142334, true }, + { 142344, false }, + { 142360, true }, + { 142373, true }, + { 142392, true }, { 142408, true }, - { 142430, true }, - { 142450, true }, - { 142463, true }, - { 142481, true }, - { 142494, true }, - { 142508, true }, - { 142521, true }, - { 142540, true }, - { 142550, true }, - { 142566, true }, - { 142582, true }, - { 142598, true }, - { 142611, true }, - { 142630, true }, - { 142648, true }, - { 142662, true }, - { 142672, false }, - { 142684, true }, - { 142695, true }, - { 142703, true }, - { 142713, true }, - { 142722, true }, - { 142734, true }, - { 142748, false }, - { 142761, true }, - { 142769, true }, - { 142780, true }, - { 142791, true }, - { 142807, true }, - { 142819, true }, - { 142829, true }, + { 142432, true }, + { 142449, false }, + { 142458, true }, + { 142473, true }, + { 142483, true }, + { 142495, true }, + { 142516, true }, + { 142529, true }, + { 142546, true }, + { 142568, true }, + { 142588, true }, + { 142601, true }, + { 142619, true }, + { 142632, true }, + { 142646, true }, + { 142659, true }, + { 142678, true }, + { 142688, true }, + { 142704, true }, + { 142720, true }, + { 142736, true }, + { 142749, true }, + { 142768, true }, + { 142786, true }, + { 142800, true }, + { 142810, false }, + { 142822, true }, + { 142833, true }, { 142841, true }, - { 142850, true }, - { 142866, false }, - { 142873, true }, - { 142881, true }, - { 142891, true }, + { 142851, true }, + { 142860, true }, + { 142872, true }, + { 142886, false }, { 142899, true }, - { 142911, true }, - { 142925, true }, - { 142939, true }, - { 142948, true }, - { 142964, true }, - { 142977, true }, - { 142985, true }, - { 142994, true }, - { 143005, true }, - { 143015, false }, - { 143033, true }, - { 143043, true }, - { 143054, true }, - { 143066, true }, - { 143078, false }, - { 143089, true }, - { 143098, true }, - { 143107, true }, - { 143127, true }, - { 143139, true }, - { 143155, true }, - { 143163, true }, - { 143172, true }, - { 143180, true }, - { 143196, true }, - { 143213, true }, - { 143221, true }, - { 143232, true }, - { 143244, true }, - { 143254, true }, + { 142907, true }, + { 142918, true }, + { 142929, true }, + { 142945, true }, + { 142957, true }, + { 142967, true }, + { 142979, true }, + { 142988, true }, + { 143004, false }, + { 143011, true }, + { 143019, true }, + { 143029, true }, + { 143037, true }, + { 143049, true }, + { 143063, true }, + { 143077, true }, + { 143086, true }, + { 143102, true }, + { 143115, true }, + { 143123, true }, + { 143132, true }, + { 143143, true }, + { 143153, false }, + { 143171, true }, + { 143181, true }, + { 143192, true }, + { 143204, true }, + { 143216, false }, + { 143227, true }, + { 143236, true }, + { 143245, true }, { 143265, true }, - { 143275, true }, - { 143290, true }, - { 143309, true }, - { 143325, true }, - { 143336, true }, - { 143345, true }, - { 143360, true }, - { 143368, true }, - { 143377, true }, - { 143395, true }, - { 143411, true }, - { 143423, true }, - { 143436, true }, - { 143450, true }, - { 143478, true }, - { 143490, true }, - { 143503, true }, - { 143517, true }, - { 143534, true }, - { 143543, true }, - { 143562, true }, - { 143572, true }, - { 143587, true }, - { 143604, true }, - { 143627, true }, - { 143646, true }, - { 143659, true }, - { 143668, true }, + { 143277, true }, + { 143293, true }, + { 143301, true }, + { 143310, true }, + { 143318, true }, + { 143334, true }, + { 143351, true }, + { 143359, true }, + { 143370, true }, + { 143382, true }, + { 143392, true }, + { 143403, true }, + { 143413, true }, + { 143428, true }, + { 143447, true }, + { 143463, true }, + { 143474, true }, + { 143483, true }, + { 143498, true }, + { 143506, true }, + { 143515, true }, + { 143533, true }, + { 143549, true }, + { 143561, true }, + { 143574, true }, + { 143588, true }, + { 143616, true }, + { 143628, true }, + { 143641, true }, + { 143655, true }, + { 143672, true }, { 143681, true }, - { 143695, true }, - { 143718, true }, - { 143739, true }, - { 143756, true }, - { 143777, true }, - { 143787, true }, - { 143803, true }, - { 143814, true }, - { 143824, true }, - { 143836, true }, - { 143848, true }, - { 143861, true }, - { 143878, true }, - { 143895, true }, - { 143912, true }, - { 143928, true }, - { 143936, true }, - { 143954, true }, - { 143968, true }, + { 143700, true }, + { 143710, true }, + { 143725, true }, + { 143742, true }, + { 143765, true }, + { 143784, true }, + { 143797, true }, + { 143806, true }, + { 143819, true }, + { 143833, true }, + { 143856, true }, + { 143877, true }, + { 143894, true }, + { 143915, true }, + { 143925, true }, + { 143941, true }, + { 143952, true }, + { 143962, true }, + { 143974, true }, { 143986, true }, - { 144000, true }, - { 144018, true }, - { 144037, true }, - { 144053, true }, - { 144075, true }, - { 144086, true }, - { 144097, true }, + { 143999, true }, + { 144016, true }, + { 144033, true }, + { 144050, true }, + { 144066, true }, + { 144074, true }, + { 144092, true }, { 144106, true }, { 144124, true }, - { 144143, true }, - { 144154, true }, - { 144167, true }, - { 144179, true }, - { 144189, true }, - { 144212, true }, - { 144219, true }, - { 144230, true }, - { 144240, true }, - { 144253, true }, - { 144269, true }, - { 144280, true }, - { 144290, true }, - { 144300, true }, - { 144310, true }, - { 144320, true }, - { 144331, true }, - { 144341, true }, - { 144352, true }, - { 144370, true }, - { 144382, true }, - { 144394, true }, - { 144404, true }, - { 144413, true }, - { 144430, true }, - { 144449, true }, - { 144462, true }, - { 144475, true }, - { 144487, true }, - { 144506, true }, - { 144519, true }, - { 144536, true }, + { 144138, true }, + { 144156, true }, + { 144175, true }, + { 144191, true }, + { 144213, true }, + { 144224, true }, + { 144235, true }, + { 144244, true }, + { 144262, true }, + { 144281, true }, + { 144292, true }, + { 144305, true }, + { 144317, true }, + { 144327, true }, + { 144350, true }, + { 144357, true }, + { 144368, true }, + { 144378, true }, + { 144391, true }, + { 144407, true }, + { 144418, true }, + { 144428, true }, + { 144438, true }, + { 144448, true }, + { 144458, true }, + { 144469, true }, + { 144479, true }, + { 144490, true }, + { 144508, true }, + { 144520, true }, + { 144532, true }, + { 144542, true }, + { 144551, true }, { 144568, true }, - { 144582, true }, - { 144594, true }, - { 144618, true }, - { 144641, true }, - { 144673, true }, - { 144695, true }, + { 144587, true }, + { 144600, true }, + { 144613, true }, + { 144625, true }, + { 144644, true }, + { 144657, true }, + { 144674, true }, + { 144706, true }, { 144720, true }, { 144732, true }, - { 144745, true }, - { 144771, true }, - { 144781, true }, - { 144802, true }, - { 144813, true }, - { 144832, true }, - { 144846, true }, + { 144756, true }, + { 144779, true }, + { 144811, true }, + { 144833, true }, { 144858, true }, - { 144872, true }, - { 144885, true }, - { 144900, true }, - { 144915, true }, - { 144929, true }, - { 144943, false }, - { 144963, true }, - { 144975, true }, - { 144988, true }, - { 145002, true }, - { 145017, true }, - { 145033, true }, - { 145050, true }, - { 145064, true }, - { 145079, true }, - { 145092, true }, + { 144870, true }, + { 144883, true }, + { 144909, true }, + { 144919, true }, + { 144940, true }, + { 144951, true }, + { 144970, true }, + { 144984, true }, + { 144996, true }, + { 145010, true }, + { 145023, true }, + { 145038, true }, + { 145053, true }, + { 145067, true }, + { 145081, false }, { 145101, true }, - { 145110, true }, + { 145113, true }, { 145126, true }, - { 145146, true }, - { 145165, true }, - { 145177, true }, - { 145186, true }, - { 145195, true }, - { 145204, true }, - { 145216, true }, - { 145227, true }, - { 145236, true }, - { 145244, true }, - { 145253, true }, + { 145140, true }, + { 145155, true }, + { 145171, true }, + { 145188, true }, + { 145202, true }, + { 145217, true }, + { 145230, true }, + { 145239, true }, + { 145248, true }, { 145264, true }, - { 145277, true }, - { 145286, true }, - { 145299, true }, - { 145309, true }, - { 145322, true }, + { 145284, true }, + { 145303, true }, + { 145315, true }, + { 145324, true }, { 145333, true }, - { 145346, true }, - { 145360, true }, - { 145371, true }, - { 145382, true }, - { 145393, true }, - { 145402, true }, + { 145342, true }, + { 145351, true }, + { 145363, true }, + { 145374, true }, + { 145383, true }, + { 145391, true }, + { 145400, true }, { 145411, true }, - { 145426, true }, - { 145443, true }, - { 145460, true }, + { 145424, true }, + { 145433, true }, + { 145446, true }, + { 145456, true }, { 145469, true }, - { 145484, true }, - { 145503, false }, - { 145515, true }, - { 145528, true }, - { 145545, true }, + { 145480, true }, + { 145493, true }, + { 145507, true }, + { 145518, true }, + { 145529, true }, + { 145540, true }, + { 145549, true }, { 145558, true }, - { 145571, true }, - { 145596, true }, - { 145605, true }, - { 145619, true }, - { 145642, true }, - { 145654, true }, - { 145667, true }, - { 145687, true }, - { 145698, true }, - { 145715, true }, - { 145729, true }, - { 145740, true }, - { 145754, true }, - { 145771, true }, - { 145792, true }, - { 145803, true }, + { 145573, true }, + { 145590, true }, + { 145607, true }, + { 145616, true }, + { 145631, true }, + { 145650, false }, + { 145662, true }, + { 145675, true }, + { 145692, true }, + { 145705, true }, + { 145718, true }, + { 145743, true }, + { 145752, true }, + { 145766, true }, + { 145789, true }, + { 145801, true }, { 145814, true }, - { 145821, true }, - { 145832, true }, - { 145839, true }, - { 145849, true }, - { 145861, true }, - { 145875, true }, - { 145885, true }, - { 145894, true }, - { 145902, true }, - { 145915, true }, - { 145927, true }, - { 145941, true }, - { 145955, true }, - { 145962, true }, - { 145969, false }, - { 145976, true }, - { 145985, true }, - { 145993, true }, - { 146003, true }, - { 146021, true }, - { 146035, true }, - { 146047, true }, - { 146058, true }, - { 146069, true }, - { 146080, true }, - { 146093, true }, - { 146104, true }, - { 146115, true }, - { 146124, true }, - { 146141, true }, - { 146152, true }, + { 145834, true }, + { 145845, true }, + { 145862, true }, + { 145876, true }, + { 145887, true }, + { 145901, true }, + { 145918, true }, + { 145939, true }, + { 145950, true }, + { 145961, true }, + { 145968, true }, + { 145979, true }, + { 145986, true }, + { 145996, true }, + { 146008, true }, + { 146022, true }, + { 146032, true }, + { 146041, true }, + { 146049, true }, + { 146062, true }, + { 146074, true }, + { 146088, true }, + { 146102, true }, + { 146109, true }, + { 146116, false }, + { 146123, true }, + { 146132, true }, + { 146140, true }, + { 146150, true }, { 146168, true }, - { 146175, true }, { 146182, true }, - { 146190, true }, - { 146197, true }, - { 146204, true }, - { 146215, true }, - { 146221, true }, - { 146242, true }, - { 146254, true }, + { 146194, true }, + { 146205, true }, + { 146216, true }, + { 146227, true }, + { 146240, true }, + { 146251, true }, { 146262, true }, - { 146275, true }, + { 146271, true }, { 146288, true }, - { 146298, true }, - { 146311, true }, - { 146325, true }, - { 146338, true }, - { 146353, true }, - { 146366, true }, - { 146379, true }, - { 146388, true }, - { 146407, true }, - { 146432, false }, - { 146444, true }, - { 146452, true }, - { 146468, true }, - { 146482, true }, - { 146499, true }, - { 146512, true }, - { 146527, true }, - { 146546, true }, - { 146559, true }, - { 146574, true }, - { 146587, true }, - { 146603, true }, - { 146614, true }, - { 146627, true }, - { 146644, true }, - { 146658, false }, - { 146677, true }, - { 146692, true }, - { 146704, true }, - { 146712, true }, - { 146724, true }, - { 146738, true }, - { 146752, true }, - { 146766, true }, - { 146782, true }, - { 146798, true }, - { 146814, true }, - { 146829, true }, - { 146849, true }, - { 146867, true }, - { 146876, true }, - { 146892, true }, - { 146907, true }, - { 146921, true }, - { 146934, true }, - { 146949, true }, - { 146969, true }, - { 146986, true }, - { 147005, true }, - { 147025, true }, - { 147042, true }, - { 147056, true }, - { 147076, true }, - { 147089, true }, - { 147103, false }, + { 146299, true }, + { 146315, true }, + { 146322, true }, + { 146329, true }, + { 146337, true }, + { 146344, true }, + { 146351, true }, + { 146362, true }, + { 146368, true }, + { 146389, true }, + { 146401, true }, + { 146409, true }, + { 146422, true }, + { 146435, true }, + { 146445, true }, + { 146458, true }, + { 146472, true }, + { 146485, true }, + { 146500, true }, + { 146513, true }, + { 146526, true }, + { 146535, true }, + { 146554, true }, + { 146579, false }, + { 146591, true }, + { 146599, true }, + { 146615, true }, + { 146629, true }, + { 146646, true }, + { 146659, true }, + { 146674, true }, + { 146693, true }, + { 146706, true }, + { 146721, true }, + { 146734, true }, + { 146750, true }, + { 146761, true }, + { 146774, true }, + { 146791, true }, + { 146805, false }, + { 146824, true }, + { 146839, true }, + { 146851, true }, + { 146859, true }, + { 146871, true }, + { 146885, true }, + { 146899, true }, + { 146913, true }, + { 146929, true }, + { 146945, true }, + { 146961, true }, + { 146976, true }, + { 146996, true }, + { 147014, true }, + { 147023, true }, + { 147039, true }, + { 147054, true }, + { 147068, true }, + { 147081, true }, + { 147096, true }, { 147116, true }, - { 147126, false }, - { 147138, true }, - { 147156, true }, - { 147173, true }, - { 147188, true }, - { 147211, true }, - { 147224, true }, - { 147241, true }, - { 147255, true }, - { 147267, true }, - { 147275, true }, - { 147290, true }, - { 147307, true }, - { 147321, true }, - { 147336, true }, - { 147350, true }, - { 147359, true }, - { 147374, true }, - { 147389, true }, - { 147407, true }, - { 147421, true }, - { 147435, true }, - { 147450, true }, - { 147464, true }, - { 147475, true }, - { 147486, true }, + { 147133, true }, + { 147152, true }, + { 147172, true }, + { 147189, true }, + { 147203, true }, + { 147223, true }, + { 147236, true }, + { 147250, false }, + { 147263, true }, + { 147273, false }, + { 147285, true }, + { 147303, true }, + { 147320, true }, + { 147335, true }, + { 147358, true }, + { 147371, true }, + { 147388, true }, + { 147402, true }, + { 147414, true }, + { 147422, true }, + { 147437, true }, + { 147454, true }, + { 147468, true }, + { 147483, true }, { 147497, true }, - { 147507, true }, - { 147519, true }, - { 147534, true }, - { 147542, true }, - { 147556, true }, - { 147569, true }, - { 147580, true }, + { 147506, true }, + { 147521, true }, + { 147536, true }, + { 147554, true }, + { 147568, true }, + { 147582, true }, { 147597, true }, - { 147607, true }, - { 147619, true }, - { 147633, false }, - { 147645, true }, - { 147665, true }, - { 147690, true }, - { 147709, false }, - { 147724, true }, - { 147740, true }, - { 147759, true }, - { 147775, true }, - { 147786, true }, - { 147798, true }, - { 147816, true }, - { 147828, true }, - { 147839, true }, - { 147856, true }, - { 147872, true }, - { 147891, true }, - { 147908, true }, - { 147926, true }, - { 147943, true }, - { 147961, true }, - { 147983, true }, - { 147998, true }, - { 148011, true }, - { 148027, true }, - { 148040, true }, - { 148049, true }, - { 148066, true }, - { 148077, true }, - { 148089, true }, - { 148104, true }, - { 148112, true }, - { 148129, true }, - { 148143, true }, - { 148154, true }, - { 148164, true }, - { 148182, true }, - { 148200, true }, + { 147611, true }, + { 147622, true }, + { 147633, true }, + { 147644, true }, + { 147654, true }, + { 147666, true }, + { 147681, true }, + { 147689, true }, + { 147703, true }, + { 147716, true }, + { 147727, true }, + { 147744, true }, + { 147754, true }, + { 147766, true }, + { 147780, false }, + { 147792, true }, + { 147812, true }, + { 147837, true }, + { 147856, false }, + { 147871, true }, + { 147887, true }, + { 147906, true }, + { 147922, true }, + { 147933, true }, + { 147945, true }, + { 147963, true }, + { 147975, true }, + { 147986, true }, + { 148003, true }, + { 148019, true }, + { 148038, true }, + { 148055, true }, + { 148073, true }, + { 148090, true }, + { 148108, true }, + { 148130, true }, + { 148145, true }, + { 148158, true }, + { 148174, true }, + { 148187, true }, + { 148196, true }, { 148213, true }, - { 148232, true }, - { 148248, true }, - { 148258, true }, - { 148266, true }, - { 148277, true }, - { 148297, true }, - { 148305, true }, - { 148318, true }, - { 148331, true }, - { 148343, true }, - { 148363, true }, - { 148374, true }, - { 148389, true }, - { 148399, true }, - { 148410, true }, - { 148418, true }, - { 148433, true }, - { 148440, true }, - { 148456, true }, - { 148465, true }, - { 148473, true }, - { 148484, true }, - { 148494, true }, - { 148506, true }, - { 148516, true }, - { 148529, true }, - { 148547, true }, - { 148565, true }, - { 148590, true }, - { 148604, true }, - { 148623, true }, - { 148637, true }, - { 148650, true }, - { 148658, true }, - { 148674, false }, - { 148691, true }, - { 148712, true }, - { 148731, true }, - { 148750, true }, - { 148769, true }, - { 148779, true }, - { 148795, true }, - { 148810, true }, - { 148822, true }, - { 148839, true }, - { 148850, true }, - { 148860, true }, - { 148870, true }, - { 148880, true }, - { 148889, true }, + { 148224, true }, + { 148236, true }, + { 148251, true }, + { 148259, true }, + { 148276, true }, + { 148290, true }, + { 148301, true }, + { 148311, true }, + { 148329, true }, + { 148347, true }, + { 148360, true }, + { 148379, true }, + { 148395, true }, + { 148405, true }, + { 148419, true }, + { 148427, true }, + { 148438, true }, + { 148458, true }, + { 148466, true }, + { 148479, true }, + { 148492, true }, + { 148504, true }, + { 148524, true }, + { 148535, true }, + { 148550, true }, + { 148560, true }, + { 148571, true }, + { 148579, true }, + { 148594, true }, + { 148601, true }, + { 148617, true }, + { 148626, true }, + { 148634, true }, + { 148645, true }, + { 148655, true }, + { 148667, true }, + { 148677, true }, + { 148690, true }, + { 148708, true }, + { 148726, true }, + { 148751, true }, + { 148765, true }, + { 148784, true }, + { 148798, true }, + { 148811, true }, + { 148819, true }, + { 148835, false }, + { 148852, true }, + { 148873, true }, + { 148892, true }, { 148911, true }, - { 148924, true }, - { 148934, true }, - { 148945, false }, - { 148963, true }, - { 148985, true }, - { 149002, true }, - { 149018, true }, - { 149036, true }, - { 149049, true }, - { 149057, true }, - { 149068, true }, - { 149084, true }, - { 149102, true }, - { 149120, true }, - { 149136, true }, - { 149152, true }, - { 149167, false }, - { 149181, true }, - { 149198, true }, - { 149216, true }, - { 149235, true }, - { 149247, true }, - { 149258, true }, - { 149274, true }, - { 149291, true }, - { 149308, true }, - { 149324, true }, + { 148930, true }, + { 148940, true }, + { 148956, true }, + { 148971, true }, + { 148983, true }, + { 149000, true }, + { 149011, true }, + { 149021, true }, + { 149031, true }, + { 149041, true }, + { 149050, true }, + { 149072, true }, + { 149085, true }, + { 149095, true }, + { 149106, false }, + { 149124, true }, + { 149146, true }, + { 149163, true }, + { 149179, true }, + { 149197, true }, + { 149210, true }, + { 149218, true }, + { 149229, true }, + { 149245, true }, + { 149263, true }, + { 149281, true }, + { 149297, true }, + { 149313, true }, + { 149328, false }, { 149342, true }, - { 149357, true }, - { 149368, true }, - { 149385, true }, - { 149407, true }, - { 149423, true }, - { 149437, true }, - { 149449, true }, - { 149471, true }, - { 149479, true }, - { 149490, true }, - { 149515, false }, - { 149530, true }, - { 149537, true }, - { 149549, true }, - { 149557, true }, - { 149565, true }, - { 149573, true }, - { 149581, true }, - { 149594, true }, - { 149609, true }, - { 149633, true }, - { 149648, true }, - { 149673, true }, - { 149683, false }, - { 149696, false }, - { 149707, true }, - { 149716, true }, + { 149359, true }, + { 149377, true }, + { 149396, true }, + { 149408, true }, + { 149419, true }, + { 149435, true }, + { 149452, true }, + { 149469, true }, + { 149485, true }, + { 149503, true }, + { 149518, true }, + { 149529, true }, + { 149546, true }, + { 149568, true }, + { 149584, true }, + { 149598, true }, + { 149610, true }, + { 149632, true }, + { 149640, true }, + { 149651, true }, + { 149676, false }, + { 149691, true }, + { 149698, true }, + { 149710, true }, + { 149718, true }, { 149726, true }, - { 149749, true }, - { 149760, true }, - { 149775, true }, - { 149789, true }, - { 149805, true }, - { 149819, true }, - { 149830, false }, - { 149843, true }, - { 149857, true }, - { 149865, true }, - { 149874, true }, - { 149888, true }, - { 149901, true }, - { 149911, true }, - { 149920, true }, - { 149930, true }, - { 149943, true }, - { 149963, true }, - { 149979, true }, - { 149990, true }, - { 150003, true }, - { 150016, true }, - { 150027, true }, - { 150036, true }, - { 150053, true }, - { 150060, true }, - { 150076, true }, - { 150089, true }, - { 150099, true }, - { 150112, true }, - { 150125, true }, + { 149734, true }, + { 149742, true }, + { 149755, true }, + { 149770, true }, + { 149794, true }, + { 149809, true }, + { 149834, true }, + { 149844, false }, + { 149857, false }, + { 149868, true }, + { 149877, true }, + { 149887, true }, + { 149910, true }, + { 149921, true }, + { 149936, true }, + { 149950, true }, + { 149966, true }, + { 149980, true }, + { 149991, false }, + { 150004, true }, + { 150018, true }, + { 150026, true }, + { 150035, true }, + { 150049, true }, + { 150062, true }, + { 150072, true }, + { 150081, true }, + { 150091, true }, + { 150104, true }, + { 150124, true }, { 150140, true }, - { 150159, true }, - { 150170, true }, + { 150151, true }, + { 150164, true }, { 150177, true }, + { 150188, true }, { 150197, true }, - { 150209, true }, + { 150214, true }, { 150221, true }, - { 150228, true }, - { 150248, true }, - { 150258, true }, + { 150237, true }, + { 150250, true }, + { 150260, true }, { 150273, true }, - { 150280, true }, - { 150289, true }, - { 150298, true }, - { 150307, true }, - { 150316, true }, - { 150328, true }, - { 150342, true }, - { 150355, true }, - { 150366, true }, - { 150380, true }, - { 150393, true }, - { 150401, true }, - { 150420, true }, - { 150431, true }, - { 150443, true }, - { 150457, true }, + { 150286, true }, + { 150301, true }, + { 150320, true }, + { 150331, true }, + { 150338, true }, + { 150358, true }, + { 150370, true }, + { 150382, true }, + { 150389, true }, + { 150409, true }, + { 150419, true }, + { 150434, true }, + { 150441, true }, + { 150450, true }, + { 150459, true }, { 150468, true }, - { 150484, true }, - { 150498, true }, - { 150508, true }, - { 150523, true }, - { 150536, true }, - { 150551, true }, - { 150565, true }, - { 150575, false }, - { 150589, true }, - { 150607, true }, - { 150617, true }, - { 150632, true }, - { 150646, false }, - { 150661, false }, - { 150677, true }, - { 150699, true }, - { 150717, true }, - { 150736, true }, - { 150754, true }, - { 150766, true }, - { 150779, true }, - { 150798, true }, - { 150814, false }, - { 150827, true }, - { 150843, true }, - { 150857, true }, - { 150873, true }, - { 150892, true }, - { 150909, true }, - { 150926, true }, - { 150936, true }, - { 150951, true }, - { 150965, true }, - { 150978, true }, - { 150993, true }, - { 151009, true }, - { 151021, true }, - { 151036, true }, - { 151052, true }, - { 151066, true }, - { 151081, true }, - { 151095, true }, - { 151103, true }, - { 151113, true }, - { 151136, true }, - { 151151, true }, + { 150477, true }, + { 150489, true }, + { 150503, true }, + { 150516, true }, + { 150527, true }, + { 150541, true }, + { 150554, true }, + { 150562, true }, + { 150581, true }, + { 150592, true }, + { 150604, true }, + { 150618, true }, + { 150629, true }, + { 150645, true }, + { 150659, true }, + { 150669, true }, + { 150684, true }, + { 150697, true }, + { 150712, true }, + { 150726, true }, + { 150736, false }, + { 150750, true }, + { 150768, true }, + { 150778, true }, + { 150793, true }, + { 150807, false }, + { 150822, false }, + { 150838, true }, + { 150860, true }, + { 150878, true }, + { 150897, true }, + { 150915, true }, + { 150927, true }, + { 150940, true }, + { 150959, true }, + { 150975, false }, + { 150988, true }, + { 151004, true }, + { 151018, true }, + { 151034, true }, + { 151053, true }, + { 151070, true }, + { 151087, true }, + { 151097, true }, + { 151112, true }, + { 151126, true }, + { 151139, true }, + { 151154, true }, { 151170, true }, - { 151185, false }, - { 151209, false }, - { 151225, true }, - { 151240, true }, - { 151258, true }, - { 151277, false }, - { 151296, true }, - { 151316, true }, - { 151335, true }, - { 151348, false }, - { 151371, true }, - { 151387, true }, - { 151398, true }, - { 151411, true }, - { 151423, true }, - { 151438, true }, - { 151453, true }, - { 151468, true }, - { 151484, true }, - { 151499, true }, - { 151515, true }, + { 151182, true }, + { 151197, true }, + { 151213, true }, + { 151227, true }, + { 151242, true }, + { 151256, true }, + { 151264, true }, + { 151274, true }, + { 151297, true }, + { 151312, true }, + { 151331, true }, + { 151346, false }, + { 151370, false }, + { 151386, true }, + { 151401, true }, + { 151419, true }, + { 151438, false }, + { 151457, true }, + { 151477, true }, + { 151496, true }, + { 151509, false }, { 151532, true }, - { 151544, true }, - { 151558, true }, - { 151568, true }, - { 151586, true }, - { 151605, true }, - { 151615, true }, - { 151626, true }, - { 151636, true }, - { 151655, true }, - { 151669, true }, + { 151548, true }, + { 151559, true }, + { 151572, true }, + { 151584, true }, + { 151599, true }, + { 151614, true }, + { 151629, true }, + { 151645, true }, + { 151660, true }, + { 151676, true }, { 151693, true }, - { 151717, true }, - { 151730, true }, - { 151758, true }, - { 151771, true }, - { 151784, true }, - { 151799, true }, - { 151813, true }, + { 151705, true }, + { 151719, true }, + { 151729, true }, + { 151747, true }, + { 151766, true }, + { 151776, true }, + { 151787, true }, + { 151797, true }, + { 151816, true }, { 151830, true }, - { 151842, true }, - { 151856, true }, - { 151873, true }, - { 151889, true }, - { 151903, true }, - { 151918, true }, - { 151934, true }, - { 151952, true }, - { 151969, true }, - { 151987, true }, - { 152004, true }, - { 152021, true }, - { 152029, true }, + { 151854, true }, + { 151878, true }, + { 151891, true }, + { 151919, true }, + { 151932, true }, + { 151945, true }, + { 151960, true }, + { 151974, true }, + { 151991, true }, + { 152003, true }, + { 152017, true }, + { 152034, true }, { 152050, true }, - { 152061, true }, - { 152072, true }, - { 152086, true }, - { 152098, true }, - { 152114, true }, - { 152127, true }, - { 152153, true }, - { 152179, true }, - { 152189, true }, - { 152199, true }, - { 152212, true }, - { 152220, true }, - { 152235, true }, - { 152249, true }, - { 152263, true }, - { 152274, true }, - { 152294, true }, - { 152312, true }, - { 152329, true }, - { 152339, true }, - { 152354, true }, - { 152372, true }, - { 152388, true }, + { 152064, true }, + { 152079, true }, + { 152095, true }, + { 152113, true }, + { 152130, true }, + { 152148, true }, + { 152165, true }, + { 152182, true }, + { 152190, true }, + { 152211, true }, + { 152222, true }, + { 152233, true }, + { 152247, true }, + { 152259, true }, + { 152275, true }, + { 152288, true }, + { 152314, true }, + { 152340, true }, + { 152350, true }, + { 152360, true }, + { 152373, true }, + { 152381, true }, { 152396, true }, - { 152409, true }, - { 152425, true }, - { 152439, true }, - { 152456, false }, - { 152467, true }, - { 152477, true }, + { 152410, true }, + { 152424, true }, + { 152435, true }, + { 152455, true }, + { 152473, true }, { 152490, true }, - { 152506, true }, - { 152519, true }, - { 152529, false }, - { 152543, true }, - { 152554, true }, - { 152568, true }, - { 152585, true }, - { 152601, true }, - { 152609, true }, - { 152619, true }, - { 152634, true }, - { 152652, true }, - { 152668, true }, - { 152687, true }, - { 152700, true }, - { 152711, true }, - { 152725, true }, - { 152739, true }, - { 152754, true }, - { 152771, true }, - { 152789, true }, - { 152809, true }, - { 152824, true }, - { 152842, true }, + { 152500, true }, + { 152515, true }, + { 152533, true }, + { 152549, true }, + { 152557, true }, + { 152570, true }, + { 152586, true }, + { 152600, true }, + { 152617, false }, + { 152628, true }, + { 152638, true }, + { 152651, true }, + { 152667, true }, + { 152680, true }, + { 152690, false }, + { 152704, true }, + { 152715, true }, + { 152729, true }, + { 152746, true }, + { 152762, true }, + { 152770, true }, + { 152780, true }, + { 152795, true }, + { 152813, true }, + { 152829, true }, + { 152848, true }, { 152861, true }, - { 152877, true }, - { 152890, true }, - { 152920, true }, - { 152937, true }, - { 152952, true }, - { 152963, true }, - { 152981, true }, - { 153000, true }, - { 153019, true }, - { 153030, true }, - { 153041, true }, - { 153054, true }, - { 153067, true }, - { 153075, true }, - { 153084, true }, - { 153095, true }, - { 153109, true }, - { 153119, true }, + { 152872, true }, + { 152886, true }, + { 152900, true }, + { 152915, true }, + { 152932, true }, + { 152950, true }, + { 152970, true }, + { 152985, true }, + { 153003, true }, + { 153022, true }, + { 153038, true }, + { 153051, true }, + { 153081, true }, + { 153098, true }, + { 153113, true }, + { 153124, true }, { 153142, true }, - { 153157, true }, - { 153170, true }, - { 153178, true }, - { 153190, true }, - { 153204, true }, - { 153232, true }, - { 153248, true }, - { 153257, true }, - { 153272, true }, - { 153291, true }, + { 153161, true }, + { 153180, true }, + { 153191, true }, + { 153202, true }, + { 153215, true }, + { 153228, true }, + { 153236, true }, + { 153245, true }, + { 153256, true }, + { 153270, true }, + { 153280, true }, { 153303, true }, { 153318, true }, - { 153332, true }, - { 153352, true }, - { 153374, true }, - { 153395, true }, - { 153413, true }, - { 153426, true }, - { 153441, true }, - { 153454, true }, - { 153468, true }, - { 153480, true }, - { 153491, true }, - { 153512, true }, - { 153525, true }, - { 153536, true }, - { 153548, true }, - { 153565, true }, - { 153575, true }, - { 153585, true }, - { 153592, true }, - { 153605, true }, - { 153616, true }, - { 153631, true }, - { 153639, true }, - { 153659, true }, - { 153670, true }, - { 153680, true }, - { 153690, true }, - { 153706, true }, - { 153715, true }, + { 153331, true }, + { 153339, true }, + { 153351, true }, + { 153365, true }, + { 153393, true }, + { 153409, true }, + { 153418, true }, + { 153433, true }, + { 153452, true }, + { 153464, true }, + { 153479, true }, + { 153493, true }, + { 153513, true }, + { 153535, true }, + { 153556, true }, + { 153574, true }, + { 153587, true }, + { 153602, true }, + { 153615, true }, + { 153629, true }, + { 153641, true }, + { 153652, true }, + { 153673, true }, + { 153686, true }, + { 153697, true }, + { 153709, true }, { 153726, true }, - { 153739, true }, - { 153751, true }, - { 153761, true }, - { 153771, true }, - { 153783, true }, - { 153798, true }, - { 153807, true }, - { 153821, true }, - { 153834, true }, - { 153844, true }, - { 153857, true }, + { 153736, true }, + { 153746, true }, + { 153753, true }, + { 153766, true }, + { 153777, true }, + { 153792, true }, + { 153800, true }, + { 153820, true }, + { 153831, true }, + { 153841, true }, + { 153851, true }, { 153867, true }, - { 153882, true }, - { 153895, true }, - { 153909, true }, - { 153920, true }, - { 153935, true }, - { 153945, false }, - { 153955, true }, - { 153967, true }, + { 153876, true }, + { 153887, true }, + { 153900, true }, + { 153912, true }, + { 153922, true }, + { 153932, true }, + { 153944, true }, + { 153959, true }, + { 153968, true }, + { 153982, true }, { 153995, true }, - { 154008, true }, - { 154027, true }, - { 154040, true }, - { 154049, true }, + { 154005, true }, + { 154018, true }, + { 154033, true }, + { 154046, true }, { 154060, true }, - { 154074, true }, - { 154085, true }, - { 154099, true }, - { 154119, true }, - { 154135, true }, + { 154071, true }, + { 154086, true }, + { 154096, false }, + { 154106, true }, + { 154118, true }, { 154146, true }, - { 154157, true }, - { 154173, true }, - { 154190, true }, - { 154205, true }, - { 154218, true }, - { 154231, true }, - { 154252, true }, - { 154265, true }, - { 154275, true }, - { 154285, true }, - { 154293, true }, + { 154159, true }, + { 154178, true }, + { 154191, true }, + { 154200, true }, + { 154211, true }, + { 154225, true }, + { 154236, true }, + { 154250, true }, + { 154270, true }, + { 154286, true }, + { 154297, true }, { 154308, true }, - { 154319, true }, - { 154329, true }, - { 154344, true }, - { 154358, true }, - { 154370, true }, - { 154380, true }, - { 154388, true }, - { 154405, true }, - { 154418, true }, - { 154437, true }, - { 154462, true }, - { 154482, true }, - { 154496, true }, - { 154538, true }, - { 154552, true }, - { 154567, true }, - { 154583, true }, - { 154592, true }, - { 154606, true }, - { 154615, true }, - { 154627, true }, - { 154639, true }, - { 154652, true }, - { 154665, true }, - { 154683, true }, - { 154691, true }, - { 154704, true }, + { 154324, true }, + { 154341, true }, + { 154356, true }, + { 154369, true }, + { 154382, true }, + { 154403, true }, + { 154416, true }, + { 154426, true }, + { 154436, true }, + { 154444, true }, + { 154459, true }, + { 154470, true }, + { 154480, true }, + { 154495, true }, + { 154509, true }, + { 154521, true }, + { 154531, true }, + { 154539, true }, + { 154556, true }, + { 154569, true }, + { 154588, true }, + { 154613, true }, + { 154633, true }, + { 154647, true }, + { 154689, true }, + { 154703, true }, { 154718, true }, - { 154728, true }, - { 154738, true }, - { 154750, true }, - { 154765, true }, - { 154780, true }, - { 154792, false }, - { 154809, true }, - { 154824, true }, - { 154836, true }, - { 154849, true }, - { 154867, true }, - { 154880, true }, - { 154892, true }, - { 154907, true }, - { 154920, true }, - { 154935, true }, - { 154947, true }, - { 154957, true }, - { 154966, true }, - { 154981, true }, - { 154996, true }, - { 155013, true }, - { 155026, true }, - { 155044, true }, - { 155059, true }, - { 155073, true }, - { 155091, true }, - { 155109, true }, - { 155121, true }, + { 154734, true }, + { 154743, true }, + { 154757, true }, + { 154766, true }, + { 154778, true }, + { 154790, true }, + { 154803, true }, + { 154816, true }, + { 154834, true }, + { 154842, true }, + { 154855, true }, + { 154869, true }, + { 154879, true }, + { 154889, true }, + { 154901, true }, + { 154916, true }, + { 154931, true }, + { 154943, false }, + { 154960, true }, + { 154975, true }, + { 154987, true }, + { 155000, true }, + { 155018, true }, + { 155031, true }, + { 155043, true }, + { 155058, true }, + { 155071, true }, + { 155086, true }, + { 155098, true }, + { 155108, true }, + { 155117, true }, { 155132, true }, - { 155140, true }, - { 155153, true }, - { 155171, true }, - { 155182, true }, - { 155196, true }, - { 155216, true }, - { 155234, true }, - { 155247, true }, - { 155256, true }, - { 155268, true }, - { 155282, true }, - { 155302, true }, - { 155311, true }, - { 155320, true }, - { 155338, true }, - { 155353, true }, - { 155360, true }, - { 155379, true }, - { 155390, true }, - { 155405, true }, - { 155423, true }, - { 155438, true }, - { 155452, true }, - { 155466, true }, - { 155478, true }, - { 155497, true }, + { 155147, true }, + { 155164, true }, + { 155177, true }, + { 155195, true }, + { 155210, true }, + { 155224, true }, + { 155242, true }, + { 155260, true }, + { 155272, true }, + { 155283, true }, + { 155291, true }, + { 155304, true }, + { 155322, true }, + { 155333, true }, + { 155347, true }, + { 155367, true }, + { 155385, true }, + { 155398, true }, + { 155407, true }, + { 155419, true }, + { 155433, true }, + { 155453, true }, + { 155462, true }, + { 155471, true }, + { 155489, true }, + { 155504, true }, { 155511, true }, - { 155535, true }, - { 155546, true }, - { 155560, true }, - { 155572, true }, - { 155587, true }, - { 155600, true }, - { 155613, true }, - { 155626, true }, - { 155637, true }, - { 155647, true }, - { 155660, true }, - { 155672, true }, - { 155695, true }, - { 155704, true }, - { 155721, true }, - { 155731, true }, - { 155744, true }, - { 155754, true }, - { 155772, true }, - { 155784, true }, - { 155793, true }, - { 155804, true }, - { 155818, true }, - { 155833, true }, - { 155847, true }, - { 155857, true }, - { 155865, true }, - { 155879, true }, - { 155889, true }, - { 155903, true }, - { 155912, true }, - { 155920, true }, - { 155933, true }, - { 155951, true }, - { 155962, true }, - { 155974, true }, - { 155985, true }, - { 156009, true }, - { 156017, true }, - { 156027, true }, - { 156037, true }, + { 155530, true }, + { 155541, true }, + { 155556, true }, + { 155574, true }, + { 155589, true }, + { 155603, true }, + { 155617, true }, + { 155629, true }, + { 155648, true }, + { 155662, true }, + { 155686, true }, + { 155697, true }, + { 155711, true }, + { 155723, true }, + { 155738, true }, + { 155751, true }, + { 155764, true }, + { 155777, true }, + { 155788, true }, + { 155798, true }, + { 155811, true }, + { 155823, true }, + { 155846, true }, + { 155855, true }, + { 155872, true }, + { 155882, true }, + { 155895, true }, + { 155905, true }, + { 155923, true }, + { 155935, true }, + { 155944, true }, + { 155955, true }, + { 155969, true }, + { 155984, true }, + { 155998, true }, + { 156008, true }, + { 156016, true }, + { 156030, true }, + { 156040, true }, { 156054, true }, - { 156065, true }, + { 156063, true }, + { 156071, true }, { 156084, true }, { 156102, true }, - { 156120, true }, - { 156134, true }, - { 156144, true }, + { 156113, true }, + { 156125, true }, + { 156136, true }, + { 156160, true }, { 156168, true }, - { 156182, false }, - { 156197, true }, + { 156178, true }, + { 156188, true }, + { 156205, true }, { 156216, true }, - { 156228, true }, - { 156247, true }, - { 156264, true }, - { 156279, true }, - { 156289, true }, - { 156304, true }, - { 156324, true }, - { 156336, true }, + { 156235, true }, + { 156253, true }, + { 156271, true }, + { 156285, true }, + { 156295, true }, + { 156319, true }, + { 156333, false }, { 156348, true }, - { 156361, true }, - { 156370, true }, + { 156367, true }, { 156379, true }, - { 156388, true }, - { 156396, true }, + { 156398, true }, { 156415, true }, - { 156432, true }, - { 156444, true }, - { 156459, true }, - { 156472, true }, - { 156485, true }, - { 156492, true }, - { 156520, true }, + { 156430, true }, + { 156440, true }, + { 156455, true }, + { 156475, true }, + { 156487, true }, + { 156499, true }, + { 156512, true }, + { 156521, true }, + { 156530, true }, + { 156539, true }, { 156547, true }, - { 156573, true }, - { 156598, true }, - { 156608, true }, - { 156617, true }, - { 156632, true }, - { 156647, false }, - { 156665, true }, - { 156676, true }, - { 156688, true }, - { 156704, true }, - { 156718, true }, - { 156733, true }, + { 156566, true }, + { 156583, true }, + { 156595, true }, + { 156610, true }, + { 156623, true }, + { 156636, true }, + { 156643, true }, + { 156671, true }, + { 156698, true }, + { 156724, true }, { 156749, true }, - { 156775, true }, - { 156786, true }, - { 156797, true }, - { 156812, true }, + { 156759, true }, + { 156768, true }, + { 156783, true }, + { 156798, false }, + { 156816, true }, { 156827, true }, - { 156842, true }, - { 156860, true }, - { 156870, true }, - { 156885, true }, + { 156839, true }, + { 156855, true }, + { 156869, true }, + { 156884, true }, { 156900, true }, - { 156914, true }, - { 156927, true }, - { 156943, true }, - { 156959, false }, - { 156967, true }, - { 156990, true }, - { 157004, true }, - { 157014, true }, - { 157027, true }, - { 157040, true }, - { 157053, true }, - { 157068, true }, - { 157087, true }, - { 157099, true }, - { 157117, true }, - { 157133, true }, - { 157147, true }, - { 157159, false }, + { 156926, true }, + { 156937, true }, + { 156948, true }, + { 156963, true }, + { 156978, true }, + { 156993, true }, + { 157011, true }, + { 157021, true }, + { 157036, true }, + { 157051, true }, + { 157065, true }, + { 157078, true }, + { 157094, true }, + { 157110, false }, + { 157118, true }, + { 157141, true }, + { 157155, true }, + { 157165, true }, { 157178, true }, { 157191, true }, - { 157203, true }, + { 157204, true }, { 157219, true }, - { 157234, true }, - { 157252, true }, - { 157265, true }, - { 157276, true }, - { 157288, true }, - { 157299, true }, - { 157312, true }, - { 157337, true }, - { 157348, true }, - { 157359, true }, - { 157376, true }, - { 157399, true }, - { 157414, true }, - { 157429, true }, - { 157444, true }, - { 157455, true }, - { 157467, true }, - { 157484, true }, - { 157495, true }, - { 157503, true }, - { 157516, true }, - { 157532, true }, - { 157545, true }, - { 157555, true }, - { 157566, true }, - { 157574, true }, - { 157591, true }, + { 157238, true }, + { 157250, true }, + { 157268, true }, + { 157284, true }, + { 157298, true }, + { 157310, false }, + { 157329, true }, + { 157342, true }, + { 157354, true }, + { 157370, true }, + { 157385, true }, + { 157403, true }, + { 157416, true }, + { 157427, true }, + { 157439, true }, + { 157450, true }, + { 157463, true }, + { 157488, true }, + { 157499, true }, + { 157510, true }, + { 157527, true }, + { 157550, true }, + { 157565, true }, + { 157580, true }, + { 157595, true }, { 157606, true }, - { 157616, true }, + { 157618, true }, { 157635, true }, { 157646, true }, - { 157658, true }, - { 157674, true }, - { 157685, true }, - { 157705, true }, + { 157654, true }, + { 157667, true }, + { 157683, true }, + { 157696, true }, + { 157706, true }, + { 157717, true }, { 157725, true }, - { 157740, true }, + { 157742, true }, { 157757, true }, - { 157771, true }, - { 157784, true }, - { 157794, true }, - { 157810, true }, - { 157833, true }, - { 157846, true }, - { 157865, true }, - { 157879, true }, - { 157889, true }, - { 157900, true }, - { 157919, true }, - { 157930, true }, - { 157941, true }, - { 157954, true }, - { 157976, true }, - { 157988, true }, - { 158003, true }, - { 158023, true }, - { 158037, true }, - { 158048, true }, - { 158058, true }, - { 158071, true }, + { 157767, true }, + { 157786, true }, + { 157797, true }, + { 157809, true }, + { 157825, true }, + { 157836, true }, + { 157856, true }, + { 157876, true }, + { 157891, true }, + { 157908, true }, + { 157922, true }, + { 157935, true }, + { 157945, true }, + { 157961, true }, + { 157984, true }, + { 157997, true }, + { 158016, true }, + { 158030, true }, + { 158040, true }, + { 158051, true }, + { 158070, true }, { 158081, true }, - { 158099, true }, - { 158124, true }, - { 158141, true }, - { 158155, true }, - { 158167, true }, - { 158183, true }, - { 158194, true }, - { 158204, false }, - { 158216, true }, - { 158233, true }, + { 158092, true }, + { 158105, true }, + { 158127, true }, + { 158139, true }, + { 158154, true }, + { 158174, true }, + { 158188, true }, + { 158199, true }, + { 158209, true }, + { 158222, true }, + { 158232, true }, { 158250, true }, - { 158270, true }, - { 158297, true }, - { 158322, true }, - { 158338, true }, - { 158353, true }, - { 158373, true }, - { 158386, true }, - { 158398, true }, - { 158414, true }, - { 158426, true }, - { 158439, true }, - { 158454, true }, - { 158468, true }, - { 158480, true }, - { 158497, true }, - { 158514, true }, - { 158534, true }, - { 158544, true }, - { 158561, true }, - { 158575, true }, - { 158592, true }, + { 158275, true }, + { 158292, true }, + { 158306, true }, + { 158318, true }, + { 158334, true }, + { 158345, true }, + { 158355, false }, + { 158367, true }, + { 158384, true }, + { 158401, true }, + { 158421, true }, + { 158448, true }, + { 158473, true }, + { 158489, true }, + { 158504, true }, + { 158524, true }, + { 158537, true }, + { 158549, true }, + { 158565, true }, + { 158577, true }, + { 158590, true }, { 158605, true }, - { 158617, true }, - { 158629, true }, - { 158642, false }, - { 158656, true }, - { 158679, false }, - { 158693, true }, - { 158708, true }, - { 158720, true }, - { 158731, true }, - { 158749, true }, - { 158762, true }, - { 158777, true }, - { 158788, true }, - { 158802, true }, - { 158820, true }, - { 158834, true }, - { 158846, true }, - { 158869, true }, - { 158902, true }, - { 158912, true }, - { 158921, true }, - { 158940, true }, - { 158952, true }, - { 158966, true }, - { 158987, true }, - { 159001, true }, - { 159015, true }, - { 159033, true }, - { 159051, true }, - { 159068, true }, - { 159081, true }, - { 159093, true }, - { 159105, false }, + { 158619, true }, + { 158631, true }, + { 158648, true }, + { 158665, true }, + { 158685, true }, + { 158695, true }, + { 158712, true }, + { 158726, true }, + { 158743, true }, + { 158756, true }, + { 158768, true }, + { 158780, true }, + { 158793, false }, + { 158807, true }, + { 158830, false }, + { 158844, true }, + { 158859, true }, + { 158871, true }, + { 158882, true }, + { 158900, true }, + { 158913, true }, + { 158928, true }, + { 158939, true }, + { 158953, true }, + { 158971, true }, + { 158985, true }, + { 158997, true }, + { 159020, true }, + { 159053, true }, + { 159063, true }, + { 159072, true }, + { 159091, true }, + { 159103, true }, { 159117, true }, - { 159125, true }, - { 159139, true }, - { 159153, true }, - { 159174, true }, - { 159191, true }, - { 159206, true }, - { 159220, true }, - { 159238, true }, - { 159249, true }, - { 159258, true }, + { 159138, true }, + { 159152, true }, + { 159166, true }, + { 159184, true }, + { 159202, true }, + { 159219, true }, + { 159232, true }, + { 159244, true }, + { 159256, false }, { 159268, true }, - { 159280, true }, - { 159295, true }, - { 159307, true }, - { 159323, true }, - { 159334, false }, + { 159276, true }, + { 159290, true }, + { 159304, true }, + { 159325, true }, + { 159342, true }, { 159357, true }, - { 159369, false }, - { 159382, true }, - { 159390, true }, - { 159401, true }, - { 159410, true }, - { 159418, true }, + { 159371, true }, + { 159389, true }, + { 159400, true }, + { 159409, true }, + { 159419, true }, { 159431, true }, - { 159454, true }, - { 159466, false }, - { 159478, true }, - { 159494, true }, - { 159506, true }, - { 159529, true }, - { 159540, true }, - { 159556, true }, - { 159572, true }, - { 159587, true }, - { 159600, true }, - { 159610, true }, - { 159619, true }, - { 159626, true }, - { 159643, true }, - { 159655, true }, - { 159668, true }, - { 159685, true }, - { 159708, true }, - { 159725, true }, - { 159743, true }, - { 159772, true }, - { 159785, true }, - { 159802, true }, - { 159816, true }, - { 159832, true }, - { 159846, true }, - { 159860, true }, - { 159872, true }, - { 159881, true }, - { 159897, true }, - { 159914, true }, - { 159930, false }, - { 159945, true }, - { 159958, true }, - { 159984, true }, + { 159446, true }, + { 159458, true }, + { 159474, true }, + { 159485, false }, + { 159508, true }, + { 159520, false }, + { 159533, true }, + { 159541, true }, + { 159552, true }, + { 159561, true }, + { 159569, true }, + { 159582, true }, + { 159605, true }, + { 159617, false }, + { 159629, true }, + { 159645, true }, + { 159657, true }, + { 159680, true }, + { 159691, true }, + { 159707, true }, + { 159723, true }, + { 159738, true }, + { 159751, true }, + { 159761, true }, + { 159770, true }, + { 159777, true }, + { 159794, true }, + { 159806, true }, + { 159819, true }, + { 159836, true }, + { 159859, true }, + { 159876, true }, + { 159894, true }, + { 159923, true }, + { 159936, true }, + { 159953, true }, + { 159967, true }, + { 159983, true }, { 159997, true }, - { 160008, true }, + { 160011, true }, { 160023, true }, - { 160041, true }, - { 160050, true }, - { 160064, true }, - { 160082, true }, - { 160100, true }, - { 160108, true }, - { 160118, true }, + { 160032, true }, + { 160048, true }, + { 160065, true }, + { 160081, false }, + { 160096, true }, + { 160109, true }, { 160135, true }, - { 160143, true }, - { 160153, true }, - { 160164, true }, - { 160182, true }, + { 160148, true }, + { 160159, true }, + { 160174, true }, { 160192, true }, - { 160206, true }, - { 160214, true }, - { 160226, true }, - { 160240, true }, - { 160258, true }, - { 160267, true }, - { 160278, true }, - { 160291, true }, + { 160201, true }, + { 160215, true }, + { 160233, true }, + { 160251, true }, + { 160259, true }, + { 160269, true }, + { 160286, true }, + { 160294, true }, { 160304, true }, - { 160319, true }, - { 160337, true }, - { 160345, true }, - { 160360, true }, - { 160373, true }, + { 160315, true }, + { 160333, true }, + { 160343, true }, + { 160357, true }, + { 160365, true }, + { 160377, true }, { 160391, true }, - { 160413, true }, - { 160425, true }, - { 160435, true }, - { 160445, true }, - { 160456, true }, - { 160467, true }, - { 160479, true }, - { 160494, true }, - { 160508, true }, - { 160520, true }, - { 160534, true }, - { 160545, true }, - { 160559, true }, - { 160583, false }, - { 160604, true }, - { 160621, true }, - { 160639, true }, - { 160656, true }, - { 160673, true }, - { 160688, true }, - { 160702, true }, - { 160714, true }, - { 160729, true }, - { 160737, true }, - { 160750, true }, - { 160762, true }, - { 160789, true }, - { 160806, true }, - { 160821, true }, - { 160834, true }, - { 160857, true }, - { 160870, true }, - { 160884, true }, - { 160906, false }, - { 160920, true }, - { 160932, true }, - { 160943, true }, - { 160954, true }, - { 160964, true }, - { 160975, false }, - { 160996, false }, - { 161007, true }, + { 160409, true }, + { 160418, true }, + { 160429, true }, + { 160442, true }, + { 160455, true }, + { 160470, true }, + { 160488, true }, + { 160496, true }, + { 160511, true }, + { 160524, true }, + { 160542, true }, + { 160564, true }, + { 160576, true }, + { 160586, true }, + { 160596, true }, + { 160607, true }, + { 160618, true }, + { 160630, true }, + { 160645, true }, + { 160659, true }, + { 160671, true }, + { 160685, true }, + { 160696, true }, + { 160710, true }, + { 160734, false }, + { 160755, true }, + { 160772, true }, + { 160790, true }, + { 160807, true }, + { 160824, true }, + { 160839, true }, + { 160853, true }, + { 160865, true }, + { 160880, true }, + { 160888, true }, + { 160901, true }, + { 160913, true }, + { 160940, true }, + { 160957, true }, + { 160972, true }, + { 160985, true }, + { 161008, true }, { 161021, true }, - { 161033, true }, - { 161047, true }, - { 161065, true }, - { 161079, true }, - { 161090, true }, - { 161107, true }, - { 161118, true }, - { 161128, true }, - { 161148, true }, - { 161159, true }, - { 161173, true }, - { 161187, true }, + { 161035, true }, + { 161057, false }, + { 161071, true }, + { 161083, true }, + { 161094, true }, + { 161105, true }, + { 161115, true }, + { 161126, false }, + { 161147, false }, + { 161158, true }, + { 161172, true }, + { 161184, true }, { 161198, true }, - { 161211, true }, - { 161222, true }, + { 161216, true }, + { 161230, true }, { 161241, true }, - { 161257, true }, - { 161270, true }, - { 161288, true }, - { 161302, true }, - { 161317, true }, - { 161331, true }, - { 161339, true }, - { 161353, true }, - { 161365, false }, - { 161378, true }, - { 161391, true }, - { 161403, true }, - { 161415, true }, - { 161430, true }, - { 161445, true }, - { 161455, true }, - { 161470, true }, - { 161480, true }, - { 161494, true }, - { 161507, true }, - { 161517, true }, - { 161536, true }, - { 161558, true }, - { 161572, true }, - { 161585, true }, - { 161597, true }, - { 161607, true }, - { 161618, true }, - { 161628, true }, - { 161639, true }, - { 161651, true }, - { 161666, true }, - { 161676, true }, + { 161258, true }, + { 161269, true }, + { 161279, true }, + { 161299, true }, + { 161310, true }, + { 161324, true }, + { 161338, true }, + { 161349, true }, + { 161362, true }, + { 161373, true }, + { 161392, true }, + { 161408, true }, + { 161421, true }, + { 161439, true }, + { 161453, true }, + { 161468, true }, + { 161482, true }, + { 161490, true }, + { 161504, true }, + { 161516, false }, + { 161529, true }, + { 161542, true }, + { 161554, true }, + { 161566, true }, + { 161581, true }, + { 161596, true }, + { 161606, true }, + { 161621, true }, + { 161631, true }, + { 161645, true }, + { 161658, true }, + { 161668, true }, { 161687, true }, - { 161698, true }, - { 161711, true }, - { 161726, true }, - { 161738, true }, - { 161753, true }, - { 161765, true }, - { 161775, true }, - { 161783, true }, - { 161805, true }, + { 161709, true }, + { 161723, true }, + { 161736, true }, + { 161748, true }, + { 161758, true }, + { 161769, true }, + { 161779, true }, + { 161790, true }, + { 161802, true }, { 161817, true }, - { 161828, true }, - { 161837, true }, - { 161846, true }, + { 161827, true }, + { 161838, true }, + { 161849, true }, { 161862, true }, - { 161874, true }, - { 161886, true }, - { 161896, true }, - { 161906, true }, - { 161920, true }, - { 161942, true }, - { 161952, true }, - { 161965, false }, - { 161976, true }, - { 161989, false }, - { 162014, true }, - { 162023, true }, - { 162032, true }, - { 162049, true }, - { 162067, true }, - { 162086, true }, - { 162099, true }, - { 162113, true }, - { 162123, true }, - { 162146, true }, + { 161877, true }, + { 161889, true }, + { 161904, true }, + { 161916, true }, + { 161926, true }, + { 161934, true }, + { 161956, true }, + { 161968, true }, + { 161979, true }, + { 161988, true }, + { 161997, true }, + { 162013, true }, + { 162025, true }, + { 162037, true }, + { 162047, true }, + { 162057, true }, + { 162071, true }, + { 162093, true }, + { 162103, true }, + { 162116, false }, + { 162127, true }, + { 162140, false }, { 162165, true }, { 162174, true }, - { 162186, true }, - { 162210, true }, - { 162223, true }, + { 162183, true }, + { 162200, true }, + { 162218, true }, { 162237, true }, - { 162255, true }, - { 162273, true }, - { 162287, true }, - { 162305, true }, - { 162321, true }, - { 162331, false }, - { 162344, true }, - { 162355, true }, - { 162365, true }, - { 162378, true }, + { 162250, true }, + { 162264, true }, + { 162274, true }, + { 162297, true }, + { 162316, true }, + { 162325, true }, + { 162337, true }, + { 162361, true }, + { 162374, true }, { 162388, true }, - { 162397, true }, - { 162409, true }, - { 162427, true }, - { 162437, false }, - { 162450, true }, - { 162460, true }, - { 162468, true }, - { 162480, true }, - { 162492, true }, - { 162504, true }, - { 162512, true }, - { 162524, true }, + { 162406, true }, + { 162424, true }, + { 162438, true }, + { 162456, true }, + { 162472, true }, + { 162482, false }, + { 162495, true }, + { 162506, true }, + { 162516, true }, + { 162529, true }, { 162539, true }, - { 162552, true }, - { 162561, true }, - { 162576, true }, - { 162585, true }, - { 162591, true }, - { 162603, true }, - { 162613, true }, - { 162622, true }, - { 162632, true }, - { 162639, false }, - { 162654, true }, - { 162665, true }, - { 162676, true }, - { 162694, true }, - { 162709, true }, - { 162728, true }, - { 162744, true }, - { 162757, true }, - { 162776, true }, - { 162789, true }, - { 162803, true }, - { 162815, true }, - { 162829, true }, - { 162842, true }, - { 162856, true }, + { 162548, true }, + { 162560, true }, + { 162578, true }, + { 162588, false }, + { 162601, true }, + { 162611, true }, + { 162619, true }, + { 162631, true }, + { 162643, true }, + { 162655, true }, + { 162663, true }, + { 162675, true }, + { 162690, true }, + { 162703, true }, + { 162712, true }, + { 162727, true }, + { 162736, true }, + { 162742, true }, + { 162754, true }, + { 162764, true }, + { 162773, true }, + { 162783, true }, + { 162790, false }, + { 162805, true }, + { 162816, true }, + { 162827, true }, + { 162845, true }, + { 162860, true }, { 162879, true }, - { 162890, true }, - { 162899, true }, - { 162914, true }, - { 162933, true }, - { 162943, true }, - { 162955, true }, - { 162968, true }, - { 162976, true }, - { 162989, true }, - { 163001, true }, - { 163014, true }, - { 163034, true }, - { 163053, true }, - { 163069, true }, - { 163086, true }, - { 163098, true }, - { 163118, true }, + { 162895, true }, + { 162908, true }, + { 162927, true }, + { 162940, true }, + { 162954, true }, + { 162966, true }, + { 162980, true }, + { 162993, true }, + { 163007, true }, + { 163030, true }, + { 163041, true }, + { 163050, true }, + { 163065, true }, + { 163084, true }, + { 163094, true }, + { 163106, true }, + { 163119, true }, { 163132, true }, - { 163147, true }, - { 163162, true }, - { 163175, true }, - { 163194, true }, - { 163206, true }, - { 163218, true }, - { 163233, true }, - { 163243, true }, - { 163256, true }, + { 163144, true }, + { 163157, true }, + { 163177, true }, + { 163196, true }, + { 163212, true }, + { 163229, true }, + { 163241, true }, + { 163261, true }, { 163275, true }, - { 163286, true }, + { 163290, true }, { 163305, true }, - { 163319, true }, - { 163334, true }, - { 163344, true }, - { 163358, true }, - { 163377, true }, - { 163392, true }, - { 163403, true }, - { 163410, true }, - { 163421, true }, - { 163440, true }, - { 163449, false }, - { 163460, true }, - { 163470, true }, - { 163478, true }, - { 163486, true }, - { 163495, true }, - { 163503, true }, - { 163514, true }, - { 163526, true }, - { 163541, true }, - { 163555, true }, - { 163569, true }, - { 163580, true }, - { 163589, true }, - { 163605, true }, - { 163627, true }, - { 163644, true }, - { 163656, true }, - { 163674, true }, - { 163693, true }, - { 163711, true }, - { 163724, true }, - { 163731, true }, - { 163743, true }, - { 163753, true }, - { 163769, true }, - { 163778, true }, - { 163785, true }, - { 163795, true }, - { 163807, true }, - { 163821, true }, - { 163834, true }, - { 163855, true }, + { 163318, true }, + { 163337, true }, + { 163349, true }, + { 163361, true }, + { 163376, true }, + { 163386, true }, + { 163399, true }, + { 163418, true }, + { 163429, true }, + { 163448, true }, + { 163462, true }, + { 163477, true }, + { 163487, true }, + { 163501, true }, + { 163520, true }, + { 163535, true }, + { 163546, true }, + { 163553, true }, + { 163564, true }, + { 163583, true }, + { 163592, false }, + { 163603, true }, + { 163613, true }, + { 163621, true }, + { 163629, true }, + { 163638, true }, + { 163646, true }, + { 163657, true }, + { 163669, true }, + { 163684, true }, + { 163698, true }, + { 163712, true }, + { 163723, true }, + { 163732, true }, + { 163748, true }, + { 163770, true }, + { 163787, true }, + { 163799, true }, + { 163817, true }, + { 163836, true }, + { 163854, true }, + { 163867, true }, { 163874, true }, - { 163884, true }, - { 163907, true }, - { 163942, true }, - { 163976, true }, - { 163999, true }, - { 164054, true }, - { 164066, true }, - { 164091, true }, - { 164101, true }, + { 163886, true }, + { 163896, true }, + { 163912, true }, + { 163921, true }, + { 163928, true }, + { 163938, true }, + { 163950, true }, + { 163964, true }, + { 163977, true }, + { 163998, true }, + { 164017, true }, + { 164027, true }, + { 164050, true }, + { 164085, true }, { 164119, true }, - { 164134, false }, - { 164148, true }, - { 164163, true }, - { 164175, true }, - { 164187, true }, - { 164201, true }, - { 164213, true }, - { 164235, false }, - { 164251, true }, - { 164276, true }, - { 164286, true }, - { 164299, true }, - { 164310, true }, - { 164322, true }, + { 164142, true }, + { 164197, true }, + { 164209, true }, + { 164234, true }, + { 164244, true }, + { 164262, true }, + { 164277, false }, + { 164291, true }, + { 164306, true }, + { 164318, true }, + { 164330, true }, { 164344, true }, - { 164367, true }, - { 164377, true }, - { 164387, true }, - { 164410, true }, - { 164423, false }, - { 164437, true }, - { 164455, true }, - { 164466, true }, - { 164477, true }, - { 164496, true }, - { 164512, true }, - { 164525, true }, - { 164550, true }, - { 164564, true }, - { 164577, true }, - { 164606, true }, - { 164619, true }, - { 164632, true }, - { 164643, true }, + { 164356, true }, + { 164378, false }, + { 164394, true }, + { 164419, true }, + { 164429, true }, + { 164442, true }, + { 164453, true }, + { 164465, true }, + { 164487, true }, + { 164510, true }, + { 164520, true }, + { 164530, true }, + { 164553, true }, + { 164566, false }, + { 164580, true }, + { 164598, true }, + { 164609, true }, + { 164620, true }, + { 164639, true }, { 164655, true }, { 164668, true }, - { 164678, true }, - { 164692, true }, - { 164710, true }, - { 164727, true }, - { 164744, true }, - { 164756, true }, - { 164770, true }, - { 164784, true }, - { 164794, true }, - { 164813, true }, - { 164825, true }, - { 164836, true }, - { 164852, true }, - { 164867, true }, - { 164879, true }, - { 164891, true }, - { 164906, false }, - { 164915, true }, - { 164935, true }, - { 164955, true }, - { 164971, true }, - { 164985, true }, - { 164998, true }, - { 165010, true }, - { 165027, true }, - { 165037, true }, - { 165058, true }, - { 165072, true }, - { 165086, true }, - { 165095, true }, - { 165113, true }, - { 165128, true }, - { 165140, true }, - { 165158, true }, - { 165169, true }, - { 165182, true }, - { 165204, true }, - { 165226, true }, - { 165238, true }, - { 165252, true }, - { 165264, true }, + { 164693, true }, + { 164707, true }, + { 164720, true }, + { 164733, true }, + { 164746, true }, + { 164757, true }, + { 164769, true }, + { 164782, true }, + { 164792, true }, + { 164806, true }, + { 164824, true }, + { 164841, true }, + { 164858, true }, + { 164870, true }, + { 164884, true }, + { 164898, true }, + { 164908, true }, + { 164927, true }, + { 164939, true }, + { 164950, true }, + { 164966, true }, + { 164981, true }, + { 164993, true }, + { 165005, true }, + { 165020, false }, + { 165029, true }, + { 165049, true }, + { 165069, true }, + { 165085, true }, + { 165099, true }, + { 165112, true }, + { 165124, true }, + { 165141, true }, + { 165151, true }, + { 165172, true }, + { 165186, true }, + { 165200, true }, + { 165209, true }, + { 165227, true }, + { 165242, true }, + { 165254, true }, + { 165272, true }, { 165283, true }, - { 165295, true }, - { 165307, true }, - { 165326, true }, - { 165338, true }, - { 165350, true }, - { 165371, true }, - { 165387, true }, - { 165399, true }, - { 165412, true }, - { 165429, true }, - { 165444, true }, - { 165458, true }, - { 165471, true }, - { 165484, true }, - { 165502, true }, - { 165516, true }, - { 165531, false }, + { 165296, true }, + { 165318, true }, + { 165340, true }, + { 165352, true }, + { 165366, true }, + { 165378, true }, + { 165397, true }, + { 165409, true }, + { 165421, true }, + { 165440, true }, + { 165452, true }, + { 165464, true }, + { 165485, true }, + { 165501, true }, + { 165513, true }, + { 165526, true }, { 165543, true }, - { 165557, true }, + { 165558, true }, { 165572, true }, - { 165595, true }, - { 165603, true }, - { 165613, true }, - { 165626, true }, - { 165648, true }, - { 165660, true }, - { 165679, true }, - { 165702, false }, - { 165715, true }, - { 165734, true }, - { 165752, true }, - { 165760, true }, - { 165782, false }, - { 165800, true }, - { 165820, true }, - { 165838, true }, - { 165851, true }, + { 165585, true }, + { 165598, true }, + { 165616, true }, + { 165630, true }, + { 165645, false }, + { 165657, true }, + { 165671, true }, + { 165686, true }, + { 165709, true }, + { 165717, true }, + { 165727, true }, + { 165740, true }, + { 165762, true }, + { 165774, true }, + { 165793, true }, + { 165816, false }, + { 165829, true }, + { 165848, true }, { 165866, true }, - { 165881, true }, - { 165896, true }, - { 165911, true }, - { 165925, true }, - { 165940, true }, + { 165874, true }, + { 165896, false }, + { 165914, true }, + { 165934, true }, + { 165952, true }, { 165965, true }, - { 165987, true }, - { 165998, true }, - { 166014, true }, - { 166028, true }, - { 166041, true }, - { 166055, true }, - { 166066, true }, - { 166094, true }, - { 166121, true }, - { 166146, true }, - { 166174, true }, - { 166188, true }, - { 166207, true }, - { 166239, true }, - { 166253, true }, - { 166269, true }, - { 166282, true }, - { 166293, true }, - { 166313, true }, - { 166324, true }, - { 166342, true }, + { 165980, true }, + { 165995, true }, + { 166010, true }, + { 166025, true }, + { 166039, true }, + { 166054, true }, + { 166079, true }, + { 166101, true }, + { 166112, true }, + { 166128, true }, + { 166142, true }, + { 166155, true }, + { 166169, true }, + { 166180, true }, + { 166208, true }, + { 166235, true }, + { 166260, true }, + { 166288, true }, + { 166302, true }, + { 166321, true }, { 166353, true }, - { 166365, true }, - { 166375, true }, - { 166403, true }, - { 166413, true }, - { 166430, true }, - { 166447, true }, - { 166461, true }, - { 166474, true }, - { 166485, true }, - { 166508, true }, - { 166531, true }, - { 166541, true }, - { 166550, true }, - { 166572, true }, - { 166584, true }, - { 166595, true }, - { 166607, true }, - { 166619, true }, - { 166631, true }, - { 166642, true }, - { 166660, true }, - { 166675, true }, - { 166685, true }, - { 166694, true }, - { 166712, false }, - { 166723, true }, - { 166734, true }, + { 166367, true }, + { 166383, true }, + { 166396, true }, + { 166407, true }, + { 166427, true }, + { 166438, true }, + { 166456, true }, + { 166467, true }, + { 166479, true }, + { 166489, true }, + { 166517, true }, + { 166527, true }, + { 166544, true }, + { 166561, true }, + { 166575, true }, + { 166588, true }, + { 166599, true }, + { 166622, true }, + { 166645, true }, + { 166655, true }, + { 166664, true }, + { 166686, true }, + { 166698, true }, + { 166709, true }, + { 166721, true }, + { 166733, true }, { 166745, true }, - { 166769, true }, - { 166788, false }, - { 166798, true }, - { 166806, true }, - { 166820, true }, - { 166836, true }, - { 166860, true }, - { 166868, true }, - { 166880, true }, - { 166892, true }, - { 166903, true }, - { 166921, true }, - { 166939, true }, + { 166756, true }, + { 166774, true }, + { 166789, true }, + { 166799, true }, + { 166808, true }, + { 166826, false }, + { 166837, true }, + { 166848, true }, + { 166859, true }, + { 166883, true }, + { 166902, false }, + { 166912, true }, + { 166920, true }, + { 166934, true }, { 166950, true }, - { 166970, true }, - { 166985, true }, - { 167002, true }, - { 167018, true }, - { 167031, true }, - { 167042, true }, - { 167057, true }, - { 167078, true }, - { 167089, true }, - { 167107, true }, - { 167122, true }, - { 167138, true }, - { 167151, true }, - { 167165, true }, - { 167178, true }, - { 167188, true }, - { 167198, true }, - { 167223, true }, - { 167239, true }, - { 167248, true }, - { 167268, true }, - { 167283, true }, - { 167299, true }, - { 167310, true }, - { 167321, true }, - { 167334, true }, - { 167345, true }, - { 167368, true }, - { 167384, true }, - { 167398, true }, - { 167415, true }, - { 167427, true }, - { 167444, true }, - { 167470, true }, - { 167494, true }, - { 167520, true }, - { 167544, true }, - { 167568, true }, - { 167592, true }, - { 167603, true }, - { 167616, true }, - { 167628, true }, - { 167640, true }, - { 167654, true }, - { 167664, true }, - { 167680, true }, - { 167694, true }, - { 167710, true }, - { 167728, true }, - { 167744, true }, - { 167757, true }, - { 167773, true }, - { 167782, true }, - { 167797, true }, - { 167815, true }, - { 167834, true }, - { 167849, true }, - { 167861, true }, - { 167878, false }, - { 167898, false }, - { 167914, true }, - { 167925, true }, - { 167938, true }, - { 167964, true }, - { 167973, true }, - { 167986, true }, - { 167997, true }, - { 168017, true }, - { 168030, true }, - { 168051, true }, - { 168064, false }, - { 168085, false }, - { 168102, true }, - { 168113, true }, - { 168132, true }, - { 168151, true }, - { 168166, true }, - { 168177, true }, - { 168191, true }, - { 168208, true }, - { 168221, true }, - { 168248, true }, - { 168259, true }, - { 168268, true }, - { 168283, true }, - { 168300, true }, - { 168314, true }, - { 168324, true }, - { 168339, true }, - { 168351, true }, - { 168372, true }, + { 166974, true }, + { 166982, true }, + { 166994, true }, + { 167006, true }, + { 167017, true }, + { 167035, true }, + { 167053, true }, + { 167064, true }, + { 167084, true }, + { 167099, true }, + { 167116, true }, + { 167132, true }, + { 167145, true }, + { 167156, true }, + { 167171, true }, + { 167192, true }, + { 167203, true }, + { 167221, true }, + { 167236, true }, + { 167252, true }, + { 167265, true }, + { 167279, true }, + { 167292, true }, + { 167302, true }, + { 167312, true }, + { 167337, true }, + { 167353, true }, + { 167362, true }, + { 167382, true }, + { 167397, true }, + { 167413, true }, + { 167424, true }, + { 167435, true }, + { 167448, true }, + { 167459, true }, + { 167482, true }, + { 167498, true }, + { 167512, true }, + { 167529, true }, + { 167541, true }, + { 167558, true }, + { 167584, true }, + { 167608, true }, + { 167634, true }, + { 167658, true }, + { 167682, true }, + { 167706, true }, + { 167717, true }, + { 167730, true }, + { 167742, true }, + { 167754, true }, + { 167768, true }, + { 167778, true }, + { 167794, true }, + { 167808, true }, + { 167824, true }, + { 167842, true }, + { 167858, true }, + { 167871, true }, + { 167887, true }, + { 167896, true }, + { 167911, true }, + { 167929, true }, + { 167948, true }, + { 167963, true }, + { 167975, true }, + { 167992, false }, + { 168012, false }, + { 168028, true }, + { 168039, true }, + { 168052, true }, + { 168078, true }, + { 168087, true }, + { 168100, true }, + { 168111, true }, + { 168131, true }, + { 168144, true }, + { 168165, true }, + { 168178, false }, + { 168199, false }, + { 168216, true }, + { 168227, true }, + { 168246, true }, + { 168265, true }, + { 168280, true }, + { 168291, true }, + { 168305, true }, + { 168322, true }, + { 168330, true }, + { 168343, true }, + { 168370, true }, { 168381, true }, - { 168394, true }, - { 168407, true }, - { 168420, true }, - { 168438, true }, - { 168456, true }, - { 168465, true }, - { 168474, true }, - { 168483, true }, - { 168495, false }, - { 168512, false }, - { 168523, true }, - { 168541, true }, - { 168552, true }, - { 168567, true }, - { 168583, true }, + { 168390, true }, + { 168405, true }, + { 168422, true }, + { 168436, true }, + { 168446, true }, + { 168461, true }, + { 168473, true }, + { 168494, true }, + { 168503, true }, + { 168516, true }, + { 168529, true }, + { 168542, true }, + { 168560, true }, + { 168578, true }, + { 168587, true }, + { 168596, true }, { 168605, true }, - { 168620, true }, - { 168628, true }, + { 168617, false }, + { 168634, false }, { 168645, true }, - { 168658, true }, - { 168670, true }, - { 168681, true }, - { 168698, true }, - { 168712, true }, - { 168722, true }, - { 168739, true }, + { 168663, true }, + { 168674, true }, + { 168689, true }, + { 168705, true }, + { 168727, true }, + { 168742, true }, { 168757, true }, - { 168774, true }, - { 168791, true }, - { 168799, true }, - { 168817, true }, - { 168836, true }, - { 168855, true }, - { 168870, true }, + { 168765, true }, + { 168782, true }, + { 168795, true }, + { 168807, true }, + { 168818, true }, + { 168835, true }, + { 168849, true }, + { 168859, true }, + { 168876, true }, { 168894, true }, - { 168918, true }, + { 168911, true }, + { 168928, true }, { 168936, true }, - { 168950, true }, - { 168961, true }, - { 168974, true }, - { 168989, true }, - { 169024, true }, - { 169038, true }, - { 169061, true }, - { 169080, true }, - { 169091, true }, - { 169107, true }, - { 169117, true }, - { 169128, true }, - { 169150, true }, - { 169162, true }, - { 169182, true }, - { 169193, true }, - { 169201, true }, + { 168954, true }, + { 168973, true }, + { 168992, true }, + { 169007, true }, + { 169031, true }, + { 169055, true }, + { 169073, true }, + { 169087, true }, + { 169098, true }, + { 169111, true }, + { 169126, true }, + { 169161, true }, + { 169175, true }, + { 169198, true }, + { 169217, true }, { 169228, true }, - { 169240, true }, - { 169263, true }, - { 169275, true }, - { 169290, true }, - { 169313, true }, - { 169334, true }, - { 169353, true }, - { 169366, false }, - { 169373, true }, - { 169393, true }, - { 169403, true }, - { 169419, true }, - { 169435, true }, - { 169449, true }, - { 169463, true }, - { 169476, true }, - { 169487, true }, - { 169494, true }, - { 169503, true }, - { 169522, true }, - { 169535, true }, - { 169553, true }, - { 169563, true }, - { 169583, true }, - { 169593, true }, - { 169608, true }, - { 169621, true }, - { 169630, true }, + { 169244, true }, + { 169254, true }, + { 169265, true }, + { 169287, true }, + { 169299, true }, + { 169319, true }, + { 169330, true }, + { 169338, true }, + { 169365, true }, + { 169377, true }, + { 169400, true }, + { 169412, true }, + { 169427, true }, + { 169450, true }, + { 169471, true }, + { 169490, true }, + { 169503, false }, + { 169510, true }, + { 169530, true }, + { 169540, true }, + { 169556, true }, + { 169572, true }, + { 169586, true }, + { 169600, true }, + { 169613, true }, + { 169624, true }, + { 169631, true }, { 169640, true }, - { 169648, true }, + { 169659, true }, { 169672, true }, - { 169680, true }, - { 169697, true }, - { 169709, false }, - { 169724, true }, - { 169737, true }, - { 169747, true }, - { 169765, true }, - { 169776, true }, - { 169788, true }, - { 169806, true }, - { 169827, false }, - { 169853, true }, - { 169870, true }, + { 169690, true }, + { 169700, true }, + { 169720, true }, + { 169730, true }, + { 169745, true }, + { 169758, true }, + { 169767, true }, + { 169777, true }, + { 169785, true }, + { 169809, true }, + { 169817, true }, + { 169834, true }, + { 169846, false }, + { 169861, true }, + { 169874, true }, { 169884, true }, - { 169897, true }, - { 169910, true }, - { 169941, true }, - { 169970, true }, - { 169984, false }, - { 169997, true }, - { 170008, true }, - { 170022, true }, + { 169902, true }, + { 169913, true }, + { 169925, true }, + { 169943, true }, + { 169964, false }, + { 169990, true }, + { 170007, true }, + { 170021, true }, { 170034, true }, { 170047, true }, - { 170059, true }, - { 170072, true }, - { 170089, true }, - { 170104, true }, - { 170120, true }, - { 170132, false }, - { 170146, true }, - { 170166, true }, - { 170179, true }, - { 170192, true }, - { 170205, true }, - { 170215, true }, - { 170224, true }, - { 170235, true }, - { 170246, true }, + { 170078, true }, + { 170107, true }, + { 170121, false }, + { 170134, true }, + { 170145, true }, + { 170159, true }, + { 170171, true }, + { 170184, true }, + { 170196, true }, + { 170209, true }, + { 170226, true }, + { 170241, true }, { 170257, true }, - { 170272, true }, - { 170281, true }, - { 170292, true }, - { 170304, true }, - { 170317, true }, - { 170341, true }, - { 170353, true }, - { 170367, true }, - { 170378, true }, - { 170398, true }, - { 170411, true }, - { 170419, true }, - { 170431, true }, - { 170445, true }, - { 170460, true }, - { 170483, true }, - { 170494, true }, - { 170508, true }, - { 170521, false }, - { 170536, true }, + { 170269, false }, + { 170283, true }, + { 170303, true }, + { 170316, true }, + { 170329, true }, + { 170342, true }, + { 170352, true }, + { 170361, true }, + { 170372, true }, + { 170383, true }, + { 170394, true }, + { 170409, true }, + { 170418, true }, + { 170429, true }, + { 170441, true }, + { 170454, true }, + { 170478, true }, + { 170490, true }, + { 170504, true }, + { 170515, true }, + { 170535, true }, { 170548, true }, - { 170560, true }, - { 170580, true }, - { 170590, true }, - { 170606, true }, - { 170618, false }, - { 170632, true }, - { 170646, true }, - { 170658, true }, - { 170672, true }, - { 170687, true }, - { 170701, true }, - { 170718, true }, - { 170731, true }, - { 170757, true }, - { 170767, true }, + { 170556, true }, + { 170568, true }, + { 170582, true }, + { 170597, true }, + { 170620, true }, + { 170631, true }, + { 170645, true }, + { 170658, false }, + { 170673, true }, + { 170685, true }, + { 170697, true }, + { 170717, true }, + { 170727, true }, + { 170743, true }, + { 170755, false }, + { 170769, true }, + { 170783, true }, { 170795, true }, - { 170823, false }, - { 170833, true }, - { 170860, false }, - { 170872, true }, - { 170882, true }, - { 170896, true }, - { 170906, true }, - { 170919, true }, - { 170928, true }, - { 170938, true }, - { 170952, true }, - { 170961, true }, - { 170977, true }, - { 170990, true }, - { 171004, true }, - { 171020, false }, - { 171035, true }, - { 171053, true }, - { 171072, true }, - { 171085, true }, - { 171100, true }, + { 170809, true }, + { 170824, true }, + { 170838, true }, + { 170855, true }, + { 170868, true }, + { 170894, true }, + { 170904, true }, + { 170932, true }, + { 170960, false }, + { 170970, true }, + { 170997, false }, + { 171009, true }, + { 171019, true }, + { 171033, true }, + { 171043, true }, + { 171056, true }, + { 171065, true }, + { 171075, true }, + { 171089, true }, + { 171098, true }, { 171114, true }, - { 171130, true }, - { 171144, true }, - { 171162, true }, - { 171175, true }, - { 171185, false }, - { 171196, true }, - { 171207, true }, - { 171217, true }, - { 171229, true }, - { 171239, true }, - { 171250, true }, - { 171268, true }, - { 171288, true }, - { 171302, true }, - { 171313, true }, - { 171322, true }, - { 171331, true }, - { 171340, true }, - { 171351, false }, - { 171365, true }, - { 171388, true }, - { 171404, true }, - { 171418, true }, + { 171127, true }, + { 171141, true }, + { 171157, false }, + { 171172, true }, + { 171190, true }, + { 171209, true }, + { 171222, true }, + { 171237, true }, + { 171251, true }, + { 171267, true }, + { 171281, true }, + { 171299, true }, + { 171312, true }, + { 171322, false }, + { 171333, true }, + { 171344, true }, + { 171354, true }, + { 171366, true }, + { 171376, true }, + { 171387, true }, + { 171405, true }, + { 171425, true }, { 171439, true }, - { 171455, true }, - { 171475, true }, - { 171497, true }, - { 171507, true }, - { 171515, true }, - { 171524, true }, - { 171535, true }, - { 171550, true }, - { 171564, true }, - { 171573, true }, - { 171583, true }, - { 171600, true }, - { 171615, true }, - { 171629, true }, - { 171639, true }, - { 171659, true }, - { 171674, true }, - { 171691, true }, - { 171709, true }, - { 171724, true }, - { 171750, true }, - { 171762, true }, + { 171450, true }, + { 171459, true }, + { 171468, true }, + { 171477, true }, + { 171488, false }, + { 171502, true }, + { 171525, true }, + { 171541, true }, + { 171555, true }, + { 171576, true }, + { 171592, true }, + { 171612, true }, + { 171634, true }, + { 171644, true }, + { 171652, true }, + { 171661, true }, + { 171672, true }, + { 171687, true }, + { 171701, true }, + { 171710, true }, + { 171720, true }, + { 171737, true }, + { 171752, true }, + { 171766, true }, { 171776, true }, - { 171789, true }, - { 171801, true }, - { 171820, true }, - { 171833, true }, - { 171857, false }, - { 171876, true }, - { 171904, true }, - { 171918, true }, - { 171936, true }, - { 171949, true }, - { 171962, true }, - { 171976, true }, - { 171988, true }, - { 171999, true }, + { 171796, true }, + { 171811, true }, + { 171828, true }, + { 171846, true }, + { 171861, true }, + { 171887, true }, + { 171899, true }, + { 171913, true }, + { 171926, true }, + { 171938, true }, + { 171957, true }, + { 171970, true }, + { 171994, false }, { 172013, true }, - { 172035, true }, - { 172054, true }, - { 172072, true }, - { 172090, true }, - { 172098, true }, - { 172114, true }, - { 172129, true }, - { 172137, true }, - { 172148, true }, - { 172163, true }, - { 172176, true }, - { 172188, true }, - { 172199, true }, - { 172215, true }, - { 172229, true }, - { 172245, true }, - { 172263, true }, - { 172279, true }, - { 172293, true }, - { 172308, true }, - { 172323, true }, - { 172335, true }, - { 172347, true }, - { 172373, true }, - { 172392, true }, - { 172408, true }, - { 172421, true }, - { 172440, true }, - { 172457, true }, - { 172467, true }, - { 172478, true }, - { 172490, false }, - { 172505, true }, - { 172516, true }, + { 172041, true }, + { 172055, true }, + { 172073, true }, + { 172086, true }, + { 172099, true }, + { 172113, true }, + { 172125, true }, + { 172136, true }, + { 172150, true }, + { 172172, true }, + { 172191, true }, + { 172209, true }, + { 172227, true }, + { 172235, true }, + { 172251, true }, + { 172266, true }, + { 172274, true }, + { 172285, true }, + { 172300, true }, + { 172313, true }, + { 172325, true }, + { 172336, true }, + { 172352, true }, + { 172366, true }, + { 172382, true }, + { 172400, true }, + { 172416, true }, + { 172430, true }, + { 172445, true }, + { 172460, true }, + { 172472, true }, + { 172484, true }, + { 172510, true }, { 172529, true }, - { 172547, true }, - { 172556, true }, - { 172566, true }, - { 172573, true }, - { 172581, true }, + { 172545, true }, + { 172558, true }, + { 172577, true }, { 172594, true }, - { 172605, true }, - { 172619, true }, - { 172635, true }, - { 172648, true }, - { 172661, true }, - { 172674, true }, - { 172687, true }, - { 172697, true }, - { 172707, true }, - { 172719, true }, - { 172727, true }, - { 172733, true }, - { 172745, true }, - { 172754, true }, - { 172761, true }, + { 172604, true }, + { 172615, true }, + { 172627, false }, + { 172642, true }, + { 172653, true }, + { 172666, true }, + { 172684, true }, + { 172693, true }, + { 172703, true }, + { 172710, true }, + { 172718, true }, + { 172731, true }, + { 172742, true }, + { 172756, true }, { 172772, true }, - { 172783, true }, - { 172801, true }, - { 172820, true }, + { 172785, true }, + { 172798, true }, + { 172811, true }, + { 172824, true }, { 172834, true }, - { 172848, true }, - { 172859, true }, + { 172844, true }, + { 172856, true }, + { 172864, true }, + { 172870, true }, { 172882, true }, - { 172892, true }, - { 172903, true }, - { 172918, true }, - { 172936, true }, - { 172953, true }, - { 172968, true }, - { 172984, true }, - { 172997, true }, - { 173013, true }, - { 173027, true }, - { 173039, true }, - { 173051, true }, - { 173063, true }, - { 173076, true }, - { 173093, true }, - { 173106, false }, - { 173117, true }, - { 173131, true }, - { 173142, true }, - { 173157, true }, + { 172891, true }, + { 172898, true }, + { 172909, true }, + { 172920, true }, + { 172938, true }, + { 172957, true }, + { 172971, true }, + { 172985, true }, + { 172996, true }, + { 173019, true }, + { 173029, true }, + { 173040, true }, + { 173055, true }, + { 173073, true }, + { 173090, true }, + { 173105, true }, + { 173121, true }, + { 173134, true }, + { 173150, true }, { 173164, true }, - { 173173, true }, - { 173192, true }, - { 173218, true }, - { 173242, false }, - { 173257, true }, + { 173176, true }, + { 173188, true }, + { 173200, true }, + { 173213, true }, + { 173230, true }, + { 173243, false }, + { 173254, true }, { 173268, true }, { 173279, true }, - { 173289, false }, - { 173300, false }, - { 173311, false }, - { 173323, true }, - { 173337, true }, - { 173350, true }, - { 173363, true }, - { 173376, true }, - { 173398, false }, - { 173408, true }, - { 173428, true }, - { 173442, true }, - { 173459, false }, - { 173474, false }, - { 173490, true }, - { 173507, true }, - { 173518, true }, - { 173540, true }, - { 173554, true }, + { 173294, true }, + { 173301, true }, + { 173310, true }, + { 173329, true }, + { 173355, true }, + { 173379, false }, + { 173394, true }, + { 173405, true }, + { 173416, true }, + { 173426, false }, + { 173437, false }, + { 173448, false }, + { 173460, true }, + { 173474, true }, + { 173487, true }, + { 173500, true }, + { 173513, true }, + { 173535, false }, + { 173545, true }, { 173565, true }, - { 173585, true }, - { 173602, true }, - { 173612, true }, - { 173620, true }, - { 173631, true }, - { 173639, true }, - { 173648, true }, - { 173659, true }, - { 173670, true }, - { 173683, true }, - { 173693, true }, - { 173708, true }, - { 173721, true }, - { 173735, true }, - { 173743, true }, - { 173753, true }, - { 173770, true }, - { 173784, true }, + { 173579, true }, + { 173596, false }, + { 173611, false }, + { 173627, true }, + { 173644, true }, + { 173655, true }, + { 173677, true }, + { 173691, true }, + { 173702, true }, + { 173722, true }, + { 173739, true }, + { 173749, true }, + { 173757, true }, + { 173768, true }, + { 173776, true }, + { 173785, true }, + { 173796, true }, { 173807, true }, - { 173837, true }, - { 173860, true }, - { 173875, true }, - { 173892, true }, - { 173914, true }, - { 173929, true }, + { 173820, true }, + { 173830, true }, + { 173845, true }, + { 173858, true }, + { 173872, true }, + { 173880, true }, + { 173890, true }, + { 173907, true }, + { 173921, true }, { 173944, true }, - { 173955, true }, - { 173971, true }, - { 173985, true }, - { 173998, true }, - { 174011, true }, - { 174024, true }, - { 174037, true }, - { 174050, true }, - { 174063, true }, - { 174074, false }, - { 174090, true }, - { 174103, true }, - { 174117, true }, - { 174130, true }, - { 174141, true }, - { 174151, true }, + { 173974, true }, + { 173997, true }, + { 174012, true }, + { 174029, true }, + { 174051, true }, + { 174066, true }, + { 174081, true }, + { 174092, true }, + { 174108, true }, + { 174122, true }, + { 174135, true }, + { 174148, true }, + { 174161, true }, { 174174, true }, - { 174194, true }, - { 174205, true }, - { 174213, true }, - { 174223, true }, - { 174238, true }, - { 174253, true }, - { 174269, true }, - { 174279, true }, - { 174291, true }, - { 174308, true }, - { 174316, true }, - { 174323, true }, - { 174346, true }, - { 174362, true }, - { 174377, true }, - { 174399, true }, - { 174419, true }, - { 174429, true }, - { 174443, true }, - { 174462, true }, - { 174487, true }, - { 174505, true }, - { 174519, true }, - { 174533, true }, - { 174547, true }, - { 174561, true }, - { 174575, true }, - { 174590, true }, - { 174604, true }, - { 174618, true }, - { 174632, true }, - { 174652, true }, + { 174187, true }, + { 174200, true }, + { 174211, false }, + { 174227, true }, + { 174240, true }, + { 174254, true }, + { 174267, true }, + { 174278, true }, + { 174288, true }, + { 174311, true }, + { 174331, true }, + { 174342, true }, + { 174350, true }, + { 174360, true }, + { 174375, true }, + { 174390, true }, + { 174406, true }, + { 174416, true }, + { 174428, true }, + { 174445, true }, + { 174453, true }, + { 174460, true }, + { 174483, true }, + { 174499, true }, + { 174514, true }, + { 174536, true }, + { 174556, true }, + { 174566, true }, + { 174580, true }, + { 174599, true }, + { 174624, true }, + { 174642, true }, + { 174656, true }, { 174670, true }, - { 174687, true }, - { 174705, true }, - { 174720, true }, - { 174731, true }, - { 174744, true }, - { 174760, true }, - { 174778, true }, - { 174793, true }, - { 174809, true }, - { 174821, true }, - { 174835, true }, - { 174854, true }, - { 174871, true }, - { 174884, true }, - { 174899, true }, - { 174909, true }, - { 174931, true }, - { 174944, false }, - { 174959, true }, - { 174970, true }, - { 174983, true }, - { 174998, true }, - { 175010, true }, - { 175027, true }, - { 175037, true }, + { 174684, true }, + { 174698, true }, + { 174712, true }, + { 174727, true }, + { 174741, true }, + { 174755, true }, + { 174769, true }, + { 174789, true }, + { 174807, true }, + { 174824, true }, + { 174842, true }, + { 174857, true }, + { 174868, true }, + { 174881, true }, + { 174897, true }, + { 174915, true }, + { 174930, true }, + { 174946, true }, + { 174958, true }, + { 174972, true }, + { 174991, true }, + { 175008, true }, + { 175021, true }, + { 175036, true }, { 175046, true }, - { 175055, true }, - { 175067, true }, - { 175076, true }, - { 175093, true }, - { 175109, true }, + { 175068, true }, + { 175081, false }, + { 175096, true }, + { 175107, true }, { 175120, true }, - { 175144, true }, - { 175163, false }, - { 175173, true }, - { 175188, true }, - { 175207, true }, - { 175222, true }, - { 175234, true }, - { 175250, true }, - { 175270, true }, - { 175280, true }, - { 175296, true }, - { 175316, true }, - { 175330, true }, + { 175135, true }, + { 175147, true }, + { 175164, true }, + { 175174, true }, + { 175183, true }, + { 175192, true }, + { 175204, true }, + { 175213, true }, + { 175230, true }, + { 175246, true }, + { 175257, true }, + { 175281, true }, + { 175300, false }, + { 175310, true }, + { 175325, true }, { 175344, true }, - { 175363, true }, - { 175384, true }, - { 175397, true }, + { 175359, true }, + { 175371, true }, + { 175387, true }, + { 175407, true }, { 175417, true }, - { 175429, true }, - { 175445, true }, - { 175455, true }, - { 175465, true }, - { 175479, true }, - { 175502, true }, - { 175512, true }, + { 175433, true }, + { 175453, true }, + { 175467, true }, + { 175481, true }, + { 175500, true }, { 175521, true }, - { 175540, true }, - { 175549, true }, - { 175564, true }, - { 175578, true }, - { 175597, true }, - { 175615, true }, - { 175630, true }, - { 175644, true }, - { 175659, true }, - { 175675, true }, - { 175691, true }, - { 175699, true }, - { 175716, true }, - { 175727, true }, - { 175735, true }, - { 175747, true }, - { 175758, true }, - { 175770, true }, - { 175782, true }, - { 175792, true }, - { 175806, true }, - { 175819, true }, - { 175833, false }, - { 175844, true }, + { 175534, true }, + { 175554, true }, + { 175566, true }, + { 175582, true }, + { 175592, true }, + { 175602, true }, + { 175616, true }, + { 175639, true }, + { 175649, true }, + { 175658, true }, + { 175677, true }, + { 175686, true }, + { 175701, true }, + { 175715, true }, + { 175734, true }, + { 175752, true }, + { 175767, true }, + { 175781, true }, + { 175796, true }, + { 175812, true }, + { 175828, true }, + { 175836, true }, { 175853, true }, - { 175861, true }, - { 175869, true }, - { 175877, true }, - { 175887, true }, - { 175901, true }, - { 175910, true }, - { 175922, true }, - { 175944, true }, - { 175963, true }, - { 175973, true }, - { 175984, true }, - { 175995, true }, - { 176012, true }, - { 176025, true }, - { 176035, true }, - { 176049, true }, - { 176061, true }, - { 176072, true }, + { 175864, true }, + { 175872, true }, + { 175884, true }, + { 175895, true }, + { 175907, true }, + { 175919, true }, + { 175929, true }, + { 175943, true }, + { 175956, true }, + { 175970, false }, + { 175981, true }, + { 175990, true }, + { 175998, true }, + { 176006, true }, + { 176014, true }, + { 176024, true }, + { 176038, true }, + { 176047, true }, + { 176059, true }, + { 176081, true }, { 176100, true }, - { 176118, true }, - { 176136, true }, - { 176150, true }, - { 176160, true }, - { 176174, true }, - { 176181, true }, - { 176191, true }, - { 176206, true }, - { 176228, true }, - { 176236, true }, - { 176246, true }, - { 176265, true }, - { 176277, true }, + { 176110, true }, + { 176121, true }, + { 176132, true }, + { 176149, true }, + { 176162, true }, + { 176172, true }, + { 176186, true }, + { 176198, true }, + { 176209, true }, + { 176237, true }, + { 176255, true }, + { 176273, true }, { 176287, true }, { 176297, true }, - { 176307, true }, - { 176319, true }, - { 176330, true }, + { 176311, true }, + { 176318, true }, + { 176328, true }, { 176343, true }, - { 176351, true }, { 176365, true }, - { 176375, true }, - { 176386, true }, - { 176393, true }, - { 176404, true }, - { 176413, true }, - { 176420, true }, - { 176431, true }, - { 176439, true }, - { 176448, true }, - { 176466, true }, - { 176482, true }, - { 176492, true }, - { 176506, true }, - { 176517, true }, - { 176533, false }, - { 176548, true }, - { 176558, true }, - { 176572, true }, - { 176580, true }, - { 176591, true }, - { 176600, true }, - { 176610, true }, - { 176620, true }, + { 176373, true }, + { 176383, true }, + { 176402, true }, + { 176414, true }, + { 176424, true }, + { 176434, true }, + { 176444, true }, + { 176456, true }, + { 176467, true }, + { 176480, true }, + { 176488, true }, + { 176502, true }, + { 176512, true }, + { 176523, true }, + { 176530, true }, + { 176541, true }, + { 176550, true }, + { 176557, true }, + { 176568, true }, + { 176576, true }, + { 176585, true }, + { 176603, true }, + { 176619, true }, { 176629, true }, - { 176653, true }, - { 176673, true }, - { 176693, true }, - { 176707, true }, - { 176716, true }, - { 176732, false }, - { 176743, true }, - { 176754, true }, - { 176775, true }, - { 176794, true }, - { 176807, true }, - { 176823, true }, - { 176835, true }, - { 176848, true }, - { 176861, false }, - { 176872, true }, - { 176889, true }, - { 176901, true }, - { 176916, true }, - { 176926, true }, - { 176938, true }, - { 176950, true }, - { 176961, true }, + { 176643, true }, + { 176654, true }, + { 176670, false }, + { 176685, true }, + { 176695, true }, + { 176709, true }, + { 176717, true }, + { 176728, true }, + { 176737, true }, + { 176747, true }, + { 176757, true }, + { 176766, true }, + { 176790, true }, + { 176810, true }, + { 176830, true }, + { 176844, true }, + { 176853, true }, + { 176869, false }, + { 176880, true }, + { 176891, false }, + { 176912, true }, + { 176931, true }, + { 176944, true }, + { 176960, true }, { 176972, true }, - { 176990, true }, - { 177013, true }, - { 177023, true }, - { 177033, true }, - { 177052, true }, - { 177068, true }, - { 177083, true }, - { 177100, true }, - { 177113, true }, - { 177134, true }, - { 177155, true }, - { 177181, true }, - { 177190, true }, - { 177210, true }, - { 177219, true }, - { 177229, true }, - { 177244, true }, - { 177254, true }, - { 177267, true }, - { 177280, true }, - { 177295, true }, - { 177305, true }, - { 177322, true }, - { 177338, true }, - { 177352, true }, - { 177363, false }, - { 177373, true }, - { 177387, true }, - { 177401, true }, - { 177412, true }, - { 177435, true }, - { 177458, true }, - { 177474, true }, - { 177484, true }, - { 177498, true }, - { 177509, true }, + { 176985, true }, + { 176998, false }, + { 177009, true }, + { 177026, true }, + { 177038, true }, + { 177053, true }, + { 177063, true }, + { 177075, true }, + { 177087, true }, + { 177098, true }, + { 177109, true }, + { 177121, true }, + { 177139, true }, + { 177162, true }, + { 177172, true }, + { 177182, true }, + { 177201, true }, + { 177217, true }, + { 177232, true }, + { 177249, true }, + { 177262, true }, + { 177283, true }, + { 177304, true }, + { 177330, true }, + { 177339, true }, + { 177359, true }, + { 177368, true }, + { 177378, true }, + { 177393, true }, + { 177403, true }, + { 177416, true }, + { 177429, true }, + { 177444, true }, + { 177454, true }, + { 177471, true }, + { 177487, true }, + { 177501, true }, + { 177512, false }, { 177522, true }, - { 177535, true }, - { 177552, true }, - { 177565, true }, - { 177591, true }, - { 177606, true }, + { 177536, true }, + { 177550, true }, + { 177561, true }, + { 177584, true }, + { 177607, true }, { 177623, true }, - { 177641, true }, - { 177667, true }, - { 177678, true }, - { 177696, false }, - { 177711, true }, - { 177724, true }, - { 177737, true }, - { 177758, true }, - { 177770, true }, - { 177781, true }, - { 177805, true }, - { 177828, true }, - { 177843, true }, - { 177868, true }, - { 177876, true }, - { 177892, false }, + { 177633, true }, + { 177647, true }, + { 177658, true }, + { 177671, true }, + { 177684, true }, + { 177701, true }, + { 177714, true }, + { 177740, true }, + { 177755, true }, + { 177772, true }, + { 177790, true }, + { 177816, true }, + { 177827, true }, + { 177845, false }, + { 177860, true }, + { 177873, true }, + { 177886, true }, { 177907, true }, { 177919, true }, - { 177931, true }, - { 177945, true }, - { 177959, true }, - { 177973, true }, - { 177987, true }, - { 178004, true }, - { 178031, true }, - { 178048, true }, + { 177930, true }, + { 177954, true }, + { 177977, true }, + { 177992, true }, + { 178017, true }, + { 178025, true }, + { 178041, false }, + { 178056, true }, { 178068, true }, { 178080, true }, - { 178090, true }, - { 178104, true }, - { 178124, true }, - { 178139, true }, - { 178161, true }, - { 178175, true }, - { 178193, true }, - { 178214, true }, - { 178231, true }, - { 178252, true }, - { 178266, true }, - { 178277, true }, - { 178291, true }, - { 178302, true }, - { 178318, true }, - { 178330, true }, - { 178343, true }, - { 178357, true }, - { 178373, true }, - { 178390, true }, + { 178094, true }, + { 178108, true }, + { 178122, true }, + { 178136, true }, + { 178153, true }, + { 178180, true }, + { 178197, true }, + { 178217, true }, + { 178229, true }, + { 178239, true }, + { 178253, true }, + { 178273, true }, + { 178288, true }, + { 178310, true }, + { 178324, true }, + { 178342, true }, + { 178363, true }, + { 178380, true }, { 178401, true }, { 178415, true }, - { 178427, false }, - { 178452, true }, - { 178476, true }, - { 178486, false }, - { 178512, true }, - { 178529, true }, - { 178546, true }, - { 178567, true }, - { 178581, true }, - { 178611, false }, + { 178426, true }, + { 178440, true }, + { 178451, true }, + { 178467, true }, + { 178479, true }, + { 178492, true }, + { 178506, true }, + { 178522, true }, + { 178539, true }, + { 178550, true }, + { 178564, true }, + { 178576, false }, + { 178601, true }, { 178625, true }, - { 178642, true }, - { 178656, true }, - { 178679, true }, - { 178687, true }, + { 178635, false }, + { 178661, true }, + { 178678, true }, { 178695, true }, - { 178703, true }, - { 178711, true }, - { 178719, true }, - { 178731, true }, - { 178742, true }, - { 178752, true }, - { 178768, true }, - { 178782, true }, - { 178801, true }, - { 178810, true }, - { 178823, true }, - { 178834, true }, - { 178846, true }, - { 178857, true }, - { 178882, true }, - { 178894, true }, - { 178907, true }, - { 178916, true }, - { 178927, true }, - { 178936, false }, - { 178952, true }, - { 178962, true }, - { 178977, true }, - { 178991, true }, - { 179004, true }, - { 179021, true }, - { 179037, true }, - { 179060, true }, - { 179082, true }, - { 179100, true }, - { 179119, false }, - { 179138, true }, - { 179151, true }, - { 179164, true }, - { 179177, true }, - { 179201, true }, - { 179215, true }, - { 179226, true }, - { 179245, true }, - { 179262, true }, - { 179275, true }, - { 179303, true }, - { 179316, true }, - { 179331, true }, - { 179351, true }, - { 179362, true }, + { 178716, true }, + { 178730, true }, + { 178760, false }, + { 178774, true }, + { 178791, true }, + { 178805, true }, + { 178828, true }, + { 178836, true }, + { 178844, true }, + { 178852, true }, + { 178860, true }, + { 178868, true }, + { 178880, true }, + { 178891, true }, + { 178901, true }, + { 178917, true }, + { 178931, true }, + { 178950, true }, + { 178959, true }, + { 178972, true }, + { 178983, true }, + { 178995, true }, + { 179006, true }, + { 179031, true }, + { 179043, true }, + { 179056, true }, + { 179065, true }, + { 179076, true }, + { 179085, false }, + { 179101, true }, + { 179111, true }, + { 179126, true }, + { 179140, true }, + { 179153, true }, + { 179170, true }, + { 179186, true }, + { 179209, true }, + { 179231, true }, + { 179249, true }, + { 179268, false }, + { 179287, true }, + { 179300, true }, + { 179313, true }, + { 179326, true }, + { 179350, true }, + { 179364, true }, { 179375, true }, - { 179397, true }, - { 179417, true }, - { 179436, true }, - { 179451, true }, - { 179471, true }, - { 179491, true }, - { 179506, true }, - { 179520, true }, - { 179533, true }, - { 179554, true }, - { 179568, false }, - { 179579, true }, - { 179598, true }, - { 179617, true }, - { 179628, true }, - { 179646, true }, - { 179660, true }, - { 179672, true }, - { 179688, true }, - { 179706, true }, - { 179723, true }, - { 179734, true }, - { 179745, true }, - { 179755, true }, - { 179767, true }, - { 179797, true }, - { 179808, true }, - { 179822, true }, - { 179836, true }, - { 179848, true }, - { 179863, true }, - { 179882, true }, - { 179896, true }, + { 179394, true }, + { 179411, true }, + { 179424, true }, + { 179452, true }, + { 179465, true }, + { 179480, true }, + { 179500, true }, + { 179511, true }, + { 179524, true }, + { 179546, true }, + { 179566, true }, + { 179585, true }, + { 179600, true }, + { 179620, true }, + { 179640, true }, + { 179655, true }, + { 179669, true }, + { 179682, true }, + { 179703, true }, + { 179717, false }, + { 179728, true }, + { 179747, true }, + { 179766, true }, + { 179777, true }, + { 179795, true }, + { 179809, true }, + { 179821, true }, + { 179837, true }, + { 179855, true }, + { 179872, true }, + { 179883, true }, + { 179894, true }, + { 179904, true }, { 179916, true }, - { 179939, true }, - { 179954, true }, - { 179965, true }, - { 179986, true }, - { 180004, true }, - { 180017, true }, - { 180029, true }, - { 180046, true }, - { 180069, true }, - { 180087, true }, + { 179946, true }, + { 179957, true }, + { 179971, true }, + { 179985, true }, + { 179997, true }, + { 180012, true }, + { 180031, true }, + { 180045, true }, + { 180065, true }, + { 180088, true }, { 180103, true }, - { 180121, true }, + { 180114, true }, { 180135, true }, - { 180158, true }, - { 180180, true }, + { 180153, true }, + { 180166, true }, + { 180178, true }, { 180195, true }, - { 180212, true }, - { 180226, true }, - { 180242, true }, - { 180258, true }, - { 180278, true }, - { 180289, true }, - { 180303, true }, - { 180322, true }, - { 180338, true }, - { 180348, true }, - { 180363, true }, - { 180380, true }, - { 180390, true }, - { 180413, true }, - { 180429, true }, - { 180448, true }, - { 180463, true }, - { 180478, true }, - { 180489, true }, - { 180503, true }, - { 180520, true }, - { 180544, true }, - { 180560, true }, - { 180577, true }, + { 180218, true }, + { 180236, true }, + { 180252, true }, + { 180270, true }, + { 180284, true }, + { 180307, true }, + { 180329, true }, + { 180344, true }, + { 180361, true }, + { 180375, true }, + { 180391, true }, + { 180407, true }, + { 180427, true }, + { 180438, true }, + { 180452, true }, + { 180471, true }, + { 180487, true }, + { 180497, true }, + { 180512, true }, + { 180529, true }, + { 180539, true }, + { 180562, true }, + { 180581, true }, { 180596, true }, { 180611, true }, { 180622, true }, - { 180638, true }, - { 180654, true }, - { 180671, true }, - { 180683, true }, - { 180703, true }, - { 180718, true }, - { 180727, true }, - { 180746, true }, - { 180762, true }, - { 180775, true }, - { 180794, true }, - { 180819, true }, - { 180839, true }, + { 180636, true }, + { 180653, true }, + { 180677, true }, + { 180693, true }, + { 180710, true }, + { 180729, true }, + { 180744, true }, + { 180755, true }, + { 180771, true }, + { 180787, true }, + { 180804, true }, + { 180816, true }, + { 180836, true }, { 180851, true }, - { 180868, true }, - { 180883, true }, + { 180860, true }, + { 180879, true }, { 180895, true }, - { 180913, true }, - { 180926, true }, - { 180936, true }, - { 180946, true }, - { 180958, false }, - { 180968, true }, - { 180985, true }, - { 180999, false }, - { 181022, true }, - { 181039, true }, - { 181054, true }, - { 181072, true }, - { 181091, true }, - { 181116, true }, - { 181149, true }, - { 181177, true }, - { 181185, true }, - { 181195, true }, - { 181212, true }, - { 181226, true }, - { 181245, true }, - { 181259, true }, - { 181272, true }, - { 181285, true }, - { 181306, true }, - { 181316, true }, - { 181335, true }, - { 181365, true }, - { 181379, true }, - { 181393, true }, + { 180908, true }, + { 180927, true }, + { 180952, true }, + { 180972, true }, + { 180984, true }, + { 181001, true }, + { 181016, true }, + { 181028, true }, + { 181046, true }, + { 181059, true }, + { 181069, true }, + { 181079, true }, + { 181091, false }, + { 181101, true }, + { 181118, true }, + { 181132, false }, + { 181155, true }, + { 181172, true }, + { 181187, true }, + { 181205, true }, + { 181224, true }, + { 181249, true }, + { 181282, true }, + { 181310, true }, + { 181318, true }, + { 181328, true }, + { 181345, true }, + { 181359, true }, + { 181378, true }, + { 181392, true }, { 181405, true }, - { 181420, true }, - { 181440, true }, - { 181454, true }, - { 181466, true }, - { 181486, true }, - { 181504, true }, - { 181522, true }, - { 181533, true }, - { 181550, true }, - { 181563, true }, - { 181576, true }, - { 181589, true }, - { 181607, true }, - { 181618, true }, - { 181645, true }, - { 181661, true }, - { 181675, true }, - { 181687, true }, - { 181704, true }, - { 181717, true }, - { 181731, true }, - { 181739, true }, - { 181758, true }, - { 181772, true }, - { 181783, true }, - { 181805, true }, - { 181822, true }, - { 181831, true }, - { 181844, true }, - { 181854, true }, - { 181868, false }, - { 181880, true }, + { 181418, true }, + { 181439, true }, + { 181449, true }, + { 181468, true }, + { 181498, true }, + { 181512, true }, + { 181526, true }, + { 181538, true }, + { 181553, true }, + { 181573, true }, + { 181587, true }, + { 181599, true }, + { 181619, true }, + { 181637, true }, + { 181655, true }, + { 181666, true }, + { 181683, true }, + { 181696, true }, + { 181709, true }, + { 181722, true }, + { 181740, true }, + { 181751, true }, + { 181778, true }, + { 181794, true }, + { 181808, true }, + { 181820, true }, + { 181837, true }, + { 181850, true }, + { 181864, true }, + { 181872, true }, { 181891, true }, - { 181901, true }, - { 181924, true }, - { 181934, true }, - { 181943, true }, - { 181953, true }, - { 181967, true }, - { 181982, true }, - { 182006, true }, - { 182025, true }, - { 182039, true }, - { 182054, true }, - { 182068, true }, - { 182089, true }, - { 182098, true }, - { 182110, true }, - { 182122, true }, - { 182136, true }, - { 182151, true }, - { 182167, true }, - { 182188, true }, - { 182204, true }, - { 182217, true }, + { 181905, true }, + { 181916, true }, + { 181938, true }, + { 181955, true }, + { 181964, true }, + { 181977, true }, + { 181987, true }, + { 182001, false }, + { 182013, true }, + { 182024, true }, + { 182034, true }, + { 182057, true }, + { 182067, true }, + { 182076, true }, + { 182086, true }, + { 182100, true }, + { 182115, true }, + { 182139, true }, + { 182158, true }, + { 182172, true }, + { 182187, true }, + { 182201, true }, + { 182222, true }, { 182231, true }, { 182243, true }, - { 182259, true }, - { 182271, true }, - { 182286, true }, - { 182299, true }, - { 182315, true }, - { 182325, true }, - { 182341, true }, - { 182353, true }, - { 182369, true }, - { 182397, true }, - { 182413, true }, - { 182426, true }, - { 182445, true }, - { 182462, true }, - { 182475, true }, - { 182492, true }, - { 182508, true }, - { 182527, true }, - { 182540, true }, - { 182554, true }, - { 182567, true }, - { 182580, true }, - { 182591, true }, - { 182605, true }, - { 182620, true }, - { 182628, true }, - { 182644, false }, - { 182657, true }, - { 182670, true }, - { 182690, true }, - { 182707, true }, - { 182721, true }, - { 182741, true }, - { 182757, false }, - { 182774, true }, - { 182793, true }, - { 182810, true }, - { 182821, true }, - { 182835, true }, - { 182856, true }, - { 182875, true }, - { 182893, true }, - { 182911, true }, - { 182924, true }, - { 182934, true }, - { 182952, true }, - { 182966, true }, - { 182979, true }, - { 182999, true }, + { 182255, true }, + { 182269, true }, + { 182284, true }, + { 182300, true }, + { 182321, true }, + { 182337, true }, + { 182350, true }, + { 182364, true }, + { 182376, true }, + { 182392, true }, + { 182404, true }, + { 182419, true }, + { 182432, true }, + { 182448, true }, + { 182458, true }, + { 182474, true }, + { 182486, true }, + { 182502, true }, + { 182530, true }, + { 182546, true }, + { 182559, true }, + { 182578, true }, + { 182595, true }, + { 182608, true }, + { 182625, true }, + { 182641, true }, + { 182660, true }, + { 182673, true }, + { 182687, true }, + { 182700, true }, + { 182713, true }, + { 182724, true }, + { 182738, true }, + { 182753, true }, + { 182761, true }, + { 182777, false }, + { 182790, true }, + { 182803, true }, + { 182823, true }, + { 182840, true }, + { 182854, true }, + { 182874, true }, + { 182890, false }, + { 182907, true }, + { 182926, true }, + { 182943, true }, + { 182954, true }, + { 182968, true }, + { 182989, true }, { 183008, true }, - { 183018, true }, - { 183039, false }, - { 183056, false }, - { 183079, true }, - { 183100, true }, - { 183109, true }, - { 183125, true }, - { 183143, true }, - { 183155, true }, - { 183168, true }, - { 183181, true }, - { 183197, true }, - { 183205, true }, - { 183220, true }, - { 183236, false }, - { 183248, true }, - { 183261, true }, - { 183271, true }, - { 183284, true }, - { 183298, true }, - { 183312, true }, - { 183327, true }, - { 183337, true }, - { 183356, true }, - { 183369, true }, - { 183384, true }, - { 183399, true }, - { 183418, true }, - { 183440, true }, - { 183458, true }, - { 183477, true }, - { 183491, true }, + { 183026, true }, + { 183044, true }, + { 183057, true }, + { 183067, true }, + { 183085, true }, + { 183099, true }, + { 183112, true }, + { 183132, true }, + { 183141, true }, + { 183151, true }, + { 183172, false }, + { 183189, false }, + { 183212, true }, + { 183233, true }, + { 183242, true }, + { 183258, true }, + { 183276, true }, + { 183288, true }, + { 183301, true }, + { 183314, true }, + { 183330, true }, + { 183338, true }, + { 183353, true }, + { 183369, false }, + { 183381, true }, + { 183394, true }, + { 183404, true }, + { 183417, true }, + { 183431, true }, + { 183445, true }, + { 183460, true }, + { 183470, true }, + { 183489, true }, { 183502, true }, - { 183516, true }, - { 183530, true }, - { 183543, true }, - { 183562, false }, - { 183584, true }, - { 183601, true }, + { 183517, true }, + { 183532, true }, + { 183551, true }, + { 183573, true }, + { 183591, true }, { 183610, true }, - { 183628, true }, - { 183647, true }, - { 183664, true }, - { 183677, true }, - { 183685, true }, - { 183696, true }, - { 183710, true }, - { 183722, false }, - { 183742, true }, - { 183759, true }, - { 183767, true }, - { 183778, false }, - { 183787, false }, - { 183803, true }, - { 183818, false }, - { 183836, true }, - { 183847, true }, - { 183860, true }, - { 183876, true }, - { 183886, true }, - { 183897, false }, - { 183912, true }, - { 183924, true }, - { 183937, true }, - { 183950, true }, - { 183961, true }, - { 183977, true }, - { 183991, true }, - { 184023, true }, - { 184036, true }, - { 184053, false }, + { 183624, true }, + { 183635, true }, + { 183649, true }, + { 183663, true }, + { 183676, true }, + { 183695, false }, + { 183717, true }, + { 183734, true }, + { 183743, true }, + { 183761, true }, + { 183780, true }, + { 183797, true }, + { 183810, true }, + { 183818, true }, + { 183829, true }, + { 183843, true }, + { 183855, false }, + { 183875, true }, + { 183892, true }, + { 183900, true }, + { 183911, false }, + { 183920, false }, + { 183936, true }, + { 183951, false }, + { 183969, true }, + { 183980, true }, + { 183993, true }, + { 184009, true }, + { 184019, true }, + { 184030, false }, + { 184045, true }, + { 184057, true }, { 184070, true }, - { 184077, true }, - { 184085, true }, + { 184083, true }, { 184094, true }, - { 184106, true }, - { 184129, true }, - { 184143, true }, - { 184174, true }, - { 184188, true }, - { 184205, true }, - { 184216, true }, - { 184230, true }, - { 184242, true }, - { 184258, true }, - { 184272, true }, - { 184279, true }, - { 184289, true }, - { 184319, true }, - { 184330, true }, - { 184341, true }, - { 184356, true }, - { 184368, true }, - { 184376, true }, - { 184389, true }, - { 184401, true }, + { 184110, true }, + { 184124, true }, + { 184156, true }, + { 184169, true }, + { 184186, false }, + { 184203, true }, + { 184210, true }, + { 184218, true }, + { 184227, true }, + { 184239, true }, + { 184262, true }, + { 184276, true }, + { 184307, true }, + { 184321, true }, + { 184338, true }, + { 184349, true }, + { 184363, true }, + { 184375, true }, + { 184391, true }, + { 184405, true }, + { 184412, true }, { 184422, true }, - { 184437, false }, - { 184447, true }, - { 184459, true }, - { 184471, true }, - { 184483, true }, - { 184498, true }, - { 184527, true }, - { 184541, true }, - { 184549, true }, - { 184561, true }, - { 184569, true }, - { 184578, true }, - { 184591, true }, - { 184599, true }, - { 184609, true }, - { 184620, true }, + { 184452, true }, + { 184463, true }, + { 184474, true }, + { 184489, true }, + { 184501, true }, + { 184509, true }, + { 184522, true }, + { 184534, true }, + { 184555, true }, + { 184570, false }, + { 184580, true }, + { 184592, true }, + { 184604, true }, + { 184616, true }, { 184631, true }, - { 184638, true }, - { 184647, true }, - { 184657, true }, - { 184677, true }, - { 184689, true }, - { 184701, true }, + { 184660, true }, + { 184674, true }, + { 184682, true }, + { 184694, true }, + { 184702, true }, { 184711, true }, - { 184720, true }, - { 184737, true }, - { 184760, true }, - { 184779, true }, - { 184791, true }, - { 184806, false }, - { 184815, true }, - { 184831, true }, - { 184854, false }, - { 184875, true }, - { 184887, true }, - { 184900, true }, - { 184909, true }, - { 184923, true }, - { 184940, true }, - { 184956, true }, - { 184974, true }, - { 184992, true }, - { 185006, true }, + { 184724, true }, + { 184732, true }, + { 184742, true }, + { 184753, true }, + { 184764, true }, + { 184771, true }, + { 184780, true }, + { 184790, true }, + { 184805, true }, + { 184825, true }, + { 184837, true }, + { 184849, true }, + { 184859, true }, + { 184868, true }, + { 184885, true }, + { 184908, true }, + { 184927, true }, + { 184939, true }, + { 184954, false }, + { 184963, true }, + { 184979, true }, + { 185002, false }, { 185023, true }, { 185035, true }, { 185048, true }, - { 185062, true }, - { 185080, true }, - { 185094, true }, - { 185106, true }, + { 185057, true }, + { 185071, true }, + { 185088, true }, + { 185104, true }, { 185122, true }, - { 185138, false }, - { 185156, true }, - { 185173, true }, - { 185195, true }, - { 185206, true }, - { 185217, true }, - { 185231, true }, - { 185243, true }, - { 185259, true }, + { 185140, true }, + { 185154, true }, + { 185171, true }, + { 185183, true }, + { 185196, true }, + { 185210, true }, + { 185228, true }, + { 185242, true }, + { 185254, true }, { 185270, true }, - { 185281, true }, - { 185293, true }, - { 185307, true }, - { 185318, true }, - { 185328, true }, - { 185340, true }, - { 185369, true }, - { 185378, true }, - { 185393, true }, - { 185409, true }, - { 185435, true }, - { 185452, true }, - { 185471, true }, + { 185286, false }, + { 185304, true }, + { 185321, true }, + { 185343, true }, + { 185354, true }, + { 185365, true }, + { 185379, true }, + { 185391, true }, + { 185407, true }, + { 185418, true }, + { 185429, true }, + { 185441, true }, + { 185455, true }, + { 185466, true }, + { 185476, true }, { 185488, true }, - { 185504, true }, - { 185515, true }, - { 185523, true }, - { 185535, true }, - { 185552, true }, - { 185565, true }, - { 185580, true }, - { 185592, true }, - { 185605, true }, + { 185517, true }, + { 185526, true }, + { 185541, true }, + { 185557, true }, + { 185583, true }, + { 185600, true }, { 185619, true }, - { 185631, true }, - { 185643, true }, - { 185657, true }, - { 185674, true }, - { 185687, true }, - { 185702, true }, - { 185715, true }, + { 185636, true }, + { 185652, true }, + { 185663, true }, + { 185671, true }, + { 185683, true }, + { 185700, true }, + { 185713, true }, { 185728, true }, { 185740, true }, - { 185751, true }, - { 185769, true }, - { 185796, true }, - { 185815, true }, - { 185841, true }, - { 185858, true }, - { 185886, true }, - { 185908, true }, - { 185929, true }, - { 185940, true }, - { 185950, true }, + { 185753, true }, + { 185767, true }, + { 185779, true }, + { 185791, true }, + { 185805, true }, + { 185822, true }, + { 185835, true }, + { 185850, true }, + { 185863, true }, + { 185876, true }, + { 185888, true }, + { 185899, true }, + { 185917, true }, + { 185944, true }, { 185963, true }, - { 185977, true }, - { 185994, true }, - { 186011, true }, - { 186022, true }, - { 186043, true }, - { 186065, true }, - { 186087, true }, - { 186099, true }, - { 186124, true }, - { 186132, true }, - { 186153, true }, - { 186174, true }, - { 186195, true }, + { 185989, true }, + { 186006, true }, + { 186034, true }, + { 186056, true }, + { 186077, true }, + { 186088, true }, + { 186098, true }, + { 186111, true }, + { 186125, true }, + { 186142, true }, + { 186159, true }, + { 186170, true }, + { 186191, true }, { 186213, true }, - { 186229, true }, - { 186241, true }, - { 186256, true }, - { 186268, true }, - { 186286, true }, - { 186299, true }, - { 186309, true }, - { 186321, true }, - { 186335, true }, - { 186351, true }, - { 186377, false }, - { 186406, true }, - { 186417, true }, - { 186441, true }, - { 186449, true }, - { 186464, true }, - { 186479, true }, - { 186508, true }, - { 186521, true }, - { 186539, true }, - { 186558, true }, - { 186569, true }, - { 186580, true }, + { 186235, true }, + { 186247, true }, + { 186272, true }, + { 186280, true }, + { 186301, true }, + { 186322, true }, + { 186343, true }, + { 186361, true }, + { 186377, true }, + { 186389, true }, + { 186404, true }, + { 186416, true }, + { 186434, true }, + { 186447, true }, + { 186457, true }, + { 186469, true }, + { 186483, true }, + { 186499, true }, + { 186525, false }, + { 186554, true }, + { 186565, true }, { 186589, true }, - { 186603, true }, - { 186619, true }, - { 186642, true }, + { 186597, true }, + { 186612, true }, + { 186627, true }, + { 186656, true }, { 186669, true }, { 186687, true }, - { 186714, true }, - { 186740, true }, - { 186757, false }, - { 186768, true }, - { 186778, true }, - { 186793, true }, - { 186804, true }, - { 186827, true }, - { 186845, true }, - { 186858, true }, - { 186869, true }, - { 186884, true }, - { 186903, true }, - { 186925, true }, - { 186944, true }, - { 186958, true }, - { 186970, true }, - { 186985, true }, - { 187004, false }, - { 187024, true }, - { 187034, true }, - { 187048, true }, - { 187066, true }, - { 187080, true }, - { 187094, true }, - { 187103, true }, - { 187116, true }, - { 187128, false }, - { 187142, true }, - { 187154, true }, - { 187167, true }, - { 187177, true }, - { 187189, true }, - { 187197, true }, - { 187211, true }, - { 187224, true }, - { 187241, true }, - { 187255, true }, - { 187276, true }, - { 187288, true }, - { 187303, true }, - { 187321, true }, + { 186706, true }, + { 186717, true }, + { 186728, true }, + { 186737, true }, + { 186751, true }, + { 186767, true }, + { 186790, true }, + { 186817, true }, + { 186835, true }, + { 186862, true }, + { 186888, true }, + { 186905, false }, + { 186916, true }, + { 186926, true }, + { 186941, true }, + { 186952, true }, + { 186975, true }, + { 186993, true }, + { 187006, true }, + { 187017, true }, + { 187032, true }, + { 187051, true }, + { 187073, true }, + { 187092, true }, + { 187106, true }, + { 187118, true }, + { 187133, true }, + { 187152, false }, + { 187172, true }, + { 187182, true }, + { 187196, true }, + { 187214, true }, + { 187228, true }, + { 187242, true }, + { 187251, true }, + { 187264, true }, + { 187276, false }, + { 187290, true }, + { 187302, true }, + { 187315, true }, + { 187325, true }, { 187337, true }, - { 187349, true }, - { 187361, true }, - { 187373, true }, - { 187385, true }, - { 187397, true }, - { 187409, true }, - { 187421, true }, - { 187433, true }, - { 187449, false }, + { 187345, true }, + { 187359, true }, + { 187372, true }, + { 187389, true }, + { 187403, true }, + { 187424, true }, + { 187436, true }, + { 187451, true }, { 187469, true }, - { 187482, true }, - { 187491, true }, - { 187505, true }, - { 187527, true }, - { 187541, true }, - { 187555, true }, - { 187571, true }, - { 187584, true }, - { 187596, true }, - { 187609, true }, - { 187632, true }, - { 187643, true }, - { 187656, true }, - { 187665, true }, - { 187673, true }, - { 187688, true }, - { 187698, true }, - { 187716, true }, - { 187730, true }, + { 187485, true }, + { 187497, true }, + { 187509, true }, + { 187521, true }, + { 187533, true }, + { 187545, true }, + { 187557, true }, + { 187569, true }, + { 187581, true }, + { 187597, false }, + { 187617, true }, + { 187630, true }, + { 187639, true }, + { 187653, true }, + { 187675, true }, + { 187689, true }, + { 187703, true }, + { 187719, true }, + { 187732, true }, { 187744, true }, - { 187754, true }, - { 187765, true }, - { 187774, true }, - { 187787, false }, - { 187803, true }, - { 187814, true }, - { 187829, true }, - { 187838, true }, - { 187850, true }, - { 187866, true }, + { 187757, true }, + { 187780, true }, + { 187791, true }, + { 187804, true }, + { 187813, true }, + { 187821, true }, + { 187836, true }, + { 187846, true }, + { 187864, true }, { 187878, true }, - { 187889, true }, - { 187913, true }, - { 187928, true }, + { 187888, true }, + { 187899, true }, + { 187908, true }, + { 187921, false }, { 187937, true }, - { 187952, true }, - { 187968, true }, - { 187979, true }, - { 187994, true }, - { 188009, true }, - { 188021, true }, - { 188039, true }, - { 188061, true }, - { 188080, true }, - { 188099, true }, - { 188116, true }, - { 188138, true }, - { 188157, true }, - { 188174, true }, - { 188192, true }, - { 188209, true }, - { 188227, true }, - { 188249, true }, - { 188266, true }, - { 188284, true }, - { 188301, true }, - { 188315, true }, - { 188332, true }, - { 188348, true }, - { 188365, true }, - { 188382, true }, - { 188403, true }, + { 187948, true }, + { 187963, true }, + { 187972, true }, + { 187984, true }, + { 188000, true }, + { 188012, true }, + { 188023, true }, + { 188047, true }, + { 188062, true }, + { 188071, true }, + { 188086, true }, + { 188102, true }, + { 188113, true }, + { 188128, true }, + { 188143, true }, + { 188155, true }, + { 188173, true }, + { 188195, true }, + { 188214, true }, + { 188233, true }, + { 188250, true }, + { 188272, true }, + { 188291, true }, + { 188308, true }, + { 188326, true }, + { 188343, true }, + { 188361, true }, + { 188383, true }, + { 188400, true }, { 188418, true }, - { 188443, true }, - { 188467, true }, - { 188476, true }, - { 188493, true }, - { 188506, true }, - { 188517, true }, - { 188530, true }, - { 188543, true }, - { 188581, true }, - { 188593, true }, - { 188603, true }, - { 188618, true }, - { 188629, true }, - { 188649, true }, - { 188671, true }, - { 188691, true }, - { 188719, true }, - { 188728, true }, + { 188435, true }, + { 188449, true }, + { 188466, true }, + { 188482, true }, + { 188499, true }, + { 188516, true }, + { 188537, true }, + { 188552, true }, + { 188577, true }, + { 188601, true }, + { 188610, true }, + { 188627, true }, + { 188640, true }, + { 188651, true }, + { 188664, true }, + { 188677, true }, + { 188715, true }, + { 188727, true }, { 188737, true }, - { 188762, true }, - { 188774, true }, - { 188792, true }, - { 188810, true }, - { 188829, true }, - { 188845, true }, - { 188856, true }, - { 188872, true }, - { 188892, true }, - { 188915, true }, - { 188936, true }, - { 188949, true }, - { 188967, true }, - { 188986, true }, - { 188995, false }, - { 189009, true }, - { 189020, true }, - { 189033, true }, + { 188752, true }, + { 188763, true }, + { 188783, true }, + { 188805, true }, + { 188825, true }, + { 188853, true }, + { 188862, true }, + { 188871, true }, + { 188896, true }, + { 188908, true }, + { 188926, true }, + { 188944, true }, + { 188963, true }, + { 188979, true }, + { 188990, true }, + { 189006, true }, + { 189026, true }, { 189047, true }, - { 189062, true }, - { 189073, true }, - { 189089, true }, - { 189102, true }, - { 189111, true }, - { 189125, true }, - { 189140, true }, - { 189153, true }, - { 189167, true }, - { 189175, true }, - { 189186, true }, - { 189194, true }, - { 189207, true }, - { 189219, true }, - { 189232, true }, - { 189242, true }, - { 189265, true }, - { 189279, true }, - { 189293, true }, - { 189307, true }, - { 189319, true }, - { 189328, true }, + { 189060, true }, + { 189078, true }, + { 189097, true }, + { 189106, false }, + { 189120, true }, + { 189131, true }, + { 189144, true }, + { 189158, true }, + { 189173, true }, + { 189184, true }, + { 189200, true }, + { 189213, true }, + { 189222, true }, + { 189236, true }, + { 189251, true }, + { 189264, true }, + { 189278, true }, + { 189286, true }, + { 189297, true }, + { 189305, true }, + { 189318, true }, + { 189330, true }, { 189343, true }, - { 189354, true }, - { 189367, true }, - { 189378, true }, - { 189391, true }, - { 189409, true }, - { 189423, true }, - { 189442, true }, - { 189458, true }, - { 189476, true }, + { 189353, true }, + { 189376, true }, + { 189390, true }, + { 189404, true }, + { 189418, true }, + { 189430, true }, + { 189439, true }, + { 189454, true }, + { 189465, true }, + { 189478, true }, { 189489, true }, - { 189501, true }, - { 189516, true }, + { 189502, true }, + { 189520, true }, { 189534, true }, - { 189550, true }, - { 189562, true }, - { 189575, true }, + { 189553, true }, + { 189569, true }, { 189587, true }, - { 189602, true }, + { 189600, true }, { 189612, true }, - { 189622, true }, - { 189636, true }, - { 189651, true }, - { 189668, true }, - { 189679, true }, - { 189693, true }, - { 189704, true }, - { 189718, true }, - { 189730, true }, - { 189741, true }, - { 189755, true }, - { 189769, true }, - { 189781, true }, - { 189808, true }, - { 189822, true }, - { 189830, true }, + { 189627, true }, + { 189645, true }, + { 189661, true }, + { 189673, true }, + { 189686, true }, + { 189698, true }, + { 189713, true }, + { 189723, true }, + { 189733, true }, + { 189747, true }, + { 189762, true }, + { 189779, true }, + { 189790, true }, + { 189804, true }, + { 189815, true }, + { 189829, true }, + { 189841, true }, { 189852, true }, { 189866, true }, { 189880, true }, - { 189894, true }, - { 189905, true }, + { 189892, true }, { 189919, true }, - { 189938, true }, - { 189957, true }, - { 189976, true }, - { 189995, true }, - { 190014, true }, - { 190034, true }, - { 190054, true }, - { 190074, true }, - { 190094, true }, - { 190112, true }, - { 190130, true }, - { 190149, true }, - { 190168, true }, - { 190187, true }, - { 190206, true }, - { 190220, true }, - { 190233, true }, - { 190245, true }, - { 190257, true }, - { 190268, true }, - { 190281, false }, - { 190303, true }, - { 190318, true }, - { 190330, true }, - { 190341, true }, - { 190355, true }, - { 190380, true }, - { 190389, true }, - { 190412, true }, - { 190424, true }, - { 190438, true }, - { 190450, true }, - { 190467, true }, - { 190480, true }, - { 190495, true }, - { 190511, true }, - { 190529, true }, - { 190542, true }, - { 190555, true }, - { 190579, true }, - { 190602, true }, - { 190628, true }, + { 189933, true }, + { 189941, true }, + { 189963, true }, + { 189977, true }, + { 189991, true }, + { 190005, true }, + { 190016, true }, + { 190030, true }, + { 190049, true }, + { 190068, true }, + { 190087, true }, + { 190106, true }, + { 190125, true }, + { 190145, true }, + { 190165, true }, + { 190185, true }, + { 190205, true }, + { 190223, true }, + { 190241, true }, + { 190260, true }, + { 190279, true }, + { 190298, true }, + { 190317, true }, + { 190331, true }, + { 190344, true }, + { 190356, true }, + { 190368, true }, + { 190379, true }, + { 190392, false }, + { 190414, true }, + { 190429, true }, + { 190441, true }, + { 190452, true }, + { 190466, true }, + { 190491, true }, + { 190500, true }, + { 190523, true }, + { 190535, true }, + { 190549, true }, + { 190561, true }, + { 190578, true }, + { 190591, true }, + { 190606, true }, + { 190622, true }, { 190640, true }, - { 190654, true }, - { 190669, true }, - { 190685, true }, - { 190698, true }, - { 190711, true }, - { 190722, true }, - { 190732, true }, - { 190746, true }, - { 190761, true }, - { 190770, true }, - { 190789, true }, - { 190802, true }, - { 190818, true }, - { 190837, true }, - { 190851, true }, - { 190866, true }, - { 190877, true }, - { 190889, true }, - { 190899, true }, - { 190911, true }, - { 190926, true }, - { 190943, true }, - { 190967, true }, - { 190998, true }, - { 191013, true }, - { 191031, true }, - { 191052, true }, - { 191066, true }, - { 191083, true }, - { 191101, true }, - { 191121, true }, - { 191131, true }, - { 191143, true }, - { 191153, true }, - { 191164, true }, - { 191181, true }, - { 191204, true }, - { 191217, true }, - { 191233, true }, - { 191248, true }, - { 191261, true }, - { 191274, true }, - { 191282, true }, - { 191300, true }, - { 191331, true }, - { 191349, true }, - { 191360, true }, - { 191375, true }, - { 191392, true }, - { 191407, true }, - { 191420, true }, - { 191432, true }, - { 191447, true }, - { 191463, true }, - { 191483, true }, - { 191498, true }, - { 191514, true }, - { 191527, true }, - { 191541, true }, - { 191553, true }, - { 191561, true }, - { 191577, true }, - { 191590, true }, - { 191611, true }, - { 191630, true }, - { 191640, true }, - { 191654, true }, + { 190653, true }, + { 190666, true }, + { 190690, true }, + { 190713, true }, + { 190739, true }, + { 190751, true }, + { 190765, true }, + { 190780, true }, + { 190796, true }, + { 190809, true }, + { 190822, true }, + { 190833, true }, + { 190843, true }, + { 190857, true }, + { 190872, true }, + { 190881, true }, + { 190900, true }, + { 190913, true }, + { 190929, true }, + { 190948, true }, + { 190962, true }, + { 190977, true }, + { 190988, true }, + { 191000, true }, + { 191010, true }, + { 191022, true }, + { 191037, true }, + { 191054, true }, + { 191078, true }, + { 191109, true }, + { 191124, true }, + { 191142, true }, + { 191163, true }, + { 191177, true }, + { 191194, true }, + { 191212, true }, + { 191232, true }, + { 191242, true }, + { 191254, true }, + { 191264, true }, + { 191275, true }, + { 191292, true }, + { 191315, true }, + { 191328, true }, + { 191344, true }, + { 191359, true }, + { 191372, true }, + { 191385, true }, + { 191393, true }, + { 191411, true }, + { 191442, true }, + { 191460, true }, + { 191471, true }, + { 191486, true }, + { 191503, true }, + { 191518, true }, + { 191531, true }, + { 191543, true }, + { 191558, true }, + { 191574, true }, + { 191594, true }, + { 191609, true }, + { 191625, true }, + { 191638, true }, + { 191652, true }, { 191664, true }, - { 191684, true }, - { 191693, true }, - { 191702, true }, - { 191716, true }, - { 191730, true }, - { 191738, true }, + { 191672, true }, + { 191688, true }, + { 191701, true }, + { 191722, true }, + { 191741, true }, { 191751, true }, - { 191761, true }, - { 191771, true }, - { 191782, true }, - { 191791, true }, - { 191799, true }, - { 191811, true }, - { 191824, true }, - { 191843, true }, - { 191853, true }, + { 191765, true }, + { 191775, true }, + { 191795, true }, + { 191804, true }, + { 191813, true }, + { 191827, true }, + { 191841, true }, + { 191849, true }, { 191862, true }, - { 191878, true }, - { 191889, true }, + { 191872, true }, + { 191882, true }, + { 191893, true }, { 191902, true }, + { 191910, true }, { 191922, true }, - { 191938, true }, - { 191949, true }, - { 191961, true }, + { 191935, true }, + { 191954, true }, + { 191964, true }, { 191973, true }, - { 191996, true }, - { 192005, true }, - { 192025, true }, + { 191989, true }, + { 192000, true }, + { 192013, true }, { 192033, true }, - { 192043, true }, - { 192064, true }, - { 192076, true }, - { 192085, true }, - { 192093, true }, - { 192103, true }, - { 192111, true }, - { 192120, true }, - { 192131, true }, - { 192142, true }, - { 192149, true }, - { 192159, true }, - { 192170, true }, - { 192177, true }, + { 192049, true }, + { 192060, true }, + { 192072, true }, + { 192084, true }, + { 192107, true }, + { 192116, true }, + { 192136, true }, + { 192144, true }, + { 192154, true }, + { 192175, true }, { 192187, true }, { 192196, true }, - { 192207, true }, - { 192219, true }, - { 192227, true }, - { 192233, true }, - { 192241, true }, - { 192249, true }, - { 192263, true }, - { 192273, true }, - { 192289, true }, - { 192301, true }, - { 192331, true }, - { 192351, true }, - { 192365, false }, - { 192383, false }, - { 192399, true }, - { 192415, true }, - { 192430, true }, - { 192450, true }, - { 192466, true }, - { 192481, true }, - { 192502, true }, - { 192516, true }, - { 192535, true }, - { 192546, true }, - { 192556, true }, - { 192574, true }, - { 192585, true }, - { 192599, true }, - { 192611, true }, - { 192625, true }, - { 192639, true }, - { 192654, true }, - { 192665, true }, - { 192678, true }, - { 192698, true }, - { 192714, true }, - { 192727, true }, - { 192747, false }, - { 192763, true }, - { 192777, true }, - { 192796, true }, - { 192811, true }, - { 192826, true }, - { 192841, true }, - { 192857, true }, - { 192872, true }, - { 192898, true }, - { 192915, true }, - { 192928, true }, - { 192944, true }, + { 192204, true }, + { 192214, true }, + { 192222, true }, + { 192231, true }, + { 192242, true }, + { 192253, true }, + { 192260, true }, + { 192270, true }, + { 192281, true }, + { 192288, true }, + { 192298, true }, + { 192307, true }, + { 192318, true }, + { 192330, true }, + { 192338, true }, + { 192344, true }, + { 192352, true }, + { 192360, true }, + { 192374, true }, + { 192384, true }, + { 192400, true }, + { 192412, true }, + { 192442, true }, + { 192462, true }, + { 192476, false }, + { 192494, false }, + { 192510, true }, + { 192526, true }, + { 192541, true }, + { 192561, true }, + { 192577, true }, + { 192592, true }, + { 192613, true }, + { 192627, true }, + { 192646, true }, + { 192657, true }, + { 192667, true }, + { 192685, true }, + { 192696, true }, + { 192710, true }, + { 192722, true }, + { 192736, true }, + { 192750, true }, + { 192765, true }, + { 192776, true }, + { 192789, true }, + { 192809, true }, + { 192825, true }, + { 192838, true }, + { 192858, false }, + { 192874, true }, + { 192888, true }, + { 192907, true }, + { 192922, true }, + { 192937, true }, { 192952, true }, - { 192960, true }, - { 192971, true }, - { 192978, true }, - { 192990, true }, - { 193002, true }, - { 193017, true }, - { 193027, true }, + { 192968, true }, + { 192983, true }, + { 193009, true }, + { 193026, true }, { 193039, true }, - { 193050, true }, - { 193067, true }, - { 193078, true }, - { 193098, true }, - { 193118, true }, - { 193126, true }, - { 193134, true }, - { 193149, true }, - { 193165, true }, - { 193181, false }, - { 193199, true }, - { 193212, true }, - { 193223, true }, - { 193233, true }, - { 193247, true }, - { 193259, true }, - { 193270, true }, - { 193279, true }, + { 193055, true }, + { 193063, true }, + { 193071, true }, + { 193082, true }, + { 193089, true }, + { 193101, true }, + { 193113, true }, + { 193128, true }, + { 193138, true }, + { 193150, true }, + { 193161, true }, + { 193178, true }, + { 193189, true }, + { 193209, true }, + { 193229, true }, + { 193237, true }, + { 193245, true }, + { 193260, true }, + { 193276, true }, { 193292, false }, - { 193302, true }, - { 193322, true }, - { 193339, true }, - { 193350, true }, - { 193366, true }, - { 193378, true }, - { 193388, true }, + { 193310, true }, + { 193323, true }, + { 193334, true }, + { 193344, true }, + { 193358, true }, + { 193370, true }, + { 193381, true }, + { 193390, true }, { 193403, false }, - { 193418, true }, + { 193413, true }, { 193433, true }, - { 193442, true }, - { 193457, true }, - { 193470, true }, - { 193486, true }, - { 193498, true }, - { 193509, true }, - { 193523, true }, - { 193534, true }, - { 193556, true }, - { 193577, true }, - { 193590, true }, + { 193450, true }, + { 193461, true }, + { 193477, true }, + { 193489, true }, + { 193499, true }, + { 193514, false }, + { 193529, true }, + { 193544, true }, + { 193553, true }, + { 193568, true }, + { 193581, true }, + { 193597, true }, { 193609, true }, - { 193621, true }, + { 193620, true }, { 193634, true }, - { 193643, true }, - { 193658, true }, - { 193672, true }, - { 193684, true }, + { 193645, true }, + { 193667, true }, + { 193688, true }, { 193701, true }, - { 193725, true }, - { 193746, true }, - { 193759, true }, - { 193777, true }, - { 193798, true }, - { 193815, true }, - { 193832, true }, - { 193853, true }, - { 193865, true }, - { 193879, true }, - { 193897, true }, - { 193910, true }, - { 193927, true }, - { 193946, true }, - { 193953, true }, - { 193965, true }, - { 193975, true }, - { 193989, true }, - { 194003, true }, - { 194016, true }, - { 194029, true }, - { 194042, true }, - { 194059, true }, - { 194074, true }, - { 194088, true }, + { 193720, true }, + { 193732, true }, + { 193745, true }, + { 193754, true }, + { 193769, true }, + { 193783, true }, + { 193795, true }, + { 193812, true }, + { 193836, true }, + { 193857, true }, + { 193870, true }, + { 193888, true }, + { 193909, true }, + { 193926, true }, + { 193943, true }, + { 193964, true }, + { 193976, true }, + { 193990, true }, + { 194008, true }, + { 194021, true }, + { 194038, true }, + { 194057, true }, + { 194064, true }, + { 194076, true }, + { 194086, true }, { 194100, true }, - { 194113, true }, - { 194133, true }, + { 194114, true }, + { 194127, true }, + { 194140, true }, { 194153, true }, - { 194168, true }, - { 194183, true }, - { 194198, true }, - { 194217, true }, - { 194236, true }, - { 194255, true }, - { 194270, true }, - { 194281, true }, - { 194294, false }, - { 194307, true }, - { 194321, true }, - { 194333, true }, - { 194348, false }, - { 194358, true }, - { 194370, true }, - { 194384, true }, - { 194395, true }, - { 194410, true }, - { 194426, true }, - { 194439, true }, - { 194452, true }, - { 194472, true }, + { 194170, true }, + { 194185, true }, + { 194199, true }, + { 194211, true }, + { 194224, true }, + { 194244, true }, + { 194264, true }, + { 194279, true }, + { 194294, true }, + { 194309, true }, + { 194328, true }, + { 194347, true }, + { 194366, true }, + { 194381, true }, + { 194392, true }, + { 194405, false }, + { 194418, true }, + { 194432, true }, + { 194444, true }, + { 194459, false }, + { 194469, true }, { 194481, true }, - { 194491, true }, - { 194507, true }, - { 194520, true }, + { 194495, true }, + { 194506, true }, + { 194521, true }, { 194537, true }, - { 194552, true }, - { 194561, true }, - { 194575, true }, - { 194585, true }, - { 194595, true }, - { 194608, true }, - { 194617, true }, - { 194630, true }, - { 194638, false }, - { 194651, true }, - { 194664, true }, - { 194678, true }, - { 194707, true }, - { 194725, true }, - { 194743, true }, - { 194761, true }, - { 194792, true }, - { 194822, true }, - { 194844, true }, + { 194550, true }, + { 194563, true }, + { 194583, true }, + { 194592, true }, + { 194602, true }, + { 194618, true }, + { 194633, true }, + { 194642, true }, + { 194656, true }, + { 194666, true }, + { 194676, true }, + { 194689, true }, + { 194698, true }, + { 194711, true }, + { 194729, true }, + { 194737, false }, + { 194750, true }, + { 194763, true }, + { 194777, true }, + { 194806, true }, + { 194824, true }, + { 194842, true }, { 194860, true }, - { 194871, false }, - { 194884, true }, - { 194896, true }, - { 194912, true }, - { 194927, true }, - { 194944, true }, - { 194959, false }, - { 194978, true }, - { 194997, true }, - { 195015, true }, + { 194891, true }, + { 194921, true }, + { 194943, true }, + { 194959, true }, + { 194970, false }, + { 194983, true }, + { 194995, true }, + { 195011, true }, { 195026, true }, - { 195036, true }, - { 195046, true }, - { 195056, true }, - { 195071, true }, - { 195085, true }, + { 195043, true }, + { 195058, false }, + { 195077, true }, { 195096, true }, - { 195111, true }, - { 195121, true }, - { 195131, true }, - { 195143, true }, - { 195159, true }, + { 195114, true }, + { 195125, true }, + { 195135, true }, + { 195145, true }, + { 195155, true }, { 195170, true }, - { 195187, true }, + { 195184, true }, { 195195, true }, - { 195208, true }, - { 195216, true }, - { 195229, true }, - { 195243, true }, - { 195253, true }, - { 195264, true }, - { 195274, false }, - { 195289, true }, - { 195304, true }, - { 195321, true }, - { 195338, true }, - { 195346, true }, - { 195362, true }, - { 195377, true }, - { 195387, true }, - { 195400, true }, - { 195416, true }, - { 195429, true }, - { 195439, true }, - { 195449, true }, - { 195466, true }, - { 195478, true }, - { 195492, true }, - { 195506, true }, - { 195517, true }, - { 195525, true }, - { 195533, true }, - { 195550, true }, - { 195563, true }, - { 195572, true }, - { 195584, true }, - { 195595, true }, + { 195210, true }, + { 195220, true }, + { 195230, true }, + { 195242, true }, + { 195258, true }, + { 195269, true }, + { 195286, true }, + { 195294, true }, + { 195307, true }, + { 195315, true }, + { 195328, true }, + { 195342, true }, + { 195352, true }, + { 195363, true }, + { 195373, false }, + { 195388, true }, + { 195403, true }, + { 195420, true }, + { 195437, true }, + { 195445, true }, + { 195461, true }, + { 195476, true }, + { 195486, true }, + { 195499, true }, + { 195515, true }, + { 195528, true }, + { 195538, true }, + { 195548, true }, + { 195565, true }, + { 195577, true }, + { 195591, true }, { 195605, true }, - { 195629, true }, - { 195643, true }, + { 195616, true }, + { 195624, true }, + { 195641, true }, { 195654, true }, - { 195672, true }, - { 195681, true }, - { 195695, true }, - { 195706, true }, - { 195717, true }, - { 195726, true }, - { 195735, true }, - { 195744, true }, - { 195754, true }, - { 195768, true }, - { 195778, true }, - { 195788, true }, - { 195804, true }, - { 195812, true }, - { 195823, true }, + { 195663, true }, + { 195675, true }, + { 195686, true }, + { 195696, true }, + { 195720, true }, + { 195734, true }, + { 195745, true }, + { 195763, true }, + { 195772, true }, + { 195786, true }, + { 195797, true }, + { 195808, true }, + { 195817, true }, + { 195826, true }, { 195835, true }, { 195845, true }, - { 195854, true }, - { 195862, true }, - { 195870, true }, - { 195878, true }, - { 195886, true }, - { 195899, true }, - { 195910, false }, - { 195918, true }, + { 195859, true }, + { 195869, true }, + { 195879, true }, + { 195895, true }, + { 195903, true }, + { 195914, true }, + { 195926, true }, { 195936, true }, - { 195943, true }, - { 195954, false }, - { 195974, true }, - { 195981, true }, - { 195996, true }, - { 196007, false }, - { 196023, true }, - { 196039, true }, - { 196055, true }, - { 196070, true }, - { 196083, true }, - { 196095, true }, - { 196115, true }, - { 196126, true }, - { 196140, true }, - { 196152, true }, - { 196168, true }, - { 196187, true }, - { 196202, true }, + { 195945, true }, + { 195953, true }, + { 195961, true }, + { 195969, true }, + { 195977, true }, + { 195990, true }, + { 196001, false }, + { 196009, true }, + { 196027, true }, + { 196034, true }, + { 196045, false }, + { 196065, true }, + { 196072, true }, + { 196087, true }, + { 196098, false }, + { 196114, true }, + { 196130, true }, + { 196146, true }, + { 196161, true }, + { 196174, true }, + { 196186, true }, + { 196206, true }, { 196217, true }, - { 196227, true }, - { 196240, true }, - { 196258, true }, - { 196272, true }, - { 196289, true }, + { 196231, true }, + { 196243, true }, + { 196259, true }, + { 196278, true }, + { 196293, true }, { 196308, true }, - { 196324, true }, - { 196336, true }, - { 196355, true }, - { 196378, true }, - { 196390, true }, - { 196402, true }, + { 196318, true }, + { 196331, true }, + { 196349, true }, + { 196363, true }, + { 196380, true }, + { 196399, true }, { 196415, true }, - { 196437, true }, - { 196451, true }, - { 196462, true }, - { 196472, true }, - { 196484, true }, - { 196495, true }, - { 196512, true }, - { 196527, true }, - { 196536, true }, - { 196545, true }, - { 196560, true }, - { 196576, true }, - { 196584, true }, - { 196601, true }, - { 196620, true }, - { 196634, true }, - { 196653, true }, + { 196427, true }, + { 196446, true }, + { 196469, true }, + { 196481, true }, + { 196493, true }, + { 196506, true }, + { 196528, true }, + { 196542, true }, + { 196553, true }, + { 196563, true }, + { 196575, true }, + { 196586, true }, + { 196603, true }, + { 196618, true }, + { 196627, true }, + { 196636, true }, + { 196651, true }, + { 196667, true }, { 196675, true }, - { 196691, true }, - { 196705, true }, - { 196713, true }, - { 196730, true }, - { 196747, true }, - { 196761, true }, - { 196775, true }, - { 196794, true }, - { 196810, true }, - { 196834, true }, - { 196856, false }, - { 196870, true }, - { 196883, false }, - { 196900, true }, - { 196915, true }, - { 196934, true }, - { 196945, true }, - { 196956, true }, - { 196970, true }, - { 196984, true }, - { 196999, true }, - { 197020, true }, + { 196692, true }, + { 196711, true }, + { 196725, true }, + { 196744, true }, + { 196766, true }, + { 196782, true }, + { 196796, true }, + { 196804, true }, + { 196821, true }, + { 196838, true }, + { 196852, true }, + { 196866, true }, + { 196885, true }, + { 196901, true }, + { 196925, true }, + { 196947, false }, + { 196961, true }, + { 196974, false }, + { 196991, true }, + { 197006, true }, + { 197025, true }, { 197036, true }, - { 197054, true }, - { 197072, true }, - { 197085, true }, - { 197113, true }, - { 197125, true }, - { 197141, true }, - { 197159, true }, - { 197167, true }, - { 197180, true }, - { 197191, true }, - { 197199, true }, - { 197213, true }, - { 197245, true }, - { 197259, true }, - { 197268, true }, - { 197275, true }, - { 197289, false }, - { 197299, false }, - { 197319, true }, - { 197329, true }, - { 197340, true }, - { 197347, true }, - { 197357, true }, - { 197368, true }, - { 197379, true }, - { 197392, true }, - { 197405, true }, - { 197415, false }, - { 197434, true }, - { 197448, false }, - { 197460, false }, - { 197473, true }, - { 197484, false }, - { 197496, false }, - { 197517, true }, - { 197539, true }, - { 197552, true }, - { 197568, true }, - { 197586, true }, - { 197595, true }, - { 197607, true }, - { 197623, true }, - { 197634, false }, + { 197047, true }, + { 197061, true }, + { 197075, true }, + { 197090, true }, + { 197111, true }, + { 197127, true }, + { 197145, true }, + { 197163, true }, + { 197176, true }, + { 197204, true }, + { 197216, true }, + { 197232, true }, + { 197250, true }, + { 197258, true }, + { 197271, true }, + { 197282, true }, + { 197290, true }, + { 197304, true }, + { 197336, true }, + { 197350, true }, + { 197359, true }, + { 197366, true }, + { 197380, false }, + { 197390, false }, + { 197410, true }, + { 197420, true }, + { 197431, true }, + { 197438, true }, + { 197448, true }, + { 197459, true }, + { 197470, true }, + { 197483, true }, + { 197496, true }, + { 197506, false }, + { 197525, true }, + { 197539, false }, + { 197551, false }, + { 197564, true }, + { 197575, false }, + { 197587, false }, + { 197608, true }, + { 197630, true }, { 197643, true }, - { 197667, true }, - { 197678, false }, - { 197694, true }, - { 197712, true }, - { 197727, true }, - { 197739, true }, - { 197755, true }, - { 197763, true }, - { 197792, true }, - { 197805, true }, - { 197821, true }, - { 197836, true }, - { 197849, true }, - { 197861, true }, - { 197878, true }, - { 197893, true }, + { 197659, true }, + { 197677, true }, + { 197686, true }, + { 197698, true }, + { 197714, true }, + { 197725, false }, + { 197734, true }, + { 197758, true }, + { 197769, false }, + { 197785, true }, + { 197803, true }, + { 197818, true }, + { 197830, true }, + { 197846, true }, + { 197854, true }, + { 197883, true }, + { 197896, true }, { 197912, true }, - { 197930, true }, - { 197949, true }, - { 197964, true }, - { 197988, true }, - { 198004, true }, - { 198018, true }, - { 198032, true }, - { 198050, true }, - { 198060, false }, - { 198089, true }, - { 198103, true }, - { 198127, true }, + { 197927, true }, + { 197940, true }, + { 197952, true }, + { 197969, true }, + { 197984, true }, + { 198003, true }, + { 198021, true }, + { 198040, true }, + { 198055, true }, + { 198079, true }, + { 198095, true }, + { 198109, true }, + { 198123, true }, { 198141, true }, - { 198160, true }, - { 198173, true }, - { 198186, true }, - { 198200, true }, - { 198215, true }, - { 198229, true }, - { 198242, true }, - { 198253, true }, - { 198273, true }, - { 198288, true }, - { 198299, true }, - { 198317, true }, - { 198327, true }, - { 198335, true }, - { 198348, true }, - { 198367, true }, - { 198387, false }, - { 198401, true }, - { 198410, true }, - { 198419, true }, - { 198430, true }, - { 198446, true }, - { 198463, true }, - { 198471, true }, - { 198480, true }, - { 198488, true }, - { 198502, true }, - { 198524, true }, - { 198536, true }, - { 198548, true }, - { 198560, true }, - { 198580, true }, - { 198595, true }, + { 198151, false }, + { 198180, true }, + { 198194, true }, + { 198218, true }, + { 198232, true }, + { 198251, true }, + { 198264, true }, + { 198277, true }, + { 198291, true }, + { 198306, true }, + { 198320, true }, + { 198333, true }, + { 198344, true }, + { 198364, true }, + { 198379, true }, + { 198390, true }, + { 198408, true }, + { 198418, true }, + { 198426, true }, + { 198439, true }, + { 198458, true }, + { 198478, false }, + { 198492, true }, + { 198501, true }, + { 198510, true }, + { 198521, true }, + { 198537, true }, + { 198554, true }, + { 198562, true }, + { 198571, true }, + { 198579, true }, + { 198593, true }, { 198615, true }, - { 198638, true }, - { 198657, true }, - { 198676, true }, - { 198695, true }, - { 198714, true }, - { 198733, true }, - { 198752, true }, - { 198771, true }, - { 198790, true }, - { 198807, true }, - { 198825, true }, - { 198842, true }, - { 198866, true }, + { 198627, true }, + { 198639, true }, + { 198651, true }, + { 198671, true }, + { 198686, true }, + { 198706, true }, + { 198729, true }, + { 198748, true }, + { 198767, true }, + { 198786, true }, + { 198805, true }, + { 198824, true }, + { 198843, true }, + { 198862, true }, { 198881, true }, - { 198899, true }, - { 198914, true }, - { 198927, false }, - { 198941, true }, - { 198965, true }, - { 198982, true }, - { 199000, true }, - { 199010, true }, - { 199019, true }, - { 199029, true }, - { 199038, true }, - { 199054, true }, - { 199072, true }, - { 199089, true }, - { 199105, true }, - { 199118, true }, - { 199131, true }, - { 199148, true }, - { 199161, true }, - { 199178, true }, - { 199199, true }, - { 199217, true }, - { 199232, true }, - { 199249, true }, - { 199268, true }, - { 199285, true }, - { 199297, true }, + { 198898, true }, + { 198916, true }, + { 198933, true }, + { 198957, true }, + { 198972, true }, + { 198990, true }, + { 199005, true }, + { 199018, false }, + { 199032, true }, + { 199056, true }, + { 199073, true }, + { 199091, true }, + { 199101, true }, + { 199110, true }, + { 199120, true }, + { 199129, true }, + { 199145, true }, + { 199163, true }, + { 199180, true }, + { 199196, true }, + { 199209, true }, + { 199222, true }, + { 199239, true }, + { 199252, true }, + { 199269, true }, + { 199290, true }, { 199308, true }, - { 199331, true }, - { 199339, true }, - { 199352, true }, - { 199371, true }, - { 199387, true }, - { 199403, true }, - { 199417, true }, + { 199323, true }, + { 199340, true }, + { 199359, true }, + { 199376, true }, + { 199388, true }, + { 199399, true }, + { 199422, true }, { 199430, true }, { 199443, true }, - { 199456, true }, - { 199466, true }, - { 199479, true }, - { 199490, true }, - { 199510, true }, - { 199526, true }, - { 199546, true }, - { 199561, true }, - { 199571, true }, - { 199582, true }, - { 199595, false }, - { 199610, true }, - { 199625, false }, - { 199635, false }, - { 199645, false }, - { 199655, true }, - { 199671, true }, - { 199683, true }, - { 199691, false }, - { 199700, false }, - { 199711, true }, - { 199725, true }, - { 199737, true }, - { 199745, true }, - { 199754, true }, + { 199462, true }, + { 199478, true }, + { 199494, true }, + { 199508, true }, + { 199521, true }, + { 199534, true }, + { 199547, true }, + { 199557, true }, + { 199570, true }, + { 199581, true }, + { 199601, true }, + { 199617, true }, + { 199637, true }, + { 199652, true }, + { 199662, true }, + { 199673, true }, + { 199686, false }, + { 199701, true }, + { 199716, false }, + { 199726, false }, + { 199736, false }, + { 199746, true }, { 199762, true }, - { 199775, true }, - { 199795, true }, + { 199774, true }, + { 199782, false }, + { 199791, false }, + { 199802, true }, { 199816, true }, - { 199832, true }, - { 199849, true }, - { 199868, true }, - { 199879, true }, - { 199896, true }, - { 199917, true }, - { 199931, true }, - { 199941, true }, - { 199952, true }, - { 199961, true }, + { 199828, true }, + { 199836, true }, + { 199845, true }, + { 199853, true }, + { 199866, true }, + { 199886, true }, + { 199907, true }, + { 199923, true }, + { 199940, true }, + { 199959, true }, { 199970, true }, - { 199993, true }, - { 200006, true }, - { 200017, true }, - { 200027, true }, - { 200034, true }, - { 200056, true }, - { 200066, true }, - { 200079, true }, - { 200098, true }, - { 200115, true }, - { 200138, true }, - { 200146, true }, - { 200164, true }, - { 200182, true }, - { 200193, true }, - { 200208, true }, - { 200219, false }, - { 200230, true }, - { 200243, true }, - { 200254, true }, - { 200267, true }, - { 200280, true }, - { 200293, true }, - { 200304, true }, - { 200314, true }, - { 200323, true }, - { 200333, true }, - { 200344, true }, - { 200354, true }, - { 200367, true }, - { 200388, true }, - { 200401, true }, - { 200422, true }, + { 199987, true }, + { 200008, true }, + { 200022, true }, + { 200032, true }, + { 200043, true }, + { 200052, true }, + { 200061, true }, + { 200084, true }, + { 200097, true }, + { 200108, true }, + { 200118, true }, + { 200125, true }, + { 200147, true }, + { 200157, true }, + { 200170, true }, + { 200189, true }, + { 200206, true }, + { 200229, true }, + { 200237, true }, + { 200255, true }, + { 200273, true }, + { 200284, true }, + { 200299, true }, + { 200310, false }, + { 200321, true }, + { 200334, true }, + { 200345, true }, + { 200358, true }, + { 200371, true }, + { 200384, true }, + { 200395, true }, + { 200405, true }, + { 200414, true }, + { 200424, true }, { 200435, true }, - { 200446, true }, - { 200456, true }, - { 200469, true }, - { 200488, true }, - { 200512, true }, - { 200523, true }, - { 200538, true }, - { 200552, true }, - { 200563, true }, - { 200575, true }, - { 200587, true }, - { 200599, true }, - { 200609, true }, - { 200617, true }, - { 200631, true }, - { 200646, true }, - { 200659, true }, - { 200681, true }, - { 200696, false }, - { 200710, true }, - { 200733, false }, - { 200745, true }, - { 200761, true }, - { 200780, false }, - { 200795, true }, - { 200809, true }, - { 200818, true }, - { 200832, true }, - { 200847, true }, - { 200869, true }, - { 200888, true }, - { 200903, true }, - { 200918, true }, - { 200932, true }, - { 200944, true }, - { 200955, true }, - { 200968, true }, - { 200985, true }, - { 201010, true }, - { 201020, true }, - { 201041, true }, + { 200445, true }, + { 200458, true }, + { 200479, true }, + { 200492, true }, + { 200513, true }, + { 200526, true }, + { 200537, true }, + { 200547, true }, + { 200560, true }, + { 200579, true }, + { 200603, true }, + { 200614, true }, + { 200629, true }, + { 200643, true }, + { 200654, true }, + { 200666, true }, + { 200678, true }, + { 200690, true }, + { 200700, true }, + { 200708, true }, + { 200722, true }, + { 200737, true }, + { 200750, true }, + { 200772, true }, + { 200787, false }, + { 200801, true }, + { 200824, false }, + { 200836, true }, + { 200852, true }, + { 200871, false }, + { 200886, true }, + { 200900, true }, + { 200909, true }, + { 200923, true }, + { 200938, true }, + { 200960, true }, + { 200979, true }, + { 200994, true }, + { 201009, true }, + { 201023, true }, + { 201035, true }, + { 201046, true }, { 201059, true }, - { 201080, true }, - { 201106, true }, - { 201122, true }, - { 201145, true }, - { 201164, true }, - { 201179, true }, - { 201203, true }, - { 201227, true }, + { 201076, true }, + { 201101, true }, + { 201111, true }, + { 201132, true }, + { 201150, true }, + { 201171, true }, + { 201197, true }, + { 201213, true }, + { 201236, true }, { 201255, true }, - { 201282, true }, - { 201296, true }, - { 201305, true }, - { 201316, true }, - { 201330, true }, - { 201341, true }, - { 201352, false }, - { 201376, true }, + { 201270, true }, + { 201294, true }, + { 201318, true }, + { 201346, true }, + { 201373, true }, { 201387, true }, - { 201399, true }, - { 201413, true }, - { 201424, true }, - { 201434, true }, - { 201448, true }, - { 201456, true }, - { 201463, true }, - { 201474, true }, - { 201484, true }, - { 201495, true }, - { 201506, true }, - { 201516, true }, - { 201524, true }, - { 201535, true }, - { 201544, true }, - { 201559, true }, - { 201574, true }, - { 201587, false }, - { 201598, true }, + { 201396, true }, + { 201407, true }, + { 201421, true }, + { 201432, true }, + { 201443, false }, + { 201467, true }, + { 201478, true }, + { 201490, true }, + { 201504, true }, + { 201515, true }, + { 201525, true }, + { 201539, true }, + { 201547, true }, + { 201554, true }, + { 201565, true }, + { 201575, true }, + { 201586, true }, + { 201597, true }, { 201607, true }, - { 201618, true }, - { 201629, true }, - { 201640, true }, - { 201654, true }, - { 201663, true }, - { 201679, true }, - { 201687, true }, - { 201699, true }, - { 201711, true }, - { 201727, true }, - { 201735, true }, + { 201615, true }, + { 201626, true }, + { 201635, true }, + { 201650, true }, + { 201665, true }, + { 201678, false }, + { 201689, true }, + { 201698, true }, + { 201709, true }, + { 201720, true }, + { 201731, true }, { 201745, true }, - { 201764, true }, - { 201772, true }, - { 201785, true }, - { 201798, true }, - { 201815, true }, + { 201754, true }, + { 201770, true }, + { 201778, true }, + { 201790, true }, + { 201802, true }, + { 201818, true }, { 201826, true }, - { 201838, true }, - { 201847, true }, - { 201860, true }, - { 201869, true }, - { 201888, true }, - { 201907, true }, - { 201937, true }, - { 201967, true }, - { 201983, true }, + { 201836, true }, + { 201855, true }, + { 201863, true }, + { 201876, true }, + { 201889, true }, + { 201906, true }, + { 201917, true }, + { 201929, true }, + { 201938, true }, + { 201951, true }, + { 201960, true }, + { 201979, true }, { 201998, true }, - { 202011, true }, - { 202024, true }, - { 202041, true }, - { 202053, true }, - { 202066, true }, - { 202082, true }, - { 202094, true }, - { 202105, true }, - { 202113, true }, - { 202122, true }, - { 202133, true }, - { 202141, true }, - { 202159, true }, + { 202028, true }, + { 202058, true }, + { 202074, true }, + { 202089, true }, + { 202102, true }, + { 202115, true }, + { 202132, true }, + { 202144, true }, + { 202157, true }, { 202173, true }, - { 202192, false }, - { 202201, true }, - { 202211, true }, - { 202233, true }, - { 202248, true }, - { 202261, true }, - { 202275, true }, - { 202289, true }, - { 202297, true }, - { 202309, true }, - { 202320, true }, - { 202331, true }, - { 202343, true }, - { 202361, true }, - { 202374, true }, - { 202387, true }, - { 202399, true }, - { 202409, true }, - { 202419, true }, - { 202429, true }, - { 202439, true }, - { 202448, true }, - { 202459, true }, - { 202470, false }, - { 202480, false }, - { 202496, true }, - { 202507, true }, - { 202521, true }, - { 202533, true }, - { 202546, true }, - { 202559, true }, - { 202569, true }, - { 202583, true }, - { 202606, true }, - { 202618, true }, - { 202627, true }, - { 202663, true }, - { 202676, true }, - { 202686, true }, - { 202699, true }, - { 202711, true }, - { 202722, true }, - { 202745, false }, - { 202759, true }, - { 202771, true }, - { 202784, true }, - { 202793, true }, - { 202806, false }, - { 202816, true }, - { 202828, true }, - { 202840, true }, - { 202851, true }, - { 202861, true }, + { 202185, true }, + { 202196, true }, + { 202204, true }, + { 202213, true }, + { 202224, true }, + { 202232, true }, + { 202250, true }, + { 202264, true }, + { 202283, false }, + { 202292, true }, + { 202302, true }, + { 202324, true }, + { 202339, true }, + { 202352, true }, + { 202366, true }, + { 202380, true }, + { 202388, true }, + { 202400, true }, + { 202411, true }, + { 202422, true }, + { 202434, true }, + { 202452, true }, + { 202465, true }, + { 202478, true }, + { 202490, true }, + { 202500, true }, + { 202510, true }, + { 202520, true }, + { 202530, true }, + { 202539, true }, + { 202550, true }, + { 202561, false }, + { 202571, false }, + { 202587, true }, + { 202598, true }, + { 202612, true }, + { 202624, true }, + { 202637, true }, + { 202650, true }, + { 202660, true }, + { 202674, true }, + { 202697, true }, + { 202709, true }, + { 202718, true }, + { 202754, true }, + { 202767, true }, + { 202777, true }, + { 202790, true }, + { 202802, true }, + { 202813, true }, + { 202836, false }, + { 202850, true }, + { 202862, true }, { 202875, true }, - { 202889, true }, - { 202899, true }, - { 202908, true }, - { 202918, true }, - { 202930, true }, - { 202941, true }, - { 202951, true }, + { 202884, true }, + { 202897, false }, + { 202907, true }, + { 202919, true }, + { 202931, true }, + { 202942, true }, + { 202952, true }, { 202966, true }, - { 202978, true }, + { 202980, true }, { 202990, true }, - { 203002, true }, - { 203016, true }, - { 203033, true }, - { 203043, true }, - { 203053, true }, - { 203065, false }, - { 203074, false }, + { 202999, true }, + { 203009, true }, + { 203021, true }, + { 203032, true }, + { 203042, true }, + { 203057, true }, + { 203069, true }, + { 203081, true }, { 203093, true }, - { 203108, true }, + { 203107, true }, { 203124, true }, - { 203139, true }, - { 203153, false }, - { 203163, true }, - { 203175, false }, - { 203187, true }, - { 203200, true }, - { 203218, true }, - { 203233, true }, - { 203248, false }, - { 203264, true }, - { 203276, true }, - { 203289, true }, - { 203301, true }, - { 203312, true }, - { 203325, false }, - { 203340, true }, - { 203360, true }, - { 203375, true }, - { 203385, true }, - { 203395, true }, - { 203412, true }, - { 203426, true }, - { 203440, true }, - { 203463, true }, - { 203475, true }, + { 203134, true }, + { 203144, true }, + { 203156, false }, + { 203165, false }, + { 203184, true }, + { 203199, true }, + { 203215, true }, + { 203230, true }, + { 203244, false }, + { 203254, true }, + { 203266, false }, + { 203278, true }, + { 203291, true }, + { 203309, true }, + { 203324, true }, + { 203339, false }, + { 203355, true }, + { 203367, true }, + { 203380, true }, + { 203392, true }, + { 203403, true }, + { 203416, false }, + { 203431, true }, + { 203451, true }, + { 203466, true }, + { 203476, true }, { 203486, true }, - { 203502, true }, - { 203513, true }, - { 203524, true }, - { 203542, true }, - { 203560, true }, - { 203573, true }, - { 203594, true }, - { 203614, false }, + { 203503, true }, + { 203517, true }, + { 203531, true }, + { 203554, true }, + { 203566, true }, + { 203577, true }, + { 203593, true }, + { 203604, true }, + { 203615, true }, { 203633, true }, - { 203653, true }, - { 203675, true }, - { 203699, true }, - { 203714, true }, - { 203732, true }, - { 203748, true }, - { 203764, true }, - { 203780, true }, - { 203797, true }, - { 203811, true }, - { 203827, true }, - { 203844, true }, - { 203866, true }, - { 203888, true }, - { 203909, false }, - { 203923, true }, - { 203934, true }, - { 203950, true }, - { 203960, true }, - { 203979, true }, - { 203990, true }, - { 204010, true }, - { 204025, true }, - { 204036, true }, - { 204051, true }, - { 204067, true }, + { 203651, true }, + { 203664, true }, + { 203685, true }, + { 203705, false }, + { 203724, true }, + { 203744, true }, + { 203766, true }, + { 203790, true }, + { 203802, true }, + { 203817, true }, + { 203835, true }, + { 203851, true }, + { 203867, true }, + { 203883, true }, + { 203900, true }, + { 203914, true }, + { 203930, true }, + { 203947, true }, + { 203969, true }, + { 203991, true }, + { 204012, false }, + { 204026, true }, + { 204037, true }, + { 204053, true }, + { 204063, true }, { 204082, true }, - { 204097, true }, - { 204111, true }, - { 204134, true }, - { 204148, true }, - { 204163, true }, - { 204180, true }, - { 204197, true }, - { 204209, true }, - { 204234, true }, - { 204249, true }, - { 204261, true }, - { 204272, true }, - { 204287, true }, - { 204303, true }, - { 204318, true }, - { 204347, true }, - { 204361, true }, - { 204381, true }, - { 204400, true }, - { 204422, true }, - { 204440, true }, - { 204454, true }, - { 204467, true }, - { 204482, true }, - { 204497, true }, - { 204504, true }, - { 204520, true }, - { 204531, true }, - { 204544, true }, - { 204555, true }, - { 204565, true }, - { 204576, true }, - { 204587, true }, - { 204601, true }, - { 204615, true }, - { 204627, true }, - { 204639, true }, - { 204650, true }, - { 204665, true }, - { 204683, true }, - { 204697, true }, - { 204708, true }, - { 204721, true }, - { 204739, true }, + { 204093, true }, + { 204113, true }, + { 204128, true }, + { 204139, true }, + { 204154, true }, + { 204170, true }, + { 204185, true }, + { 204200, true }, + { 204214, true }, + { 204237, true }, + { 204251, true }, + { 204266, true }, + { 204283, true }, + { 204300, true }, + { 204312, true }, + { 204337, true }, + { 204352, true }, + { 204364, true }, + { 204375, true }, + { 204390, true }, + { 204406, true }, + { 204421, true }, + { 204450, true }, + { 204464, true }, + { 204484, true }, + { 204503, true }, + { 204525, true }, + { 204543, true }, + { 204557, true }, + { 204570, true }, + { 204585, true }, + { 204600, true }, + { 204607, true }, + { 204623, true }, + { 204634, true }, + { 204647, true }, + { 204658, true }, + { 204668, true }, + { 204679, true }, + { 204690, true }, + { 204704, true }, + { 204718, true }, + { 204730, true }, + { 204742, true }, + { 204753, true }, { 204768, true }, - { 204788, true }, - { 204804, true }, - { 204823, true }, - { 204832, true }, - { 204847, true }, - { 204857, true }, - { 204867, true }, - { 204876, true }, - { 204884, true }, - { 204900, true }, - { 204915, true }, - { 204924, true }, - { 204936, true }, - { 204945, true }, - { 204953, true }, - { 204964, true }, - { 204977, true }, - { 204986, true }, - { 204998, false }, - { 205009, true }, - { 205025, true }, - { 205044, true }, - { 205056, false }, - { 205073, true }, - { 205086, true }, - { 205104, true }, - { 205124, true }, - { 205139, true }, - { 205149, true }, - { 205165, true }, - { 205178, true }, - { 205196, true }, - { 205211, true }, - { 205220, true }, - { 205235, true }, - { 205249, true }, - { 205265, true }, - { 205280, true }, - { 205302, true }, + { 204786, true }, + { 204800, true }, + { 204811, true }, + { 204824, true }, + { 204842, true }, + { 204871, true }, + { 204891, true }, + { 204907, true }, + { 204926, true }, + { 204935, true }, + { 204950, true }, + { 204960, true }, + { 204970, true }, + { 204979, true }, + { 204987, true }, + { 205003, true }, + { 205018, true }, + { 205027, true }, + { 205039, true }, + { 205048, true }, + { 205056, true }, + { 205067, true }, + { 205080, true }, + { 205089, true }, + { 205101, false }, + { 205112, true }, + { 205128, true }, + { 205147, true }, + { 205159, false }, + { 205176, true }, + { 205189, true }, + { 205207, true }, + { 205227, true }, + { 205242, true }, + { 205252, true }, + { 205268, true }, + { 205281, true }, + { 205299, true }, + { 205314, true }, { 205323, true }, - { 205342, true }, - { 205361, true }, - { 205377, true }, - { 205396, true }, - { 205407, true }, - { 205416, true }, - { 205428, true }, - { 205438, true }, - { 205453, true }, - { 205467, true }, + { 205338, true }, + { 205352, true }, + { 205368, true }, + { 205383, true }, + { 205405, true }, + { 205426, true }, + { 205445, true }, + { 205464, true }, { 205480, true }, - { 205488, true }, - { 205496, true }, - { 205505, true }, - { 205517, true }, - { 205529, true }, - { 205538, true }, - { 205550, true }, - { 205558, true }, + { 205499, true }, + { 205510, true }, + { 205519, true }, + { 205531, true }, + { 205541, true }, + { 205556, true }, { 205570, true }, - { 205596, true }, - { 205619, false }, - { 205635, true }, - { 205649, true }, - { 205669, true }, - { 205680, true }, - { 205701, true }, - { 205720, true }, - { 205734, true }, - { 205749, true }, - { 205763, true }, - { 205780, true }, - { 205794, true }, - { 205814, false }, - { 205829, true }, + { 205583, true }, + { 205591, true }, + { 205599, true }, + { 205608, true }, + { 205620, true }, + { 205632, true }, + { 205641, true }, + { 205653, true }, + { 205661, true }, + { 205673, true }, + { 205699, true }, + { 205722, false }, + { 205738, true }, + { 205752, true }, + { 205772, true }, + { 205783, true }, + { 205804, true }, + { 205823, true }, { 205837, true }, { 205852, true }, - { 205867, true }, - { 205881, true }, - { 205898, true }, - { 205916, true }, - { 205936, true }, - { 205960, true }, - { 205967, true }, - { 205978, true }, - { 205989, true }, - { 206002, true }, - { 206018, true }, - { 206030, false }, - { 206045, true }, - { 206061, true }, + { 205866, true }, + { 205883, true }, + { 205897, true }, + { 205917, false }, + { 205932, true }, + { 205940, true }, + { 205955, true }, + { 205970, true }, + { 205984, true }, + { 205995, true }, + { 206012, true }, + { 206030, true }, + { 206050, true }, { 206074, true }, - { 206082, true }, + { 206081, true }, { 206092, true }, - { 206105, true }, - { 206120, true }, - { 206134, true }, - { 206149, true }, + { 206103, true }, + { 206116, true }, + { 206132, true }, + { 206144, false }, { 206159, true }, - { 206171, true }, - { 206181, true }, - { 206207, true }, - { 206220, true }, - { 206235, true }, + { 206175, true }, + { 206188, true }, + { 206196, true }, + { 206206, true }, + { 206219, true }, + { 206234, true }, { 206248, true }, - { 206260, true }, - { 206281, true }, - { 206289, true }, - { 206297, true }, - { 206307, true }, + { 206263, true }, + { 206273, true }, + { 206285, true }, + { 206295, true }, { 206321, true }, - { 206342, true }, - { 206352, true }, - { 206365, true }, - { 206375, false }, + { 206334, true }, + { 206349, true }, + { 206362, true }, + { 206374, true }, { 206395, true }, { 206403, true }, - { 206414, true }, - { 206422, true }, - { 206429, true }, - { 206440, true }, - { 206447, true }, - { 206455, true }, - { 206465, true }, - { 206477, true }, - { 206483, true }, - { 206493, true }, - { 206501, true }, - { 206513, false }, - { 206533, true }, - { 206548, true }, - { 206575, true }, - { 206584, true }, - { 206593, true }, - { 206601, true }, - { 206615, true }, - { 206630, true }, - { 206640, true }, - { 206652, true }, - { 206665, true }, - { 206674, true }, - { 206692, true }, - { 206704, true }, - { 206715, true }, - { 206726, true }, - { 206734, true }, - { 206744, true }, - { 206752, true }, - { 206764, true }, - { 206773, true }, - { 206783, false }, - { 206818, true }, - { 206837, true }, - { 206850, true }, - { 206860, true }, - { 206872, true }, - { 206887, true }, - { 206898, true }, - { 206917, true }, - { 206929, true }, - { 206943, true }, - { 206959, true }, - { 206977, true }, - { 206990, true }, - { 207006, true }, + { 206411, true }, + { 206421, true }, + { 206435, true }, + { 206456, true }, + { 206466, true }, + { 206479, true }, + { 206489, false }, + { 206509, true }, + { 206517, true }, + { 206528, true }, + { 206536, true }, + { 206543, true }, + { 206554, true }, + { 206561, true }, + { 206569, true }, + { 206579, true }, + { 206585, true }, + { 206595, true }, + { 206603, true }, + { 206615, false }, + { 206635, true }, + { 206650, true }, + { 206677, true }, + { 206686, true }, + { 206695, true }, + { 206703, true }, + { 206717, true }, + { 206732, true }, + { 206742, true }, + { 206754, true }, + { 206767, true }, + { 206776, true }, + { 206794, true }, + { 206806, true }, + { 206817, true }, + { 206828, true }, + { 206836, true }, + { 206846, true }, + { 206854, true }, + { 206866, true }, + { 206875, true }, + { 206885, false }, + { 206920, true }, + { 206939, true }, + { 206952, true }, + { 206962, true }, + { 206974, true }, + { 206989, true }, + { 207000, true }, { 207019, true }, - { 207036, true }, - { 207049, true }, - { 207063, true }, - { 207078, true }, - { 207097, true }, - { 207112, true }, - { 207120, true }, - { 207132, true }, - { 207146, true }, - { 207166, true }, - { 207178, true }, - { 207197, true }, - { 207223, true }, - { 207245, true }, - { 207263, true }, + { 207031, true }, + { 207045, true }, + { 207061, true }, + { 207079, true }, + { 207092, true }, + { 207108, true }, + { 207121, true }, + { 207138, true }, + { 207151, true }, + { 207165, true }, + { 207180, true }, + { 207199, true }, + { 207214, true }, + { 207222, true }, + { 207234, true }, + { 207248, true }, + { 207268, true }, { 207280, true }, - { 207297, true }, - { 207306, true }, - { 207317, true }, - { 207329, true }, + { 207299, true }, + { 207325, true }, { 207347, true }, - { 207371, true }, - { 207387, true }, + { 207365, true }, + { 207382, true }, { 207399, true }, - { 207412, true }, - { 207428, true }, - { 207441, true }, - { 207461, true }, - { 207492, true }, - { 207506, true }, - { 207523, true }, - { 207541, true }, - { 207560, true }, - { 207576, true }, - { 207599, true }, - { 207618, true }, - { 207632, true }, - { 207648, true }, - { 207676, true }, - { 207689, true }, - { 207705, true }, - { 207717, true }, + { 207408, true }, + { 207419, true }, + { 207431, true }, + { 207449, true }, + { 207473, true }, + { 207489, true }, + { 207501, true }, + { 207514, true }, + { 207530, true }, + { 207543, true }, + { 207563, true }, + { 207594, true }, + { 207608, true }, + { 207625, true }, + { 207643, true }, + { 207662, true }, + { 207678, true }, + { 207701, true }, + { 207720, true }, { 207734, true }, - { 207765, true }, - { 207795, false }, - { 207811, true }, - { 207827, true }, - { 207838, true }, - { 207849, true }, - { 207858, true }, - { 207870, true }, - { 207883, true }, - { 207903, true }, - { 207922, true }, + { 207750, true }, + { 207778, true }, + { 207791, true }, + { 207807, true }, + { 207819, true }, + { 207836, true }, + { 207867, true }, + { 207897, false }, + { 207913, true }, + { 207929, true }, { 207940, true }, - { 207962, true }, - { 207975, true }, - { 207992, true }, - { 208006, true }, - { 208031, true }, - { 208048, true }, - { 208067, true }, - { 208078, true }, - { 208098, true }, - { 208113, true }, - { 208128, true }, - { 208146, true }, - { 208162, true }, - { 208174, true }, - { 208184, true }, - { 208201, true }, - { 208219, true }, - { 208231, false }, - { 208245, false }, - { 208252, false }, - { 208284, true }, - { 208297, true }, - { 208316, true }, - { 208330, true }, - { 208344, true }, - { 208357, true }, - { 208374, true }, + { 207951, true }, + { 207960, true }, + { 207972, true }, + { 207985, true }, + { 208005, true }, + { 208024, true }, + { 208042, true }, + { 208064, true }, + { 208077, true }, + { 208094, true }, + { 208108, true }, + { 208133, true }, + { 208150, true }, + { 208169, true }, + { 208189, true }, + { 208204, true }, + { 208215, true }, + { 208230, true }, + { 208248, true }, + { 208264, true }, + { 208276, true }, + { 208286, true }, + { 208303, true }, + { 208321, true }, + { 208333, false }, + { 208347, false }, + { 208354, false }, { 208386, true }, - { 208400, true }, - { 208416, true }, - { 208428, true }, - { 208443, true }, - { 208454, true }, - { 208468, true }, - { 208479, true }, - { 208490, true }, - { 208504, true }, - { 208516, true }, - { 208525, true }, - { 208532, true }, - { 208543, true }, - { 208551, true }, - { 208558, true }, - { 208565, true }, - { 208573, true }, - { 208583, true }, - { 208591, true }, - { 208599, true }, - { 208612, true }, + { 208399, true }, + { 208418, true }, + { 208432, true }, + { 208446, true }, + { 208459, true }, + { 208476, true }, + { 208488, true }, + { 208502, true }, + { 208518, true }, + { 208530, true }, + { 208545, true }, + { 208556, true }, + { 208570, true }, + { 208581, true }, + { 208592, true }, + { 208606, true }, + { 208618, true }, { 208627, true }, - { 208637, true }, - { 208647, true }, - { 208654, true }, - { 208661, true }, - { 208668, true }, - { 208680, true }, - { 208694, true }, - { 208703, true }, - { 208722, true }, - { 208731, true }, - { 208747, true }, - { 208759, true }, - { 208771, true }, - { 208783, true }, - { 208794, true }, - { 208808, true }, - { 208820, true }, - { 208831, true }, - { 208841, true }, - { 208852, true }, - { 208867, true }, - { 208875, true }, - { 208894, true }, - { 208909, true }, - { 208927, true }, - { 208946, true }, - { 208958, true }, - { 208983, true }, - { 208994, true }, - { 209005, true }, - { 209016, true }, - { 209030, true }, - { 209046, true }, - { 209057, true }, - { 209069, true }, - { 209083, true }, + { 208634, true }, + { 208645, true }, + { 208653, true }, + { 208660, true }, + { 208667, true }, + { 208675, true }, + { 208685, true }, + { 208693, true }, + { 208701, true }, + { 208714, true }, + { 208729, true }, + { 208739, true }, + { 208749, true }, + { 208756, true }, + { 208763, true }, + { 208770, true }, + { 208782, true }, + { 208796, true }, + { 208805, true }, + { 208824, true }, + { 208833, true }, + { 208849, true }, + { 208861, true }, + { 208873, true }, + { 208885, true }, + { 208896, true }, + { 208910, true }, + { 208922, true }, + { 208933, true }, + { 208943, true }, + { 208954, true }, + { 208969, true }, + { 208977, true }, + { 208996, true }, + { 209011, true }, + { 209029, true }, + { 209048, true }, + { 209060, true }, + { 209085, true }, { 209096, true }, - { 209110, true }, - { 209120, true }, - { 209135, true }, - { 209156, true }, + { 209107, true }, + { 209118, true }, + { 209132, true }, + { 209148, true }, + { 209159, true }, { 209171, true }, - { 209192, true }, - { 209203, true }, - { 209223, true }, - { 209234, true }, - { 209242, true }, - { 209259, true }, + { 209185, true }, + { 209198, true }, + { 209212, true }, + { 209222, true }, + { 209237, true }, + { 209258, true }, { 209273, true }, - { 209282, true }, - { 209289, true }, - { 209301, true }, - { 209318, true }, - { 209330, true }, + { 209294, true }, + { 209305, true }, + { 209325, true }, + { 209336, true }, { 209344, true }, - { 209355, true }, - { 209365, true }, - { 209381, true }, - { 209394, true }, - { 209426, true }, - { 209439, true }, - { 209453, true }, - { 209469, false }, - { 209482, true }, + { 209361, true }, + { 209375, true }, + { 209384, true }, + { 209391, true }, + { 209403, true }, + { 209420, true }, + { 209432, true }, + { 209446, true }, + { 209457, true }, + { 209467, true }, + { 209483, true }, { 209496, true }, - { 209510, true }, - { 209521, true }, - { 209530, true }, - { 209540, true }, - { 209547, true }, - { 209556, true }, - { 209565, true }, - { 209573, true }, - { 209588, true }, - { 209596, true }, - { 209608, true }, - { 209625, true }, - { 209635, true }, - { 209646, true }, - { 209655, true }, - { 209664, true }, - { 209682, true }, - { 209700, true }, + { 209528, true }, + { 209541, true }, + { 209555, true }, + { 209571, false }, + { 209584, true }, + { 209598, true }, + { 209612, true }, + { 209623, true }, + { 209632, true }, + { 209642, true }, + { 209649, true }, + { 209658, true }, + { 209667, true }, + { 209675, true }, + { 209690, true }, + { 209698, true }, { 209710, true }, - { 209721, true }, - { 209732, false }, - { 209743, true }, - { 209751, true }, - { 209759, true }, - { 209767, true }, - { 209781, true }, - { 209797, true }, - { 209813, true }, - { 209819, true }, - { 209832, true }, - { 209843, true }, - { 209855, true }, - { 209874, true }, - { 209898, true }, - { 209910, true }, - { 209936, true }, - { 209950, true }, - { 209961, true }, - { 209979, true }, - { 209996, true }, - { 210010, true }, - { 210025, true }, + { 209727, true }, + { 209737, true }, + { 209748, true }, + { 209757, true }, + { 209766, true }, + { 209784, true }, + { 209802, true }, + { 209812, true }, + { 209823, true }, + { 209834, false }, + { 209845, true }, + { 209853, true }, + { 209861, true }, + { 209869, true }, + { 209883, true }, + { 209899, true }, + { 209915, true }, + { 209921, true }, + { 209934, true }, + { 209945, true }, + { 209957, true }, + { 209976, true }, + { 210000, true }, + { 210012, true }, { 210038, true }, - { 210056, true }, - { 210073, true }, - { 210086, true }, + { 210052, true }, + { 210063, true }, + { 210081, true }, { 210098, true }, - { 210108, false }, - { 210126, true }, - { 210141, true }, - { 210157, true }, - { 210172, true }, - { 210183, true }, - { 210201, true }, - { 210218, true }, - { 210230, true }, - { 210241, true }, - { 210260, true }, - { 210272, true }, - { 210284, true }, - { 210297, true }, - { 210309, true }, - { 210326, true }, - { 210338, true }, - { 210345, true }, - { 210358, true }, - { 210375, true }, - { 210383, true }, - { 210405, true }, - { 210415, true }, - { 210426, true }, - { 210436, true }, - { 210446, true }, - { 210459, true }, - { 210471, false }, - { 210482, true }, - { 210491, true }, - { 210502, true }, - { 210520, true }, - { 210539, true }, - { 210555, true }, - { 210568, true }, - { 210581, true }, - { 210597, true }, - { 210624, true }, - { 210636, true }, - { 210646, true }, - { 210656, true }, - { 210671, true }, - { 210679, true }, - { 210708, true }, - { 210728, true }, - { 210742, true }, - { 210752, true }, - { 210788, true }, - { 210821, true }, + { 210112, true }, + { 210127, true }, + { 210140, true }, + { 210158, true }, + { 210175, true }, + { 210188, true }, + { 210200, true }, + { 210210, false }, + { 210228, true }, + { 210243, true }, + { 210259, true }, + { 210274, true }, + { 210285, true }, + { 210303, true }, + { 210320, true }, + { 210332, true }, + { 210343, true }, + { 210362, true }, + { 210374, true }, + { 210386, true }, + { 210399, true }, + { 210411, true }, + { 210428, true }, + { 210440, true }, + { 210447, true }, + { 210460, true }, + { 210477, true }, + { 210485, true }, + { 210507, true }, + { 210517, true }, + { 210528, true }, + { 210538, true }, + { 210548, true }, + { 210561, true }, + { 210573, false }, + { 210584, true }, + { 210593, true }, + { 210604, true }, + { 210622, true }, + { 210641, true }, + { 210657, true }, + { 210670, true }, + { 210683, true }, + { 210699, true }, + { 210726, true }, + { 210738, true }, + { 210748, true }, + { 210758, true }, + { 210773, true }, + { 210781, true }, + { 210810, true }, + { 210830, true }, { 210844, true }, - { 210857, true }, - { 210869, true }, - { 210881, true }, - { 210901, true }, - { 210911, true }, - { 210920, true }, - { 210937, true }, - { 210950, false }, - { 210973, true }, - { 210989, true }, + { 210854, true }, + { 210890, true }, + { 210923, true }, + { 210946, true }, + { 210959, true }, + { 210971, true }, + { 210983, true }, { 211003, true }, - { 211020, true }, - { 211045, true }, - { 211072, true }, - { 211096, true }, - { 211111, true }, - { 211123, true }, - { 211132, true }, - { 211141, true }, - { 211148, true }, - { 211157, true }, - { 211169, true }, - { 211178, true }, - { 211186, true }, - { 211194, true }, - { 211207, true }, - { 211218, true }, + { 211013, true }, + { 211022, true }, + { 211039, true }, + { 211052, false }, + { 211075, true }, + { 211091, true }, + { 211105, true }, + { 211122, true }, + { 211147, true }, + { 211174, true }, + { 211198, true }, + { 211213, true }, + { 211225, true }, + { 211234, true }, { 211243, true }, - { 211254, true }, - { 211267, true }, + { 211250, true }, + { 211259, true }, + { 211271, true }, { 211280, true }, - { 211293, true }, - { 211307, true }, - { 211318, false }, - { 211329, true }, + { 211288, true }, + { 211301, true }, + { 211312, true }, { 211337, true }, - { 211345, true }, - { 211360, true }, - { 211368, true }, - { 211376, true }, - { 211388, true }, - { 211396, true }, - { 211410, true }, - { 211423, false }, - { 211434, true }, - { 211449, true }, - { 211479, true }, - { 211499, true }, - { 211517, true }, - { 211527, true }, - { 211547, true }, - { 211567, false }, - { 211580, true }, - { 211591, true }, - { 211614, true }, - { 211640, true }, - { 211653, true }, - { 211663, true }, - { 211672, true }, - { 211685, true }, - { 211697, true }, - { 211713, true }, - { 211728, false }, - { 211746, true }, - { 211777, true }, - { 211797, true }, - { 211814, true }, - { 211831, true }, - { 211849, true }, - { 211858, true }, - { 211871, true }, - { 211886, true }, - { 211898, true }, - { 211908, true }, - { 211915, true }, - { 211928, true }, - { 211945, true }, - { 211966, true }, - { 211978, true }, + { 211348, true }, + { 211361, true }, + { 211374, true }, + { 211387, true }, + { 211401, true }, + { 211412, false }, + { 211423, true }, + { 211431, true }, + { 211439, true }, + { 211454, true }, + { 211462, true }, + { 211470, true }, + { 211482, true }, + { 211490, true }, + { 211504, true }, + { 211517, false }, + { 211528, true }, + { 211543, true }, + { 211573, true }, + { 211593, false }, + { 211601, true }, + { 211619, true }, + { 211629, true }, + { 211649, true }, + { 211669, false }, + { 211682, true }, + { 211693, true }, + { 211716, true }, + { 211742, true }, + { 211755, true }, + { 211765, true }, + { 211774, true }, + { 211787, true }, + { 211799, true }, + { 211815, true }, + { 211830, false }, + { 211848, true }, + { 211879, true }, + { 211899, true }, + { 211916, true }, + { 211933, true }, + { 211951, true }, + { 211960, true }, + { 211973, true }, + { 211988, true }, { 212000, true }, - { 212009, true }, - { 212021, true }, - { 212033, true }, + { 212010, true }, + { 212017, true }, + { 212030, true }, { 212047, true }, - { 212061, true }, - { 212073, true }, - { 212085, true }, - { 212100, true }, - { 212118, true }, - { 212131, true }, - { 212144, true }, - { 212157, true }, - { 212168, true }, - { 212179, true }, - { 212192, true }, - { 212209, true }, + { 212068, true }, + { 212080, true }, + { 212102, true }, + { 212111, true }, + { 212123, true }, + { 212135, true }, + { 212149, true }, + { 212163, true }, + { 212175, true }, + { 212187, true }, + { 212202, true }, { 212220, true }, - { 212235, true }, + { 212233, true }, { 212246, true }, - { 212258, true }, - { 212270, false }, - { 212282, true }, - { 212301, true }, + { 212259, true }, + { 212270, true }, + { 212281, true }, + { 212294, true }, { 212311, true }, - { 212330, true }, - { 212347, true }, - { 212360, false }, - { 212378, true }, - { 212388, false }, - { 212399, true }, - { 212410, true }, - { 212427, true }, - { 212443, true }, - { 212460, true }, - { 212477, true }, - { 212496, true }, - { 212507, true }, + { 212322, true }, + { 212337, true }, + { 212348, true }, + { 212360, true }, + { 212372, false }, + { 212384, true }, + { 212403, true }, + { 212413, true }, + { 212432, true }, + { 212449, true }, + { 212462, false }, + { 212480, true }, + { 212490, false }, + { 212501, true }, + { 212512, true }, { 212529, true }, - { 212539, true }, - { 212554, true }, - { 212564, true }, + { 212545, true }, + { 212562, true }, { 212579, true }, - { 212596, true }, - { 212607, true }, - { 212625, true }, - { 212636, true }, - { 212650, true }, - { 212665, true }, - { 212690, true }, - { 212716, true }, - { 212741, true }, - { 212754, true }, - { 212771, true }, - { 212783, true }, - { 212803, true }, - { 212828, true }, - { 212849, true }, - { 212863, true }, - { 212880, true }, + { 212598, true }, + { 212609, true }, + { 212631, true }, + { 212641, true }, + { 212656, true }, + { 212666, true }, + { 212681, true }, + { 212698, true }, + { 212709, true }, + { 212727, true }, + { 212738, true }, + { 212752, true }, + { 212767, true }, + { 212792, true }, + { 212818, true }, + { 212843, true }, + { 212856, true }, + { 212873, true }, + { 212885, true }, { 212905, true }, - { 212926, true }, - { 212948, true }, - { 212978, true }, - { 212999, true }, - { 213020, true }, - { 213042, true }, - { 213066, true }, - { 213081, true }, - { 213091, true }, - { 213114, true }, - { 213126, true }, - { 213133, true }, - { 213152, true }, - { 213161, true }, + { 212930, true }, + { 212951, true }, + { 212965, true }, + { 212982, true }, + { 213007, true }, + { 213028, true }, + { 213050, true }, + { 213080, true }, + { 213101, true }, + { 213122, true }, + { 213144, true }, { 213168, true }, - { 213181, true }, - { 213192, true }, - { 213207, true }, - { 213226, true }, - { 213243, true }, - { 213256, true }, - { 213265, true }, - { 213275, true }, - { 213286, true }, - { 213296, true }, - { 213306, true }, - { 213315, true }, - { 213326, true }, - { 213342, true }, - { 213353, true }, - { 213365, true }, - { 213381, true }, - { 213391, true }, - { 213405, true }, - { 213418, true }, - { 213426, true }, - { 213436, true }, - { 213446, true }, - { 213458, true }, - { 213470, true }, - { 213481, true }, - { 213495, true }, - { 213509, true }, - { 213524, true }, + { 213183, true }, + { 213193, true }, + { 213216, true }, + { 213228, true }, + { 213235, true }, + { 213254, true }, + { 213263, true }, + { 213270, true }, + { 213283, true }, + { 213294, true }, + { 213309, true }, + { 213328, true }, + { 213345, true }, + { 213358, true }, + { 213367, true }, + { 213377, true }, + { 213388, true }, + { 213398, true }, + { 213408, true }, + { 213417, true }, + { 213428, true }, + { 213444, true }, + { 213455, true }, + { 213467, true }, + { 213483, true }, + { 213493, true }, + { 213507, true }, + { 213520, true }, + { 213528, true }, + { 213538, true }, { 213548, true }, - { 213564, true }, - { 213578, true }, - { 213603, true }, + { 213560, true }, + { 213572, true }, + { 213583, true }, + { 213597, true }, { 213611, true }, - { 213629, true }, - { 213642, true }, - { 213653, true }, - { 213668, true }, - { 213687, true }, - { 213708, true }, - { 213722, true }, - { 213733, true }, - { 213748, true }, - { 213763, true }, - { 213775, true }, - { 213786, true }, - { 213801, true }, - { 213815, true }, - { 213831, true }, - { 213847, true }, - { 213863, true }, - { 213879, true }, - { 213897, true }, - { 213909, true }, - { 213927, true }, - { 213939, true }, - { 213951, true }, - { 213968, true }, - { 213982, true }, - { 213997, true }, - { 214011, true }, - { 214025, true }, - { 214036, true }, - { 214053, true }, - { 214063, true }, - { 214074, true }, - { 214086, true }, - { 214095, true }, - { 214103, true }, - { 214117, true }, - { 214129, true }, - { 214138, true }, - { 214156, true }, + { 213626, true }, + { 213650, true }, + { 213666, true }, + { 213680, true }, + { 213705, true }, + { 213713, true }, + { 213731, true }, + { 213744, true }, + { 213755, true }, + { 213770, true }, + { 213789, true }, + { 213810, true }, + { 213824, true }, + { 213835, true }, + { 213850, true }, + { 213865, true }, + { 213877, true }, + { 213888, true }, + { 213903, true }, + { 213917, true }, + { 213933, true }, + { 213949, true }, + { 213965, true }, + { 213983, true }, + { 213995, true }, + { 214013, true }, + { 214027, true }, + { 214039, true }, + { 214051, true }, + { 214068, true }, + { 214082, true }, + { 214097, true }, + { 214111, true }, + { 214125, true }, + { 214136, true }, + { 214153, true }, { 214163, true }, { 214174, true }, { 214186, true }, - { 214200, true }, - { 214221, true }, - { 214228, true }, - { 214239, true }, - { 214256, false }, - { 214282, false }, - { 214294, true }, - { 214307, true }, - { 214326, true }, - { 214343, true }, - { 214355, true }, - { 214366, true }, - { 214383, true }, - { 214395, true }, - { 214405, true }, - { 214418, true }, - { 214433, true }, - { 214449, true }, - { 214470, true }, - { 214485, true }, - { 214501, true }, - { 214525, true }, - { 214539, true }, - { 214550, true }, - { 214564, true }, - { 214581, true }, - { 214598, true }, - { 214608, true }, - { 214623, true }, - { 214635, true }, + { 214195, true }, + { 214203, true }, + { 214217, true }, + { 214229, true }, + { 214238, true }, + { 214256, true }, + { 214263, true }, + { 214274, true }, + { 214286, true }, + { 214300, true }, + { 214321, true }, + { 214328, true }, + { 214339, true }, + { 214356, false }, + { 214382, false }, + { 214394, true }, + { 214407, true }, + { 214426, true }, + { 214443, true }, + { 214455, true }, + { 214466, true }, + { 214483, true }, + { 214495, true }, + { 214505, true }, + { 214518, true }, + { 214533, true }, + { 214549, true }, + { 214570, true }, + { 214585, true }, + { 214601, true }, + { 214625, true }, + { 214639, true }, { 214650, true }, - { 214660, true }, - { 214673, true }, - { 214686, true }, - { 214699, true }, - { 214712, true }, - { 214726, true }, - { 214746, true }, - { 214768, true }, - { 214782, true }, - { 214814, true }, - { 214825, true }, - { 214839, true }, - { 214854, false }, - { 214867, true }, + { 214664, true }, + { 214681, true }, + { 214698, true }, + { 214708, true }, + { 214723, true }, + { 214735, true }, + { 214750, true }, + { 214760, true }, + { 214773, true }, + { 214786, true }, + { 214799, true }, + { 214812, true }, + { 214826, true }, + { 214846, true }, + { 214868, true }, { 214882, true }, - { 214893, true }, - { 214913, true }, - { 214929, true }, - { 214948, true }, - { 214962, true }, - { 214983, true }, - { 214994, true }, - { 215010, true }, + { 214914, true }, + { 214925, true }, + { 214939, true }, + { 214954, false }, + { 214967, true }, + { 214982, true }, + { 214993, true }, + { 215013, true }, { 215029, true }, - { 215037, true }, - { 215045, true }, - { 215056, true }, - { 215070, true }, - { 215087, true }, - { 215100, true }, - { 215109, true }, - { 215125, true }, - { 215134, true }, - { 215149, true }, - { 215160, true }, + { 215048, true }, + { 215062, true }, + { 215083, true }, + { 215094, true }, + { 215110, true }, + { 215129, true }, + { 215137, true }, + { 215145, true }, + { 215156, true }, { 215170, true }, - { 215181, true }, - { 215193, true }, - { 215208, true }, - { 215219, true }, - { 215231, true }, - { 215242, true }, - { 215252, true }, - { 215266, true }, - { 215277, true }, - { 215288, true }, - { 215298, true }, - { 215312, true }, - { 215322, true }, - { 215333, true }, - { 215345, true }, + { 215187, true }, + { 215200, true }, + { 215209, true }, + { 215225, true }, + { 215234, true }, + { 215249, true }, + { 215260, true }, + { 215270, true }, + { 215281, true }, + { 215293, true }, + { 215308, true }, + { 215319, true }, + { 215331, true }, + { 215342, true }, { 215352, true }, - { 215370, true }, - { 215382, true }, - { 215392, true }, - { 215403, true }, - { 215425, true }, - { 215439, true }, - { 215447, true }, - { 215466, true }, - { 215487, true }, - { 215502, true }, - { 215524, true }, - { 215533, true }, - { 215545, true }, - { 215563, true }, - { 215577, true }, - { 215589, true }, - { 215600, true }, - { 215611, true }, - { 215630, true }, - { 215640, true }, - { 215652, true }, - { 215661, true }, - { 215673, true }, + { 215366, true }, + { 215377, true }, + { 215388, true }, + { 215398, true }, + { 215412, true }, + { 215422, true }, + { 215433, true }, + { 215445, true }, + { 215452, true }, + { 215470, true }, + { 215482, true }, + { 215492, true }, + { 215503, true }, + { 215525, true }, + { 215539, true }, + { 215547, true }, + { 215566, true }, + { 215587, true }, + { 215602, true }, + { 215624, true }, + { 215633, true }, + { 215645, true }, + { 215663, true }, + { 215677, true }, { 215689, true }, - { 215696, true }, - { 215704, true }, - { 215716, true }, - { 215731, true }, - { 215751, true }, - { 215759, true }, - { 215772, true }, - { 215785, true }, - { 215802, true }, - { 215811, true }, - { 215829, true }, - { 215841, true }, - { 215860, true }, - { 215875, true }, - { 215895, true }, - { 215918, true }, - { 215931, true }, + { 215700, true }, + { 215711, true }, + { 215730, true }, + { 215740, true }, + { 215752, true }, + { 215761, true }, + { 215773, true }, + { 215789, true }, + { 215796, true }, + { 215804, true }, + { 215816, true }, + { 215831, true }, + { 215851, true }, + { 215859, true }, + { 215872, true }, + { 215885, true }, + { 215902, true }, + { 215911, true }, + { 215929, true }, { 215941, true }, - { 215953, true }, - { 215977, true }, - { 215993, true }, - { 216016, true }, + { 215960, true }, + { 215975, true }, + { 215995, true }, + { 216008, true }, + { 216018, true }, { 216030, true }, - { 216047, true }, - { 216063, true }, - { 216080, true }, - { 216095, true }, - { 216110, true }, - { 216129, true }, - { 216145, true }, - { 216153, true }, - { 216171, true }, - { 216180, true }, - { 216188, false }, - { 216197, true }, - { 216209, true }, - { 216223, true }, - { 216234, true }, + { 216054, true }, + { 216070, true }, + { 216093, true }, + { 216107, true }, + { 216124, true }, + { 216140, true }, + { 216157, true }, + { 216172, true }, + { 216187, true }, + { 216206, true }, + { 216222, true }, + { 216230, true }, { 216248, true }, - { 216258, true }, - { 216269, true }, - { 216282, true }, - { 216292, true }, - { 216315, true }, - { 216329, true }, - { 216342, true }, - { 216355, true }, + { 216257, true }, + { 216265, false }, + { 216274, true }, + { 216286, true }, + { 216300, true }, + { 216311, true }, + { 216325, true }, + { 216335, true }, + { 216346, true }, + { 216359, true }, { 216369, true }, - { 216382, true }, - { 216395, true }, - { 216403, true }, - { 216415, true }, - { 216423, true }, - { 216439, true }, - { 216449, false }, - { 216458, true }, - { 216465, true }, - { 216474, true }, - { 216482, true }, - { 216491, true }, - { 216518, false }, - { 216532, true }, - { 216546, true }, - { 216556, true }, - { 216569, true }, - { 216585, true }, - { 216595, true }, - { 216631, true }, - { 216641, true }, - { 216653, true }, - { 216667, true }, - { 216680, true }, - { 216692, true }, - { 216704, true }, + { 216392, true }, + { 216406, true }, + { 216419, true }, + { 216432, true }, + { 216446, true }, + { 216459, true }, + { 216472, true }, + { 216480, true }, + { 216492, true }, + { 216500, true }, + { 216516, true }, + { 216526, false }, + { 216535, true }, + { 216542, true }, + { 216551, true }, + { 216559, true }, + { 216568, true }, + { 216595, false }, + { 216609, true }, + { 216623, true }, + { 216633, true }, + { 216646, true }, + { 216662, true }, + { 216672, true }, + { 216708, true }, { 216718, true }, - { 216736, false }, - { 216749, true }, - { 216764, true }, - { 216778, true }, - { 216796, true }, - { 216806, true }, - { 216817, true }, - { 216835, true }, - { 216847, true }, - { 216860, true }, - { 216874, true }, - { 216888, true }, - { 216898, true }, - { 216911, true }, - { 216921, true }, - { 216932, true }, - { 216941, true }, - { 216958, true }, - { 216969, true }, - { 216978, true }, - { 216991, true }, - { 217002, true }, - { 217020, true }, - { 217030, true }, + { 216730, true }, + { 216744, true }, + { 216757, true }, + { 216769, true }, + { 216781, true }, + { 216795, true }, + { 216813, false }, + { 216826, true }, + { 216841, true }, + { 216855, true }, + { 216873, true }, + { 216883, true }, + { 216894, true }, + { 216912, true }, + { 216924, true }, + { 216937, true }, + { 216951, true }, + { 216965, true }, + { 216975, true }, + { 216988, true }, + { 216998, true }, + { 217009, true }, + { 217018, true }, + { 217035, true }, { 217046, true }, - { 217061, true }, - { 217070, true }, - { 217082, true }, - { 217095, true }, + { 217055, true }, + { 217068, true }, + { 217079, true }, + { 217097, true }, { 217107, true }, - { 217116, true }, - { 217129, true }, - { 217140, true }, - { 217156, true }, - { 217173, true }, - { 217186, true }, - { 217205, true }, - { 217219, true }, - { 217228, true }, - { 217241, false }, - { 217252, true }, - { 217268, true }, - { 217284, true }, - { 217300, false }, - { 217315, false }, - { 217326, false }, - { 217337, false }, - { 217344, true }, - { 217360, true }, - { 217379, true }, - { 217397, true }, - { 217416, true }, - { 217431, true }, - { 217449, true }, - { 217466, true }, - { 217480, true }, - { 217496, true }, - { 217510, true }, + { 217123, true }, + { 217138, true }, + { 217147, true }, + { 217159, true }, + { 217172, true }, + { 217184, true }, + { 217193, true }, + { 217206, true }, + { 217217, true }, + { 217233, true }, + { 217250, true }, + { 217263, true }, + { 217282, true }, + { 217296, true }, + { 217305, true }, + { 217318, false }, + { 217329, true }, + { 217345, true }, + { 217361, true }, + { 217377, false }, + { 217392, false }, + { 217403, false }, + { 217414, false }, + { 217421, true }, + { 217437, true }, + { 217456, true }, + { 217474, true }, + { 217493, true }, + { 217508, true }, { 217526, true }, { 217543, true }, - { 217565, true }, - { 217590, true }, - { 217613, true }, - { 217634, true }, - { 217653, true }, - { 217668, true }, - { 217680, false }, - { 217694, true }, - { 217708, true }, - { 217722, true }, - { 217735, true }, - { 217756, true }, - { 217768, true }, - { 217780, true }, - { 217804, true }, - { 217817, true }, - { 217827, true }, - { 217847, true }, - { 217868, true }, + { 217557, true }, + { 217573, true }, + { 217587, true }, + { 217603, true }, + { 217620, true }, + { 217642, true }, + { 217667, true }, + { 217690, true }, + { 217711, true }, + { 217730, true }, + { 217745, true }, + { 217757, false }, + { 217771, true }, + { 217785, true }, + { 217799, true }, + { 217812, true }, + { 217833, true }, + { 217845, true }, + { 217857, true }, { 217881, true }, + { 217894, true }, { 217904, true }, - { 217926, true }, - { 217948, true }, - { 217970, true }, - { 217984, true }, + { 217924, true }, + { 217945, true }, + { 217958, true }, + { 217981, true }, { 218003, true }, - { 218021, true }, - { 218035, false }, + { 218025, true }, { 218047, true }, { 218061, true }, - { 218071, true }, - { 218085, true }, - { 218095, true }, - { 218111, true }, - { 218127, true }, - { 218153, true }, - { 218181, true }, - { 218194, true }, - { 218205, true }, - { 218221, true }, - { 218245, true }, - { 218261, true }, - { 218276, true }, - { 218292, true }, - { 218304, true }, - { 218316, true }, - { 218328, true }, - { 218346, true }, - { 218359, true }, - { 218378, true }, - { 218396, true }, + { 218080, true }, + { 218098, true }, + { 218112, false }, + { 218124, true }, + { 218138, true }, + { 218148, true }, + { 218162, true }, + { 218172, true }, + { 218188, true }, + { 218204, true }, + { 218230, true }, + { 218258, true }, + { 218271, true }, + { 218282, true }, + { 218298, true }, + { 218322, true }, + { 218338, true }, + { 218353, true }, + { 218369, true }, + { 218381, true }, + { 218393, true }, { 218411, true }, - { 218434, true }, - { 218451, true }, - { 218467, true }, - { 218486, true }, - { 218506, true }, - { 218529, true }, - { 218548, true }, - { 218567, true }, - { 218586, true }, - { 218604, true }, - { 218615, true }, - { 218625, true }, - { 218636, true }, + { 218424, true }, + { 218443, true }, + { 218461, true }, + { 218476, true }, + { 218499, true }, + { 218516, true }, + { 218532, true }, + { 218551, true }, + { 218571, true }, + { 218594, true }, + { 218613, true }, + { 218632, true }, { 218651, true }, - { 218671, true }, - { 218692, true }, - { 218712, true }, - { 218731, true }, - { 218745, true }, - { 218769, true }, - { 218784, true }, - { 218798, true }, + { 218669, true }, + { 218680, true }, + { 218690, true }, + { 218701, true }, + { 218716, true }, + { 218736, true }, + { 218757, true }, + { 218777, true }, + { 218796, true }, { 218810, true }, - { 218820, true }, - { 218840, true }, - { 218870, true }, - { 218893, true }, - { 218916, true }, - { 218945, true }, - { 218963, true }, - { 218979, true }, - { 218998, true }, + { 218834, true }, + { 218849, true }, + { 218863, true }, + { 218875, true }, + { 218885, true }, + { 218905, true }, + { 218935, true }, + { 218958, true }, + { 218981, true }, { 219010, true }, - { 219020, true }, - { 219040, true }, - { 219053, true }, - { 219071, true }, - { 219088, true }, - { 219106, true }, - { 219126, true }, - { 219141, true }, - { 219150, true }, - { 219165, true }, - { 219182, true }, - { 219194, true }, - { 219205, true }, - { 219217, true }, - { 219229, true }, - { 219242, true }, - { 219260, true }, - { 219275, true }, - { 219290, true }, - { 219306, true }, - { 219320, true }, - { 219332, true }, - { 219352, true }, - { 219363, true }, - { 219375, true }, + { 219028, true }, + { 219044, true }, + { 219063, true }, + { 219075, true }, + { 219085, true }, + { 219105, true }, + { 219118, true }, + { 219136, true }, + { 219153, true }, + { 219171, true }, + { 219191, true }, + { 219206, true }, + { 219215, true }, + { 219230, true }, + { 219247, true }, + { 219259, true }, + { 219270, true }, + { 219282, true }, + { 219294, true }, + { 219307, true }, + { 219325, true }, + { 219340, true }, + { 219355, true }, + { 219371, true }, { 219385, true }, - { 219405, true }, - { 219419, true }, - { 219437, true }, - { 219457, true }, + { 219397, true }, + { 219417, true }, + { 219428, true }, + { 219440, true }, + { 219450, true }, { 219470, true }, - { 219485, true }, - { 219501, true }, - { 219516, true }, - { 219531, true }, - { 219543, true }, - { 219559, true }, - { 219571, true }, - { 219586, true }, - { 219602, true }, - { 219612, true }, - { 219619, true }, - { 219628, true }, - { 219643, true }, - { 219656, true }, - { 219676, true }, - { 219688, true }, - { 219699, true }, - { 219712, true }, + { 219484, true }, + { 219502, true }, + { 219522, true }, + { 219535, true }, + { 219550, true }, + { 219566, true }, + { 219581, true }, + { 219596, true }, + { 219608, true }, + { 219624, true }, + { 219636, true }, + { 219651, true }, + { 219667, true }, + { 219677, true }, + { 219684, true }, + { 219693, true }, + { 219708, true }, { 219721, true }, { 219741, true }, - { 219761, true }, - { 219781, true }, - { 219795, true }, - { 219807, true }, - { 219818, true }, - { 219828, true }, - { 219839, false }, - { 219850, true }, - { 219861, true }, - { 219872, false }, - { 219882, false }, - { 219899, true }, - { 219911, true }, - { 219927, true }, - { 219940, true }, - { 219949, true }, - { 219963, true }, - { 219974, true }, - { 219986, true }, - { 219995, true }, + { 219753, true }, + { 219764, true }, + { 219777, true }, + { 219786, true }, + { 219806, true }, + { 219826, true }, + { 219846, true }, + { 219860, true }, + { 219872, true }, + { 219883, true }, + { 219893, true }, + { 219904, false }, + { 219915, true }, + { 219926, true }, + { 219937, false }, + { 219947, false }, + { 219964, true }, + { 219976, true }, + { 219992, true }, { 220005, true }, - { 220023, true }, - { 220037, true }, - { 220048, true }, - { 220059, true }, - { 220072, true }, - { 220080, true }, - { 220093, true }, + { 220014, true }, + { 220028, true }, + { 220039, true }, + { 220051, true }, + { 220060, true }, + { 220070, true }, + { 220088, true }, { 220102, true }, - { 220117, true }, - { 220128, true }, - { 220146, true }, - { 220166, true }, - { 220178, true }, - { 220188, true }, - { 220199, true }, - { 220209, true }, - { 220242, true }, - { 220254, true }, - { 220268, true }, - { 220282, true }, - { 220297, true }, - { 220310, true }, - { 220324, true }, - { 220338, false }, - { 220358, true }, + { 220113, true }, + { 220124, true }, + { 220137, true }, + { 220145, true }, + { 220158, true }, + { 220167, true }, + { 220182, true }, + { 220193, true }, + { 220211, true }, + { 220231, true }, + { 220243, true }, + { 220253, true }, + { 220264, true }, + { 220274, true }, + { 220307, true }, + { 220319, true }, + { 220333, true }, + { 220347, true }, + { 220362, true }, { 220375, true }, - { 220388, true }, - { 220402, true }, - { 220417, true }, - { 220433, true }, - { 220452, true }, - { 220470, true }, - { 220486, true }, - { 220503, true }, - { 220515, true }, - { 220523, true }, - { 220536, true }, - { 220549, true }, - { 220563, true }, - { 220576, true }, - { 220589, true }, - { 220605, true }, - { 220619, true }, - { 220632, true }, - { 220645, true }, - { 220658, true }, - { 220671, true }, + { 220389, true }, + { 220403, false }, + { 220423, true }, + { 220440, true }, + { 220453, true }, + { 220467, true }, + { 220482, true }, + { 220498, true }, + { 220517, true }, + { 220535, true }, + { 220551, true }, + { 220568, true }, + { 220580, true }, + { 220588, true }, + { 220601, true }, + { 220614, true }, + { 220628, true }, + { 220641, true }, + { 220654, true }, + { 220670, true }, { 220684, true }, - { 220699, true }, - { 220712, true }, - { 220726, true }, - { 220739, true }, - { 220753, true }, - { 220766, true }, - { 220779, true }, - { 220792, true }, - { 220805, true }, - { 220817, true }, - { 220830, true }, - { 220842, true }, - { 220849, true }, - { 220866, true }, - { 220879, false }, - { 220888, true }, - { 220898, true }, - { 220909, true }, - { 220918, true }, + { 220697, true }, + { 220710, true }, + { 220723, true }, + { 220736, true }, + { 220749, true }, + { 220764, true }, + { 220777, true }, + { 220791, true }, + { 220804, true }, + { 220818, true }, + { 220831, true }, + { 220844, true }, + { 220857, true }, + { 220870, true }, + { 220882, true }, + { 220895, true }, + { 220907, true }, + { 220914, true }, { 220931, true }, - { 220962, true }, - { 220979, true }, - { 220995, true }, - { 221010, true }, - { 221023, true }, - { 221036, true }, - { 221052, true }, - { 221065, true }, - { 221078, true }, - { 221089, true }, - { 221104, true }, - { 221116, true }, - { 221132, true }, - { 221157, true }, - { 221181, true }, - { 221202, true }, - { 221219, false }, - { 221232, true }, - { 221246, true }, - { 221259, true }, - { 221270, true }, - { 221287, true }, - { 221298, true }, - { 221317, true }, - { 221335, false }, - { 221347, true }, - { 221357, true }, - { 221393, true }, - { 221414, true }, + { 220944, false }, + { 220953, true }, + { 220963, true }, + { 220974, true }, + { 220983, true }, + { 220996, true }, + { 221013, true }, + { 221029, true }, + { 221044, true }, + { 221057, true }, + { 221070, true }, + { 221086, true }, + { 221099, true }, + { 221112, true }, + { 221123, true }, + { 221138, true }, + { 221150, true }, + { 221166, true }, + { 221191, true }, + { 221215, true }, + { 221236, true }, + { 221253, false }, + { 221266, true }, + { 221280, true }, + { 221293, true }, + { 221304, true }, + { 221321, true }, + { 221332, true }, + { 221351, true }, + { 221369, false }, + { 221381, true }, + { 221391, true }, { 221427, true }, - { 221441, true }, - { 221454, true }, - { 221463, true }, - { 221471, false }, - { 221481, true }, - { 221495, true }, - { 221507, true }, - { 221525, true }, - { 221539, true }, - { 221557, true }, - { 221578, true }, - { 221598, true }, - { 221621, true }, - { 221637, true }, - { 221654, true }, - { 221668, true }, - { 221684, true }, - { 221697, true }, + { 221448, true }, + { 221461, true }, + { 221475, true }, + { 221488, true }, + { 221497, true }, + { 221505, false }, + { 221515, true }, + { 221529, true }, + { 221541, true }, + { 221559, true }, + { 221573, true }, + { 221591, true }, + { 221612, true }, + { 221632, true }, + { 221655, true }, + { 221671, true }, + { 221688, true }, + { 221702, true }, { 221718, true }, - { 221738, true }, + { 221731, true }, { 221752, true }, - { 221762, true }, - { 221774, true }, - { 221794, true }, - { 221807, true }, - { 221816, true }, - { 221836, true }, + { 221772, true }, + { 221786, true }, + { 221796, true }, + { 221808, true }, + { 221828, true }, + { 221841, true }, + { 221850, true }, { 221870, true }, - { 221887, true }, - { 221917, true }, - { 221928, true }, - { 221939, true }, + { 221904, true }, + { 221921, true }, { 221951, true }, { 221962, true }, - { 221981, true }, - { 221994, true }, - { 222006, true }, - { 222018, true }, - { 222033, true }, - { 222046, true }, - { 222062, true }, - { 222081, true }, + { 221973, true }, + { 221985, true }, + { 221996, true }, + { 222015, true }, + { 222028, true }, + { 222040, true }, + { 222052, true }, + { 222067, true }, + { 222080, true }, { 222096, true }, - { 222110, true }, - { 222125, true }, - { 222142, false }, - { 222157, true }, - { 222177, true }, - { 222197, false }, - { 222206, true }, - { 222215, true }, - { 222226, true }, - { 222238, true }, - { 222252, true }, - { 222265, true }, - { 222283, true }, - { 222297, true }, - { 222309, true }, - { 222324, true }, - { 222334, true }, - { 222346, true }, - { 222357, true }, + { 222115, true }, + { 222130, true }, + { 222144, true }, + { 222159, true }, + { 222176, false }, + { 222191, true }, + { 222211, true }, + { 222231, false }, + { 222240, true }, + { 222249, true }, + { 222260, true }, + { 222272, true }, + { 222286, true }, + { 222299, true }, + { 222317, true }, + { 222331, true }, + { 222343, true }, + { 222358, true }, { 222368, true }, - { 222378, true }, - { 222399, true }, - { 222427, false }, - { 222438, true }, - { 222464, true }, - { 222484, true }, - { 222507, true }, - { 222514, true }, - { 222525, true }, - { 222535, true }, - { 222545, true }, + { 222380, true }, + { 222391, true }, + { 222402, true }, + { 222412, true }, + { 222433, true }, + { 222461, false }, + { 222472, true }, + { 222498, true }, + { 222518, true }, + { 222541, true }, + { 222548, true }, { 222559, true }, - { 222573, true }, - { 222584, false }, - { 222595, true }, - { 222603, true }, - { 222614, false }, - { 222634, true }, - { 222647, true }, - { 222663, true }, - { 222678, true }, - { 222694, true }, - { 222708, true }, - { 222723, true }, + { 222569, true }, + { 222579, true }, + { 222593, true }, + { 222607, true }, + { 222618, false }, + { 222629, true }, + { 222637, true }, + { 222648, false }, + { 222668, true }, + { 222681, true }, + { 222697, true }, + { 222712, true }, + { 222728, true }, { 222742, true }, - { 222755, true }, - { 222771, true }, - { 222787, true }, - { 222800, true }, - { 222814, true }, - { 222823, true }, - { 222843, true }, - { 222856, true }, - { 222875, true }, - { 222893, true }, - { 222903, true }, - { 222917, true }, - { 222935, true }, - { 222943, true }, - { 222963, true }, - { 222987, true }, - { 223019, true }, - { 223033, true }, - { 223048, true }, + { 222757, true }, + { 222776, true }, + { 222789, true }, + { 222805, true }, + { 222821, true }, + { 222834, true }, + { 222848, true }, + { 222857, true }, + { 222877, true }, + { 222890, true }, + { 222909, true }, + { 222927, true }, + { 222937, true }, + { 222951, true }, + { 222969, true }, + { 222977, true }, + { 222997, true }, + { 223021, true }, + { 223053, true }, { 223067, true }, - { 223086, true }, - { 223100, true }, - { 223117, true }, + { 223082, true }, + { 223101, true }, + { 223120, true }, { 223134, true }, { 223151, true }, - { 223171, true }, - { 223184, true }, - { 223199, true }, - { 223212, true }, - { 223233, true }, - { 223254, true }, - { 223275, true }, + { 223168, true }, + { 223185, true }, + { 223198, true }, + { 223213, true }, + { 223226, true }, + { 223247, true }, + { 223268, true }, { 223289, true }, - { 223311, true }, - { 223327, true }, - { 223337, true }, - { 223362, true }, - { 223374, true }, - { 223385, true }, - { 223402, true }, - { 223426, true }, - { 223435, true }, + { 223303, true }, + { 223325, true }, + { 223341, true }, + { 223351, true }, + { 223376, true }, + { 223388, true }, + { 223399, true }, + { 223416, true }, + { 223440, true }, { 223449, true }, - { 223462, true }, - { 223475, true }, - { 223487, true }, - { 223500, true }, - { 223517, true }, - { 223539, true }, - { 223564, true }, - { 223586, true }, - { 223596, true }, - { 223609, true }, - { 223624, true }, - { 223636, true }, + { 223463, true }, + { 223476, true }, + { 223489, true }, + { 223501, true }, + { 223514, true }, + { 223531, true }, + { 223553, true }, + { 223578, true }, + { 223600, true }, + { 223610, true }, + { 223623, true }, + { 223638, true }, { 223650, true }, { 223664, true }, - { 223681, true }, - { 223701, true }, - { 223717, true }, - { 223735, true }, - { 223750, true }, - { 223761, true }, - { 223778, true }, - { 223793, true }, - { 223806, true }, - { 223821, true }, - { 223829, false }, - { 223842, true }, - { 223854, true }, - { 223869, true }, + { 223678, true }, + { 223695, true }, + { 223715, true }, + { 223731, true }, + { 223749, true }, + { 223764, true }, + { 223775, true }, + { 223792, true }, + { 223807, true }, + { 223820, true }, + { 223835, true }, + { 223843, false }, + { 223856, true }, + { 223868, true }, { 223883, true }, { 223897, true }, - { 223906, true }, - { 223915, true }, - { 223931, true }, - { 223947, true }, - { 223969, true }, - { 223986, true }, + { 223911, true }, + { 223920, true }, + { 223929, true }, + { 223945, true }, + { 223961, true }, + { 223983, true }, { 224000, true }, - { 224010, true }, + { 224014, true }, { 224024, true }, - { 224042, true }, - { 224059, true }, - { 224078, true }, - { 224095, true }, - { 224113, true }, - { 224131, true }, - { 224144, true }, - { 224152, true }, - { 224159, true }, - { 224171, true }, - { 224182, true }, - { 224192, true }, - { 224205, true }, - { 224217, true }, - { 224230, true }, + { 224038, true }, + { 224056, true }, + { 224073, true }, + { 224092, true }, + { 224109, true }, + { 224127, true }, + { 224145, true }, + { 224158, true }, + { 224166, true }, + { 224173, true }, + { 224185, true }, + { 224196, true }, + { 224206, true }, + { 224219, true }, + { 224231, true }, { 224244, true }, - { 224260, true }, - { 224273, true }, + { 224258, true }, + { 224274, true }, { 224287, true }, - { 224304, true }, - { 224315, true }, - { 224325, true }, - { 224338, true }, - { 224358, true }, - { 224376, true }, - { 224388, true }, - { 224400, true }, - { 224413, true }, + { 224301, true }, + { 224318, true }, + { 224329, true }, + { 224339, true }, + { 224352, true }, + { 224372, true }, + { 224390, true }, + { 224402, true }, + { 224414, true }, { 224427, true }, - { 224442, true }, - { 224454, true }, - { 224463, true }, + { 224441, true }, + { 224456, true }, + { 224468, true }, { 224477, true }, - { 224485, true }, - { 224497, true }, - { 224508, true }, + { 224491, true }, + { 224499, true }, + { 224511, true }, { 224522, true }, - { 224543, true }, - { 224562, true }, - { 224575, true }, - { 224593, true }, - { 224612, true }, - { 224630, true }, - { 224639, true }, - { 224651, true }, - { 224673, true }, - { 224691, true }, - { 224704, true }, + { 224536, true }, + { 224557, true }, + { 224576, true }, + { 224589, true }, + { 224607, true }, + { 224626, true }, + { 224644, true }, + { 224653, true }, + { 224665, true }, + { 224687, true }, + { 224705, true }, { 224718, true }, - { 224737, true }, + { 224732, true }, { 224751, true }, - { 224763, true }, - { 224775, true }, - { 224786, true }, + { 224765, true }, + { 224777, true }, + { 224789, true }, { 224800, true }, - { 224814, false }, - { 224829, true }, - { 224856, true }, - { 224883, true }, - { 224903, true }, - { 224914, true }, - { 224927, true }, - { 224944, true }, - { 224955, true }, - { 224966, true }, + { 224814, true }, + { 224828, false }, + { 224843, true }, + { 224870, true }, + { 224897, true }, + { 224917, true }, + { 224928, true }, + { 224941, true }, + { 224958, true }, + { 224969, true }, { 224980, true }, - { 225001, true }, - { 225017, true }, - { 225028, true }, - { 225047, true }, - { 225063, false }, - { 225081, true }, - { 225097, true }, - { 225120, true }, - { 225136, true }, + { 224994, true }, + { 225015, true }, + { 225031, true }, + { 225042, true }, + { 225061, true }, + { 225077, false }, + { 225095, true }, + { 225111, true }, + { 225134, true }, { 225150, true }, - { 225162, true }, - { 225171, true }, - { 225183, true }, - { 225196, true }, - { 225214, true }, - { 225230, true }, - { 225245, true }, - { 225261, true }, - { 225276, true }, - { 225291, true }, - { 225307, true }, - { 225322, true }, - { 225337, true }, - { 225354, true }, - { 225364, true }, - { 225374, true }, - { 225387, true }, - { 225400, true }, - { 225410, true }, - { 225431, true }, - { 225443, false }, - { 225454, true }, - { 225466, true }, - { 225478, true }, - { 225487, false }, - { 225506, true }, - { 225523, true }, - { 225536, true }, - { 225551, true }, - { 225567, true }, + { 225164, true }, + { 225176, true }, + { 225185, true }, + { 225197, true }, + { 225210, true }, + { 225228, true }, + { 225244, true }, + { 225259, true }, + { 225275, true }, + { 225290, true }, + { 225305, true }, + { 225321, true }, + { 225336, true }, + { 225351, true }, + { 225368, true }, + { 225378, true }, + { 225388, true }, + { 225401, true }, + { 225414, true }, + { 225424, true }, + { 225445, true }, + { 225457, false }, + { 225468, true }, + { 225480, true }, + { 225492, true }, + { 225501, false }, + { 225520, true }, + { 225537, true }, + { 225550, true }, + { 225565, true }, { 225581, true }, - { 225595, false }, - { 225608, false }, - { 225618, true }, - { 225631, true }, - { 225641, true }, - { 225660, true }, - { 225677, true }, - { 225687, true }, - { 225696, true }, - { 225706, true }, - { 225715, false }, - { 225724, false }, - { 225732, true }, - { 225740, true }, - { 225752, true }, - { 225764, false }, - { 225784, true }, - { 225797, true }, - { 225815, true }, - { 225827, false }, - { 225839, true }, + { 225595, true }, + { 225609, false }, + { 225622, false }, + { 225632, true }, + { 225645, true }, + { 225655, true }, + { 225674, true }, + { 225691, true }, + { 225701, true }, + { 225710, true }, + { 225720, true }, + { 225729, false }, + { 225738, false }, + { 225746, true }, + { 225754, true }, + { 225766, true }, + { 225778, false }, + { 225798, true }, + { 225811, true }, + { 225829, true }, + { 225841, false }, { 225853, true }, - { 225870, true }, + { 225867, true }, { 225884, true }, - { 225903, true }, - { 225920, true }, - { 225936, true }, - { 225952, true }, - { 225969, true }, - { 225988, true }, - { 226004, true }, - { 226023, true }, - { 226041, true }, - { 226058, true }, - { 226082, true }, - { 226102, true }, - { 226125, true }, - { 226151, true }, - { 226164, true }, + { 225898, true }, + { 225917, true }, + { 225934, true }, + { 225950, true }, + { 225966, true }, + { 225983, true }, + { 226002, true }, + { 226018, true }, + { 226037, true }, + { 226055, true }, + { 226072, true }, + { 226096, true }, + { 226116, true }, + { 226139, true }, + { 226165, true }, { 226178, true }, { 226192, true }, - { 226205, true }, - { 226226, true }, + { 226206, true }, + { 226219, true }, { 226240, true }, - { 226250, true }, - { 226266, true }, - { 226279, true }, - { 226301, true }, - { 226318, true }, - { 226333, true }, - { 226362, true }, - { 226373, true }, - { 226385, true }, - { 226401, true }, + { 226254, true }, + { 226264, true }, + { 226280, true }, + { 226293, true }, + { 226315, true }, + { 226332, true }, + { 226347, true }, + { 226376, true }, + { 226387, true }, + { 226399, true }, { 226415, true }, - { 226434, true }, - { 226448, false }, - { 226470, true }, - { 226488, true }, - { 226497, true }, - { 226512, true }, - { 226533, true }, - { 226550, true }, - { 226558, true }, - { 226570, true }, - { 226586, true }, - { 226599, true }, - { 226608, true }, - { 226621, false }, - { 226632, true }, - { 226643, true }, - { 226654, true }, - { 226663, true }, - { 226677, false }, - { 226691, true }, - { 226709, true }, - { 226727, true }, - { 226744, true }, - { 226755, false }, - { 226771, false }, - { 226795, true }, - { 226810, true }, - { 226837, true }, - { 226849, true }, - { 226859, true }, - { 226874, true }, - { 226899, true }, - { 226918, true }, - { 226928, true }, - { 226973, true }, - { 227018, true }, + { 226429, true }, + { 226448, true }, + { 226462, false }, + { 226484, true }, + { 226502, true }, + { 226511, true }, + { 226526, true }, + { 226547, true }, + { 226564, true }, + { 226572, true }, + { 226584, true }, + { 226600, true }, + { 226613, true }, + { 226622, true }, + { 226635, false }, + { 226646, true }, + { 226657, true }, + { 226668, true }, + { 226677, true }, + { 226691, false }, + { 226705, true }, + { 226723, true }, + { 226741, true }, + { 226758, true }, + { 226769, false }, + { 226785, false }, + { 226809, true }, + { 226824, true }, + { 226851, true }, + { 226863, true }, + { 226873, true }, + { 226888, true }, + { 226913, true }, + { 226932, true }, + { 226942, true }, + { 226987, true }, { 227032, true }, - { 227040, true }, - { 227049, true }, - { 227057, true }, - { 227069, true }, - { 227081, true }, + { 227046, true }, + { 227054, true }, + { 227063, true }, + { 227071, true }, + { 227083, true }, { 227095, true }, - { 227120, true }, - { 227137, true }, - { 227154, true }, - { 227169, true }, - { 227181, true }, - { 227193, true }, - { 227206, true }, - { 227214, true }, - { 227232, true }, - { 227241, false }, - { 227249, true }, - { 227261, true }, - { 227286, true }, - { 227307, true }, - { 227326, true }, - { 227339, true }, + { 227109, true }, + { 227134, true }, + { 227151, true }, + { 227168, true }, + { 227183, true }, + { 227195, true }, + { 227207, true }, + { 227220, true }, + { 227228, true }, + { 227246, true }, + { 227255, false }, + { 227263, true }, + { 227275, true }, + { 227300, true }, + { 227321, true }, + { 227340, true }, { 227353, true }, - { 227366, true }, - { 227379, true }, - { 227401, true }, - { 227414, true }, - { 227426, true }, - { 227438, true }, - { 227451, false }, + { 227367, true }, + { 227380, true }, + { 227393, true }, + { 227415, true }, + { 227428, true }, + { 227440, true }, + { 227452, true }, { 227464, true }, - { 227480, true }, - { 227494, true }, - { 227515, true }, - { 227534, true }, - { 227559, true }, - { 227568, true }, - { 227581, true }, - { 227594, true }, - { 227608, true }, + { 227477, true }, + { 227490, false }, + { 227503, true }, + { 227519, true }, + { 227533, true }, + { 227554, true }, + { 227573, true }, + { 227598, true }, + { 227607, true }, { 227620, true }, - { 227628, true }, - { 227640, true }, - { 227652, true }, - { 227671, true }, - { 227687, false }, - { 227705, true }, - { 227717, true }, - { 227734, true }, - { 227751, true }, - { 227763, false }, - { 227772, true }, - { 227781, true }, - { 227796, true }, - { 227818, true }, - { 227837, true }, - { 227852, true }, - { 227867, true }, - { 227881, true }, - { 227894, true }, + { 227633, true }, + { 227647, true }, + { 227659, true }, + { 227667, true }, + { 227679, true }, + { 227691, true }, + { 227710, true }, + { 227726, false }, + { 227744, true }, + { 227756, true }, + { 227773, true }, + { 227790, true }, + { 227802, false }, + { 227811, true }, + { 227820, true }, + { 227835, true }, + { 227857, true }, + { 227876, true }, + { 227891, true }, { 227906, true }, - { 227928, true }, - { 227943, true }, - { 227958, true }, - { 227973, true }, - { 227994, false }, - { 228005, true }, - { 228014, true }, - { 228029, true }, - { 228050, true }, - { 228062, true }, - { 228080, true }, - { 228097, true }, - { 228109, true }, - { 228125, false }, - { 228141, true }, - { 228154, true }, - { 228166, false }, - { 228181, true }, - { 228194, false }, - { 228218, true }, - { 228226, true }, - { 228244, true }, - { 228273, true }, - { 228284, true }, - { 228295, true }, - { 228306, true }, - { 228317, true }, - { 228328, true }, - { 228340, true }, + { 227920, true }, + { 227933, true }, + { 227945, true }, + { 227967, true }, + { 227982, true }, + { 227997, true }, + { 228012, true }, + { 228033, false }, + { 228044, true }, + { 228053, true }, + { 228068, true }, + { 228089, true }, + { 228101, true }, + { 228119, true }, + { 228136, true }, + { 228148, true }, + { 228164, false }, + { 228180, true }, + { 228193, true }, + { 228205, false }, + { 228220, true }, + { 228233, false }, + { 228257, true }, + { 228265, true }, + { 228283, true }, + { 228312, true }, + { 228323, true }, + { 228334, true }, + { 228345, true }, { 228356, true }, - { 228378, true }, - { 228389, true }, - { 228397, false }, - { 228410, true }, - { 228422, true }, - { 228434, true }, - { 228448, true }, - { 228460, true }, + { 228367, true }, + { 228379, true }, + { 228395, true }, + { 228417, true }, + { 228428, true }, + { 228436, false }, + { 228449, true }, + { 228461, true }, { 228473, true }, - { 228485, true }, - { 228501, true }, + { 228487, true }, + { 228499, true }, { 228512, true }, - { 228527, true }, - { 228546, true }, - { 228564, true }, - { 228581, true }, - { 228592, true }, - { 228616, true }, - { 228630, true }, - { 228644, true }, - { 228659, true }, - { 228679, true }, - { 228695, true }, - { 228714, true }, - { 228730, true }, - { 228750, true }, - { 228762, true }, - { 228774, true }, - { 228797, true }, - { 228814, true }, - { 228828, true }, - { 228844, true }, - { 228874, true }, - { 228886, true }, - { 228905, true }, - { 228924, true }, - { 228935, true }, - { 228945, true }, - { 228956, true }, - { 228968, true }, - { 228982, true }, + { 228524, true }, + { 228540, true }, + { 228551, true }, + { 228566, true }, + { 228585, true }, + { 228603, true }, + { 228620, true }, + { 228631, true }, + { 228655, true }, + { 228669, true }, + { 228683, true }, + { 228698, true }, + { 228718, true }, + { 228734, true }, + { 228753, true }, + { 228769, true }, + { 228789, true }, + { 228801, true }, + { 228813, true }, + { 228836, true }, + { 228853, true }, + { 228867, true }, + { 228883, true }, + { 228913, true }, + { 228925, true }, + { 228944, true }, + { 228963, true }, + { 228974, true }, + { 228984, true }, { 228995, true }, - { 229015, true }, - { 229033, true }, - { 229051, true }, - { 229069, false }, - { 229079, true }, - { 229094, true }, - { 229112, true }, - { 229121, true }, - { 229134, true }, - { 229146, true }, - { 229163, true }, + { 229007, true }, + { 229021, true }, + { 229034, true }, + { 229054, true }, + { 229072, true }, + { 229090, true }, + { 229108, false }, + { 229118, true }, + { 229132, true }, + { 229147, true }, + { 229165, true }, { 229174, true }, - { 229184, true }, - { 229193, true }, - { 229214, true }, - { 229234, true }, - { 229256, true }, - { 229272, true }, - { 229281, true }, - { 229292, true }, - { 229307, true }, - { 229327, true }, - { 229346, true }, - { 229361, true }, - { 229376, true }, - { 229393, true }, - { 229416, true }, - { 229427, true }, - { 229449, true }, - { 229467, true }, - { 229477, true }, - { 229499, true }, - { 229516, true }, - { 229535, true }, - { 229557, false }, - { 229574, true }, + { 229187, true }, + { 229199, true }, + { 229216, true }, + { 229227, true }, + { 229237, true }, + { 229246, true }, + { 229267, true }, + { 229287, true }, + { 229309, true }, + { 229325, true }, + { 229334, true }, + { 229345, true }, + { 229360, true }, + { 229380, true }, + { 229399, true }, + { 229414, true }, + { 229429, true }, + { 229446, true }, + { 229469, true }, + { 229480, true }, + { 229502, true }, + { 229520, true }, + { 229530, true }, + { 229552, true }, + { 229569, true }, { 229588, true }, - { 229601, true }, - { 229626, true }, - { 229643, true }, - { 229659, true }, - { 229669, true }, - { 229680, true }, - { 229691, true }, - { 229700, true }, - { 229707, true }, - { 229717, true }, - { 229735, true }, - { 229755, true }, - { 229769, true }, - { 229778, true }, - { 229802, true }, - { 229823, true }, - { 229843, true }, - { 229861, true }, - { 229874, true }, - { 229895, true }, - { 229913, true }, - { 229925, true }, - { 229933, true }, - { 229955, true }, - { 229971, true }, - { 229984, true }, - { 230009, true }, - { 230020, true }, - { 230034, true }, - { 230055, true }, - { 230066, true }, - { 230076, true }, - { 230097, true }, - { 230112, true }, - { 230124, true }, - { 230141, true }, - { 230167, true }, - { 230180, true }, - { 230199, true }, - { 230216, true }, - { 230245, false }, - { 230263, true }, - { 230291, true }, - { 230302, true }, - { 230318, true }, - { 230334, true }, - { 230357, true }, + { 229610, false }, + { 229627, true }, + { 229641, true }, + { 229654, true }, + { 229679, true }, + { 229696, true }, + { 229712, true }, + { 229722, true }, + { 229733, true }, + { 229744, true }, + { 229753, true }, + { 229760, true }, + { 229770, true }, + { 229788, true }, + { 229808, true }, + { 229822, true }, + { 229831, true }, + { 229855, true }, + { 229876, true }, + { 229896, true }, + { 229914, true }, + { 229927, true }, + { 229948, true }, + { 229966, true }, + { 229978, true }, + { 229986, true }, + { 230008, true }, + { 230024, true }, + { 230037, true }, + { 230062, true }, + { 230073, true }, + { 230087, true }, + { 230108, true }, + { 230118, true }, + { 230139, true }, + { 230154, true }, + { 230166, true }, + { 230183, true }, + { 230209, true }, + { 230222, true }, + { 230241, true }, + { 230258, true }, + { 230287, false }, + { 230305, true }, + { 230333, true }, + { 230344, true }, + { 230360, true }, { 230376, true }, - { 230400, false }, - { 230419, true }, - { 230431, true }, - { 230451, false }, + { 230399, true }, + { 230418, true }, + { 230442, false }, + { 230461, true }, { 230473, true }, - { 230486, true }, - { 230499, true }, - { 230514, true }, - { 230529, true }, - { 230543, true }, - { 230566, true }, - { 230591, true }, - { 230610, true }, - { 230620, true }, - { 230630, true }, - { 230647, true }, - { 230666, true }, - { 230679, true }, - { 230701, true }, + { 230493, false }, + { 230515, true }, + { 230528, true }, + { 230541, true }, + { 230556, true }, + { 230571, true }, + { 230585, true }, + { 230608, true }, + { 230633, true }, + { 230652, true }, + { 230662, true }, + { 230672, true }, + { 230689, true }, + { 230708, true }, { 230721, true }, - { 230740, true }, - { 230749, true }, - { 230761, true }, - { 230774, true }, - { 230787, true }, - { 230801, true }, - { 230818, true }, - { 230839, true }, - { 230865, true }, - { 230886, true }, + { 230743, true }, + { 230763, true }, + { 230782, true }, + { 230791, true }, + { 230803, true }, + { 230816, true }, + { 230829, true }, + { 230843, true }, + { 230860, true }, + { 230881, true }, { 230907, true }, { 230928, true }, - { 230948, true }, - { 230960, true }, - { 230980, true }, - { 230998, true }, - { 231016, true }, - { 231026, true }, - { 231039, true }, - { 231051, true }, - { 231086, true }, - { 231110, true }, - { 231118, true }, - { 231127, true }, - { 231150, true }, - { 231166, true }, - { 231178, true }, - { 231196, true }, - { 231221, true }, - { 231236, true }, - { 231257, true }, - { 231273, true }, - { 231290, true }, - { 231306, true }, - { 231328, true }, - { 231349, false }, - { 231366, false }, - { 231384, true }, - { 231398, true }, - { 231408, true }, - { 231422, true }, - { 231432, true }, - { 231444, true }, - { 231456, true }, - { 231468, true }, - { 231478, true }, - { 231489, true }, - { 231500, true }, - { 231514, true }, - { 231526, true }, - { 231537, true }, - { 231561, true }, - { 231573, true }, - { 231586, true }, - { 231600, true }, - { 231629, true }, - { 231644, true }, - { 231658, true }, - { 231674, true }, - { 231689, true }, + { 230949, true }, + { 230970, true }, + { 230990, true }, + { 231002, true }, + { 231022, true }, + { 231040, true }, + { 231058, true }, + { 231068, true }, + { 231081, true }, + { 231093, true }, + { 231128, true }, + { 231152, true }, + { 231160, true }, + { 231169, true }, + { 231192, true }, + { 231208, true }, + { 231220, true }, + { 231238, true }, + { 231263, true }, + { 231278, true }, + { 231299, true }, + { 231315, true }, + { 231332, true }, + { 231348, true }, + { 231370, true }, + { 231391, false }, + { 231408, false }, + { 231426, true }, + { 231440, true }, + { 231450, true }, + { 231464, true }, + { 231474, true }, + { 231486, true }, + { 231498, true }, + { 231510, true }, + { 231520, true }, + { 231531, true }, + { 231542, true }, + { 231556, true }, + { 231568, true }, + { 231579, true }, + { 231603, true }, + { 231615, true }, + { 231628, true }, + { 231642, true }, + { 231671, true }, + { 231686, true }, + { 231700, true }, { 231716, true }, - { 231730, true }, - { 231748, true }, - { 231760, true }, - { 231771, true }, - { 231791, true }, - { 231804, true }, - { 231818, true }, - { 231830, true }, - { 231842, true }, - { 231851, true }, - { 231869, true }, - { 231888, true }, - { 231900, true }, - { 231919, true }, - { 231936, true }, - { 231957, true }, - { 231981, true }, - { 231993, true }, - { 232011, true }, - { 232027, true }, - { 232047, false }, - { 232065, true }, - { 232085, true }, - { 232099, true }, - { 232114, true }, - { 232140, true }, - { 232166, true }, - { 232179, true }, - { 232198, true }, - { 232211, true }, - { 232231, true }, - { 232239, true }, - { 232250, true }, - { 232260, true }, - { 232287, true }, - { 232306, true }, - { 232325, true }, + { 231731, true }, + { 231758, true }, + { 231772, true }, + { 231790, true }, + { 231802, true }, + { 231813, true }, + { 231833, true }, + { 231846, true }, + { 231860, true }, + { 231872, true }, + { 231884, true }, + { 231893, true }, + { 231911, true }, + { 231930, true }, + { 231942, true }, + { 231961, true }, + { 231978, true }, + { 231999, true }, + { 232023, true }, + { 232035, true }, + { 232053, true }, + { 232069, false }, + { 232087, true }, + { 232107, true }, + { 232121, true }, + { 232136, true }, + { 232162, true }, + { 232188, true }, + { 232201, true }, + { 232220, true }, + { 232233, true }, + { 232253, true }, + { 232264, true }, + { 232274, true }, + { 232301, true }, + { 232320, true }, { 232339, true }, - { 232357, true }, - { 232372, true }, - { 232388, false }, - { 232407, true }, - { 232418, true }, + { 232353, true }, + { 232371, true }, + { 232386, true }, + { 232402, false }, + { 232421, true }, { 232432, true }, - { 232441, true }, - { 232458, true }, - { 232479, true }, - { 232495, true }, - { 232512, true }, - { 232527, true }, - { 232545, true }, - { 232564, true }, - { 232573, true }, - { 232590, true }, - { 232603, true }, - { 232613, true }, - { 232628, true }, - { 232648, true }, - { 232656, true }, - { 232674, true }, - { 232702, true }, - { 232724, true }, - { 232739, true }, - { 232754, true }, - { 232772, true }, - { 232789, true }, - { 232805, true }, + { 232446, true }, + { 232455, true }, + { 232472, true }, + { 232493, true }, + { 232509, true }, + { 232526, true }, + { 232541, true }, + { 232559, true }, + { 232578, true }, + { 232587, true }, + { 232604, true }, + { 232617, true }, + { 232627, true }, + { 232642, true }, + { 232662, true }, + { 232670, true }, + { 232688, true }, + { 232716, true }, + { 232738, true }, + { 232753, true }, + { 232768, true }, + { 232786, true }, + { 232803, true }, { 232819, true }, - { 232834, false }, - { 232847, false }, - { 232857, false }, - { 232870, false }, - { 232885, true }, - { 232903, true }, - { 232920, true }, - { 232932, true }, - { 232944, true }, - { 232956, true }, - { 232972, true }, - { 232984, true }, - { 232997, true }, - { 233009, true }, - { 233022, true }, + { 232833, true }, + { 232848, false }, + { 232861, false }, + { 232871, false }, + { 232884, false }, + { 232899, true }, + { 232917, true }, + { 232934, true }, + { 232946, true }, + { 232958, true }, + { 232970, true }, + { 232986, true }, + { 232998, true }, + { 233011, true }, + { 233023, true }, { 233036, true }, - { 233049, true }, - { 233061, true }, - { 233080, true }, - { 233093, true }, - { 233103, true }, - { 233115, true }, - { 233125, true }, - { 233140, true }, - { 233152, true }, - { 233163, true }, - { 233181, true }, - { 233191, true }, - { 233199, true }, - { 233207, true }, - { 233217, true }, - { 233229, true }, + { 233050, true }, + { 233063, true }, + { 233075, true }, + { 233094, true }, + { 233107, true }, + { 233117, true }, + { 233129, true }, + { 233139, true }, + { 233154, true }, + { 233166, true }, + { 233177, true }, + { 233195, true }, + { 233205, true }, + { 233213, true }, + { 233221, true }, + { 233231, true }, { 233243, true }, - { 233256, true }, - { 233265, true }, + { 233257, true }, + { 233270, true }, { 233279, true }, - { 233300, true }, - { 233317, true }, - { 233347, true }, - { 233374, true }, - { 233392, true }, - { 233403, true }, - { 233418, true }, - { 233434, true }, - { 233449, true }, - { 233464, true }, - { 233479, true }, - { 233490, true }, - { 233499, true }, - { 233507, true }, - { 233518, true }, - { 233531, true }, - { 233539, true }, - { 233549, true }, - { 233565, true }, - { 233582, true }, - { 233607, true }, - { 233629, true }, - { 233646, true }, - { 233659, true }, - { 233680, true }, - { 233688, true }, - { 233698, true }, - { 233708, true }, - { 233719, true }, - { 233732, true }, - { 233744, true }, - { 233752, true }, - { 233769, true }, - { 233785, false }, - { 233792, true }, - { 233803, true }, - { 233813, true }, - { 233821, true }, + { 233293, true }, + { 233314, true }, + { 233331, true }, + { 233361, true }, + { 233388, true }, + { 233406, true }, + { 233417, true }, + { 233432, true }, + { 233448, true }, + { 233463, true }, + { 233478, true }, + { 233493, true }, + { 233504, true }, + { 233513, true }, + { 233521, true }, + { 233532, true }, + { 233545, true }, + { 233553, true }, + { 233563, true }, + { 233579, true }, + { 233596, true }, + { 233621, true }, + { 233643, true }, + { 233660, true }, + { 233673, true }, + { 233694, true }, + { 233702, true }, + { 233712, true }, + { 233722, true }, + { 233733, true }, + { 233746, true }, + { 233758, true }, + { 233766, true }, + { 233783, true }, + { 233799, false }, + { 233806, true }, + { 233817, true }, + { 233827, true }, { 233835, true }, - { 233847, false }, - { 233871, true }, - { 233903, true }, - { 233930, true }, - { 233950, true }, - { 233974, true }, - { 233991, false }, - { 234004, true }, - { 234017, true }, - { 234032, true }, - { 234043, true }, - { 234054, true }, - { 234064, true }, - { 234075, true }, - { 234088, true }, - { 234096, true }, - { 234108, true }, - { 234120, true }, - { 234141, false }, - { 234153, false }, - { 234161, false }, - { 234186, true }, - { 234205, true }, - { 234218, true }, - { 234233, true }, + { 233849, true }, + { 233861, false }, + { 233885, true }, + { 233917, true }, + { 233944, true }, + { 233964, true }, + { 233988, true }, + { 234005, false }, + { 234018, true }, + { 234031, true }, + { 234046, true }, + { 234057, true }, + { 234068, true }, + { 234078, true }, + { 234089, true }, + { 234102, true }, + { 234110, true }, + { 234122, true }, + { 234134, true }, + { 234155, false }, + { 234167, false }, + { 234175, true }, + { 234200, true }, + { 234219, true }, + { 234232, true }, { 234247, true }, - { 234260, true }, - { 234272, true }, - { 234293, true }, - { 234310, true }, + { 234261, true }, + { 234274, true }, + { 234286, true }, + { 234307, true }, { 234324, true }, - { 234341, true }, - { 234353, true }, + { 234338, true }, + { 234355, true }, { 234367, true }, - { 234382, true }, - { 234400, true }, - { 234415, true }, - { 234423, true }, - { 234430, true }, - { 234440, true }, - { 234460, true }, - { 234471, true }, - { 234495, true }, + { 234381, true }, + { 234396, true }, + { 234414, true }, + { 234429, true }, + { 234437, true }, + { 234444, true }, + { 234454, true }, + { 234474, true }, + { 234485, true }, { 234509, true }, - { 234517, true }, - { 234525, true }, - { 234540, false }, - { 234555, true }, - { 234567, true }, - { 234581, false }, - { 234592, true }, - { 234604, true }, - { 234615, true }, - { 234628, true }, - { 234638, true }, - { 234648, true }, - { 234658, true }, - { 234665, true }, - { 234678, true }, - { 234691, true }, + { 234523, true }, + { 234531, true }, + { 234539, true }, + { 234554, false }, + { 234569, true }, + { 234581, true }, + { 234595, false }, + { 234606, true }, + { 234618, true }, + { 234629, true }, + { 234642, true }, + { 234652, true }, + { 234662, true }, + { 234672, true }, + { 234679, true }, + { 234692, true }, { 234705, true }, - { 234713, true }, - { 234730, true }, - { 234738, true }, - { 234747, true }, - { 234763, true }, - { 234782, true }, - { 234793, true }, - { 234805, true }, - { 234815, true }, - { 234832, false }, - { 234843, true }, + { 234719, true }, + { 234727, true }, + { 234744, true }, + { 234752, true }, + { 234761, true }, + { 234777, true }, + { 234796, true }, + { 234807, true }, + { 234819, true }, + { 234829, true }, + { 234846, false }, { 234857, true }, - { 234867, true }, - { 234876, true }, - { 234892, true }, - { 234913, true }, - { 234938, false }, - { 234954, true }, - { 234966, true }, - { 234978, true }, - { 234991, true }, - { 234999, true }, - { 235007, false }, - { 235027, false }, - { 235046, false }, - { 235065, false }, - { 235085, true }, - { 235095, true }, - { 235115, false }, - { 235135, false }, - { 235154, false }, - { 235173, true }, - { 235192, true }, - { 235203, true }, - { 235213, true }, - { 235225, true }, - { 235234, true }, - { 235247, true }, - { 235262, true }, - { 235272, true }, - { 235285, true }, - { 235296, true }, - { 235307, true }, - { 235316, true }, - { 235324, true }, - { 235337, true }, - { 235345, true }, - { 235354, true }, - { 235364, true }, - { 235373, true }, - { 235388, true }, - { 235411, true }, - { 235430, false }, - { 235441, true }, - { 235463, true }, + { 234871, true }, + { 234881, true }, + { 234890, true }, + { 234906, true }, + { 234927, true }, + { 234952, false }, + { 234968, true }, + { 234980, true }, + { 234992, true }, + { 235005, true }, + { 235013, true }, + { 235021, false }, + { 235041, false }, + { 235060, false }, + { 235079, false }, + { 235099, true }, + { 235109, true }, + { 235129, false }, + { 235149, false }, + { 235168, false }, + { 235187, true }, + { 235206, true }, + { 235217, true }, + { 235227, true }, + { 235239, true }, + { 235248, true }, + { 235261, true }, + { 235276, true }, + { 235286, true }, + { 235299, true }, + { 235310, true }, + { 235321, true }, + { 235330, true }, + { 235338, true }, + { 235351, true }, + { 235359, true }, + { 235368, true }, + { 235378, true }, + { 235387, true }, + { 235402, true }, + { 235425, true }, + { 235444, false }, + { 235455, true }, { 235477, true }, - { 235486, true }, - { 235494, true }, - { 235506, true }, - { 235516, true }, - { 235533, true }, - { 235542, true }, - { 235549, true }, - { 235557, true }, - { 235568, true }, + { 235491, true }, + { 235500, true }, + { 235508, true }, + { 235520, true }, + { 235530, true }, + { 235547, true }, + { 235556, true }, + { 235563, true }, + { 235571, true }, { 235582, true }, - { 235594, true }, - { 235606, true }, - { 235615, true }, - { 235624, true }, - { 235650, true }, - { 235662, false }, - { 235673, true }, - { 235686, true }, - { 235701, true }, - { 235727, true }, - { 235750, false }, - { 235770, true }, - { 235787, true }, - { 235813, true }, + { 235596, true }, + { 235608, true }, + { 235620, true }, + { 235629, true }, + { 235638, true }, + { 235664, true }, + { 235676, false }, + { 235687, true }, + { 235700, true }, + { 235715, true }, + { 235741, true }, + { 235764, false }, + { 235784, true }, + { 235801, true }, { 235827, true }, - { 235846, true }, - { 235868, true }, - { 235887, true }, - { 235902, true }, - { 235918, true }, - { 235931, true }, - { 235944, true }, - { 235955, true }, - { 235970, true }, - { 235990, true }, - { 236008, true }, - { 236028, true }, - { 236043, true }, - { 236060, true }, - { 236069, true }, - { 236087, true }, - { 236102, true }, - { 236123, true }, - { 236143, true }, - { 236158, true }, - { 236173, true }, - { 236188, true }, - { 236203, true }, + { 235841, true }, + { 235860, true }, + { 235882, true }, + { 235901, true }, + { 235916, true }, + { 235932, true }, + { 235945, true }, + { 235958, true }, + { 235969, true }, + { 235984, true }, + { 236004, true }, + { 236022, true }, + { 236042, true }, + { 236057, true }, + { 236074, true }, + { 236083, true }, + { 236101, true }, + { 236116, true }, + { 236137, true }, + { 236157, true }, + { 236172, true }, + { 236187, true }, + { 236202, true }, { 236217, true }, - { 236230, true }, + { 236231, true }, { 236244, true }, - { 236253, true }, - { 236268, true }, - { 236277, true }, - { 236295, true }, - { 236306, true }, - { 236316, true }, - { 236325, true }, - { 236336, true }, - { 236346, true }, - { 236355, true }, - { 236365, true }, - { 236378, true }, - { 236385, true }, - { 236396, true }, - { 236406, true }, - { 236415, true }, - { 236431, true }, - { 236448, true }, - { 236455, true }, - { 236466, true }, - { 236477, true }, - { 236488, true }, + { 236258, true }, + { 236267, true }, + { 236282, true }, + { 236291, true }, + { 236309, true }, + { 236320, true }, + { 236330, true }, + { 236339, true }, + { 236350, true }, + { 236360, true }, + { 236369, true }, + { 236379, true }, + { 236392, true }, + { 236399, true }, + { 236410, true }, + { 236420, true }, + { 236429, true }, + { 236445, true }, + { 236462, true }, + { 236469, true }, + { 236480, true }, + { 236491, true }, { 236502, true }, - { 236509, true }, - { 236520, true }, - { 236528, true }, - { 236546, true }, - { 236558, true }, - { 236566, true }, - { 236586, false }, - { 236602, true }, - { 236621, true }, - { 236644, true }, - { 236663, true }, + { 236516, true }, + { 236523, true }, + { 236534, true }, + { 236542, true }, + { 236560, true }, + { 236572, true }, + { 236580, true }, + { 236600, false }, + { 236616, true }, + { 236635, true }, + { 236658, true }, { 236677, true }, - { 236694, true }, - { 236710, true }, - { 236721, true }, - { 236734, true }, - { 236756, true }, - { 236779, true }, - { 236792, true }, - { 236801, true }, - { 236814, true }, - { 236829, true }, - { 236844, true }, - { 236867, true }, - { 236901, true }, - { 236911, true }, - { 236927, true }, - { 236937, true }, + { 236691, true }, + { 236708, true }, + { 236724, true }, + { 236735, true }, + { 236748, true }, + { 236770, true }, + { 236793, true }, + { 236806, true }, + { 236815, true }, + { 236828, true }, + { 236843, true }, + { 236858, true }, + { 236881, true }, + { 236915, true }, + { 236925, true }, + { 236941, true }, { 236951, true }, - { 236971, true }, - { 236987, true }, - { 237009, true }, - { 237022, true }, - { 237038, true }, - { 237065, true }, - { 237075, true }, - { 237098, true }, - { 237108, true }, - { 237126, true }, - { 237135, true }, - { 237145, true }, - { 237164, true }, - { 237177, true }, - { 237200, true }, - { 237222, true }, - { 237233, true }, - { 237248, true }, - { 237259, true }, - { 237282, true }, - { 237297, true }, - { 237317, true }, - { 237340, true }, - { 237349, true }, - { 237362, true }, - { 237373, true }, - { 237391, true }, - { 237408, true }, - { 237418, true }, - { 237443, true }, - { 237461, true }, - { 237476, true }, - { 237490, true }, - { 237504, true }, - { 237521, true }, - { 237539, true }, - { 237552, true }, - { 237565, true }, - { 237575, true }, - { 237586, true }, - { 237598, true }, - { 237614, true }, - { 237627, false }, - { 237639, true }, - { 237656, true }, - { 237666, true }, - { 237689, true }, - { 237710, true }, - { 237732, true }, - { 237752, true }, - { 237771, true }, - { 237789, true }, - { 237807, true }, - { 237818, true }, - { 237834, true }, - { 237844, true }, - { 237857, true }, - { 237868, true }, - { 237882, true }, - { 237893, true }, - { 237911, true }, - { 237921, true }, - { 237935, true }, - { 237950, true }, - { 237964, true }, - { 237979, true }, - { 237989, true }, - { 238000, true }, + { 236965, true }, + { 236985, true }, + { 237001, true }, + { 237023, true }, + { 237039, true }, + { 237066, true }, + { 237076, true }, + { 237099, true }, + { 237109, true }, + { 237127, true }, + { 237136, true }, + { 237146, true }, + { 237165, true }, + { 237178, true }, + { 237201, true }, + { 237223, true }, + { 237234, true }, + { 237249, true }, + { 237260, true }, + { 237283, true }, + { 237298, true }, + { 237318, true }, + { 237341, true }, + { 237350, true }, + { 237363, true }, + { 237374, true }, + { 237392, true }, + { 237409, true }, + { 237419, true }, + { 237444, true }, + { 237462, true }, + { 237477, true }, + { 237491, true }, + { 237505, true }, + { 237522, true }, + { 237540, true }, + { 237553, true }, + { 237566, true }, + { 237576, true }, + { 237587, true }, + { 237599, true }, + { 237615, true }, + { 237628, false }, + { 237640, true }, + { 237657, true }, + { 237667, true }, + { 237690, true }, + { 237711, true }, + { 237733, true }, + { 237753, true }, + { 237772, true }, + { 237790, true }, + { 237808, true }, + { 237819, true }, + { 237835, true }, + { 237845, true }, + { 237858, true }, + { 237869, true }, + { 237881, true }, + { 237895, true }, + { 237906, true }, + { 237924, true }, + { 237934, true }, + { 237948, true }, + { 237963, true }, + { 237977, true }, + { 237992, true }, + { 238002, true }, { 238013, true }, { 238026, true }, - { 238035, true }, - { 238044, true }, - { 238060, true }, - { 238076, true }, + { 238039, true }, + { 238048, true }, + { 238057, true }, + { 238073, true }, { 238089, true }, - { 238103, false }, - { 238120, true }, - { 238131, true }, - { 238146, true }, - { 238158, true }, - { 238172, true }, + { 238102, true }, + { 238116, false }, + { 238133, true }, + { 238144, true }, + { 238159, true }, + { 238171, true }, { 238185, true }, - { 238195, true }, - { 238213, true }, - { 238224, true }, - { 238234, true }, - { 238246, true }, + { 238198, true }, + { 238208, true }, + { 238226, true }, + { 238237, true }, + { 238247, true }, { 238259, true }, - { 238271, true }, - { 238286, true }, - { 238295, true }, - { 238306, true }, - { 238323, true }, - { 238339, true }, - { 238351, true }, - { 238363, true }, - { 238379, true }, - { 238396, true }, - { 238408, true }, + { 238272, true }, + { 238284, true }, + { 238299, true }, + { 238308, true }, + { 238319, true }, + { 238336, true }, + { 238352, true }, + { 238364, true }, + { 238376, true }, + { 238392, true }, + { 238409, true }, { 238421, true }, - { 238438, true }, - { 238452, true }, - { 238467, true }, - { 238479, true }, - { 238490, true }, - { 238497, true }, - { 238504, true }, - { 238515, true }, - { 238531, true }, - { 238539, true }, - { 238546, true }, - { 238555, false }, - { 238562, true }, - { 238577, true }, + { 238434, true }, + { 238451, true }, + { 238465, true }, + { 238480, true }, + { 238492, true }, + { 238503, true }, + { 238510, true }, + { 238517, true }, + { 238528, true }, + { 238544, true }, + { 238552, true }, + { 238559, true }, + { 238568, false }, + { 238575, true }, { 238590, true }, - { 238607, true }, + { 238603, true }, { 238620, true }, - { 238635, true }, + { 238633, true }, { 238648, true }, - { 238667, true }, - { 238678, true }, - { 238697, true }, - { 238720, true }, - { 238732, false }, - { 238746, true }, + { 238661, true }, + { 238680, true }, + { 238691, true }, + { 238710, true }, + { 238733, true }, + { 238745, false }, { 238759, true }, - { 238775, true }, - { 238793, true }, - { 238805, true }, - { 238822, true }, - { 238838, false }, - { 238857, true }, - { 238876, true }, + { 238772, true }, + { 238788, true }, + { 238806, true }, + { 238818, true }, + { 238835, true }, + { 238851, false }, + { 238870, true }, { 238889, true }, - { 238904, true }, - { 238923, true }, - { 238934, true }, - { 238956, true }, - { 238972, true }, - { 238993, true }, - { 239009, true }, - { 239025, true }, - { 239037, true }, - { 239052, true }, - { 239066, true }, - { 239080, true }, + { 238902, true }, + { 238917, true }, + { 238936, true }, + { 238947, true }, + { 238969, true }, + { 238985, true }, + { 239006, true }, + { 239022, true }, + { 239038, true }, + { 239050, true }, + { 239065, true }, + { 239079, true }, { 239093, true }, - { 239108, true }, - { 239118, true }, - { 239139, true }, - { 239161, true }, - { 239180, true }, - { 239191, true }, - { 239208, true }, - { 239223, true }, - { 239243, true }, - { 239270, true }, - { 239301, true }, - { 239327, true }, - { 239339, true }, - { 239354, true }, - { 239373, false }, - { 239390, true }, - { 239405, true }, - { 239421, true }, - { 239451, true }, - { 239479, true }, - { 239499, true }, - { 239511, true }, - { 239534, true }, - { 239549, true }, - { 239560, true }, - { 239568, true }, - { 239591, true }, - { 239603, true }, + { 239106, true }, + { 239121, true }, + { 239131, true }, + { 239152, true }, + { 239174, true }, + { 239193, true }, + { 239204, true }, + { 239221, true }, + { 239236, true }, + { 239256, true }, + { 239283, true }, + { 239314, true }, + { 239340, true }, + { 239352, true }, + { 239367, true }, + { 239386, false }, + { 239403, true }, + { 239418, true }, + { 239434, true }, + { 239464, true }, + { 239492, true }, + { 239512, true }, + { 239524, true }, + { 239547, true }, + { 239562, true }, + { 239573, true }, + { 239581, true }, + { 239604, true }, { 239616, true }, - { 239624, true }, - { 239650, true }, - { 239665, true }, - { 239683, true }, + { 239629, true }, + { 239637, true }, + { 239663, true }, + { 239678, true }, { 239696, true }, - { 239713, true }, - { 239725, true }, - { 239752, true }, - { 239783, true }, - { 239794, true }, - { 239804, true }, - { 239819, true }, - { 239830, true }, - { 239840, true }, - { 239860, true }, - { 239872, true }, - { 239883, true }, - { 239899, true }, - { 239911, true }, - { 239920, true }, + { 239709, true }, + { 239726, true }, + { 239738, true }, + { 239765, true }, + { 239796, true }, + { 239807, true }, + { 239817, true }, + { 239832, true }, + { 239843, true }, + { 239853, true }, + { 239873, true }, + { 239885, true }, + { 239896, true }, + { 239912, true }, + { 239924, true }, { 239933, true }, - { 239961, true }, - { 239982, true }, - { 239996, true }, - { 240018, true }, - { 240035, true }, - { 240047, true }, - { 240063, true }, - { 240077, true }, - { 240087, true }, - { 240097, true }, - { 240109, true }, - { 240120, true }, - { 240131, true }, - { 240142, true }, - { 240156, true }, - { 240171, true }, - { 240189, true }, - { 240210, true }, - { 240230, true }, - { 240241, true }, - { 240252, true }, - { 240262, true }, - { 240281, true }, - { 240308, true }, - { 240329, true }, - { 240349, true }, - { 240367, true }, - { 240382, false }, - { 240393, true }, - { 240409, true }, - { 240426, true }, - { 240443, true }, - { 240483, true }, - { 240505, true }, - { 240519, true }, - { 240535, false }, - { 240552, true }, - { 240568, true }, + { 239946, true }, + { 239974, true }, + { 239995, true }, + { 240009, true }, + { 240031, true }, + { 240048, true }, + { 240060, true }, + { 240076, true }, + { 240090, true }, + { 240100, true }, + { 240110, true }, + { 240122, true }, + { 240133, true }, + { 240144, true }, + { 240155, true }, + { 240169, true }, + { 240184, true }, + { 240202, true }, + { 240223, true }, + { 240243, true }, + { 240254, true }, + { 240265, true }, + { 240275, true }, + { 240294, true }, + { 240321, true }, + { 240342, true }, + { 240362, true }, + { 240380, true }, + { 240395, false }, + { 240406, true }, + { 240422, true }, + { 240439, true }, + { 240456, true }, + { 240496, true }, + { 240518, true }, + { 240532, true }, + { 240548, false }, + { 240565, true }, { 240581, true }, - { 240591, true }, - { 240602, true }, - { 240620, true }, - { 240634, true }, - { 240655, true }, - { 240673, true }, - { 240694, true }, - { 240712, true }, - { 240730, true }, - { 240748, true }, - { 240758, true }, - { 240769, true }, - { 240791, true }, - { 240813, true }, - { 240830, true }, - { 240845, true }, - { 240865, true }, - { 240882, true }, - { 240901, true }, - { 240912, true }, - { 240931, true }, - { 240945, true }, - { 240960, true }, - { 240979, true }, - { 240991, true }, - { 241000, true }, + { 240594, true }, + { 240604, true }, + { 240615, true }, + { 240633, true }, + { 240647, true }, + { 240668, true }, + { 240686, true }, + { 240707, true }, + { 240725, true }, + { 240743, true }, + { 240761, true }, + { 240771, true }, + { 240782, true }, + { 240804, true }, + { 240826, true }, + { 240843, true }, + { 240858, true }, + { 240878, true }, + { 240895, true }, + { 240914, true }, + { 240925, true }, + { 240944, true }, + { 240958, true }, + { 240973, true }, + { 240992, true }, + { 241004, true }, { 241013, true }, - { 241034, true }, - { 241046, true }, - { 241069, true }, - { 241087, true }, - { 241107, true }, - { 241117, true }, - { 241128, true }, - { 241139, true }, - { 241149, true }, - { 241165, true }, - { 241176, true }, - { 241188, true }, - { 241200, false }, - { 241220, true }, - { 241239, true }, + { 241026, true }, + { 241047, true }, + { 241059, true }, + { 241082, true }, + { 241100, true }, + { 241120, true }, + { 241130, true }, + { 241141, true }, + { 241152, true }, + { 241162, true }, + { 241178, true }, + { 241189, true }, + { 241201, true }, + { 241213, false }, + { 241233, true }, { 241252, true }, - { 241262, true }, - { 241276, true }, - { 241293, true }, - { 241313, true }, - { 241327, true }, - { 241342, true }, - { 241356, true }, - { 241370, false }, - { 241380, true }, - { 241398, true }, - { 241412, false }, - { 241427, true }, - { 241448, true }, - { 241466, true }, - { 241480, true }, - { 241496, true }, - { 241509, false }, - { 241523, true }, - { 241531, true }, - { 241547, true }, - { 241564, true }, - { 241580, true }, - { 241591, true }, - { 241614, true }, - { 241623, false }, - { 241631, true }, - { 241641, true }, - { 241653, false }, - { 241675, true }, - { 241689, true }, - { 241702, true }, - { 241717, true }, - { 241731, true }, - { 241746, true }, - { 241760, true }, - { 241774, true }, - { 241787, true }, - { 241801, true }, - { 241814, true }, - { 241842, true }, - { 241869, true }, - { 241897, true }, - { 241924, true }, - { 241936, true }, - { 241951, true }, + { 241265, true }, + { 241275, true }, + { 241289, true }, + { 241306, true }, + { 241326, true }, + { 241340, true }, + { 241355, true }, + { 241369, true }, + { 241383, false }, + { 241393, true }, + { 241411, true }, + { 241425, false }, + { 241440, true }, + { 241461, true }, + { 241479, true }, + { 241493, true }, + { 241509, true }, + { 241522, false }, + { 241536, true }, + { 241544, true }, + { 241560, true }, + { 241577, true }, + { 241593, true }, + { 241604, true }, + { 241627, true }, + { 241636, false }, + { 241644, true }, + { 241654, true }, + { 241666, true }, + { 241678, false }, + { 241700, true }, + { 241714, true }, + { 241727, true }, + { 241742, true }, + { 241756, true }, + { 241771, true }, + { 241785, true }, + { 241799, true }, + { 241812, true }, + { 241826, true }, + { 241839, true }, + { 241867, true }, + { 241894, true }, + { 241922, true }, + { 241949, true }, + { 241961, true }, { 241976, true }, - { 242000, true }, - { 242014, true }, - { 242035, true }, - { 242049, true }, + { 242001, true }, + { 242025, true }, + { 242039, true }, { 242060, true }, - { 242078, true }, - { 242086, true }, - { 242104, true }, - { 242116, true }, - { 242133, true }, - { 242155, true }, + { 242074, true }, + { 242085, true }, + { 242103, true }, + { 242111, true }, + { 242129, true }, + { 242141, true }, + { 242158, true }, { 242180, true }, - { 242190, true }, - { 242208, true }, + { 242205, true }, + { 242215, true }, { 242233, true }, - { 242253, true }, - { 242274, true }, - { 242294, true }, - { 242304, true }, - { 242317, false }, - { 242342, true }, - { 242351, true }, - { 242372, true }, - { 242398, true }, - { 242426, true }, - { 242446, true }, - { 242466, true }, + { 242258, true }, + { 242278, true }, + { 242299, true }, + { 242319, true }, + { 242329, true }, + { 242342, false }, + { 242367, true }, + { 242376, true }, + { 242397, true }, + { 242423, true }, + { 242451, true }, + { 242471, true }, { 242491, true }, - { 242505, true }, - { 242518, true }, - { 242529, true }, - { 242537, true }, - { 242545, true }, + { 242516, true }, + { 242530, true }, + { 242543, true }, { 242554, true }, { 242562, true }, - { 242576, true }, - { 242590, true }, - { 242599, true }, - { 242613, true }, - { 242626, true }, - { 242642, true }, - { 242655, true }, - { 242671, true }, - { 242681, true }, - { 242692, true }, - { 242703, true }, - { 242721, true }, - { 242737, true }, - { 242747, false }, - { 242759, true }, - { 242775, true }, - { 242787, true }, - { 242802, true }, - { 242823, true }, - { 242847, true }, - { 242859, true }, - { 242869, true }, - { 242885, true }, - { 242909, true }, - { 242921, true }, + { 242570, true }, + { 242579, true }, + { 242587, true }, + { 242601, true }, + { 242615, true }, + { 242624, true }, + { 242638, true }, + { 242651, true }, + { 242667, true }, + { 242680, true }, + { 242696, true }, + { 242706, true }, + { 242717, true }, + { 242728, true }, + { 242746, true }, + { 242762, true }, + { 242772, false }, + { 242784, true }, + { 242800, true }, + { 242812, true }, + { 242827, true }, + { 242848, true }, + { 242872, true }, + { 242884, true }, + { 242894, true }, + { 242910, true }, { 242934, true }, - { 242941, true }, - { 242957, true }, - { 242974, true }, - { 242988, true }, - { 243000, true }, - { 243012, true }, - { 243025, true }, - { 243037, true }, + { 242946, true }, + { 242959, true }, + { 242975, true }, + { 242992, true }, + { 243006, true }, + { 243018, true }, + { 243030, true }, { 243043, true }, - { 243053, true }, - { 243067, true }, - { 243076, true }, - { 243091, true }, - { 243112, true }, - { 243125, true }, - { 243142, true }, - { 243159, true }, - { 243174, true }, - { 243191, true }, - { 243216, true }, - { 243242, true }, - { 243257, true }, - { 243267, true }, - { 243278, true }, - { 243287, false }, - { 243309, true }, - { 243323, true }, - { 243332, true }, - { 243343, true }, - { 243358, true }, - { 243368, true }, - { 243378, true }, - { 243394, true }, - { 243407, true }, - { 243419, true }, - { 243436, true }, + { 243055, true }, + { 243061, true }, + { 243071, true }, + { 243085, true }, + { 243094, true }, + { 243109, true }, + { 243130, true }, + { 243143, true }, + { 243160, true }, + { 243177, true }, + { 243192, true }, + { 243209, true }, + { 243234, true }, + { 243260, true }, + { 243275, true }, + { 243285, true }, + { 243296, true }, + { 243305, false }, + { 243327, true }, + { 243341, true }, + { 243350, true }, + { 243361, true }, + { 243376, true }, + { 243386, true }, + { 243396, true }, + { 243412, true }, + { 243425, true }, + { 243437, true }, { 243454, true }, - { 243475, true }, - { 243492, true }, - { 243512, true }, - { 243533, true }, - { 243549, true }, - { 243568, true }, - { 243580, true }, - { 243594, true }, - { 243609, true }, - { 243625, true }, - { 243639, true }, - { 243651, true }, - { 243665, true }, - { 243676, true }, - { 243688, true }, - { 243707, true }, - { 243723, true }, - { 243739, true }, - { 243755, true }, + { 243472, true }, + { 243493, true }, + { 243510, true }, + { 243530, true }, + { 243551, true }, + { 243567, true }, + { 243586, true }, + { 243598, true }, + { 243612, true }, + { 243627, true }, + { 243643, true }, + { 243657, true }, + { 243669, true }, + { 243683, true }, + { 243694, true }, + { 243706, true }, + { 243725, true }, + { 243741, true }, + { 243757, true }, { 243773, true }, - { 243792, true }, - { 243809, true }, - { 243825, true }, - { 243835, true }, - { 243849, true }, + { 243791, true }, + { 243810, true }, + { 243827, true }, + { 243843, true }, + { 243853, true }, { 243867, true }, - { 243884, true }, - { 243897, true }, - { 243908, true }, - { 243927, true }, - { 243947, true }, - { 243964, true }, - { 243980, true }, + { 243885, true }, + { 243902, true }, + { 243915, true }, + { 243926, true }, + { 243945, true }, + { 243965, true }, + { 243982, true }, { 243998, true }, - { 244011, true }, - { 244028, false }, - { 244045, true }, - { 244059, false }, - { 244080, true }, - { 244090, true }, - { 244107, true }, - { 244128, true }, - { 244138, true }, - { 244157, true }, - { 244171, true }, - { 244186, true }, - { 244199, true }, - { 244207, true }, - { 244218, true }, - { 244233, true }, - { 244246, true }, - { 244257, true }, - { 244271, true }, + { 244016, true }, + { 244029, true }, + { 244046, false }, + { 244063, true }, + { 244077, false }, + { 244098, true }, + { 244108, true }, + { 244125, true }, + { 244146, true }, + { 244156, true }, + { 244175, true }, + { 244189, true }, + { 244204, true }, + { 244217, true }, + { 244225, true }, + { 244236, true }, + { 244251, true }, + { 244264, true }, + { 244275, true }, { 244289, true }, - { 244301, true }, - { 244314, true }, - { 244338, true }, - { 244347, true }, - { 244360, true }, - { 244375, true }, - { 244399, true }, - { 244426, true }, + { 244307, true }, + { 244319, true }, + { 244332, true }, + { 244356, true }, + { 244365, true }, + { 244378, true }, + { 244393, true }, + { 244417, true }, { 244444, true }, - { 244456, true }, - { 244465, true }, - { 244476, true }, - { 244493, true }, - { 244516, true }, + { 244462, true }, + { 244474, true }, + { 244483, true }, + { 244494, true }, + { 244511, true }, { 244534, true }, - { 244547, true }, - { 244555, true }, - { 244563, true }, - { 244571, true }, + { 244552, true }, + { 244565, true }, + { 244573, true }, { 244581, true }, - { 244591, true }, - { 244600, true }, - { 244607, true }, - { 244626, true }, - { 244633, true }, - { 244648, true }, - { 244657, true }, - { 244669, true }, - { 244677, false }, - { 244697, true }, - { 244707, true }, - { 244718, true }, - { 244735, true }, - { 244751, true }, + { 244589, true }, + { 244599, true }, + { 244609, true }, + { 244618, true }, + { 244625, true }, + { 244644, true }, + { 244651, true }, + { 244666, true }, + { 244675, true }, + { 244687, true }, + { 244695, false }, + { 244715, true }, + { 244725, true }, + { 244736, true }, + { 244753, true }, { 244769, true }, - { 244788, true }, - { 244799, true }, + { 244787, true }, + { 244806, true }, { 244817, true }, - { 244834, true }, - { 244850, true }, - { 244872, true }, - { 244893, true }, - { 244906, true }, - { 244931, true }, - { 244950, true }, - { 244962, true }, - { 244973, true }, - { 244986, true }, - { 245005, true }, - { 245020, true }, - { 245035, true }, - { 245051, true }, - { 245074, true }, - { 245094, true }, - { 245107, true }, - { 245122, true }, - { 245135, true }, - { 245149, true }, - { 245163, true }, - { 245174, true }, - { 245182, true }, - { 245193, true }, - { 245203, true }, - { 245223, true }, - { 245242, true }, - { 245255, true }, - { 245267, true }, - { 245279, true }, + { 244835, true }, + { 244852, true }, + { 244868, true }, + { 244890, true }, + { 244911, true }, + { 244924, true }, + { 244949, true }, + { 244968, true }, + { 244980, true }, + { 244991, true }, + { 245004, true }, + { 245023, true }, + { 245038, true }, + { 245053, true }, + { 245069, true }, + { 245092, true }, + { 245112, true }, + { 245125, true }, + { 245140, true }, + { 245153, true }, + { 245167, true }, + { 245181, true }, + { 245192, true }, + { 245200, true }, + { 245211, true }, + { 245221, true }, + { 245241, true }, + { 245260, true }, + { 245273, true }, + { 245285, true }, { 245297, true }, - { 245309, true }, - { 245326, true }, - { 245341, true }, - { 245353, true }, - { 245372, true }, - { 245383, true }, - { 245397, true }, - { 245421, true }, - { 245443, true }, - { 245453, true }, - { 245465, true }, - { 245475, true }, - { 245492, true }, - { 245502, true }, - { 245516, true }, - { 245532, true }, - { 245563, true }, - { 245572, true }, - { 245586, true }, - { 245598, true }, - { 245610, true }, - { 245623, true }, - { 245640, true }, - { 245653, true }, - { 245670, true }, - { 245689, true }, - { 245701, true }, - { 245720, true }, - { 245736, true }, - { 245753, true }, - { 245766, true }, - { 245779, true }, - { 245789, true }, - { 245803, true }, - { 245817, true }, - { 245826, true }, - { 245836, true }, - { 245851, true }, - { 245861, true }, - { 245881, true }, - { 245897, true }, - { 245914, true }, - { 245927, true }, - { 245945, true }, - { 245962, true }, - { 245978, true }, - { 245995, true }, - { 246017, true }, - { 246039, true }, - { 246050, true }, - { 246062, true }, - { 246076, true }, - { 246089, true }, - { 246109, true }, - { 246121, true }, - { 246128, true }, - { 246145, true }, - { 246167, true }, - { 246185, true }, - { 246197, true }, - { 246208, true }, - { 246218, true }, - { 246230, true }, - { 246241, true }, - { 246256, true }, - { 246277, true }, - { 246294, true }, - { 246302, true }, - { 246314, true }, - { 246325, true }, - { 246338, true }, - { 246350, true }, - { 246369, true }, - { 246395, true }, - { 246404, true }, - { 246419, true }, - { 246433, true }, - { 246449, true }, - { 246460, true }, - { 246475, true }, - { 246497, true }, - { 246510, true }, - { 246524, true }, - { 246549, true }, - { 246569, true }, - { 246585, true }, - { 246600, true }, - { 246622, true }, - { 246640, true }, - { 246654, true }, - { 246667, true }, - { 246677, true }, - { 246688, true }, - { 246698, true }, - { 246711, true }, - { 246724, true }, - { 246736, true }, - { 246755, true }, - { 246773, true }, - { 246789, true }, - { 246804, true }, - { 246821, true }, - { 246836, true }, - { 246846, false }, - { 246869, true }, - { 246885, true }, - { 246898, true }, - { 246909, true }, - { 246919, true }, - { 246935, true }, - { 246952, true }, - { 246972, true }, - { 247003, true }, - { 247024, true }, - { 247045, true }, - { 247061, true }, - { 247086, true }, - { 247105, true }, - { 247126, true }, - { 247138, true }, - { 247149, true }, - { 247166, true }, - { 247184, true }, - { 247195, true }, - { 247207, true }, - { 247222, true }, - { 247234, true }, - { 247247, true }, - { 247255, true }, - { 247266, true }, - { 247275, true }, - { 247284, true }, - { 247291, true }, - { 247299, true }, - { 247311, true }, - { 247327, true }, - { 247339, true }, - { 247351, false }, - { 247358, true }, - { 247370, true }, - { 247377, true }, - { 247385, true }, - { 247402, true }, - { 247425, true }, - { 247443, true }, - { 247456, false }, - { 247465, true }, - { 247474, true }, - { 247485, true }, - { 247492, true }, - { 247502, true }, - { 247515, true }, - { 247532, true }, - { 247552, true }, - { 247561, true }, - { 247569, true }, - { 247579, true }, - { 247593, true }, - { 247601, true }, - { 247620, false }, - { 247640, true }, - { 247650, true }, - { 247671, true }, - { 247680, true }, - { 247691, false }, - { 247703, true }, - { 247719, true }, - { 247733, true }, - { 247750, true }, - { 247767, true }, - { 247778, true }, - { 247790, true }, - { 247819, false }, - { 247831, true }, - { 247844, true }, - { 247865, true }, - { 247882, true }, - { 247893, true }, - { 247907, true }, - { 247919, true }, - { 247933, true }, - { 247941, true }, - { 247958, true }, - { 247970, true }, - { 247985, true }, - { 247999, true }, - { 248007, true }, - { 248015, true }, - { 248023, true }, - { 248030, true }, - { 248042, true }, - { 248050, true }, - { 248058, true }, - { 248071, true }, - { 248083, true }, - { 248099, true }, - { 248111, true }, - { 248125, true }, - { 248142, true }, - { 248160, true }, + { 245315, true }, + { 245327, true }, + { 245344, true }, + { 245359, true }, + { 245371, true }, + { 245390, true }, + { 245401, true }, + { 245415, true }, + { 245439, true }, + { 245461, true }, + { 245471, true }, + { 245483, true }, + { 245493, true }, + { 245510, true }, + { 245520, true }, + { 245534, true }, + { 245550, true }, + { 245581, true }, + { 245590, true }, + { 245604, true }, + { 245616, true }, + { 245628, true }, + { 245641, true }, + { 245658, true }, + { 245671, true }, + { 245688, true }, + { 245707, true }, + { 245719, true }, + { 245738, true }, + { 245755, true }, + { 245768, true }, + { 245781, true }, + { 245791, true }, + { 245805, true }, + { 245819, true }, + { 245828, true }, + { 245838, true }, + { 245853, true }, + { 245863, true }, + { 245883, true }, + { 245899, true }, + { 245916, true }, + { 245929, true }, + { 245947, true }, + { 245964, true }, + { 245980, true }, + { 245997, true }, + { 246019, true }, + { 246041, true }, + { 246052, true }, + { 246064, true }, + { 246078, true }, + { 246091, true }, + { 246111, true }, + { 246123, true }, + { 246130, true }, + { 246147, true }, + { 246169, true }, + { 246187, true }, + { 246199, true }, + { 246210, true }, + { 246220, true }, + { 246232, true }, + { 246243, true }, + { 246258, true }, + { 246279, true }, + { 246296, true }, + { 246304, true }, + { 246316, true }, + { 246327, true }, + { 246340, true }, + { 246352, true }, + { 246371, true }, + { 246397, true }, + { 246406, true }, + { 246421, true }, + { 246435, true }, + { 246451, true }, + { 246462, true }, + { 246477, true }, + { 246499, true }, + { 246512, true }, + { 246526, true }, + { 246551, true }, + { 246571, true }, + { 246587, true }, + { 246602, true }, + { 246624, true }, + { 246642, true }, + { 246656, true }, + { 246669, true }, + { 246679, true }, + { 246690, true }, + { 246700, true }, + { 246713, true }, + { 246726, true }, + { 246738, true }, + { 246757, true }, + { 246775, true }, + { 246791, true }, + { 246806, true }, + { 246823, true }, + { 246838, true }, + { 246848, false }, + { 246871, true }, + { 246887, true }, + { 246900, true }, + { 246911, true }, + { 246921, true }, + { 246937, true }, + { 246954, true }, + { 246974, true }, + { 247005, true }, + { 247026, true }, + { 247047, true }, + { 247063, true }, + { 247088, true }, + { 247107, true }, + { 247128, true }, + { 247140, true }, + { 247151, true }, + { 247168, true }, + { 247186, true }, + { 247197, true }, + { 247209, true }, + { 247224, true }, + { 247236, true }, + { 247249, true }, + { 247257, true }, + { 247268, true }, + { 247277, true }, + { 247286, true }, + { 247293, true }, + { 247301, true }, + { 247313, true }, + { 247329, true }, + { 247341, true }, + { 247353, false }, + { 247360, true }, + { 247372, true }, + { 247379, true }, + { 247387, true }, + { 247404, true }, + { 247427, true }, + { 247445, true }, + { 247458, false }, + { 247467, true }, + { 247476, true }, + { 247487, true }, + { 247494, true }, + { 247504, true }, + { 247517, true }, + { 247534, true }, + { 247554, true }, + { 247563, true }, + { 247571, true }, + { 247581, true }, + { 247595, true }, + { 247603, true }, + { 247622, false }, + { 247642, true }, + { 247652, true }, + { 247673, true }, + { 247682, true }, + { 247693, true }, + { 247709, true }, + { 247723, true }, + { 247740, true }, + { 247757, true }, + { 247768, true }, + { 247780, true }, + { 247809, false }, + { 247821, true }, + { 247834, true }, + { 247855, true }, + { 247872, true }, + { 247883, true }, + { 247897, true }, + { 247909, true }, + { 247923, true }, + { 247931, true }, + { 247948, true }, + { 247960, true }, + { 247975, true }, + { 247989, true }, + { 247997, true }, + { 248005, true }, + { 248013, true }, + { 248020, true }, + { 248032, true }, + { 248040, true }, + { 248048, true }, + { 248061, true }, + { 248073, true }, + { 248089, true }, + { 248101, true }, + { 248115, true }, + { 248132, true }, + { 248150, true }, + { 248163, true }, { 248173, true }, - { 248183, true }, - { 248192, false }, - { 248202, true }, - { 248214, false }, - { 248226, true }, - { 248239, true }, - { 248252, true }, - { 248273, true }, - { 248284, true }, - { 248293, true }, - { 248316, true }, - { 248330, true }, - { 248338, true }, - { 248351, true }, - { 248367, true }, - { 248384, true }, - { 248397, true }, - { 248415, true }, - { 248427, true }, - { 248439, true }, - { 248450, true }, - { 248469, true }, - { 248480, true }, - { 248502, true }, - { 248524, true }, - { 248544, true }, - { 248562, false }, - { 248578, true }, - { 248601, false }, - { 248610, true }, - { 248618, true }, - { 248633, true }, - { 248644, true }, - { 248663, true }, - { 248679, true }, - { 248693, true }, - { 248709, true }, - { 248729, false }, - { 248754, true }, - { 248771, true }, + { 248182, false }, + { 248192, true }, + { 248204, false }, + { 248216, true }, + { 248229, true }, + { 248242, true }, + { 248263, true }, + { 248274, true }, + { 248283, true }, + { 248306, true }, + { 248320, true }, + { 248328, true }, + { 248341, true }, + { 248357, true }, + { 248374, true }, + { 248387, true }, + { 248405, true }, + { 248417, true }, + { 248429, true }, + { 248440, true }, + { 248459, true }, + { 248470, true }, + { 248492, true }, + { 248514, true }, + { 248534, true }, + { 248552, false }, + { 248568, true }, + { 248591, false }, + { 248600, true }, + { 248608, true }, + { 248623, true }, + { 248634, true }, + { 248653, true }, + { 248669, true }, + { 248683, true }, + { 248699, true }, + { 248719, false }, + { 248744, true }, + { 248761, true }, + { 248779, true }, { 248789, true }, - { 248799, true }, - { 248807, true }, - { 248814, true }, - { 248826, true }, + { 248797, true }, + { 248804, true }, + { 248816, true }, + { 248829, true }, { 248839, true }, - { 248849, true }, - { 248857, true }, - { 248873, true }, - { 248881, true }, - { 248889, true }, - { 248897, true }, - { 248906, true }, - { 248917, true }, - { 248924, true }, - { 248931, true }, - { 248942, false }, - { 248965, true }, - { 248984, true }, - { 249009, true }, - { 249026, true }, - { 249038, true }, - { 249050, true }, + { 248847, true }, + { 248863, true }, + { 248871, true }, + { 248879, true }, + { 248887, true }, + { 248896, true }, + { 248907, true }, + { 248914, true }, + { 248921, true }, + { 248932, false }, + { 248955, true }, + { 248974, true }, + { 248999, true }, + { 249016, true }, + { 249028, true }, + { 249040, true }, + { 249054, true }, { 249064, true }, - { 249074, true }, - { 249085, true }, - { 249100, true }, - { 249114, true }, - { 249127, true }, - { 249136, true }, - { 249150, true }, - { 249159, true }, - { 249188, true }, - { 249210, true }, - { 249225, true }, - { 249236, true }, - { 249249, true }, + { 249075, true }, + { 249090, true }, + { 249104, true }, + { 249117, true }, + { 249126, true }, + { 249140, true }, + { 249149, true }, + { 249178, true }, + { 249200, true }, + { 249215, true }, + { 249226, true }, + { 249239, true }, + { 249261, true }, { 249271, true }, - { 249281, true }, - { 249302, true }, - { 249319, true }, - { 249340, true }, - { 249354, true }, - { 249370, true }, - { 249383, true }, - { 249395, true }, + { 249292, true }, + { 249309, true }, + { 249330, true }, + { 249344, true }, + { 249360, true }, + { 249373, true }, + { 249385, true }, + { 249400, true }, { 249410, true }, - { 249420, true }, - { 249433, true }, - { 249457, true }, - { 249476, true }, - { 249488, true }, - { 249506, true }, - { 249515, false }, - { 249532, true }, - { 249550, true }, - { 249559, true }, - { 249576, true }, - { 249594, true }, - { 249608, true }, - { 249621, true }, - { 249643, false }, - { 249664, true }, - { 249680, true }, + { 249423, true }, + { 249447, true }, + { 249466, true }, + { 249478, true }, + { 249496, true }, + { 249505, false }, + { 249522, true }, + { 249540, true }, + { 249549, true }, + { 249566, true }, + { 249584, true }, + { 249598, true }, + { 249611, true }, + { 249633, false }, + { 249654, true }, + { 249670, true }, + { 249694, true }, { 249704, true }, - { 249714, true }, - { 249733, true }, - { 249748, true }, - { 249761, false }, - { 249772, true }, - { 249791, true }, - { 249804, true }, - { 249816, true }, - { 249836, true }, + { 249723, true }, + { 249738, true }, + { 249751, false }, + { 249762, true }, + { 249781, true }, + { 249794, true }, + { 249806, true }, + { 249826, true }, + { 249851, true }, { 249861, true }, - { 249871, true }, - { 249882, true }, - { 249894, true }, - { 249909, true }, - { 249922, true }, - { 249938, true }, - { 249954, true }, - { 249969, true }, - { 249984, true }, - { 250001, true }, - { 250014, true }, - { 250042, true }, - { 250059, false }, - { 250068, true }, - { 250087, true }, - { 250104, false }, - { 250119, true }, + { 249872, true }, + { 249884, true }, + { 249899, true }, + { 249912, true }, + { 249928, true }, + { 249944, true }, + { 249959, true }, + { 249974, true }, + { 249991, true }, + { 250004, true }, + { 250032, true }, + { 250049, false }, + { 250058, true }, + { 250077, true }, + { 250094, false }, + { 250109, true }, + { 250123, true }, { 250133, true }, - { 250143, true }, - { 250156, true }, - { 250172, true }, - { 250189, true }, - { 250205, true }, - { 250221, true }, - { 250239, true }, + { 250146, true }, + { 250162, true }, + { 250179, true }, + { 250195, true }, + { 250211, true }, + { 250229, true }, + { 250250, true }, { 250260, true }, - { 250270, true }, - { 250283, true }, - { 250295, true }, - { 250308, true }, - { 250321, true }, - { 250330, true }, - { 250354, true }, - { 250378, false }, - { 250391, true }, - { 250405, true }, - { 250416, true }, - { 250432, true }, - { 250444, true }, - { 250460, true }, - { 250477, true }, - { 250494, true }, - { 250502, true }, - { 250519, true }, - { 250536, true }, - { 250551, true }, - { 250570, false }, - { 250579, true }, - { 250590, true }, - { 250612, true }, - { 250625, true }, - { 250638, false }, - { 250653, true }, - { 250675, true }, - { 250690, true }, - { 250705, true }, - { 250717, true }, - { 250736, false }, - { 250759, true }, - { 250775, true }, - { 250791, true }, - { 250809, true }, - { 250827, false }, - { 250847, true }, - { 250859, true }, - { 250872, true }, - { 250888, true }, - { 250899, true }, - { 250915, true }, - { 250924, true }, - { 250943, true }, - { 250954, true }, + { 250273, true }, + { 250285, true }, + { 250298, true }, + { 250311, true }, + { 250320, true }, + { 250344, true }, + { 250368, false }, + { 250381, true }, + { 250395, true }, + { 250406, true }, + { 250418, true }, + { 250434, true }, + { 250451, true }, + { 250468, true }, + { 250476, true }, + { 250493, true }, + { 250510, true }, + { 250525, true }, + { 250544, false }, + { 250553, true }, + { 250564, true }, + { 250586, true }, + { 250599, true }, + { 250612, false }, + { 250627, true }, + { 250649, true }, + { 250664, true }, + { 250679, true }, + { 250691, true }, + { 250710, false }, + { 250733, true }, + { 250749, true }, + { 250765, true }, + { 250783, true }, + { 250801, false }, + { 250821, true }, + { 250833, true }, + { 250846, true }, + { 250862, true }, + { 250873, true }, + { 250889, true }, + { 250898, true }, + { 250917, true }, + { 250928, true }, + { 250938, true }, + { 250947, true }, { 250964, true }, - { 250973, true }, - { 250990, true }, - { 251004, true }, - { 251022, true }, - { 251034, true }, - { 251053, true }, - { 251065, true }, - { 251077, true }, - { 251096, true }, - { 251113, true }, - { 251125, true }, - { 251146, true }, - { 251158, true }, - { 251169, true }, - { 251182, true }, - { 251201, true }, - { 251222, true }, - { 251232, true }, - { 251241, true }, - { 251259, true }, - { 251273, true }, - { 251286, true }, - { 251294, true }, - { 251308, true }, - { 251324, true }, - { 251348, false }, - { 251366, true }, - { 251384, false }, - { 251404, true }, - { 251422, true }, - { 251434, true }, - { 251451, true }, - { 251474, true }, - { 251493, true }, - { 251513, true }, - { 251526, true }, + { 250978, true }, + { 250996, true }, + { 251008, true }, + { 251027, true }, + { 251039, true }, + { 251051, true }, + { 251070, true }, + { 251087, true }, + { 251099, true }, + { 251120, true }, + { 251132, true }, + { 251143, true }, + { 251156, true }, + { 251175, true }, + { 251196, true }, + { 251206, true }, + { 251215, true }, + { 251233, true }, + { 251247, true }, + { 251260, true }, + { 251268, true }, + { 251282, true }, + { 251298, true }, + { 251322, false }, + { 251340, true }, + { 251358, false }, + { 251378, true }, + { 251396, true }, + { 251408, true }, + { 251425, true }, + { 251448, true }, + { 251467, true }, + { 251487, true }, + { 251500, true }, + { 251512, true }, + { 251522, true }, { 251538, true }, - { 251548, true }, - { 251564, true }, - { 251579, true }, - { 251587, true }, - { 251609, true }, - { 251629, true }, - { 251637, true }, + { 251553, true }, + { 251561, true }, + { 251583, true }, + { 251603, true }, + { 251611, true }, + { 251625, true }, + { 251641, true }, { 251651, true }, - { 251667, true }, - { 251677, true }, - { 251691, true }, - { 251700, true }, - { 251712, true }, - { 251721, true }, - { 251730, true }, - { 251745, false }, - { 251754, true }, - { 251766, true }, - { 251777, true }, - { 251787, true }, - { 251808, true }, - { 251826, true }, - { 251839, true }, - { 251865, true }, - { 251882, true }, - { 251903, true }, - { 251921, true }, - { 251939, true }, - { 251955, true }, - { 251968, true }, - { 251978, true }, - { 251988, true }, - { 252005, true }, + { 251665, true }, + { 251674, true }, + { 251686, true }, + { 251695, true }, + { 251704, false }, + { 251713, true }, + { 251725, true }, + { 251736, true }, + { 251746, true }, + { 251767, true }, + { 251785, true }, + { 251798, true }, + { 251824, true }, + { 251841, true }, + { 251862, true }, + { 251880, true }, + { 251898, true }, + { 251914, true }, + { 251927, true }, + { 251937, true }, + { 251947, true }, + { 251964, true }, + { 251981, true }, + { 251990, true }, + { 252004, true }, { 252022, true }, - { 252031, true }, - { 252045, true }, - { 252063, true }, + { 252036, true }, + { 252048, true }, + { 252067, true }, { 252077, true }, - { 252089, true }, - { 252108, true }, - { 252118, true }, - { 252135, true }, - { 252157, true }, - { 252179, true }, - { 252193, true }, - { 252207, true }, - { 252225, true }, - { 252239, true }, - { 252257, true }, - { 252272, true }, - { 252286, true }, + { 252094, true }, + { 252116, true }, + { 252138, true }, + { 252152, true }, + { 252166, true }, + { 252184, true }, + { 252198, true }, + { 252216, true }, + { 252231, true }, + { 252245, true }, + { 252252, true }, + { 252261, true }, + { 252273, true }, + { 252279, true }, + { 252285, true }, { 252293, true }, - { 252302, true }, - { 252314, true }, - { 252320, true }, + { 252305, true }, { 252326, true }, - { 252334, true }, - { 252346, true }, - { 252367, true }, - { 252379, true }, - { 252388, true }, + { 252338, true }, + { 252347, true }, + { 252357, true }, + { 252372, true }, + { 252387, true }, { 252398, true }, - { 252413, true }, - { 252428, true }, - { 252439, true }, - { 252451, true }, - { 252468, true }, - { 252486, true }, - { 252499, true }, - { 252518, true }, - { 252534, true }, - { 252545, true }, - { 252558, true }, - { 252576, true }, - { 252591, true }, - { 252613, true }, - { 252627, true }, - { 252649, true }, - { 252663, true }, - { 252682, true }, - { 252698, true }, - { 252715, true }, - { 252725, true }, - { 252733, true }, - { 252750, true }, - { 252767, true }, - { 252781, true }, - { 252793, true }, - { 252805, true }, - { 252833, true }, - { 252845, true }, - { 252859, true }, + { 252410, true }, + { 252427, true }, + { 252445, true }, + { 252458, true }, + { 252477, true }, + { 252493, true }, + { 252504, true }, + { 252517, true }, + { 252535, true }, + { 252550, true }, + { 252572, true }, + { 252586, true }, + { 252608, true }, + { 252622, true }, + { 252641, true }, + { 252657, true }, + { 252674, true }, + { 252684, true }, + { 252692, true }, + { 252709, true }, + { 252726, true }, + { 252740, true }, + { 252752, true }, + { 252764, true }, + { 252792, true }, + { 252804, true }, + { 252818, true }, + { 252834, true }, + { 252848, false }, + { 252861, true }, { 252875, true }, - { 252889, false }, - { 252902, true }, - { 252916, true }, - { 252934, true }, - { 252946, true }, - { 252958, true }, - { 252977, true }, - { 252996, true }, - { 253009, true }, - { 253026, true }, - { 253042, true }, - { 253054, true }, - { 253065, true }, - { 253078, true }, - { 253092, true }, + { 252893, true }, + { 252905, true }, + { 252917, true }, + { 252936, true }, + { 252955, true }, + { 252968, true }, + { 252985, true }, + { 253001, true }, + { 253013, true }, + { 253024, true }, + { 253037, true }, + { 253051, true }, + { 253064, true }, + { 253076, true }, + { 253089, true }, { 253105, true }, - { 253117, true }, - { 253130, true }, - { 253146, true }, - { 253159, true }, - { 253179, true }, - { 253192, true }, - { 253207, true }, - { 253235, true }, - { 253245, true }, + { 253118, true }, + { 253138, true }, + { 253151, true }, + { 253166, true }, + { 253194, true }, + { 253204, true }, + { 253215, true }, + { 253228, true }, + { 253243, true }, { 253256, true }, - { 253269, true }, - { 253284, true }, - { 253297, true }, - { 253307, true }, - { 253332, true }, - { 253344, true }, - { 253358, true }, - { 253372, true }, - { 253387, true }, - { 253401, true }, - { 253415, true }, - { 253429, true }, - { 253443, true }, - { 253459, true }, - { 253482, true }, - { 253506, true }, - { 253522, true }, - { 253537, true }, - { 253569, true }, - { 253593, true }, - { 253608, true }, - { 253620, true }, + { 253266, true }, + { 253291, true }, + { 253303, true }, + { 253317, true }, + { 253331, true }, + { 253346, true }, + { 253360, true }, + { 253374, true }, + { 253388, true }, + { 253402, true }, + { 253418, true }, + { 253441, true }, + { 253465, true }, + { 253481, true }, + { 253496, true }, + { 253528, true }, + { 253552, true }, + { 253567, true }, + { 253579, true }, + { 253591, true }, + { 253613, true }, { 253632, true }, - { 253654, true }, - { 253673, true }, + { 253650, true }, + { 253663, true }, + { 253680, true }, { 253691, true }, - { 253704, true }, - { 253721, true }, - { 253732, true }, - { 253742, true }, - { 253754, true }, + { 253701, true }, + { 253713, true }, + { 253733, true }, + { 253745, true }, + { 253757, true }, { 253774, true }, - { 253786, true }, - { 253798, true }, - { 253815, true }, - { 253833, true }, - { 253850, true }, - { 253865, true }, - { 253884, true }, - { 253897, true }, - { 253913, true }, - { 253934, true }, + { 253792, true }, + { 253809, true }, + { 253824, true }, + { 253843, true }, + { 253856, true }, + { 253872, true }, + { 253893, true }, + { 253911, true }, + { 253923, true }, + { 253939, true }, { 253952, true }, - { 253964, true }, - { 253980, true }, - { 253993, true }, - { 254013, true }, - { 254035, true }, - { 254052, true }, - { 254067, true }, - { 254083, true }, - { 254103, true }, - { 254116, true }, - { 254129, true }, + { 253972, true }, + { 253994, true }, + { 254011, true }, + { 254026, true }, + { 254042, true }, + { 254062, true }, + { 254075, true }, + { 254088, true }, + { 254109, true }, + { 254124, true }, + { 254136, true }, { 254150, true }, - { 254165, true }, - { 254177, true }, - { 254191, true }, - { 254209, true }, - { 254224, true }, - { 254241, true }, - { 254260, true }, - { 254273, true }, - { 254292, true }, - { 254307, true }, - { 254319, true }, - { 254336, true }, + { 254168, true }, + { 254183, true }, + { 254200, true }, + { 254219, true }, + { 254232, true }, + { 254251, true }, + { 254266, true }, + { 254278, true }, + { 254295, true }, + { 254310, true }, + { 254328, true }, + { 254339, true }, { 254351, true }, - { 254368, true }, - { 254386, true }, - { 254397, true }, - { 254409, true }, - { 254431, true }, - { 254440, true }, - { 254452, true }, - { 254466, true }, - { 254478, true }, - { 254493, true }, - { 254511, true }, - { 254526, true }, - { 254542, true }, - { 254561, true }, - { 254577, true }, - { 254594, true }, - { 254607, true }, - { 254626, true }, - { 254644, true }, - { 254667, true }, - { 254685, true }, - { 254692, true }, - { 254709, true }, - { 254723, true }, + { 254373, true }, + { 254382, true }, + { 254394, true }, + { 254408, true }, + { 254420, true }, + { 254435, true }, + { 254453, true }, + { 254468, true }, + { 254484, true }, + { 254503, true }, + { 254519, true }, + { 254536, true }, + { 254549, true }, + { 254568, true }, + { 254586, true }, + { 254609, true }, + { 254627, true }, + { 254634, true }, + { 254651, true }, + { 254665, true }, + { 254671, true }, + { 254679, true }, + { 254697, true }, + { 254720, true }, { 254729, true }, { 254737, true }, - { 254755, true }, - { 254778, true }, - { 254787, true }, - { 254795, true }, - { 254803, true }, - { 254812, false }, - { 254832, true }, - { 254849, true }, - { 254866, true }, - { 254887, true }, - { 254899, true }, - { 254918, true }, - { 254927, false }, - { 254944, true }, - { 254963, true }, - { 254974, true }, - { 254993, true }, - { 255010, true }, - { 255033, true }, - { 255059, true }, - { 255070, true }, - { 255088, true }, - { 255108, true }, - { 255125, true }, - { 255144, true }, - { 255162, true }, - { 255180, true }, - { 255202, true }, - { 255211, true }, - { 255224, true }, - { 255231, true }, - { 255238, true }, - { 255249, true }, - { 255261, true }, - { 255272, false }, - { 255292, true }, - { 255300, true }, - { 255311, true }, - { 255322, true }, - { 255332, true }, - { 255343, true }, - { 255354, true }, - { 255367, true }, - { 255386, true }, - { 255399, true }, - { 255426, true }, - { 255443, true }, - { 255461, true }, - { 255476, true }, - { 255499, true }, - { 255516, true }, - { 255527, true }, - { 255544, true }, - { 255559, true }, - { 255570, true }, - { 255585, true }, - { 255600, true }, - { 255613, true }, - { 255624, true }, - { 255652, true }, - { 255680, true }, - { 255698, true }, - { 255724, true }, + { 254745, true }, + { 254754, false }, + { 254774, true }, + { 254791, true }, + { 254808, true }, + { 254822, true }, + { 254843, true }, + { 254855, true }, + { 254874, true }, + { 254883, false }, + { 254900, true }, + { 254911, true }, + { 254930, true }, + { 254947, true }, + { 254970, true }, + { 254996, true }, + { 255007, true }, + { 255025, true }, + { 255045, true }, + { 255062, true }, + { 255081, true }, + { 255099, true }, + { 255117, true }, + { 255139, true }, + { 255148, true }, + { 255161, true }, + { 255168, true }, + { 255175, true }, + { 255186, true }, + { 255198, true }, + { 255209, false }, + { 255229, true }, + { 255237, true }, + { 255248, true }, + { 255259, true }, + { 255269, true }, + { 255280, true }, + { 255291, true }, + { 255304, true }, + { 255323, true }, + { 255336, true }, + { 255363, true }, + { 255380, true }, + { 255398, true }, + { 255413, true }, + { 255436, true }, + { 255453, true }, + { 255464, true }, + { 255481, true }, + { 255496, true }, + { 255507, true }, + { 255522, true }, + { 255537, true }, + { 255550, true }, + { 255561, true }, + { 255589, true }, + { 255617, true }, + { 255635, true }, + { 255661, true }, + { 255690, true }, + { 255702, true }, + { 255715, false }, + { 255735, true }, { 255753, true }, - { 255765, true }, - { 255778, false }, - { 255798, true }, - { 255816, true }, - { 255831, true }, - { 255852, false }, - { 255868, true }, - { 255884, true }, - { 255902, true }, - { 255918, true }, - { 255933, true }, - { 255951, true }, - { 255967, true }, - { 255979, true }, - { 255991, false }, - { 256013, true }, - { 256035, true }, - { 256050, true }, - { 256070, true }, - { 256084, true }, - { 256105, true }, - { 256123, true }, - { 256139, true }, - { 256158, true }, - { 256178, true }, - { 256199, true }, - { 256218, true }, - { 256238, true }, - { 256257, true }, - { 256272, true }, - { 256289, true }, - { 256307, false }, - { 256325, true }, - { 256345, true }, - { 256364, true }, - { 256383, true }, - { 256399, true }, - { 256419, true }, - { 256440, true }, + { 255768, true }, + { 255789, false }, + { 255805, true }, + { 255821, true }, + { 255839, true }, + { 255855, true }, + { 255870, true }, + { 255888, true }, + { 255904, true }, + { 255916, true }, + { 255928, false }, + { 255950, true }, + { 255972, true }, + { 255987, true }, + { 256007, true }, + { 256021, true }, + { 256042, true }, + { 256060, true }, + { 256076, true }, + { 256095, true }, + { 256115, true }, + { 256136, true }, + { 256155, true }, + { 256175, true }, + { 256194, true }, + { 256209, true }, + { 256226, true }, + { 256244, false }, + { 256262, true }, + { 256282, true }, + { 256301, true }, + { 256320, true }, + { 256336, true }, + { 256356, true }, + { 256377, true }, + { 256404, true }, + { 256416, true }, + { 256427, true }, + { 256438, true }, + { 256452, true }, { 256467, true }, { 256479, true }, { 256490, true }, { 256501, true }, { 256515, true }, - { 256530, true }, - { 256542, true }, - { 256553, true }, - { 256564, true }, - { 256578, true }, - { 256589, true }, - { 256601, true }, - { 256612, true }, - { 256621, true }, - { 256636, true }, - { 256646, true }, - { 256659, true }, + { 256526, true }, + { 256538, true }, + { 256549, true }, + { 256558, true }, + { 256573, true }, + { 256583, true }, + { 256596, true }, + { 256615, true }, + { 256633, true }, + { 256653, true }, + { 256669, true }, { 256678, true }, - { 256696, true }, - { 256716, true }, - { 256732, true }, - { 256741, true }, - { 256751, true }, - { 256772, false }, - { 256789, true }, - { 256809, true }, - { 256823, true }, + { 256688, true }, + { 256709, false }, + { 256726, true }, + { 256746, true }, + { 256760, true }, + { 256769, true }, + { 256782, true }, + { 256796, true }, + { 256815, true }, { 256832, true }, - { 256845, true }, - { 256859, true }, - { 256878, true }, + { 256844, true }, + { 256867, true }, + { 256881, true }, { 256895, true }, - { 256907, true }, - { 256930, true }, - { 256944, true }, - { 256958, true }, - { 256982, true }, - { 256994, true }, - { 257011, true }, - { 257026, true }, - { 257036, true }, - { 257053, true }, - { 257069, true }, - { 257086, true }, - { 257102, true }, - { 257114, true }, - { 257125, true }, - { 257141, true }, - { 257154, true }, - { 257168, false }, - { 257184, true }, - { 257198, true }, - { 257209, true }, - { 257223, true }, - { 257239, true }, + { 256919, true }, + { 256931, true }, + { 256948, true }, + { 256963, true }, + { 256973, true }, + { 256990, true }, + { 257006, true }, + { 257023, true }, + { 257039, true }, + { 257051, true }, + { 257062, true }, + { 257078, true }, + { 257091, true }, + { 257105, false }, + { 257121, true }, + { 257135, true }, + { 257146, true }, + { 257160, true }, + { 257176, true }, + { 257191, true }, + { 257207, true }, + { 257219, true }, + { 257232, true }, + { 257241, true }, { 257254, true }, - { 257270, true }, - { 257282, true }, - { 257295, true }, + { 257271, true }, + { 257280, true }, + { 257292, true }, { 257304, true }, - { 257317, true }, - { 257334, true }, - { 257343, true }, - { 257355, true }, - { 257367, true }, - { 257379, true }, - { 257398, true }, - { 257407, true }, - { 257419, true }, - { 257434, true }, - { 257446, true }, - { 257463, true }, - { 257475, true }, - { 257491, true }, - { 257507, true }, - { 257528, true }, - { 257544, true }, - { 257562, true }, + { 257316, true }, + { 257335, true }, + { 257344, true }, + { 257356, true }, + { 257371, true }, + { 257383, true }, + { 257400, true }, + { 257412, true }, + { 257428, true }, + { 257444, true }, + { 257465, true }, + { 257481, true }, + { 257499, true }, + { 257515, true }, + { 257531, true }, + { 257551, true }, + { 257566, true }, { 257578, true }, - { 257594, true }, - { 257614, true }, - { 257629, true }, - { 257641, true }, - { 257656, true }, - { 257666, true }, - { 257681, true }, - { 257693, true }, - { 257705, true }, - { 257722, true }, - { 257737, true }, - { 257751, true }, - { 257762, true }, - { 257779, true }, - { 257790, true }, - { 257801, true }, - { 257812, true }, - { 257820, true }, - { 257833, true }, - { 257847, true }, - { 257858, true }, - { 257871, true }, + { 257593, true }, + { 257603, true }, + { 257618, true }, + { 257630, true }, + { 257642, true }, + { 257659, true }, + { 257674, true }, + { 257688, true }, + { 257699, true }, + { 257716, true }, + { 257727, true }, + { 257738, true }, + { 257749, true }, + { 257757, true }, + { 257770, true }, + { 257784, true }, + { 257795, true }, + { 257808, true }, + { 257826, true }, + { 257836, true }, + { 257849, true }, + { 257866, true }, + { 257880, true }, { 257889, true }, - { 257906, true }, - { 257916, true }, - { 257929, true }, - { 257946, true }, - { 257960, true }, - { 257969, true }, - { 257984, true }, - { 257998, true }, - { 258011, true }, - { 258025, true }, - { 258038, true }, - { 258046, true }, - { 258065, true }, - { 258083, true }, - { 258100, true }, - { 258117, true }, - { 258137, true }, - { 258154, true }, - { 258169, true }, - { 258184, true }, + { 257904, true }, + { 257918, true }, + { 257931, true }, + { 257945, true }, + { 257958, true }, + { 257966, true }, + { 257985, true }, + { 258003, true }, + { 258020, true }, + { 258037, true }, + { 258057, true }, + { 258074, true }, + { 258089, true }, + { 258104, true }, + { 258118, true }, + { 258136, true }, + { 258152, true }, + { 258168, true }, + { 258182, true }, { 258198, true }, - { 258216, true }, - { 258232, true }, - { 258248, true }, - { 258262, true }, - { 258278, true }, - { 258300, true }, - { 258314, true }, - { 258324, true }, + { 258220, true }, + { 258234, true }, + { 258244, true }, + { 258261, true }, + { 258280, true }, + { 258293, true }, + { 258307, true }, + { 258323, false }, { 258341, true }, - { 258360, true }, + { 258356, true }, { 258373, true }, - { 258387, true }, - { 258403, false }, - { 258421, true }, - { 258436, true }, - { 258453, true }, - { 258468, true }, - { 258485, false }, + { 258388, true }, + { 258405, false }, + { 258431, true }, + { 258443, true }, + { 258458, true }, + { 258476, true }, + { 258489, true }, + { 258498, true }, { 258511, true }, - { 258523, true }, - { 258538, true }, - { 258556, true }, - { 258569, true }, + { 258522, true }, + { 258534, true }, + { 258553, true }, + { 258568, true }, { 258578, true }, - { 258591, true }, - { 258602, true }, - { 258614, true }, - { 258633, true }, - { 258648, true }, - { 258658, true }, - { 258674, true }, - { 258686, true }, - { 258708, true }, - { 258721, false }, - { 258732, true }, - { 258760, true }, - { 258777, true }, - { 258808, true }, - { 258819, true }, - { 258837, true }, - { 258848, true }, - { 258861, true }, - { 258873, true }, - { 258893, true }, - { 258904, true }, - { 258916, true }, - { 258930, true }, - { 258942, true }, - { 258950, true }, - { 258958, true }, - { 258970, true }, - { 258988, true }, - { 258999, false }, - { 259019, true }, - { 259037, true }, - { 259057, true }, - { 259072, true }, - { 259087, true }, - { 259104, false }, - { 259118, true }, - { 259138, true }, - { 259158, true }, - { 259178, true }, - { 259189, true }, + { 258594, true }, + { 258606, true }, + { 258628, true }, + { 258641, false }, + { 258652, true }, + { 258680, true }, + { 258697, true }, + { 258728, true }, + { 258739, true }, + { 258757, true }, + { 258768, true }, + { 258781, true }, + { 258793, true }, + { 258813, true }, + { 258824, true }, + { 258836, true }, + { 258850, true }, + { 258862, true }, + { 258870, true }, + { 258878, true }, + { 258890, true }, + { 258908, true }, + { 258919, false }, + { 258939, true }, + { 258957, true }, + { 258977, true }, + { 258992, true }, + { 259007, true }, + { 259024, false }, + { 259038, true }, + { 259058, true }, + { 259078, true }, + { 259098, true }, + { 259109, true }, + { 259126, true }, + { 259143, true }, + { 259160, true }, + { 259185, true }, { 259206, true }, - { 259223, true }, - { 259240, true }, - { 259265, true }, - { 259286, true }, - { 259304, true }, + { 259224, true }, + { 259244, true }, + { 259259, true }, + { 259276, true }, + { 259292, true }, + { 259309, true }, { 259324, true }, - { 259339, true }, - { 259356, true }, - { 259372, true }, - { 259389, true }, - { 259404, true }, - { 259420, true }, - { 259439, true }, - { 259456, true }, - { 259473, true }, - { 259492, true }, - { 259507, true }, - { 259532, true }, - { 259545, true }, - { 259556, true }, + { 259340, true }, + { 259359, true }, + { 259376, true }, + { 259393, true }, + { 259412, true }, + { 259427, true }, + { 259452, true }, + { 259465, true }, + { 259476, true }, + { 259487, true }, + { 259497, true }, + { 259511, false }, + { 259526, true }, + { 259539, false }, { 259567, true }, - { 259577, true }, - { 259591, false }, - { 259606, true }, - { 259619, false }, - { 259647, true }, - { 259659, true }, - { 259672, true }, + { 259579, true }, + { 259592, true }, + { 259605, true }, + { 259615, false }, + { 259623, true }, + { 259633, true }, + { 259648, true }, + { 259666, true }, { 259685, true }, - { 259695, false }, - { 259703, true }, - { 259713, true }, - { 259728, true }, - { 259746, true }, - { 259765, true }, - { 259777, true }, - { 259790, true }, - { 259803, true }, - { 259818, true }, - { 259831, true }, - { 259849, true }, + { 259697, true }, + { 259710, true }, + { 259723, true }, + { 259738, true }, + { 259751, true }, + { 259769, true }, + { 259783, true }, + { 259796, true }, + { 259808, true }, + { 259821, true }, + { 259836, true }, + { 259850, true }, { 259863, true }, - { 259876, true }, - { 259888, true }, - { 259901, true }, - { 259916, true }, - { 259930, true }, - { 259943, true }, - { 259963, false }, - { 259980, true }, - { 260001, true }, - { 260019, true }, - { 260032, true }, - { 260046, true }, - { 260055, true }, - { 260066, true }, - { 260077, true }, - { 260090, true }, - { 260100, true }, - { 260117, true }, - { 260125, true }, - { 260139, false }, - { 260154, true }, - { 260165, true }, - { 260178, true }, - { 260192, true }, - { 260207, true }, - { 260218, true }, - { 260250, true }, - { 260275, true }, - { 260311, true }, + { 259883, false }, + { 259900, true }, + { 259921, true }, + { 259939, true }, + { 259952, true }, + { 259966, true }, + { 259975, true }, + { 259986, true }, + { 259997, true }, + { 260010, true }, + { 260020, true }, + { 260037, true }, + { 260045, true }, + { 260059, false }, + { 260074, true }, + { 260085, true }, + { 260098, true }, + { 260112, true }, + { 260127, true }, + { 260138, true }, + { 260170, true }, + { 260195, true }, + { 260231, true }, + { 260243, true }, + { 260256, true }, + { 260271, true }, + { 260284, true }, + { 260301, true }, { 260323, true }, - { 260336, true }, - { 260351, true }, - { 260364, true }, - { 260381, true }, - { 260403, true }, - { 260425, true }, - { 260443, true }, - { 260456, true }, - { 260467, true }, - { 260479, true }, - { 260490, true }, + { 260345, true }, + { 260363, true }, + { 260376, true }, + { 260387, true }, + { 260399, true }, + { 260410, true }, + { 260428, true }, + { 260436, true }, + { 260469, true }, + { 260484, true }, + { 260491, true }, { 260508, true }, - { 260516, true }, - { 260549, true }, - { 260564, true }, - { 260571, true }, - { 260588, true }, + { 260524, true }, + { 260539, true }, + { 260556, true }, + { 260566, true }, + { 260579, true }, + { 260590, true }, { 260604, true }, - { 260619, true }, - { 260636, true }, - { 260646, true }, - { 260659, true }, - { 260670, true }, - { 260684, true }, - { 260694, false }, - { 260712, true }, - { 260730, true }, - { 260751, true }, - { 260765, true }, - { 260777, true }, - { 260789, true }, - { 260800, true }, - { 260813, true }, - { 260826, true }, + { 260614, false }, + { 260632, true }, + { 260650, true }, + { 260671, true }, + { 260685, true }, + { 260697, true }, + { 260709, true }, + { 260720, true }, + { 260733, true }, + { 260746, true }, + { 260762, true }, + { 260779, true }, + { 260793, true }, + { 260807, true }, + { 260827, true }, { 260842, true }, - { 260859, true }, - { 260873, true }, - { 260887, true }, - { 260907, true }, - { 260922, true }, - { 260936, true }, - { 260948, true }, - { 260961, true }, + { 260856, true }, + { 260868, true }, + { 260881, true }, + { 260901, true }, + { 260920, true }, + { 260937, true }, + { 260950, true }, + { 260970, true }, { 260981, true }, - { 261000, true }, - { 261017, true }, - { 261030, true }, - { 261050, true }, - { 261061, true }, - { 261075, true }, - { 261099, true }, - { 261109, true }, - { 261122, true }, - { 261147, true }, - { 261156, true }, - { 261168, true }, - { 261190, true }, - { 261201, true }, + { 260995, true }, + { 261019, true }, + { 261029, true }, + { 261042, true }, + { 261067, true }, + { 261076, true }, + { 261088, true }, + { 261110, true }, + { 261121, true }, + { 261132, true }, + { 261146, true }, + { 261165, true }, + { 261182, true }, + { 261197, true }, { 261212, true }, - { 261226, true }, - { 261245, true }, - { 261262, true }, - { 261277, true }, - { 261292, true }, - { 261309, true }, - { 261323, true }, - { 261337, true }, - { 261351, true }, - { 261374, true }, - { 261394, true }, - { 261408, true }, - { 261422, true }, - { 261436, true }, - { 261446, true }, - { 261458, true }, - { 261470, true }, - { 261485, true }, - { 261501, true }, - { 261511, true }, - { 261525, true }, - { 261534, true }, - { 261549, true }, - { 261563, true }, - { 261572, true }, - { 261584, true }, - { 261595, true }, - { 261606, true }, - { 261618, true }, - { 261627, true }, + { 261229, true }, + { 261243, true }, + { 261257, true }, + { 261271, true }, + { 261294, true }, + { 261314, true }, + { 261328, true }, + { 261342, true }, + { 261356, true }, + { 261366, true }, + { 261378, true }, + { 261390, true }, + { 261405, true }, + { 261421, true }, + { 261431, true }, + { 261445, true }, + { 261454, true }, + { 261469, true }, + { 261483, true }, + { 261492, true }, + { 261504, true }, + { 261515, true }, + { 261527, true }, + { 261538, true }, + { 261550, true }, + { 261559, true }, + { 261568, true }, + { 261579, true }, + { 261593, true }, + { 261605, true }, + { 261621, true }, { 261636, true }, - { 261647, true }, - { 261661, true }, - { 261673, true }, - { 261689, true }, + { 261646, true }, + { 261659, true }, + { 261672, true }, + { 261688, true }, { 261704, true }, - { 261714, true }, - { 261727, true }, - { 261740, true }, - { 261756, true }, - { 261772, true }, - { 261793, true }, - { 261814, true }, - { 261833, true }, - { 261843, true }, - { 261855, true }, - { 261866, true }, - { 261889, true }, - { 261897, true }, - { 261912, true }, - { 261926, true }, - { 261940, true }, + { 261725, true }, + { 261746, true }, + { 261765, true }, + { 261775, true }, + { 261787, true }, + { 261798, true }, + { 261821, true }, + { 261829, true }, + { 261844, true }, + { 261858, true }, + { 261872, true }, + { 261884, true }, + { 261907, true }, + { 261920, true }, + { 261930, true }, + { 261944, true }, { 261952, true }, - { 261975, true }, - { 261988, true }, - { 261998, true }, - { 262012, true }, - { 262020, true }, - { 262041, true }, - { 262053, true }, - { 262064, true }, - { 262084, true }, - { 262103, true }, - { 262114, true }, - { 262129, true }, - { 262154, false }, - { 262182, false }, - { 262194, true }, - { 262205, true }, - { 262216, true }, + { 261973, true }, + { 261985, true }, + { 261996, true }, + { 262016, true }, + { 262035, true }, + { 262046, true }, + { 262061, true }, + { 262086, false }, + { 262114, false }, + { 262126, true }, + { 262137, true }, + { 262148, true }, + { 262164, true }, + { 262180, true }, + { 262195, true }, + { 262206, true }, + { 262219, true }, { 262232, true }, - { 262248, true }, + { 262244, true }, { 262263, true }, - { 262278, true }, - { 262289, true }, - { 262302, true }, - { 262315, true }, - { 262327, true }, - { 262346, true }, - { 262362, true }, - { 262377, true }, - { 262392, true }, - { 262409, true }, - { 262432, true }, - { 262440, true }, - { 262459, true }, - { 262473, true }, - { 262494, true }, - { 262514, true }, + { 262279, true }, + { 262294, true }, + { 262309, true }, + { 262326, true }, + { 262349, true }, + { 262357, true }, + { 262376, true }, + { 262390, true }, + { 262411, true }, + { 262431, true }, + { 262449, true }, + { 262470, true }, + { 262491, true }, + { 262510, true }, { 262532, true }, - { 262553, true }, - { 262574, true }, - { 262593, true }, - { 262615, true }, - { 262637, true }, - { 262659, true }, - { 262677, true }, - { 262695, true }, - { 262713, true }, - { 262731, true }, - { 262749, true }, - { 262767, true }, - { 262785, true }, - { 262803, true }, - { 262821, true }, - { 262839, true }, - { 262857, true }, - { 262875, true }, - { 262893, true }, - { 262911, true }, - { 262929, true }, - { 262947, true }, - { 262965, true }, - { 262983, true }, - { 263001, true }, - { 263019, true }, - { 263037, true }, - { 263055, true }, - { 263073, true }, - { 263091, true }, - { 263109, true }, - { 263127, true }, - { 263143, true }, - { 263158, true }, - { 263175, true }, - { 263189, true }, - { 263204, true }, - { 263219, true }, - { 263228, true }, - { 263240, false }, - { 263254, true }, - { 263267, true }, - { 263277, true }, - { 263293, true }, + { 262554, true }, + { 262576, true }, + { 262594, true }, + { 262612, true }, + { 262630, true }, + { 262648, true }, + { 262666, true }, + { 262684, true }, + { 262702, true }, + { 262720, true }, + { 262738, true }, + { 262756, true }, + { 262774, true }, + { 262792, true }, + { 262810, true }, + { 262828, true }, + { 262846, true }, + { 262864, true }, + { 262882, true }, + { 262900, true }, + { 262918, true }, + { 262936, true }, + { 262954, true }, + { 262972, true }, + { 262990, true }, + { 263008, true }, + { 263026, true }, + { 263044, true }, + { 263060, true }, + { 263075, true }, + { 263092, true }, + { 263106, true }, + { 263121, true }, + { 263136, true }, + { 263145, true }, + { 263157, false }, + { 263171, true }, + { 263184, true }, + { 263194, true }, + { 263210, true }, + { 263221, true }, + { 263232, true }, + { 263243, true }, + { 263255, true }, + { 263273, true }, + { 263282, true }, { 263304, true }, - { 263315, true }, - { 263326, true }, - { 263338, true }, - { 263356, true }, - { 263365, true }, - { 263387, true }, - { 263401, true }, - { 263418, true }, - { 263437, true }, - { 263455, true }, - { 263476, true }, - { 263490, true }, + { 263318, true }, + { 263335, true }, + { 263354, true }, + { 263372, true }, + { 263393, true }, + { 263407, true }, + { 263423, false }, + { 263435, true }, + { 263450, true }, + { 263466, true }, + { 263484, true }, + { 263494, true }, { 263506, false }, - { 263518, true }, - { 263533, true }, - { 263549, true }, - { 263567, true }, - { 263577, true }, - { 263589, false }, - { 263600, true }, - { 263619, false }, - { 263638, true }, - { 263654, true }, - { 263669, true }, - { 263682, false }, - { 263701, true }, - { 263712, true }, - { 263730, true }, - { 263747, true }, - { 263772, true }, - { 263787, true }, - { 263802, true }, - { 263820, true }, - { 263835, true }, - { 263850, true }, - { 263867, true }, - { 263878, true }, - { 263888, true }, - { 263900, true }, + { 263517, true }, + { 263536, false }, + { 263555, true }, + { 263571, true }, + { 263586, true }, + { 263599, false }, + { 263618, true }, + { 263629, true }, + { 263647, true }, + { 263664, true }, + { 263689, true }, + { 263704, true }, + { 263719, true }, + { 263737, true }, + { 263752, true }, + { 263767, true }, + { 263784, true }, + { 263795, true }, + { 263805, true }, + { 263817, true }, + { 263831, true }, + { 263845, true }, + { 263857, true }, + { 263872, true }, + { 263890, true }, + { 263901, false }, { 263914, true }, - { 263928, true }, - { 263940, true }, - { 263955, true }, - { 263973, true }, - { 263984, false }, - { 263997, true }, - { 264014, true }, - { 264032, true }, - { 264050, true }, - { 264060, true }, - { 264083, true }, - { 264098, false }, + { 263931, true }, + { 263949, true }, + { 263967, true }, + { 263977, true }, + { 264000, true }, + { 264015, false }, + { 264028, true }, + { 264040, true }, + { 264061, true }, + { 264074, true }, + { 264091, true }, { 264111, true }, - { 264123, true }, - { 264144, true }, - { 264157, true }, - { 264174, true }, - { 264194, true }, - { 264217, true }, - { 264236, true }, - { 264247, true }, - { 264261, true }, - { 264275, true }, - { 264285, false }, - { 264297, true }, - { 264312, true }, - { 264326, true }, - { 264336, true }, + { 264134, true }, + { 264153, true }, + { 264164, true }, + { 264178, true }, + { 264192, true }, + { 264202, false }, + { 264214, true }, + { 264229, true }, + { 264243, true }, + { 264253, true }, + { 264267, true }, + { 264280, true }, + { 264300, true }, + { 264323, true }, { 264350, true }, - { 264363, true }, - { 264383, true }, - { 264406, true }, - { 264433, true }, - { 264451, true }, + { 264368, true }, + { 264376, true }, + { 264387, true }, + { 264394, true }, + { 264402, true }, + { 264419, true }, + { 264434, true }, + { 264447, true }, { 264459, true }, - { 264470, true }, - { 264477, true }, - { 264485, true }, - { 264502, true }, - { 264517, true }, - { 264530, true }, - { 264542, true }, - { 264557, true }, - { 264577, true }, - { 264594, true }, - { 264611, true }, - { 264628, true }, - { 264639, false }, - { 264648, true }, - { 264661, true }, - { 264680, false }, - { 264697, true }, - { 264710, true }, - { 264721, true }, - { 264729, false }, - { 264742, true }, - { 264759, true }, - { 264774, false }, - { 264798, true }, - { 264809, true }, - { 264819, true }, - { 264829, true }, - { 264840, true }, - { 264850, true }, - { 264875, true }, - { 264884, true }, - { 264894, true }, - { 264906, true }, - { 264926, true }, - { 264943, true }, - { 264962, true }, - { 264972, true }, - { 264981, true }, - { 264997, true }, - { 265016, true }, - { 265039, true }, - { 265057, true }, - { 265073, true }, - { 265088, true }, - { 265103, true }, - { 265118, true }, - { 265138, true }, - { 265151, true }, - { 265164, true }, - { 265177, true }, - { 265194, true }, - { 265203, true }, - { 265216, true }, - { 265230, true }, - { 265244, true }, - { 265267, true }, + { 264474, true }, + { 264494, true }, + { 264511, true }, + { 264528, true }, + { 264545, true }, + { 264556, false }, + { 264565, true }, + { 264578, true }, + { 264597, false }, + { 264614, true }, + { 264627, true }, + { 264638, true }, + { 264646, false }, + { 264659, true }, + { 264676, true }, + { 264691, false }, + { 264715, true }, + { 264726, true }, + { 264736, true }, + { 264746, true }, + { 264757, true }, + { 264767, true }, + { 264792, true }, + { 264801, true }, + { 264811, true }, + { 264823, true }, + { 264843, true }, + { 264860, true }, + { 264879, true }, + { 264889, true }, + { 264898, true }, + { 264914, true }, + { 264933, true }, + { 264956, true }, + { 264974, true }, + { 264990, true }, + { 265005, true }, + { 265020, true }, + { 265035, true }, + { 265055, true }, + { 265068, true }, + { 265081, true }, + { 265094, true }, + { 265111, true }, + { 265120, true }, + { 265133, true }, + { 265147, true }, + { 265161, true }, + { 265184, true }, + { 265208, true }, + { 265224, true }, + { 265239, true }, + { 265250, true }, + { 265269, true }, { 265291, true }, - { 265307, true }, - { 265322, true }, - { 265333, true }, - { 265352, true }, - { 265374, true }, - { 265400, true }, - { 265415, true }, - { 265430, true }, - { 265440, true }, - { 265454, true }, - { 265470, true }, - { 265482, true }, - { 265505, true }, - { 265514, true }, - { 265522, true }, - { 265533, true }, - { 265543, true }, - { 265559, true }, - { 265573, true }, - { 265585, true }, + { 265317, true }, + { 265332, true }, + { 265347, true }, + { 265357, true }, + { 265371, true }, + { 265387, true }, + { 265399, true }, + { 265422, true }, + { 265431, true }, + { 265439, true }, + { 265450, true }, + { 265460, true }, + { 265476, true }, + { 265490, true }, + { 265502, true }, + { 265515, true }, + { 265532, false }, + { 265550, true }, + { 265574, true }, + { 265587, true }, { 265598, true }, - { 265615, false }, - { 265633, true }, - { 265657, true }, - { 265670, true }, - { 265681, true }, - { 265698, true }, - { 265711, true }, - { 265724, true }, - { 265735, true }, - { 265745, true }, - { 265757, true }, - { 265767, true }, - { 265782, true }, - { 265795, true }, - { 265811, true }, - { 265821, false }, - { 265831, true }, - { 265844, true }, - { 265859, true }, - { 265869, true }, - { 265885, true }, - { 265897, true }, - { 265906, true }, - { 265920, true }, - { 265932, true }, - { 265943, true }, - { 265956, true }, - { 265974, true }, - { 265983, true }, - { 265999, true }, - { 266019, true }, - { 266031, true }, - { 266047, true }, - { 266064, true }, - { 266077, true }, - { 266087, true }, + { 265615, true }, + { 265628, true }, + { 265641, true }, + { 265652, true }, + { 265662, true }, + { 265674, true }, + { 265684, true }, + { 265699, true }, + { 265712, true }, + { 265728, true }, + { 265738, false }, + { 265748, true }, + { 265761, true }, + { 265776, true }, + { 265786, true }, + { 265802, true }, + { 265814, true }, + { 265823, true }, + { 265837, true }, + { 265849, true }, + { 265860, true }, + { 265873, true }, + { 265891, true }, + { 265900, true }, + { 265916, true }, + { 265936, true }, + { 265948, true }, + { 265964, true }, + { 265981, true }, + { 265994, true }, + { 266004, true }, + { 266014, true }, + { 266028, true }, + { 266040, true }, + { 266053, true }, + { 266070, true }, + { 266085, true }, { 266097, true }, - { 266111, true }, - { 266123, true }, - { 266136, true }, + { 266114, true }, + { 266128, true }, + { 266137, true }, { 266153, true }, - { 266168, true }, - { 266180, true }, - { 266197, true }, - { 266211, true }, - { 266220, true }, - { 266236, true }, - { 266249, true }, - { 266264, false }, - { 266276, true }, - { 266287, true }, - { 266310, true }, - { 266320, true }, - { 266329, true }, - { 266341, true }, - { 266355, true }, - { 266363, true }, + { 266166, true }, + { 266181, false }, + { 266193, true }, + { 266204, true }, + { 266227, true }, + { 266237, true }, + { 266246, true }, + { 266258, true }, + { 266272, true }, + { 266280, true }, + { 266288, true }, + { 266299, true }, + { 266307, true }, + { 266315, true }, + { 266326, true }, + { 266332, true }, + { 266343, true }, + { 266356, true }, { 266371, true }, - { 266382, true }, { 266390, true }, - { 266398, true }, - { 266409, true }, - { 266415, true }, - { 266426, true }, - { 266439, true }, - { 266454, true }, - { 266473, true }, - { 266497, true }, - { 266510, true }, - { 266525, true }, - { 266549, true }, - { 266559, true }, - { 266571, true }, - { 266588, true }, - { 266598, true }, - { 266614, true }, - { 266635, true }, - { 266650, true }, - { 266673, true }, - { 266694, true }, - { 266710, true }, - { 266723, true }, - { 266736, true }, - { 266750, true }, - { 266762, true }, - { 266775, true }, - { 266794, true }, - { 266807, true }, - { 266825, true }, - { 266849, false }, - { 266876, true }, - { 266902, true }, - { 266917, true }, - { 266934, true }, - { 266950, true }, - { 266967, true }, - { 266984, true }, - { 266999, true }, - { 267012, true }, - { 267023, true }, - { 267034, true }, - { 267044, true }, - { 267057, true }, - { 267075, true }, - { 267088, true }, + { 266414, true }, + { 266427, true }, + { 266442, true }, + { 266466, true }, + { 266476, true }, + { 266488, true }, + { 266505, true }, + { 266515, true }, + { 266531, true }, + { 266552, true }, + { 266567, true }, + { 266590, true }, + { 266611, true }, + { 266627, true }, + { 266640, true }, + { 266653, true }, + { 266667, true }, + { 266679, true }, + { 266692, true }, + { 266711, true }, + { 266724, true }, + { 266742, true }, + { 266766, false }, + { 266793, true }, + { 266819, true }, + { 266834, true }, + { 266851, true }, + { 266867, true }, + { 266884, true }, + { 266901, true }, + { 266916, true }, + { 266929, true }, + { 266940, true }, + { 266951, true }, + { 266961, true }, + { 266974, true }, + { 266992, true }, + { 267005, true }, + { 267019, true }, + { 267028, true }, + { 267038, true }, + { 267049, true }, + { 267058, true }, + { 267079, true }, + { 267093, false }, { 267102, true }, - { 267111, true }, - { 267121, true }, - { 267132, true }, - { 267141, true }, - { 267162, true }, - { 267176, false }, - { 267185, true }, - { 267192, true }, - { 267199, true }, - { 267207, true }, - { 267230, true }, - { 267243, true }, - { 267257, true }, - { 267270, true }, - { 267285, true }, + { 267109, true }, + { 267116, true }, + { 267124, true }, + { 267147, true }, + { 267160, true }, + { 267174, true }, + { 267187, true }, + { 267202, true }, + { 267216, true }, + { 267231, true }, + { 267240, true }, + { 267248, true }, + { 267261, true }, + { 267269, true }, + { 267287, false }, { 267299, true }, - { 267314, true }, - { 267323, true }, - { 267331, true }, - { 267344, true }, - { 267352, true }, - { 267370, false }, - { 267382, true }, - { 267393, true }, - { 267403, true }, - { 267412, true }, - { 267433, true }, - { 267449, true }, - { 267461, true }, - { 267470, true }, - { 267483, true }, - { 267494, true }, - { 267507, true }, - { 267519, true }, - { 267534, false }, - { 267547, true }, - { 267556, true }, - { 267568, true }, - { 267579, true }, - { 267596, true }, + { 267310, true }, + { 267320, true }, + { 267329, true }, + { 267350, true }, + { 267366, true }, + { 267378, true }, + { 267387, true }, + { 267400, true }, + { 267411, true }, + { 267424, true }, + { 267436, true }, + { 267451, false }, + { 267464, true }, + { 267473, true }, + { 267485, true }, + { 267496, true }, + { 267513, true }, + { 267525, true }, + { 267538, true }, + { 267551, true }, + { 267566, true }, + { 267586, true }, + { 267598, true }, { 267608, true }, - { 267621, true }, - { 267634, true }, - { 267649, true }, - { 267669, true }, - { 267681, true }, - { 267691, true }, - { 267701, true }, - { 267712, false }, - { 267719, true }, - { 267729, true }, - { 267741, true }, - { 267757, true }, - { 267772, true }, - { 267781, true }, - { 267795, true }, - { 267809, true }, - { 267829, true }, - { 267841, true }, - { 267854, true }, - { 267868, true }, - { 267886, true }, - { 267893, true }, - { 267910, true }, + { 267618, true }, + { 267629, false }, + { 267636, true }, + { 267646, true }, + { 267658, true }, + { 267674, true }, + { 267689, true }, + { 267698, true }, + { 267712, true }, + { 267726, true }, + { 267746, true }, + { 267758, true }, + { 267771, true }, + { 267785, true }, + { 267803, true }, + { 267810, true }, + { 267827, true }, + { 267843, true }, + { 267860, true }, + { 267869, true }, + { 267889, true }, + { 267908, true }, { 267926, true }, - { 267943, true }, - { 267952, true }, - { 267972, true }, - { 267991, true }, - { 268009, true }, - { 268025, false }, - { 268043, true }, - { 268062, true }, - { 268089, true }, - { 268102, false }, - { 268120, true }, - { 268137, true }, - { 268152, true }, - { 268168, true }, - { 268182, true }, - { 268197, false }, - { 268216, true }, - { 268234, true }, - { 268252, true }, - { 268270, true }, - { 268287, true }, - { 268308, true }, - { 268327, true }, - { 268344, true }, - { 268359, true }, - { 268373, false }, - { 268384, true }, - { 268399, true }, - { 268407, true }, - { 268417, true }, - { 268432, true }, - { 268449, true }, - { 268464, true }, - { 268475, true }, - { 268497, true }, - { 268510, true }, - { 268530, true }, - { 268544, true }, - { 268563, true }, - { 268589, true }, - { 268605, true }, - { 268623, true }, + { 267942, false }, + { 267960, true }, + { 267979, true }, + { 268006, true }, + { 268019, false }, + { 268037, true }, + { 268054, true }, + { 268069, true }, + { 268085, true }, + { 268099, true }, + { 268114, false }, + { 268133, true }, + { 268151, true }, + { 268169, true }, + { 268187, true }, + { 268204, true }, + { 268225, true }, + { 268244, true }, + { 268261, true }, + { 268276, true }, + { 268290, false }, + { 268301, true }, + { 268316, true }, + { 268324, true }, + { 268334, true }, + { 268349, true }, + { 268366, true }, + { 268381, true }, + { 268392, true }, + { 268414, true }, + { 268427, true }, + { 268447, true }, + { 268461, true }, + { 268480, true }, + { 268506, true }, + { 268522, true }, + { 268540, true }, + { 268558, true }, + { 268573, true }, + { 268581, true }, + { 268594, true }, + { 268602, true }, + { 268613, true }, + { 268627, true }, { 268641, true }, - { 268656, true }, - { 268664, true }, - { 268677, true }, - { 268685, true }, - { 268696, true }, - { 268710, true }, - { 268724, true }, + { 268657, true }, + { 268674, true }, + { 268684, true }, + { 268694, true }, + { 268706, true }, + { 268727, true }, { 268740, true }, - { 268757, true }, - { 268767, true }, - { 268777, true }, - { 268789, true }, - { 268810, true }, - { 268823, true }, - { 268841, true }, - { 268854, true }, + { 268758, true }, + { 268771, true }, + { 268797, true }, + { 268816, true }, + { 268831, true }, + { 268847, true }, + { 268864, true }, { 268880, true }, - { 268899, true }, - { 268914, true }, - { 268930, true }, - { 268947, true }, - { 268963, true }, - { 268986, true }, - { 269009, true }, - { 269034, true }, - { 269050, true }, - { 269062, true }, - { 269076, true }, - { 269087, true }, - { 269100, true }, - { 269111, true }, - { 269126, true }, - { 269136, true }, - { 269151, true }, + { 268903, true }, + { 268926, true }, + { 268951, true }, + { 268967, true }, + { 268979, true }, + { 268993, true }, + { 269004, true }, + { 269017, true }, + { 269028, true }, + { 269043, true }, + { 269053, true }, + { 269068, true }, + { 269080, true }, + { 269098, true }, + { 269123, true }, + { 269135, true }, + { 269147, true }, { 269163, true }, - { 269181, true }, - { 269206, true }, - { 269218, true }, - { 269230, true }, - { 269246, true }, - { 269258, true }, - { 269269, true }, - { 269286, true }, - { 269298, true }, - { 269316, true }, - { 269334, true }, - { 269355, true }, - { 269379, true }, - { 269390, true }, - { 269406, true }, - { 269418, false }, - { 269432, true }, + { 269175, true }, + { 269186, true }, + { 269203, true }, + { 269215, true }, + { 269233, true }, + { 269251, true }, + { 269272, true }, + { 269296, true }, + { 269307, true }, + { 269323, true }, + { 269335, false }, + { 269349, true }, + { 269364, true }, + { 269377, true }, + { 269404, true }, + { 269420, false }, + { 269429, true }, { 269447, true }, - { 269460, true }, - { 269487, false }, - { 269496, true }, + { 269461, true }, + { 269475, false }, + { 269487, true }, + { 269497, true }, { 269514, true }, - { 269528, true }, - { 269542, false }, - { 269554, true }, - { 269564, true }, - { 269581, true }, - { 269591, true }, + { 269524, true }, + { 269535, true }, + { 269542, true }, + { 269553, true }, + { 269573, true }, + { 269590, true }, { 269602, true }, - { 269609, true }, - { 269620, true }, - { 269640, true }, - { 269657, true }, - { 269669, true }, - { 269686, true }, - { 269706, false }, + { 269619, true }, + { 269639, false }, + { 269654, true }, + { 269665, true }, + { 269674, false }, + { 269681, true }, + { 269692, true }, + { 269705, true }, { 269721, true }, - { 269732, true }, - { 269741, false }, - { 269748, true }, - { 269759, true }, - { 269772, true }, - { 269788, true }, - { 269800, true }, - { 269809, true }, - { 269824, true }, - { 269836, true }, - { 269850, true }, - { 269860, true }, - { 269875, true }, - { 269884, true }, - { 269896, true }, - { 269914, false }, - { 269925, true }, - { 269941, false }, - { 269954, true }, - { 269970, true }, - { 269982, true }, - { 269996, true }, - { 270008, true }, + { 269733, true }, + { 269742, true }, + { 269757, true }, + { 269769, true }, + { 269783, true }, + { 269793, true }, + { 269808, true }, + { 269817, true }, + { 269829, true }, + { 269847, false }, + { 269858, true }, + { 269874, false }, + { 269887, true }, + { 269903, true }, + { 269915, true }, + { 269929, true }, + { 269941, true }, + { 269953, true }, + { 269973, true }, + { 269987, true }, + { 270003, true }, { 270020, true }, - { 270040, true }, - { 270054, true }, - { 270070, true }, - { 270087, true }, + { 270034, true }, + { 270049, true }, + { 270057, true }, + { 270072, true }, + { 270085, true }, { 270101, true }, - { 270116, true }, - { 270124, true }, - { 270139, true }, - { 270152, true }, - { 270168, true }, - { 270181, true }, - { 270194, true }, - { 270208, true }, - { 270230, true }, - { 270250, true }, - { 270271, true }, - { 270296, true }, - { 270321, true }, - { 270340, true }, - { 270356, true }, - { 270384, true }, - { 270409, true }, - { 270430, true }, - { 270459, true }, - { 270478, true }, - { 270502, true }, - { 270522, true }, + { 270114, true }, + { 270127, true }, + { 270141, true }, + { 270163, true }, + { 270183, true }, + { 270204, true }, + { 270229, true }, + { 270254, true }, + { 270273, true }, + { 270289, true }, + { 270317, true }, + { 270342, true }, + { 270363, true }, + { 270392, true }, + { 270411, true }, + { 270435, true }, + { 270455, true }, + { 270465, true }, + { 270474, true }, + { 270492, true }, + { 270505, true }, + { 270514, true }, + { 270520, true }, { 270532, true }, - { 270541, true }, - { 270559, true }, - { 270572, true }, - { 270581, true }, - { 270587, true }, - { 270599, true }, - { 270616, true }, - { 270630, true }, - { 270649, true }, - { 270663, false }, - { 270676, true }, - { 270689, true }, - { 270702, true }, - { 270720, true }, - { 270741, true }, - { 270753, true }, - { 270779, true }, - { 270788, true }, - { 270801, true }, - { 270811, true }, - { 270834, true }, + { 270549, true }, + { 270563, true }, + { 270582, true }, + { 270596, false }, + { 270609, true }, + { 270622, true }, + { 270635, true }, + { 270653, true }, + { 270674, true }, + { 270686, true }, + { 270712, true }, + { 270721, true }, + { 270734, true }, + { 270744, true }, + { 270767, true }, + { 270780, true }, + { 270799, true }, + { 270818, true }, + { 270830, true }, { 270847, true }, - { 270866, true }, - { 270885, true }, - { 270897, true }, - { 270914, true }, - { 270934, true }, - { 270953, true }, - { 270973, true }, - { 270982, true }, - { 270993, true }, - { 271002, true }, - { 271022, true }, - { 271037, true }, - { 271056, true }, - { 271085, false }, - { 271101, true }, - { 271117, false }, - { 271130, false }, - { 271143, true }, - { 271154, true }, - { 271175, true }, - { 271186, true }, - { 271203, true }, - { 271222, true }, - { 271235, true }, - { 271247, true }, - { 271260, true }, - { 271279, true }, - { 271289, true }, - { 271304, true }, - { 271319, false }, - { 271328, true }, - { 271341, false }, - { 271353, true }, - { 271368, true }, - { 271384, true }, - { 271398, true }, - { 271412, true }, - { 271427, true }, - { 271440, true }, - { 271449, true }, - { 271458, true }, - { 271472, true }, - { 271496, true }, - { 271509, true }, - { 271526, true }, - { 271542, true }, - { 271560, true }, - { 271577, true }, - { 271594, true }, - { 271609, true }, - { 271627, true }, - { 271643, true }, - { 271656, true }, - { 271665, true }, - { 271678, true }, - { 271698, true }, - { 271709, true }, - { 271724, true }, - { 271739, true }, - { 271748, true }, + { 270867, true }, + { 270886, true }, + { 270906, true }, + { 270915, true }, + { 270926, true }, + { 270935, true }, + { 270955, true }, + { 270970, true }, + { 270989, true }, + { 271018, false }, + { 271034, true }, + { 271050, false }, + { 271063, false }, + { 271076, true }, + { 271097, true }, + { 271108, true }, + { 271125, true }, + { 271144, true }, + { 271157, true }, + { 271169, true }, + { 271182, true }, + { 271201, true }, + { 271211, true }, + { 271226, true }, + { 271241, false }, + { 271250, true }, + { 271263, false }, + { 271275, true }, + { 271290, true }, + { 271306, true }, + { 271320, true }, + { 271334, true }, + { 271349, true }, + { 271362, true }, + { 271371, true }, + { 271380, true }, + { 271394, true }, + { 271418, true }, + { 271431, true }, + { 271448, true }, + { 271464, true }, + { 271482, true }, + { 271499, true }, + { 271516, true }, + { 271531, true }, + { 271549, true }, + { 271565, true }, + { 271578, true }, + { 271587, true }, + { 271600, true }, + { 271620, true }, + { 271631, true }, + { 271646, true }, + { 271661, true }, + { 271670, true }, + { 271679, true }, + { 271697, true }, + { 271713, true }, + { 271729, true }, + { 271743, true }, { 271757, true }, - { 271775, true }, - { 271791, true }, - { 271807, true }, - { 271821, true }, - { 271835, true }, - { 271848, true }, - { 271863, true }, - { 271883, true }, - { 271900, true }, - { 271917, true }, - { 271929, true }, - { 271945, true }, - { 271959, true }, - { 271973, true }, - { 271994, true }, - { 272013, true }, - { 272038, false }, - { 272054, true }, - { 272065, true }, - { 272084, true }, - { 272099, true }, - { 272123, true }, - { 272135, true }, - { 272145, true }, - { 272156, true }, - { 272169, true }, - { 272183, true }, - { 272205, true }, - { 272218, true }, - { 272227, true }, - { 272256, true }, - { 272281, true }, - { 272306, true }, - { 272335, true }, - { 272351, true }, - { 272360, true }, - { 272372, true }, - { 272388, true }, - { 272402, true }, - { 272416, true }, - { 272430, true }, - { 272447, true }, - { 272460, true }, - { 272479, true }, - { 272490, true }, - { 272503, true }, - { 272520, true }, - { 272529, true }, - { 272544, true }, - { 272562, true }, - { 272576, false }, - { 272587, true }, - { 272600, true }, - { 272620, false }, - { 272633, true }, - { 272643, true }, - { 272662, true }, - { 272672, true }, + { 271770, true }, + { 271785, true }, + { 271805, true }, + { 271822, true }, + { 271839, true }, + { 271851, true }, + { 271867, true }, + { 271881, true }, + { 271895, true }, + { 271916, true }, + { 271935, true }, + { 271960, true }, + { 271971, true }, + { 271990, true }, + { 272005, true }, + { 272029, true }, + { 272041, true }, + { 272051, true }, + { 272062, true }, + { 272075, true }, + { 272089, true }, + { 272111, true }, + { 272124, true }, + { 272133, true }, + { 272162, true }, + { 272187, true }, + { 272212, true }, + { 272241, true }, + { 272257, true }, + { 272266, true }, + { 272278, true }, + { 272294, true }, + { 272308, true }, + { 272322, true }, + { 272336, true }, + { 272353, true }, + { 272366, true }, + { 272385, true }, + { 272396, true }, + { 272409, true }, + { 272426, true }, + { 272435, true }, + { 272450, true }, + { 272468, true }, + { 272482, false }, + { 272493, true }, + { 272506, true }, + { 272526, false }, + { 272539, true }, + { 272549, true }, + { 272568, true }, + { 272578, true }, + { 272591, true }, + { 272610, true }, + { 272622, true }, + { 272644, true }, + { 272652, true }, + { 272663, true }, + { 272674, true }, { 272685, true }, - { 272704, true }, - { 272716, true }, - { 272738, true }, - { 272746, true }, - { 272757, true }, - { 272768, true }, - { 272779, true }, - { 272789, true }, - { 272799, true }, - { 272811, true }, - { 272818, true }, - { 272827, true }, - { 272839, true }, - { 272847, true }, - { 272853, true }, - { 272859, true }, - { 272865, true }, - { 272874, true }, - { 272883, false }, - { 272891, true }, - { 272900, true }, - { 272909, true }, - { 272917, true }, - { 272927, true }, - { 272943, true }, - { 272957, true }, - { 272965, true }, - { 272984, true }, - { 272991, true }, - { 273016, true }, - { 273023, true }, - { 273036, true }, - { 273050, true }, - { 273060, true }, + { 272695, true }, + { 272705, true }, + { 272717, true }, + { 272724, true }, + { 272733, true }, + { 272745, true }, + { 272753, true }, + { 272759, true }, + { 272765, true }, + { 272771, true }, + { 272780, true }, + { 272789, false }, + { 272797, true }, + { 272806, true }, + { 272815, true }, + { 272823, true }, + { 272833, true }, + { 272849, true }, + { 272863, true }, + { 272871, true }, + { 272890, true }, + { 272897, true }, + { 272922, true }, + { 272929, true }, + { 272942, true }, + { 272956, true }, + { 272966, true }, + { 272976, true }, + { 272995, true }, + { 273007, true }, + { 273022, true }, + { 273033, true }, + { 273045, true }, + { 273057, true }, { 273070, true }, - { 273089, true }, - { 273101, true }, - { 273116, true }, - { 273127, true }, - { 273139, true }, - { 273151, true }, - { 273164, true }, - { 273172, true }, - { 273185, true }, - { 273197, true }, + { 273078, true }, + { 273091, true }, + { 273103, true }, + { 273111, true }, + { 273123, true }, + { 273133, true }, + { 273152, true }, + { 273179, true }, + { 273190, true }, { 273205, true }, - { 273217, true }, - { 273227, true }, - { 273246, true }, - { 273273, true }, + { 273221, true }, + { 273243, true }, + { 273257, true }, + { 273271, true }, { 273284, true }, - { 273299, true }, - { 273315, true }, - { 273337, true }, - { 273351, true }, - { 273365, true }, - { 273378, true }, - { 273391, true }, - { 273410, true }, - { 273439, true }, - { 273452, true }, - { 273473, false }, - { 273500, false }, - { 273516, true }, - { 273532, true }, + { 273297, true }, + { 273316, true }, + { 273345, true }, + { 273358, true }, + { 273379, false }, + { 273406, false }, + { 273422, true }, + { 273438, true }, + { 273453, true }, + { 273469, true }, + { 273487, true }, + { 273506, true }, + { 273515, true }, + { 273534, true }, { 273547, true }, - { 273563, true }, - { 273581, true }, - { 273600, true }, - { 273609, true }, - { 273628, true }, - { 273641, true }, - { 273658, true }, - { 273673, true }, - { 273684, true }, - { 273697, true }, - { 273715, true }, - { 273736, true }, - { 273749, true }, - { 273768, true }, - { 273795, true }, - { 273814, true }, - { 273832, true }, - { 273849, true }, - { 273872, true }, - { 273886, true }, - { 273904, true }, - { 273922, true }, + { 273564, true }, + { 273579, true }, + { 273590, true }, + { 273603, true }, + { 273621, true }, + { 273642, true }, + { 273655, true }, + { 273674, true }, + { 273693, true }, + { 273711, true }, + { 273728, true }, + { 273751, true }, + { 273765, true }, + { 273783, true }, + { 273801, true }, + { 273817, true }, + { 273830, true }, + { 273842, true }, + { 273858, true }, + { 273879, true }, + { 273895, true }, + { 273905, true }, + { 273925, true }, { 273938, true }, - { 273951, true }, - { 273963, true }, - { 273979, true }, - { 274000, true }, - { 274016, true }, - { 274026, true }, - { 274046, true }, - { 274059, true }, - { 274068, true }, + { 273947, true }, + { 273958, true }, + { 273968, true }, + { 273981, true }, + { 273994, true }, + { 274010, true }, + { 274023, true }, + { 274038, true }, + { 274050, true }, + { 274064, true }, { 274079, true }, - { 274089, true }, - { 274102, true }, - { 274115, true }, - { 274131, true }, - { 274144, true }, - { 274158, true }, - { 274173, true }, - { 274185, true }, - { 274199, true }, - { 274214, true }, - { 274226, true }, - { 274242, true }, - { 274258, true }, - { 274271, true }, - { 274286, true }, - { 274296, true }, - { 274307, true }, - { 274316, true }, - { 274343, true }, - { 274355, true }, - { 274374, true }, - { 274407, true }, - { 274441, true }, - { 274475, true }, - { 274490, false }, - { 274507, true }, - { 274525, true }, - { 274537, true }, - { 274561, true }, - { 274580, true }, - { 274597, true }, - { 274621, true }, - { 274634, true }, - { 274648, true }, - { 274656, true }, - { 274667, true }, - { 274681, true }, - { 274693, true }, - { 274702, true }, - { 274720, false }, - { 274730, true }, - { 274750, true }, - { 274764, true }, - { 274777, true }, - { 274797, true }, - { 274809, true }, - { 274827, true }, - { 274836, true }, - { 274848, true }, - { 274863, true }, - { 274879, true }, - { 274894, true }, - { 274909, true }, - { 274920, true }, - { 274945, true }, - { 274960, false }, - { 274977, true }, - { 274989, true }, - { 275014, false }, - { 275037, true }, - { 275062, true }, - { 275081, true }, - { 275098, true }, - { 275115, true }, + { 274091, true }, + { 274107, true }, + { 274123, true }, + { 274136, true }, + { 274151, true }, + { 274161, true }, + { 274172, true }, + { 274181, true }, + { 274208, true }, + { 274220, true }, + { 274239, true }, + { 274272, true }, + { 274306, true }, + { 274340, true }, + { 274355, false }, + { 274372, true }, + { 274390, true }, + { 274402, true }, + { 274426, true }, + { 274445, true }, + { 274462, true }, + { 274486, true }, + { 274499, true }, + { 274513, true }, + { 274521, true }, + { 274532, true }, + { 274546, true }, + { 274558, true }, + { 274567, true }, + { 274585, false }, + { 274595, true }, + { 274615, true }, + { 274629, true }, + { 274642, true }, + { 274662, true }, + { 274674, true }, + { 274692, true }, + { 274701, true }, + { 274713, true }, + { 274728, true }, + { 274744, true }, + { 274759, true }, + { 274774, true }, + { 274785, true }, + { 274810, true }, + { 274825, false }, + { 274842, true }, + { 274854, true }, + { 274879, false }, + { 274902, true }, + { 274927, true }, + { 274946, true }, + { 274963, true }, + { 274980, true }, + { 274988, true }, + { 275001, true }, + { 275012, true }, + { 275031, true }, + { 275046, true }, + { 275065, true }, + { 275087, true }, + { 275110, true }, { 275123, true }, - { 275136, true }, - { 275147, true }, - { 275166, true }, - { 275181, true }, - { 275200, true }, - { 275222, true }, - { 275245, true }, - { 275258, true }, - { 275276, true }, - { 275297, true }, - { 275320, true }, - { 275341, true }, - { 275363, true }, - { 275384, true }, - { 275405, true }, - { 275422, true }, - { 275432, false }, + { 275141, true }, + { 275162, true }, + { 275185, true }, + { 275206, true }, + { 275228, true }, + { 275249, true }, + { 275270, true }, + { 275287, true }, + { 275297, false }, + { 275311, true }, + { 275328, true }, + { 275340, true }, + { 275360, true }, + { 275377, true }, + { 275387, true }, + { 275398, true }, + { 275420, true }, + { 275431, true }, { 275446, true }, - { 275463, true }, - { 275475, true }, + { 275465, true }, + { 275482, true }, { 275495, true }, - { 275512, true }, - { 275522, true }, - { 275533, true }, - { 275555, true }, - { 275566, true }, - { 275581, true }, - { 275600, true }, - { 275617, true }, - { 275630, true }, - { 275645, true }, - { 275666, true }, - { 275684, true }, - { 275695, true }, - { 275712, false }, + { 275510, true }, + { 275531, true }, + { 275549, true }, + { 275560, true }, + { 275577, false }, + { 275591, true }, + { 275607, true }, + { 275619, true }, + { 275631, true }, + { 275668, true }, + { 275687, true }, + { 275701, true }, + { 275713, true }, { 275726, true }, - { 275742, true }, - { 275754, true }, - { 275766, true }, - { 275803, true }, - { 275822, true }, - { 275836, true }, - { 275848, true }, - { 275861, true }, - { 275884, true }, - { 275899, true }, - { 275909, false }, - { 275921, true }, - { 275938, false }, - { 275953, true }, - { 275966, true }, - { 275974, true }, - { 275986, false }, - { 275998, true }, - { 276015, true }, - { 276028, true }, - { 276044, true }, + { 275749, true }, + { 275764, true }, + { 275774, false }, + { 275786, true }, + { 275803, false }, + { 275818, true }, + { 275831, true }, + { 275839, true }, + { 275851, false }, + { 275863, true }, + { 275880, true }, + { 275893, true }, + { 275909, true }, + { 275939, true }, + { 275955, false }, + { 275963, true }, + { 275977, true }, + { 275990, true }, + { 276006, true }, + { 276019, true }, + { 276037, true }, + { 276047, true }, + { 276058, true }, { 276074, true }, - { 276090, false }, - { 276098, true }, - { 276112, true }, + { 276084, true }, + { 276110, true }, { 276125, true }, - { 276141, true }, - { 276154, true }, - { 276172, true }, - { 276182, true }, - { 276193, true }, - { 276209, true }, - { 276219, true }, - { 276245, true }, - { 276260, true }, - { 276279, true }, - { 276292, true }, - { 276302, true }, - { 276321, true }, - { 276346, true }, - { 276363, true }, - { 276377, true }, - { 276403, true }, - { 276424, true }, - { 276439, false }, - { 276450, true }, - { 276470, true }, - { 276487, true }, - { 276500, true }, - { 276513, true }, - { 276525, true }, - { 276544, true }, - { 276557, true }, - { 276572, true }, - { 276583, true }, - { 276594, true }, - { 276614, true }, - { 276624, true }, - { 276634, true }, - { 276656, true }, - { 276676, true }, - { 276693, true }, - { 276711, true }, - { 276726, true }, - { 276739, true }, - { 276752, true }, - { 276767, true }, - { 276778, true }, - { 276793, true }, - { 276807, true }, + { 276144, true }, + { 276157, true }, + { 276167, true }, + { 276186, true }, + { 276211, true }, + { 276228, true }, + { 276242, true }, + { 276268, true }, + { 276289, true }, + { 276304, false }, + { 276315, true }, + { 276335, true }, + { 276352, true }, + { 276365, true }, + { 276378, true }, + { 276390, true }, + { 276409, true }, + { 276422, true }, + { 276437, true }, + { 276448, true }, + { 276459, true }, + { 276479, true }, + { 276489, true }, + { 276499, true }, + { 276521, true }, + { 276541, true }, + { 276558, true }, + { 276576, true }, + { 276591, true }, + { 276604, true }, + { 276617, true }, + { 276632, true }, + { 276647, true }, + { 276661, true }, + { 276685, true }, + { 276701, true }, + { 276723, true }, + { 276734, true }, + { 276750, true }, + { 276766, true }, + { 276779, true }, + { 276792, true }, + { 276816, true }, { 276831, true }, - { 276847, true }, - { 276869, true }, - { 276880, true }, - { 276896, true }, - { 276912, true }, - { 276925, true }, - { 276938, true }, - { 276962, true }, - { 276977, true }, - { 276990, true }, - { 277009, true }, - { 277019, true }, - { 277033, true }, - { 277051, true }, - { 277062, true }, - { 277079, true }, - { 277091, true }, - { 277105, true }, - { 277121, true }, - { 277134, true }, - { 277151, true }, - { 277168, true }, - { 277180, true }, - { 277191, true }, - { 277206, true }, - { 277215, true }, - { 277232, true }, - { 277241, true }, - { 277261, true }, - { 277281, false }, + { 276844, true }, + { 276863, true }, + { 276873, true }, + { 276887, true }, + { 276905, true }, + { 276916, true }, + { 276933, true }, + { 276945, true }, + { 276959, true }, + { 276975, true }, + { 276988, true }, + { 277005, true }, + { 277022, true }, + { 277034, true }, + { 277045, true }, + { 277060, true }, + { 277069, true }, + { 277086, true }, + { 277095, true }, + { 277115, true }, + { 277135, false }, + { 277149, true }, + { 277166, true }, + { 277181, true }, + { 277207, true }, + { 277225, true }, + { 277235, true }, + { 277252, true }, + { 277280, true }, { 277295, true }, - { 277312, true }, + { 277311, true }, { 277327, true }, - { 277353, true }, - { 277371, true }, - { 277381, true }, - { 277398, true }, - { 277426, true }, + { 277346, true }, + { 277362, true }, + { 277379, true }, + { 277396, true }, + { 277419, true }, + { 277430, true }, { 277441, true }, - { 277457, true }, - { 277473, true }, - { 277492, true }, - { 277508, true }, - { 277525, true }, - { 277542, true }, - { 277565, true }, - { 277576, true }, - { 277587, true }, + { 277456, true }, + { 277479, true }, + { 277491, true }, + { 277506, true }, + { 277524, true }, + { 277537, true }, + { 277547, true }, + { 277556, true }, + { 277569, true }, + { 277579, true }, + { 277593, false }, { 277602, true }, - { 277625, true }, + { 277612, true }, + { 277625, false }, { 277637, true }, - { 277652, true }, - { 277670, true }, - { 277683, true }, - { 277693, true }, - { 277702, true }, + { 277648, true }, + { 277665, true }, + { 277675, true }, + { 277685, true }, + { 277695, true }, + { 277706, true }, { 277715, true }, - { 277730, true }, - { 277740, true }, - { 277754, false }, - { 277763, true }, - { 277773, true }, - { 277786, false }, - { 277798, true }, - { 277809, true }, - { 277826, true }, - { 277836, true }, - { 277846, true }, - { 277856, true }, - { 277867, true }, - { 277876, true }, - { 277886, true }, - { 277897, false }, + { 277725, true }, + { 277736, false }, + { 277749, true }, + { 277765, true }, + { 277777, true }, + { 277788, true }, + { 277802, true }, + { 277814, false }, + { 277825, true }, + { 277848, true }, + { 277880, true }, + { 277902, true }, { 277910, true }, - { 277926, true }, - { 277938, true }, - { 277949, true }, - { 277963, true }, - { 277975, false }, - { 277986, true }, - { 278009, true }, + { 277920, true }, + { 277947, false }, + { 277959, true }, + { 277972, true }, + { 277980, true }, + { 277988, true }, + { 278000, true }, + { 278015, true }, + { 278025, true }, { 278041, true }, + { 278054, true }, { 278063, true }, - { 278071, true }, - { 278081, true }, - { 278108, false }, - { 278120, true }, - { 278133, true }, - { 278141, true }, - { 278149, true }, - { 278161, true }, - { 278176, true }, - { 278186, true }, - { 278202, true }, - { 278215, true }, - { 278224, true }, + { 278080, true }, + { 278097, true }, + { 278111, true }, + { 278124, true }, + { 278138, true }, + { 278153, true }, + { 278162, true }, + { 278171, true }, + { 278182, false }, + { 278191, true }, + { 278204, true }, + { 278219, true }, { 278241, true }, - { 278258, true }, - { 278272, true }, - { 278285, true }, - { 278299, true }, - { 278314, true }, - { 278323, true }, - { 278332, true }, - { 278343, false }, - { 278352, true }, - { 278365, true }, - { 278380, true }, - { 278402, true }, - { 278418, false }, - { 278430, true }, - { 278440, true }, - { 278450, true }, - { 278466, true }, - { 278479, true }, - { 278499, true }, - { 278510, true }, - { 278520, true }, - { 278534, true }, - { 278551, true }, - { 278564, true }, - { 278580, true }, - { 278598, true }, - { 278619, true }, - { 278638, true }, - { 278655, true }, - { 278669, true }, - { 278685, true }, - { 278705, true }, - { 278718, true }, - { 278732, true }, - { 278743, true }, - { 278757, true }, - { 278777, true }, - { 278801, true }, - { 278824, true }, - { 278835, true }, - { 278857, true }, - { 278869, false }, - { 278882, true }, - { 278900, true }, - { 278914, true }, - { 278928, false }, - { 278949, true }, + { 278257, true }, + { 278267, true }, + { 278277, true }, + { 278293, true }, + { 278306, true }, + { 278326, true }, + { 278337, true }, + { 278347, true }, + { 278361, true }, + { 278378, true }, + { 278391, true }, + { 278407, true }, + { 278425, true }, + { 278446, true }, + { 278465, true }, + { 278482, true }, + { 278496, true }, + { 278512, true }, + { 278532, true }, + { 278545, true }, + { 278559, true }, + { 278570, true }, + { 278584, true }, + { 278604, true }, + { 278628, true }, + { 278651, true }, + { 278662, true }, + { 278684, true }, + { 278696, false }, + { 278709, true }, + { 278727, true }, + { 278741, true }, + { 278755, false }, + { 278776, true }, + { 278794, true }, + { 278814, true }, + { 278831, true }, + { 278842, true }, + { 278852, true }, + { 278862, true }, + { 278873, true }, + { 278885, true }, + { 278897, true }, + { 278909, true }, + { 278928, true }, + { 278954, true }, { 278967, true }, - { 278987, true }, - { 279004, true }, - { 279015, true }, - { 279025, true }, - { 279035, true }, - { 279046, true }, - { 279058, true }, - { 279070, true }, - { 279082, true }, - { 279101, true }, - { 279127, true }, - { 279140, true }, - { 279154, true }, - { 279171, true }, - { 279190, true }, - { 279207, true }, - { 279225, true }, - { 279240, true }, + { 278981, true }, + { 278998, true }, + { 279017, true }, + { 279034, true }, + { 279052, true }, + { 279067, true }, + { 279088, true }, + { 279109, true }, + { 279121, true }, + { 279129, false }, + { 279147, true }, + { 279161, true }, + { 279175, true }, + { 279195, true }, + { 279217, true }, + { 279236, true }, + { 279248, true }, { 279261, true }, - { 279282, true }, + { 279273, true }, { 279294, true }, - { 279302, false }, - { 279320, true }, - { 279334, true }, - { 279348, true }, - { 279368, true }, - { 279390, true }, - { 279409, true }, - { 279421, true }, - { 279434, true }, - { 279446, true }, - { 279467, true }, - { 279491, true }, - { 279501, true }, - { 279516, true }, - { 279530, true }, - { 279538, true }, - { 279553, true }, - { 279570, true }, - { 279592, true }, - { 279602, true }, - { 279620, true }, - { 279636, true }, - { 279655, true }, - { 279668, false }, - { 279682, true }, + { 279318, true }, + { 279328, true }, + { 279343, true }, + { 279357, true }, + { 279365, true }, + { 279380, true }, + { 279397, true }, + { 279419, true }, + { 279429, true }, + { 279447, true }, + { 279463, true }, + { 279482, true }, + { 279495, false }, + { 279509, true }, + { 279526, true }, + { 279535, true }, + { 279545, true }, + { 279560, true }, + { 279576, true }, + { 279603, true }, + { 279617, true }, + { 279633, true }, + { 279651, true }, + { 279666, true }, + { 279679, true }, + { 279688, true }, { 279699, true }, - { 279708, true }, - { 279718, true }, - { 279733, true }, - { 279749, true }, - { 279776, true }, - { 279790, true }, - { 279806, true }, - { 279824, true }, - { 279839, true }, - { 279852, true }, - { 279861, true }, - { 279872, true }, - { 279888, true }, - { 279903, true }, - { 279916, true }, - { 279929, false }, - { 279940, true }, - { 279956, true }, - { 279968, true }, - { 279982, true }, - { 280003, true }, - { 280020, true }, - { 280035, true }, + { 279715, true }, + { 279730, true }, + { 279743, true }, + { 279756, false }, + { 279767, true }, + { 279783, true }, + { 279795, true }, + { 279809, true }, + { 279830, true }, + { 279847, true }, + { 279862, true }, + { 279873, true }, + { 279889, true }, + { 279901, true }, + { 279917, true }, + { 279928, true }, + { 279949, true }, + { 279972, true }, + { 279992, true }, + { 280013, true }, + { 280028, true }, { 280046, true }, - { 280062, true }, - { 280074, true }, - { 280090, true }, - { 280101, true }, - { 280122, true }, - { 280145, true }, - { 280165, true }, - { 280186, true }, - { 280201, true }, - { 280219, true }, - { 280237, true }, - { 280252, true }, - { 280262, true }, - { 280276, true }, - { 280285, true }, - { 280292, true }, - { 280306, true }, - { 280326, true }, - { 280337, true }, - { 280351, true }, - { 280364, true }, - { 280376, false }, - { 280390, true }, - { 280401, true }, - { 280411, true }, - { 280423, true }, - { 280441, true }, - { 280451, true }, - { 280468, true }, - { 280477, true }, + { 280064, true }, + { 280079, true }, + { 280089, true }, + { 280103, true }, + { 280112, true }, + { 280119, true }, + { 280133, true }, + { 280153, true }, + { 280164, true }, + { 280178, true }, + { 280191, true }, + { 280203, false }, + { 280217, true }, + { 280228, true }, + { 280238, true }, + { 280250, true }, + { 280268, true }, + { 280278, true }, + { 280295, true }, + { 280304, true }, + { 280317, true }, + { 280327, true }, + { 280338, true }, + { 280352, true }, + { 280363, true }, + { 280374, true }, + { 280389, true }, + { 280405, false }, + { 280416, false }, + { 280431, true }, + { 280446, false }, + { 280460, false }, + { 280479, true }, { 280490, true }, { 280500, true }, { 280511, true }, - { 280525, true }, - { 280536, true }, - { 280547, true }, - { 280562, true }, - { 280578, false }, - { 280589, false }, - { 280604, true }, - { 280619, false }, - { 280633, false }, - { 280652, true }, - { 280663, true }, - { 280673, true }, - { 280684, true }, - { 280704, true }, - { 280716, true }, - { 280729, true }, - { 280742, true }, - { 280760, true }, - { 280770, true }, - { 280779, false }, - { 280789, true }, - { 280800, true }, - { 280812, true }, - { 280820, true }, - { 280830, true }, - { 280840, true }, - { 280852, true }, - { 280863, true }, + { 280531, true }, + { 280543, true }, + { 280556, true }, + { 280574, true }, + { 280584, true }, + { 280593, false }, + { 280603, true }, + { 280614, true }, + { 280626, true }, + { 280634, true }, + { 280644, true }, + { 280654, true }, + { 280666, true }, + { 280677, true }, + { 280692, true }, + { 280709, true }, + { 280726, true }, + { 280739, true }, + { 280748, true }, + { 280764, true }, + { 280771, true }, + { 280790, true }, + { 280801, true }, + { 280820, false }, + { 280831, true }, + { 280848, true }, + { 280865, true }, { 280878, true }, - { 280895, true }, + { 280890, true }, + { 280901, true }, { 280912, true }, - { 280925, true }, - { 280934, true }, - { 280950, true }, - { 280957, true }, - { 280976, true }, - { 280987, true }, - { 281006, false }, + { 280929, false }, + { 280944, false }, + { 280952, true }, + { 280961, true }, + { 280981, true }, + { 281004, false }, { 281017, true }, - { 281034, true }, - { 281051, true }, - { 281064, true }, - { 281076, true }, - { 281087, true }, - { 281098, true }, - { 281115, false }, - { 281130, false }, - { 281138, true }, - { 281147, true }, - { 281167, true }, - { 281190, false }, - { 281203, true }, - { 281214, true }, - { 281230, false }, - { 281237, true }, - { 281247, true }, - { 281261, true }, - { 281270, true }, - { 281284, true }, - { 281304, false }, - { 281324, false }, - { 281336, false }, - { 281352, true }, - { 281364, true }, - { 281379, true }, - { 281391, true }, - { 281408, true }, - { 281427, true }, - { 281437, true }, - { 281461, true }, - { 281469, true }, - { 281492, true }, - { 281508, true }, - { 281525, true }, - { 281541, true }, - { 281557, true }, - { 281570, true }, - { 281579, true }, - { 281589, true }, - { 281605, true }, - { 281618, true }, - { 281633, true }, - { 281648, true }, - { 281662, true }, - { 281678, true }, - { 281699, false }, - { 281714, true }, - { 281731, true }, - { 281740, true }, - { 281760, true }, - { 281771, true }, - { 281779, true }, - { 281793, true }, - { 281806, true }, - { 281817, true }, - { 281827, false }, - { 281837, true }, - { 281851, true }, - { 281863, true }, - { 281877, true }, - { 281887, true }, - { 281906, false }, - { 281919, true }, - { 281935, true }, - { 281957, true }, - { 281969, true }, - { 281985, true }, - { 282002, true }, - { 282018, true }, - { 282032, true }, + { 281028, false }, + { 281035, true }, + { 281045, true }, + { 281059, true }, + { 281068, true }, + { 281082, true }, + { 281102, false }, + { 281122, false }, + { 281134, false }, + { 281150, true }, + { 281162, true }, + { 281177, true }, + { 281189, true }, + { 281206, true }, + { 281225, true }, + { 281235, true }, + { 281259, true }, + { 281267, true }, + { 281290, true }, + { 281306, true }, + { 281323, true }, + { 281339, true }, + { 281355, true }, + { 281368, true }, + { 281377, true }, + { 281387, true }, + { 281403, true }, + { 281416, true }, + { 281431, true }, + { 281446, true }, + { 281460, true }, + { 281476, true }, + { 281497, false }, + { 281512, true }, + { 281529, true }, + { 281538, true }, + { 281558, true }, + { 281569, true }, + { 281577, true }, + { 281591, true }, + { 281604, true }, + { 281615, true }, + { 281625, false }, + { 281635, true }, + { 281649, true }, + { 281661, true }, + { 281675, true }, + { 281685, true }, + { 281704, false }, + { 281717, true }, + { 281733, true }, + { 281755, true }, + { 281767, true }, + { 281783, true }, + { 281800, true }, + { 281816, true }, + { 281830, true }, + { 281843, true }, + { 281852, true }, + { 281861, true }, + { 281876, true }, + { 281890, true }, + { 281900, true }, + { 281929, true }, + { 281941, true }, + { 281953, true }, + { 281974, true }, + { 281988, true }, + { 282004, true }, + { 282021, true }, + { 282034, true }, { 282045, true }, - { 282054, true }, - { 282063, true }, - { 282078, true }, - { 282092, true }, - { 282102, true }, - { 282131, true }, - { 282143, true }, - { 282155, true }, - { 282176, true }, - { 282190, true }, - { 282206, true }, - { 282223, true }, - { 282236, true }, - { 282247, true }, - { 282262, true }, + { 282060, true }, + { 282074, true }, + { 282094, true }, + { 282110, true }, + { 282122, true }, + { 282136, true }, + { 282151, true }, + { 282165, true }, + { 282178, true }, + { 282189, true }, + { 282205, true }, + { 282224, true }, + { 282241, true }, + { 282255, true }, + { 282265, true }, { 282276, true }, - { 282296, true }, - { 282312, true }, - { 282324, true }, - { 282338, true }, - { 282353, true }, - { 282367, true }, - { 282380, true }, - { 282391, true }, - { 282407, true }, - { 282426, true }, - { 282443, true }, - { 282457, true }, - { 282467, true }, - { 282478, true }, - { 282494, true }, - { 282516, true }, - { 282525, true }, - { 282535, true }, - { 282559, false }, - { 282571, true }, - { 282587, true }, - { 282615, true }, - { 282647, true }, - { 282662, true }, - { 282674, true }, + { 282292, true }, + { 282314, true }, + { 282323, true }, + { 282333, true }, + { 282357, false }, + { 282369, true }, + { 282385, true }, + { 282413, true }, + { 282445, true }, + { 282460, true }, + { 282472, true }, + { 282483, true }, + { 282492, true }, + { 282506, true }, + { 282519, true }, + { 282531, true }, + { 282549, true }, + { 282561, true }, + { 282575, true }, + { 282589, true }, + { 282601, true }, + { 282622, true }, + { 282637, true }, + { 282653, true }, + { 282670, true }, { 282685, true }, - { 282699, true }, - { 282712, true }, - { 282724, true }, - { 282742, true }, - { 282754, true }, - { 282768, true }, - { 282782, true }, - { 282794, true }, + { 282698, false }, + { 282706, false }, + { 282718, true }, + { 282727, true }, + { 282737, true }, + { 282748, true }, + { 282760, true }, + { 282777, true }, + { 282783, true }, + { 282799, true }, { 282815, true }, - { 282830, true }, - { 282846, true }, - { 282863, true }, - { 282878, true }, - { 282891, false }, - { 282899, false }, - { 282911, true }, - { 282920, true }, - { 282930, true }, + { 282825, true }, + { 282839, true }, + { 282850, true }, + { 282861, true }, + { 282872, true }, + { 282884, true }, + { 282903, true }, + { 282913, true }, + { 282922, true }, { 282941, true }, - { 282953, true }, - { 282970, true }, - { 282976, true }, - { 282992, true }, - { 283008, true }, - { 283018, true }, - { 283032, true }, - { 283043, true }, - { 283054, true }, - { 283065, true }, - { 283077, true }, - { 283096, true }, - { 283106, true }, - { 283114, true }, - { 283122, true }, - { 283130, true }, - { 283138, true }, - { 283147, true }, - { 283166, true }, - { 283194, true }, - { 283208, true }, - { 283222, true }, - { 283241, true }, - { 283263, true }, - { 283285, true }, + { 282969, true }, + { 282983, true }, + { 282997, true }, + { 283016, true }, + { 283038, true }, + { 283060, true }, + { 283082, true }, + { 283100, true }, + { 283117, true }, + { 283133, true }, + { 283144, true }, + { 283159, true }, + { 283175, true }, + { 283188, false }, + { 283204, true }, + { 283220, true }, + { 283233, true }, + { 283251, true }, + { 283266, true }, + { 283281, true }, + { 283295, true }, { 283307, true }, - { 283325, true }, - { 283342, true }, - { 283358, true }, - { 283369, true }, - { 283384, true }, - { 283400, true }, - { 283413, false }, - { 283429, true }, - { 283445, true }, - { 283458, true }, + { 283323, true }, + { 283338, true }, + { 283363, true }, + { 283383, true }, + { 283402, true }, + { 283421, true }, + { 283434, true }, + { 283450, true }, + { 283463, true }, { 283476, true }, { 283491, true }, - { 283506, true }, - { 283520, true }, - { 283532, true }, - { 283548, true }, - { 283563, true }, - { 283588, true }, - { 283608, true }, - { 283627, true }, - { 283646, true }, - { 283659, true }, - { 283675, true }, - { 283688, true }, - { 283701, true }, - { 283716, true }, - { 283732, true }, - { 283749, true }, - { 283768, true }, - { 283779, true }, - { 283795, true }, - { 283812, true }, - { 283825, true }, - { 283838, true }, - { 283855, true }, - { 283870, true }, - { 283887, true }, - { 283906, true }, - { 283919, true }, - { 283935, true }, - { 283946, true }, - { 283959, true }, - { 283973, true }, - { 283987, false }, + { 283507, true }, + { 283524, true }, + { 283543, true }, + { 283554, true }, + { 283570, true }, + { 283587, true }, + { 283600, true }, + { 283613, true }, + { 283630, true }, + { 283645, true }, + { 283662, true }, + { 283681, true }, + { 283694, true }, + { 283710, true }, + { 283721, true }, + { 283734, true }, + { 283748, true }, + { 283762, false }, + { 283778, true }, + { 283797, true }, + { 283817, true }, + { 283837, true }, + { 283851, true }, + { 283863, true }, + { 283878, true }, + { 283889, true }, + { 283907, true }, + { 283925, true }, + { 283940, true }, + { 283952, true }, + { 283963, true }, + { 283979, true }, { 284003, true }, - { 284022, true }, - { 284042, true }, - { 284062, true }, - { 284076, true }, - { 284088, true }, - { 284103, true }, - { 284114, true }, - { 284132, true }, - { 284150, true }, - { 284165, true }, - { 284177, true }, - { 284188, true }, - { 284204, true }, - { 284228, true }, - { 284243, true }, - { 284265, true }, - { 284281, true }, - { 284307, true }, - { 284324, true }, - { 284341, true }, - { 284362, true }, - { 284379, true }, - { 284397, true }, - { 284415, false }, - { 284434, true }, + { 284018, true }, + { 284040, true }, + { 284056, true }, + { 284082, true }, + { 284099, true }, + { 284116, true }, + { 284137, true }, + { 284154, true }, + { 284172, true }, + { 284190, false }, + { 284209, true }, + { 284220, true }, + { 284236, true }, + { 284250, true }, + { 284264, true }, + { 284277, true }, + { 284290, true }, + { 284303, true }, + { 284316, true }, + { 284329, true }, + { 284346, true }, + { 284361, true }, + { 284372, true }, + { 284380, true }, + { 284389, true }, + { 284399, true }, + { 284410, true }, + { 284431, true }, { 284445, true }, - { 284461, true }, - { 284475, true }, - { 284489, true }, - { 284502, true }, - { 284515, true }, - { 284528, true }, - { 284541, true }, - { 284554, true }, - { 284571, true }, - { 284586, true }, - { 284597, true }, - { 284605, true }, - { 284614, true }, - { 284624, true }, - { 284635, true }, - { 284656, true }, - { 284670, true }, - { 284682, true }, - { 284696, true }, - { 284705, true }, - { 284722, true }, - { 284731, true }, - { 284744, true }, + { 284457, true }, + { 284471, true }, + { 284480, true }, + { 284497, true }, + { 284506, true }, + { 284519, true }, + { 284538, true }, + { 284559, true }, + { 284568, true }, + { 284576, true }, + { 284595, true }, + { 284612, true }, + { 284626, false }, + { 284641, true }, + { 284657, true }, + { 284667, true }, + { 284680, false }, + { 284696, false }, + { 284708, true }, + { 284720, false }, + { 284735, true }, + { 284748, true }, { 284763, true }, - { 284784, true }, - { 284793, true }, - { 284801, true }, - { 284820, true }, - { 284837, true }, - { 284851, false }, - { 284866, true }, - { 284882, true }, - { 284892, true }, - { 284905, false }, - { 284921, false }, - { 284933, true }, - { 284945, false }, + { 284783, true }, + { 284805, true }, + { 284827, false }, + { 284850, true }, + { 284868, true }, + { 284884, true }, + { 284896, true }, + { 284914, true }, + { 284926, true }, + { 284937, true }, + { 284946, true }, { 284960, true }, - { 284973, true }, - { 284988, true }, + { 284968, true }, + { 284977, true }, + { 284993, true }, { 285008, true }, - { 285030, true }, - { 285052, false }, - { 285075, true }, - { 285093, true }, - { 285109, true }, - { 285121, true }, + { 285018, true }, + { 285038, true }, + { 285055, true }, + { 285069, true }, + { 285089, true }, + { 285100, true }, + { 285112, true }, + { 285127, true }, { 285139, true }, - { 285151, true }, - { 285162, true }, - { 285171, true }, - { 285185, true }, - { 285193, true }, - { 285202, true }, - { 285218, true }, - { 285233, true }, - { 285243, true }, - { 285263, true }, - { 285280, true }, - { 285294, true }, - { 285314, true }, + { 285149, true }, + { 285165, true }, + { 285178, true }, + { 285199, true }, + { 285207, true }, + { 285217, true }, + { 285234, true }, + { 285257, true }, + { 285266, true }, + { 285276, true }, + { 285289, true }, + { 285299, true }, + { 285310, true }, { 285325, true }, - { 285337, true }, - { 285352, true }, - { 285364, true }, - { 285374, true }, - { 285390, true }, - { 285403, true }, - { 285424, true }, - { 285432, true }, - { 285442, true }, - { 285459, true }, - { 285482, true }, - { 285491, true }, - { 285501, true }, - { 285514, true }, - { 285524, true }, - { 285535, true }, - { 285550, true }, - { 285563, true }, - { 285582, true }, - { 285593, true }, - { 285616, false }, - { 285626, true }, - { 285640, true }, - { 285660, true }, - { 285675, true }, - { 285688, true }, - { 285708, true }, - { 285723, true }, - { 285737, true }, - { 285753, false }, + { 285338, true }, + { 285357, true }, + { 285368, true }, + { 285391, false }, + { 285401, true }, + { 285415, true }, + { 285435, true }, + { 285450, true }, + { 285463, true }, + { 285483, true }, + { 285498, true }, + { 285512, true }, + { 285528, false }, + { 285551, true }, + { 285564, true }, + { 285575, true }, + { 285594, true }, + { 285605, true }, + { 285616, true }, + { 285634, true }, + { 285659, true }, + { 285669, true }, + { 285679, true }, + { 285693, true }, + { 285707, true }, + { 285721, true }, + { 285734, true }, + { 285747, true }, + { 285761, false }, { 285776, true }, - { 285789, true }, - { 285800, true }, - { 285819, true }, - { 285830, true }, + { 285790, true }, + { 285815, true }, + { 285829, true }, { 285841, true }, - { 285859, true }, - { 285884, true }, - { 285894, true }, - { 285904, true }, - { 285918, true }, - { 285932, true }, - { 285946, true }, - { 285959, true }, - { 285972, true }, - { 285986, false }, + { 285853, true }, + { 285865, true }, + { 285879, true }, + { 285889, false }, + { 285909, true }, + { 285926, true }, + { 285936, true }, + { 285950, true }, + { 285965, true }, + { 285975, true }, + { 285988, true }, { 286001, true }, - { 286015, true }, - { 286040, true }, - { 286054, true }, - { 286066, true }, - { 286078, true }, + { 286016, true }, + { 286025, true }, + { 286035, true }, + { 286047, true }, + { 286061, true }, + { 286070, true }, + { 286079, true }, { 286090, true }, - { 286104, true }, - { 286114, false }, - { 286134, true }, - { 286151, true }, - { 286161, true }, - { 286175, true }, - { 286190, true }, - { 286200, true }, + { 286101, true }, + { 286112, true }, + { 286122, true }, + { 286130, true }, + { 286139, true }, + { 286147, true }, + { 286156, false }, + { 286176, true }, + { 286186, true }, + { 286201, true }, { 286213, true }, - { 286226, true }, - { 286241, true }, - { 286250, true }, - { 286260, true }, - { 286272, true }, - { 286286, true }, - { 286295, true }, - { 286304, true }, - { 286315, true }, - { 286326, true }, - { 286337, true }, - { 286347, true }, - { 286355, true }, - { 286364, true }, - { 286372, true }, - { 286381, false }, - { 286401, true }, - { 286411, true }, - { 286426, true }, - { 286438, true }, - { 286450, true }, - { 286465, true }, - { 286484, true }, - { 286504, true }, - { 286532, true }, - { 286557, true }, - { 286570, true }, - { 286584, true }, - { 286599, true }, + { 286225, true }, + { 286240, true }, + { 286259, true }, + { 286279, true }, + { 286307, true }, + { 286332, true }, + { 286345, true }, + { 286359, true }, + { 286374, true }, + { 286400, true }, + { 286414, true }, + { 286431, true }, + { 286446, true }, + { 286459, true }, + { 286475, true }, + { 286483, true }, + { 286498, true }, + { 286515, false }, + { 286533, true }, + { 286545, true }, + { 286567, true }, + { 286583, true }, + { 286598, true }, + { 286609, true }, { 286625, true }, - { 286639, true }, - { 286656, true }, - { 286671, true }, - { 286684, true }, - { 286700, true }, - { 286708, true }, - { 286723, true }, - { 286740, false }, - { 286758, true }, - { 286770, true }, + { 286646, true }, + { 286669, true }, + { 286691, true }, + { 286705, true }, + { 286726, true }, + { 286740, true }, + { 286764, true }, + { 286781, true }, { 286792, true }, - { 286808, true }, - { 286823, true }, - { 286834, true }, - { 286850, true }, + { 286813, true }, + { 286832, true }, + { 286858, true }, { 286871, true }, - { 286894, true }, - { 286916, true }, - { 286930, true }, - { 286951, true }, - { 286965, true }, - { 286989, true }, - { 287006, true }, - { 287017, true }, - { 287038, true }, - { 287057, true }, - { 287083, true }, - { 287096, true }, - { 287116, true }, - { 287132, true }, - { 287158, true }, - { 287178, true }, - { 287199, true }, - { 287222, true }, - { 287239, true }, - { 287263, true }, - { 287282, true }, - { 287304, false }, - { 287328, true }, - { 287347, true }, - { 287363, true }, - { 287388, false }, - { 287414, true }, - { 287433, true }, - { 287444, true }, - { 287468, true }, + { 286891, true }, + { 286907, true }, + { 286933, true }, + { 286953, true }, + { 286974, true }, + { 286997, true }, + { 287021, true }, + { 287040, true }, + { 287062, false }, + { 287086, true }, + { 287105, true }, + { 287121, true }, + { 287146, false }, + { 287172, true }, + { 287191, true }, + { 287202, true }, + { 287226, true }, + { 287252, true }, + { 287265, true }, + { 287283, true }, + { 287294, true }, + { 287316, true }, + { 287332, true }, + { 287358, true }, + { 287375, true }, + { 287393, true }, + { 287412, true }, + { 287422, true }, + { 287438, true }, + { 287456, true }, + { 287477, true }, { 287494, true }, - { 287507, true }, - { 287525, true }, - { 287536, true }, - { 287558, true }, - { 287574, true }, - { 287600, true }, - { 287617, true }, - { 287635, true }, - { 287654, true }, - { 287664, true }, - { 287680, true }, - { 287698, true }, - { 287719, true }, - { 287736, true }, - { 287752, true }, - { 287774, true }, - { 287797, true }, - { 287809, true }, - { 287828, true }, - { 287846, true }, - { 287869, true }, - { 287882, true }, - { 287898, true }, - { 287914, true }, - { 287932, true }, - { 287950, true }, - { 287964, true }, + { 287510, true }, + { 287532, true }, + { 287555, true }, + { 287567, true }, + { 287586, true }, + { 287604, true }, + { 287627, true }, + { 287640, true }, + { 287656, true }, + { 287672, true }, + { 287690, true }, + { 287708, true }, + { 287722, true }, + { 287740, true }, + { 287758, true }, + { 287773, true }, + { 287790, true }, + { 287824, true }, + { 287838, true }, + { 287865, true }, + { 287883, true }, + { 287899, true }, + { 287917, true }, + { 287933, true }, + { 287949, true }, + { 287962, true }, { 287982, true }, - { 288000, true }, - { 288015, true }, - { 288032, true }, - { 288066, true }, - { 288080, true }, - { 288107, true }, - { 288125, true }, - { 288141, true }, - { 288159, true }, - { 288175, true }, - { 288191, true }, - { 288204, true }, - { 288224, true }, - { 288240, true }, - { 288258, true }, - { 288275, true }, - { 288294, true }, - { 288307, true }, - { 288326, true }, - { 288362, true }, - { 288385, true }, - { 288405, true }, - { 288420, true }, - { 288438, true }, - { 288458, true }, + { 287998, true }, + { 288016, true }, + { 288033, true }, + { 288052, true }, + { 288065, true }, + { 288084, true }, + { 288120, true }, + { 288143, true }, + { 288163, true }, + { 288178, true }, + { 288196, true }, + { 288216, true }, + { 288233, true }, + { 288252, true }, + { 288263, true }, + { 288285, true }, + { 288303, true }, + { 288333, true }, + { 288353, true }, + { 288369, true }, + { 288384, true }, + { 288399, true }, + { 288410, true }, + { 288424, true }, + { 288446, true }, + { 288460, true }, { 288475, true }, - { 288494, true }, - { 288505, true }, - { 288527, true }, - { 288545, true }, - { 288575, true }, - { 288595, true }, - { 288611, true }, - { 288626, true }, - { 288641, true }, - { 288652, true }, - { 288666, true }, - { 288688, true }, - { 288702, true }, - { 288717, true }, - { 288731, true }, - { 288746, true }, - { 288759, true }, - { 288776, true }, - { 288797, true }, - { 288816, true }, - { 288829, true }, - { 288844, true }, + { 288489, true }, + { 288504, true }, + { 288517, true }, + { 288534, true }, + { 288555, true }, + { 288574, true }, + { 288587, true }, + { 288602, true }, + { 288615, true }, + { 288638, true }, + { 288647, true }, + { 288668, true }, + { 288690, true }, + { 288700, true }, + { 288713, true }, + { 288734, true }, + { 288758, true }, + { 288784, true }, + { 288802, true }, + { 288825, true }, + { 288846, true }, { 288857, true }, - { 288880, true }, - { 288889, true }, - { 288910, true }, - { 288932, true }, - { 288942, true }, - { 288955, true }, - { 288976, true }, - { 289000, true }, - { 289026, true }, - { 289044, true }, - { 289067, true }, - { 289088, true }, - { 289099, true }, - { 289116, true }, - { 289134, true }, - { 289149, true }, - { 289165, true }, - { 289182, true }, - { 289195, true }, - { 289208, true }, - { 289224, true }, - { 289243, true }, - { 289273, true }, - { 289291, true }, - { 289315, true }, - { 289328, true }, + { 288874, true }, + { 288892, true }, + { 288907, true }, + { 288923, true }, + { 288940, true }, + { 288953, true }, + { 288966, true }, + { 288982, true }, + { 289001, true }, + { 289031, true }, + { 289049, true }, + { 289073, true }, + { 289086, true }, + { 289103, true }, + { 289124, true }, + { 289139, true }, + { 289161, true }, + { 289180, true }, + { 289200, true }, + { 289217, false }, + { 289232, true }, + { 289250, true }, + { 289272, true }, + { 289288, true }, + { 289307, true }, + { 289319, true }, { 289345, true }, - { 289366, true }, - { 289381, true }, - { 289403, true }, - { 289422, true }, - { 289442, true }, - { 289459, false }, - { 289474, true }, - { 289492, true }, - { 289514, true }, - { 289530, true }, - { 289549, true }, - { 289561, true }, - { 289587, true }, - { 289599, true }, - { 289611, true }, - { 289627, true }, - { 289644, true }, - { 289662, true }, + { 289357, true }, + { 289369, true }, + { 289385, true }, + { 289402, true }, + { 289420, true }, + { 289440, true }, + { 289460, true }, + { 289476, true }, + { 289495, true }, + { 289506, true }, + { 289536, false }, + { 289550, true }, + { 289567, true }, + { 289588, true }, + { 289608, true }, + { 289622, true }, + { 289640, true }, + { 289656, true }, + { 289666, true }, { 289682, true }, - { 289702, true }, - { 289718, true }, - { 289737, true }, + { 289706, true }, + { 289717, true }, + { 289729, true }, { 289748, true }, - { 289778, false }, - { 289792, true }, - { 289809, true }, - { 289830, true }, - { 289850, true }, - { 289864, true }, - { 289882, true }, - { 289898, true }, - { 289908, true }, - { 289924, true }, - { 289948, true }, - { 289959, true }, - { 289971, true }, - { 289990, true }, - { 290006, true }, - { 290026, true }, - { 290040, true }, - { 290053, true }, - { 290064, true }, - { 290085, true }, - { 290110, true }, - { 290138, true }, - { 290154, true }, - { 290167, true }, - { 290189, true }, - { 290206, true }, - { 290226, true }, - { 290243, false }, - { 290258, true }, - { 290283, true }, - { 290304, true }, - { 290332, true }, - { 290341, true }, - { 290348, true }, - { 290358, true }, - { 290370, true }, - { 290385, true }, - { 290404, true }, - { 290423, true }, - { 290442, true }, + { 289764, true }, + { 289784, true }, + { 289798, true }, + { 289811, true }, + { 289822, true }, + { 289843, true }, + { 289868, true }, + { 289896, true }, + { 289912, true }, + { 289925, true }, + { 289947, true }, + { 289964, true }, + { 289984, true }, + { 290001, false }, + { 290016, true }, + { 290041, true }, + { 290062, true }, + { 290090, true }, + { 290099, true }, + { 290106, true }, + { 290116, true }, + { 290128, true }, + { 290143, true }, + { 290162, true }, + { 290181, true }, + { 290200, true }, + { 290217, true }, + { 290234, true }, + { 290251, true }, + { 290272, true }, + { 290288, true }, + { 290305, true }, + { 290321, false }, + { 290339, true }, + { 290352, true }, + { 290376, true }, + { 290394, true }, + { 290407, true }, + { 290421, true }, + { 290444, true }, { 290459, true }, - { 290476, true }, - { 290493, true }, - { 290514, true }, - { 290530, true }, - { 290547, true }, - { 290563, false }, - { 290581, true }, - { 290594, true }, - { 290618, true }, - { 290636, true }, - { 290649, true }, - { 290663, true }, - { 290684, true }, - { 290707, true }, - { 290722, true }, - { 290737, true }, - { 290749, true }, - { 290774, true }, - { 290787, true }, - { 290809, true }, - { 290820, true }, - { 290830, true }, - { 290847, true }, - { 290872, true }, - { 290891, true }, - { 290904, true }, - { 290919, true }, - { 290933, true }, - { 290943, true }, - { 290956, true }, - { 290980, true }, - { 290994, true }, - { 291016, true }, - { 291049, true }, - { 291064, true }, - { 291078, true }, - { 291087, true }, - { 291096, true }, - { 291116, true }, - { 291130, true }, - { 291140, true }, - { 291152, true }, - { 291168, true }, + { 290474, true }, + { 290486, true }, + { 290511, true }, + { 290524, true }, + { 290546, true }, + { 290557, true }, + { 290567, true }, + { 290584, true }, + { 290609, true }, + { 290628, true }, + { 290641, true }, + { 290656, true }, + { 290670, true }, + { 290680, true }, + { 290693, true }, + { 290717, true }, + { 290731, true }, + { 290753, true }, + { 290786, true }, + { 290801, true }, + { 290815, true }, + { 290824, true }, + { 290833, true }, + { 290853, true }, + { 290867, true }, + { 290877, true }, + { 290889, true }, + { 290905, true }, + { 290921, true }, + { 290937, false }, + { 290951, true }, + { 290960, true }, + { 290971, true }, + { 290985, true }, + { 291003, true }, + { 291017, true }, + { 291027, true }, + { 291042, true }, + { 291055, true }, + { 291068, true }, + { 291084, true }, + { 291094, true }, + { 291109, true }, + { 291122, true }, + { 291141, true }, + { 291161, true }, { 291184, true }, - { 291200, false }, - { 291214, true }, - { 291223, true }, - { 291234, true }, - { 291248, true }, - { 291266, true }, - { 291280, true }, - { 291290, true }, - { 291305, true }, - { 291318, true }, - { 291331, true }, - { 291347, true }, - { 291357, true }, - { 291372, true }, - { 291385, true }, - { 291404, true }, - { 291424, true }, - { 291447, true }, - { 291454, true }, + { 291191, true }, + { 291207, true }, + { 291225, true }, + { 291237, true }, + { 291261, true }, + { 291291, true }, + { 291304, true }, + { 291314, true }, + { 291326, true }, + { 291340, true }, + { 291354, true }, + { 291364, true }, + { 291379, true }, + { 291397, true }, + { 291414, true }, + { 291426, true }, + { 291439, true }, + { 291451, true }, + { 291462, true }, { 291470, true }, - { 291488, true }, - { 291500, true }, - { 291524, true }, - { 291554, true }, + { 291484, true }, + { 291503, true }, + { 291518, true }, + { 291532, true }, + { 291544, true }, + { 291556, true }, { 291567, true }, - { 291577, true }, - { 291589, true }, - { 291603, true }, - { 291617, true }, - { 291627, true }, - { 291642, true }, - { 291660, true }, - { 291677, true }, - { 291689, true }, - { 291702, true }, - { 291714, true }, - { 291725, true }, - { 291733, true }, - { 291747, true }, - { 291766, true }, - { 291781, true }, - { 291795, true }, - { 291807, true }, - { 291819, true }, - { 291830, true }, - { 291845, true }, - { 291856, true }, - { 291871, true }, - { 291883, true }, - { 291899, true }, - { 291914, true }, - { 291930, true }, - { 291939, true }, - { 291948, true }, - { 291962, true }, - { 291973, true }, - { 291989, false }, - { 292004, true }, - { 292018, true }, - { 292032, true }, - { 292041, true }, - { 292057, true }, - { 292067, true }, - { 292080, true }, - { 292100, true }, - { 292114, true }, - { 292127, false }, - { 292147, true }, - { 292161, true }, - { 292174, true }, - { 292188, true }, - { 292204, true }, - { 292218, true }, - { 292229, true }, - { 292246, true }, - { 292260, true }, - { 292284, true }, - { 292296, true }, - { 292310, true }, - { 292322, true }, - { 292334, true }, - { 292346, true }, - { 292358, true }, - { 292368, true }, + { 291582, true }, + { 291593, true }, + { 291608, true }, + { 291620, true }, + { 291636, true }, + { 291651, true }, + { 291667, true }, + { 291676, true }, + { 291685, true }, + { 291699, true }, + { 291710, true }, + { 291726, false }, + { 291741, true }, + { 291755, true }, + { 291769, true }, + { 291778, true }, + { 291794, true }, + { 291804, true }, + { 291817, true }, + { 291837, true }, + { 291851, true }, + { 291864, false }, + { 291884, true }, + { 291898, true }, + { 291911, true }, + { 291925, true }, + { 291941, true }, + { 291955, true }, + { 291966, true }, + { 291983, true }, + { 291997, true }, + { 292021, true }, + { 292033, true }, + { 292047, true }, + { 292059, true }, + { 292071, true }, + { 292083, true }, + { 292095, true }, + { 292105, true }, + { 292115, true }, + { 292130, true }, + { 292143, true }, + { 292160, true }, + { 292187, true }, + { 292200, true }, + { 292214, true }, + { 292239, true }, + { 292257, true }, + { 292269, true }, + { 292280, true }, + { 292290, true }, + { 292302, true }, + { 292315, true }, + { 292342, false }, + { 292356, true }, { 292378, true }, - { 292393, true }, - { 292406, true }, - { 292423, true }, - { 292450, true }, - { 292463, true }, + { 292392, true }, + { 292401, true }, + { 292416, true }, + { 292434, true }, + { 292441, true }, + { 292454, true }, + { 292464, false }, { 292477, true }, - { 292502, true }, - { 292520, true }, - { 292532, true }, + { 292485, true }, + { 292495, true }, + { 292515, true }, + { 292523, true }, + { 292534, true }, { 292543, true }, - { 292553, true }, - { 292565, true }, - { 292578, true }, - { 292605, false }, - { 292619, true }, - { 292641, true }, - { 292655, true }, - { 292664, true }, - { 292679, true }, - { 292697, true }, - { 292704, true }, - { 292717, true }, - { 292727, false }, - { 292740, true }, - { 292748, true }, - { 292758, true }, - { 292778, true }, - { 292786, true }, - { 292797, true }, - { 292806, true }, - { 292814, true }, - { 292827, true }, - { 292840, true }, - { 292849, true }, - { 292861, true }, - { 292873, true }, + { 292551, true }, + { 292564, true }, + { 292577, true }, + { 292586, true }, + { 292598, true }, + { 292610, true }, + { 292623, true }, + { 292631, true }, + { 292640, true }, + { 292650, true }, + { 292660, true }, + { 292670, true }, + { 292680, true }, + { 292690, true }, + { 292705, true }, + { 292714, true }, + { 292721, true }, + { 292733, true }, + { 292749, true }, + { 292766, true }, + { 292775, true }, + { 292782, true }, + { 292796, true }, + { 292813, true }, + { 292825, true }, + { 292845, true }, + { 292854, true }, + { 292871, true }, + { 292879, true }, { 292886, true }, - { 292894, true }, - { 292903, true }, - { 292913, true }, - { 292923, true }, - { 292933, true }, - { 292943, true }, - { 292953, true }, - { 292968, true }, - { 292977, true }, - { 292984, true }, - { 292996, true }, - { 293012, true }, - { 293029, true }, - { 293038, true }, - { 293045, true }, - { 293059, true }, - { 293076, true }, - { 293088, true }, - { 293108, true }, - { 293117, true }, - { 293134, true }, - { 293142, true }, - { 293149, true }, - { 293158, true }, - { 293167, true }, + { 292895, true }, + { 292904, true }, + { 292916, true }, + { 292930, true }, + { 292947, true }, + { 292963, true }, + { 292979, true }, + { 292998, true }, + { 293015, true }, + { 293033, true }, + { 293051, true }, + { 293068, true }, + { 293083, true }, + { 293098, true }, + { 293113, true }, + { 293131, true }, + { 293148, true }, + { 293162, true }, { 293179, true }, - { 293193, true }, - { 293210, true }, - { 293226, true }, - { 293242, true }, - { 293261, true }, - { 293278, true }, - { 293296, true }, - { 293314, true }, - { 293331, true }, - { 293346, true }, + { 293189, true }, + { 293198, true }, + { 293208, true }, + { 293218, true }, + { 293228, true }, + { 293240, true }, + { 293258, true }, + { 293275, true }, + { 293289, true }, + { 293304, true }, + { 293316, true }, + { 293325, true }, + { 293339, true }, + { 293353, true }, { 293361, true }, - { 293376, true }, - { 293394, true }, - { 293411, true }, - { 293425, true }, - { 293442, true }, - { 293452, true }, - { 293461, true }, - { 293471, true }, - { 293481, true }, - { 293491, true }, - { 293503, true }, - { 293521, true }, - { 293538, true }, - { 293552, true }, - { 293567, true }, - { 293579, true }, + { 293375, true }, + { 293385, true }, + { 293398, true }, + { 293408, true }, + { 293418, true }, + { 293433, true }, + { 293445, true }, + { 293459, true }, + { 293477, true }, + { 293486, true }, + { 293495, true }, + { 293506, false }, + { 293539, true }, + { 293554, true }, + { 293565, true }, { 293588, true }, - { 293602, true }, - { 293616, true }, - { 293624, true }, - { 293638, true }, + { 293601, true }, + { 293612, true }, + { 293626, true }, { 293646, true }, - { 293656, true }, - { 293669, true }, - { 293679, true }, - { 293689, true }, - { 293704, true }, - { 293716, true }, - { 293730, true }, - { 293748, true }, - { 293757, true }, - { 293766, true }, - { 293777, false }, - { 293810, true }, - { 293825, true }, - { 293836, true }, - { 293859, true }, - { 293872, true }, - { 293883, true }, - { 293897, true }, - { 293917, true }, - { 293930, true }, - { 293944, true }, + { 293659, true }, + { 293673, true }, + { 293686, true }, + { 293702, true }, + { 293712, true }, + { 293726, true }, + { 293744, true }, + { 293758, true }, + { 293774, true }, + { 293789, true }, + { 293811, true }, + { 293821, true }, + { 293833, true }, + { 293847, true }, + { 293863, true }, + { 293875, true }, + { 293891, true }, + { 293901, true }, + { 293913, true }, + { 293926, true }, + { 293943, true }, { 293957, true }, - { 293973, true }, - { 293983, true }, - { 293997, true }, - { 294015, true }, - { 294029, true }, - { 294045, true }, - { 294060, true }, - { 294082, true }, - { 294092, true }, - { 294104, true }, - { 294118, true }, - { 294134, true }, - { 294146, true }, - { 294162, true }, - { 294172, true }, - { 294184, true }, - { 294197, true }, - { 294214, true }, - { 294228, true }, - { 294236, true }, - { 294248, true }, - { 294262, true }, - { 294274, true }, - { 294285, true }, - { 294293, true }, - { 294305, false }, - { 294313, true }, - { 294328, true }, - { 294339, true }, - { 294355, true }, - { 294370, true }, - { 294381, true }, - { 294395, true }, + { 293965, true }, + { 293977, true }, + { 293991, true }, + { 294003, true }, + { 294014, true }, + { 294022, true }, + { 294034, false }, + { 294042, true }, + { 294057, true }, + { 294068, true }, + { 294084, true }, + { 294099, true }, + { 294110, true }, + { 294124, true }, + { 294137, true }, + { 294149, true }, + { 294166, false }, + { 294180, true }, + { 294193, true }, + { 294204, true }, + { 294214, false }, + { 294225, true }, + { 294239, true }, + { 294258, true }, + { 294269, true }, + { 294283, true }, + { 294294, true }, + { 294305, true }, + { 294316, true }, + { 294327, true }, + { 294338, true }, + { 294352, true }, + { 294364, true }, + { 294379, true }, + { 294393, true }, { 294408, true }, - { 294420, true }, - { 294437, false }, - { 294451, true }, - { 294464, true }, - { 294475, true }, - { 294485, false }, - { 294496, true }, - { 294510, true }, - { 294529, true }, - { 294540, true }, - { 294554, true }, - { 294565, true }, - { 294576, true }, - { 294587, true }, - { 294598, true }, - { 294609, true }, - { 294623, true }, - { 294635, true }, - { 294650, true }, - { 294664, true }, - { 294679, true }, - { 294692, true }, - { 294708, true }, - { 294717, true }, - { 294726, true }, - { 294740, true }, - { 294773, true }, - { 294784, true }, - { 294795, true }, - { 294811, false }, - { 294827, true }, - { 294838, true }, - { 294849, true }, - { 294859, true }, - { 294875, true }, - { 294882, true }, - { 294893, false }, - { 294907, true }, - { 294920, true }, - { 294929, true }, - { 294939, true }, - { 294952, true }, - { 294962, true }, - { 294980, true }, - { 295004, true }, - { 295012, true }, + { 294421, true }, + { 294437, true }, + { 294446, true }, + { 294455, true }, + { 294469, true }, + { 294502, true }, + { 294518, false }, + { 294534, true }, + { 294545, true }, + { 294556, true }, + { 294566, true }, + { 294582, true }, + { 294589, true }, + { 294600, false }, + { 294614, true }, + { 294627, true }, + { 294636, true }, + { 294646, true }, + { 294659, true }, + { 294669, true }, + { 294687, true }, + { 294711, true }, + { 294719, true }, + { 294732, true }, + { 294742, true }, + { 294755, false }, + { 294774, true }, + { 294788, true }, + { 294800, true }, + { 294814, true }, + { 294835, true }, + { 294850, true }, + { 294864, true }, + { 294876, false }, + { 294893, true }, + { 294911, true }, + { 294926, false }, + { 294945, true }, + { 294955, true }, + { 294967, true }, + { 294977, true }, + { 294989, true }, + { 295006, true }, { 295025, true }, - { 295035, true }, - { 295048, false }, + { 295034, false }, + { 295049, true }, { 295067, true }, - { 295081, true }, - { 295093, true }, - { 295107, true }, - { 295128, true }, - { 295143, true }, - { 295157, true }, - { 295169, false }, - { 295186, true }, - { 295204, true }, - { 295219, false }, - { 295238, true }, - { 295248, true }, - { 295260, true }, - { 295270, true }, - { 295282, true }, - { 295299, true }, - { 295318, true }, - { 295327, false }, - { 295342, true }, - { 295360, true }, - { 295376, false }, - { 295388, true }, - { 295414, true }, - { 295425, true }, - { 295440, true }, - { 295458, true }, - { 295471, true }, - { 295492, true }, - { 295508, true }, - { 295523, true }, - { 295545, true }, - { 295560, true }, - { 295570, true }, - { 295582, true }, - { 295595, true }, - { 295604, true }, - { 295614, true }, - { 295632, true }, - { 295652, true }, - { 295671, true }, - { 295692, true }, - { 295720, true }, - { 295734, true }, - { 295754, true }, - { 295773, true }, - { 295794, true }, - { 295803, true }, - { 295827, true }, - { 295841, true }, - { 295851, false }, - { 295870, true }, - { 295884, true }, - { 295899, true }, - { 295916, true }, + { 295083, false }, + { 295095, true }, + { 295121, true }, + { 295132, true }, + { 295147, true }, + { 295165, true }, + { 295178, true }, + { 295199, true }, + { 295215, true }, + { 295230, true }, + { 295252, true }, + { 295267, true }, + { 295277, true }, + { 295289, true }, + { 295302, true }, + { 295311, true }, + { 295321, true }, + { 295339, true }, + { 295359, true }, + { 295378, true }, + { 295399, true }, + { 295427, true }, + { 295441, true }, + { 295461, true }, + { 295480, true }, + { 295501, true }, + { 295510, true }, + { 295534, true }, + { 295548, true }, + { 295558, false }, + { 295577, true }, + { 295591, true }, + { 295606, true }, + { 295623, true }, + { 295643, true }, + { 295657, true }, + { 295666, true }, + { 295676, true }, + { 295697, true }, + { 295715, true }, + { 295728, true }, + { 295741, true }, + { 295762, true }, + { 295783, true }, + { 295802, true }, + { 295821, true }, + { 295833, true }, + { 295844, true }, + { 295859, true }, + { 295874, true }, + { 295885, true }, + { 295906, true }, + { 295925, true }, { 295936, true }, - { 295950, true }, - { 295959, true }, - { 295969, true }, + { 295965, true }, { 295990, true }, - { 296008, true }, - { 296021, true }, - { 296034, true }, - { 296055, true }, - { 296076, true }, - { 296095, true }, - { 296114, true }, - { 296126, true }, - { 296137, true }, - { 296152, true }, - { 296167, true }, - { 296178, true }, - { 296199, true }, - { 296218, true }, - { 296229, true }, - { 296258, true }, - { 296283, true }, - { 296304, true }, - { 296311, true }, - { 296323, true }, + { 296011, true }, + { 296018, true }, + { 296030, true }, + { 296042, true }, + { 296057, true }, + { 296073, true }, + { 296090, true }, + { 296112, true }, + { 296122, true }, + { 296134, true }, + { 296146, true }, + { 296163, true }, + { 296172, true }, + { 296185, true }, + { 296194, false }, + { 296207, false }, + { 296227, true }, + { 296237, true }, + { 296256, true }, + { 296277, true }, + { 296289, true }, + { 296302, true }, + { 296319, true }, { 296335, true }, - { 296350, true }, - { 296366, true }, - { 296383, true }, - { 296405, true }, - { 296415, true }, - { 296427, true }, - { 296439, true }, - { 296456, true }, - { 296465, true }, - { 296478, true }, - { 296487, false }, - { 296500, false }, - { 296520, true }, - { 296530, true }, - { 296549, true }, - { 296570, true }, - { 296582, true }, + { 296346, true }, + { 296361, true }, + { 296379, true }, + { 296392, true }, + { 296409, true }, + { 296424, true }, + { 296437, true }, + { 296453, true }, + { 296471, true }, + { 296483, true }, + { 296502, false }, + { 296519, true }, + { 296539, true }, + { 296550, true }, + { 296576, true }, { 296595, true }, - { 296612, true }, - { 296628, true }, - { 296639, true }, - { 296654, true }, - { 296672, true }, - { 296685, true }, - { 296702, true }, - { 296717, true }, - { 296730, true }, - { 296746, true }, - { 296764, true }, - { 296776, true }, - { 296795, false }, - { 296812, true }, - { 296832, true }, - { 296843, true }, - { 296869, true }, - { 296888, true }, - { 296907, true }, - { 296917, true }, - { 296934, true }, - { 296949, true }, - { 296961, true }, - { 296981, true }, - { 296997, true }, - { 297014, true }, - { 297027, true }, - { 297040, true }, - { 297053, true }, - { 297066, true }, - { 297079, true }, - { 297103, true }, - { 297114, true }, - { 297126, true }, - { 297141, true }, - { 297149, true }, - { 297165, true }, - { 297180, true }, + { 296614, true }, + { 296624, true }, + { 296641, true }, + { 296656, true }, + { 296668, true }, + { 296688, true }, + { 296704, true }, + { 296721, true }, + { 296734, true }, + { 296747, true }, + { 296760, true }, + { 296773, true }, + { 296786, true }, + { 296810, true }, + { 296821, true }, + { 296833, true }, + { 296841, true }, + { 296857, true }, + { 296872, true }, + { 296887, true }, + { 296902, true }, + { 296916, true }, + { 296930, true }, + { 296943, true }, + { 296959, true }, + { 296969, true }, + { 296982, true }, + { 297000, true }, + { 297018, true }, + { 297037, true }, + { 297049, true }, + { 297062, true }, + { 297080, true }, + { 297102, true }, + { 297115, true }, + { 297137, true }, + { 297157, true }, + { 297177, true }, { 297195, true }, - { 297210, true }, - { 297224, true }, - { 297238, true }, - { 297251, true }, - { 297267, true }, - { 297277, true }, - { 297290, true }, - { 297308, true }, - { 297326, true }, - { 297345, true }, - { 297357, true }, - { 297370, true }, - { 297388, true }, - { 297410, true }, - { 297423, true }, - { 297445, true }, - { 297465, true }, - { 297485, true }, - { 297503, true }, - { 297521, true }, - { 297539, true }, - { 297556, true }, - { 297576, true }, + { 297213, true }, + { 297231, true }, + { 297248, true }, + { 297268, true }, + { 297284, true }, + { 297295, true }, + { 297323, true }, + { 297348, true }, + { 297380, true }, + { 297399, true }, + { 297419, true }, + { 297434, true }, + { 297454, true }, + { 297467, true }, + { 297492, true }, + { 297508, true }, + { 297525, true }, + { 297534, true }, + { 297551, true }, + { 297567, true }, + { 297579, true }, { 297592, true }, - { 297603, true }, - { 297631, true }, - { 297656, true }, - { 297688, true }, - { 297707, true }, - { 297727, true }, - { 297742, true }, - { 297762, true }, + { 297615, true }, + { 297633, true }, + { 297657, true }, + { 297682, true }, + { 297700, true }, + { 297718, true }, + { 297732, true }, + { 297753, true }, + { 297763, true }, { 297775, true }, - { 297800, true }, - { 297816, true }, - { 297833, true }, - { 297842, true }, - { 297859, true }, - { 297875, true }, - { 297887, true }, + { 297790, true }, + { 297807, true }, + { 297819, true }, + { 297831, true }, + { 297850, true }, + { 297867, true }, + { 297885, true }, { 297900, true }, - { 297923, true }, - { 297941, true }, - { 297965, true }, - { 297990, true }, - { 298008, true }, - { 298026, true }, - { 298040, true }, - { 298061, true }, - { 298071, true }, - { 298083, true }, - { 298098, true }, - { 298115, true }, - { 298127, true }, - { 298139, true }, - { 298158, true }, + { 297911, true }, + { 297925, true }, + { 297944, true }, + { 297961, true }, + { 297976, true }, + { 297991, true }, + { 298001, true }, + { 298021, true }, + { 298035, true }, + { 298053, true }, + { 298068, true }, + { 298082, true }, + { 298092, true }, + { 298108, true }, + { 298121, true }, + { 298140, true }, + { 298152, true }, + { 298166, true }, { 298175, true }, - { 298193, true }, - { 298208, true }, - { 298219, true }, + { 298189, true }, + { 298209, true }, + { 298223, true }, { 298233, true }, - { 298252, true }, - { 298269, true }, - { 298284, true }, - { 298299, true }, - { 298309, true }, - { 298329, true }, - { 298343, true }, - { 298361, true }, - { 298376, true }, - { 298390, true }, - { 298400, true }, - { 298416, true }, - { 298429, true }, - { 298448, true }, - { 298460, true }, - { 298474, true }, - { 298483, true }, - { 298497, true }, - { 298517, true }, - { 298531, true }, - { 298541, true }, + { 298245, true }, + { 298256, true }, + { 298274, true }, + { 298291, true }, + { 298305, true }, + { 298321, true }, + { 298333, true }, + { 298344, true }, + { 298360, true }, + { 298372, true }, + { 298383, true }, + { 298395, true }, + { 298406, true }, + { 298425, true }, + { 298437, true }, + { 298449, true }, + { 298458, true }, + { 298468, true }, + { 298482, true }, + { 298496, true }, + { 298510, true }, + { 298524, true }, + { 298542, true }, { 298553, true }, - { 298564, true }, - { 298582, true }, + { 298571, true }, + { 298587, true }, { 298599, true }, - { 298613, true }, - { 298629, true }, - { 298641, false }, - { 298649, true }, - { 298660, true }, - { 298676, true }, - { 298688, true }, - { 298699, true }, - { 298711, true }, - { 298722, true }, - { 298741, true }, - { 298753, true }, - { 298765, true }, + { 298614, true }, + { 298632, true }, + { 298652, true }, + { 298665, true }, + { 298673, true }, + { 298694, true }, + { 298705, true }, + { 298720, true }, + { 298735, false }, + { 298753, false }, { 298774, true }, - { 298784, true }, - { 298798, true }, - { 298812, true }, + { 298797, true }, + { 298814, true }, { 298826, true }, - { 298840, true }, - { 298858, true }, - { 298869, true }, - { 298887, true }, - { 298903, true }, + { 298838, true }, + { 298859, true }, + { 298885, true }, + { 298898, true }, { 298915, true }, - { 298930, true }, - { 298948, true }, - { 298968, true }, - { 298981, true }, - { 298989, true }, - { 299010, true }, - { 299021, true }, - { 299036, true }, - { 299051, false }, - { 299069, false }, - { 299090, true }, - { 299113, true }, - { 299130, true }, - { 299142, true }, - { 299154, true }, - { 299175, true }, + { 298932, true }, + { 298952, true }, + { 298965, true }, + { 298978, true }, + { 298992, true }, + { 299014, true }, + { 299031, true }, + { 299048, true }, + { 299067, true }, + { 299087, true }, + { 299112, true }, + { 299137, true }, + { 299148, true }, + { 299174, true }, + { 299190, true }, { 299201, true }, - { 299214, true }, - { 299231, true }, + { 299219, true }, + { 299228, true }, + { 299238, false }, { 299248, true }, - { 299268, true }, - { 299281, true }, - { 299294, true }, - { 299308, true }, - { 299330, true }, - { 299347, true }, + { 299259, true }, + { 299271, true }, + { 299287, true }, + { 299309, true }, + { 299328, true }, + { 299337, true }, + { 299350, true }, { 299364, true }, - { 299383, true }, - { 299403, true }, - { 299428, true }, - { 299453, true }, - { 299464, true }, - { 299490, true }, - { 299506, true }, - { 299517, true }, - { 299535, true }, - { 299544, true }, - { 299554, false }, - { 299564, true }, - { 299575, true }, - { 299587, true }, - { 299603, true }, - { 299625, true }, - { 299644, true }, - { 299653, true }, - { 299666, true }, - { 299680, true }, - { 299689, true }, - { 299702, true }, - { 299720, true }, - { 299742, true }, - { 299754, true }, - { 299762, false }, - { 299776, true }, - { 299790, true }, - { 299798, true }, - { 299808, true }, - { 299818, true }, + { 299373, true }, + { 299386, true }, + { 299404, true }, + { 299426, true }, + { 299438, true }, + { 299446, false }, + { 299460, true }, + { 299474, true }, + { 299482, true }, + { 299492, true }, + { 299502, true }, + { 299513, true }, + { 299520, true }, + { 299531, true }, + { 299543, true }, + { 299553, true }, + { 299560, true }, + { 299567, true }, + { 299579, true }, + { 299590, true }, + { 299602, true }, + { 299611, true }, + { 299621, true }, + { 299631, true }, + { 299642, true }, + { 299659, true }, + { 299673, true }, + { 299692, true }, + { 299703, true }, + { 299711, true }, + { 299732, true }, + { 299745, true }, + { 299757, true }, + { 299768, true }, + { 299782, true }, + { 299791, true }, + { 299817, true }, { 299829, true }, - { 299836, true }, - { 299847, true }, - { 299859, true }, - { 299869, true }, - { 299876, true }, - { 299883, true }, - { 299895, true }, - { 299906, true }, + { 299859, false }, + { 299873, true }, + { 299889, true }, + { 299905, true }, { 299918, true }, - { 299927, true }, - { 299937, true }, - { 299947, true }, - { 299958, true }, + { 299935, true }, + { 299952, true }, + { 299963, true }, { 299975, true }, - { 299989, true }, - { 300000, true }, - { 300008, true }, - { 300029, true }, - { 300042, true }, - { 300054, true }, - { 300065, true }, - { 300079, true }, - { 300088, true }, - { 300114, true }, - { 300126, true }, - { 300156, false }, - { 300170, true }, - { 300186, true }, - { 300202, true }, - { 300215, true }, - { 300232, true }, - { 300249, true }, + { 299990, true }, + { 300003, true }, + { 300019, true }, + { 300035, true }, + { 300056, true }, + { 300072, true }, + { 300084, true }, + { 300094, true }, + { 300116, true }, + { 300147, true }, + { 300162, true }, + { 300178, true }, + { 300195, true }, + { 300206, true }, + { 300221, true }, + { 300238, true }, + { 300249, false }, { 300260, true }, - { 300272, true }, - { 300287, true }, - { 300300, true }, - { 300316, true }, - { 300332, true }, - { 300353, true }, - { 300369, true }, - { 300381, true }, - { 300391, true }, - { 300413, true }, - { 300444, true }, - { 300459, true }, - { 300475, true }, - { 300492, true }, - { 300503, true }, - { 300518, true }, - { 300535, true }, - { 300546, false }, - { 300557, true }, - { 300567, true }, - { 300579, true }, - { 300596, true }, - { 300608, true }, - { 300619, true }, - { 300633, false }, - { 300644, false }, - { 300657, true }, - { 300665, true }, + { 300270, true }, + { 300282, true }, + { 300299, true }, + { 300311, true }, + { 300322, true }, + { 300336, false }, + { 300347, false }, + { 300360, true }, + { 300368, true }, + { 300378, true }, + { 300395, true }, + { 300407, true }, + { 300427, false }, + { 300447, true }, + { 300460, true }, + { 300470, true }, + { 300478, false }, + { 300487, true }, + { 300500, true }, + { 300517, true }, + { 300575, true }, + { 300621, true }, { 300675, true }, - { 300692, true }, - { 300704, true }, - { 300724, false }, - { 300744, true }, - { 300757, true }, - { 300767, true }, - { 300775, false }, - { 300784, true }, - { 300797, true }, - { 300814, true }, - { 300872, true }, - { 300918, true }, - { 300972, true }, - { 301019, true }, - { 301068, true }, - { 301113, true }, - { 301163, true }, - { 301217, true }, - { 301263, true }, - { 301310, true }, - { 301364, true }, - { 301391, true }, - { 301424, true }, - { 301438, true }, - { 301450, true }, - { 301463, true }, - { 301476, true }, - { 301492, true }, - { 301515, true }, - { 301528, true }, - { 301544, true }, - { 301554, true }, - { 301569, true }, - { 301580, false }, - { 301592, true }, - { 301609, true }, - { 301619, true }, - { 301636, true }, - { 301654, true }, - { 301668, true }, - { 301686, true }, - { 301702, true }, - { 301711, true }, - { 301722, true }, - { 301733, true }, - { 301741, true }, - { 301751, true }, - { 301765, true }, - { 301772, true }, - { 301779, true }, - { 301788, true }, - { 301796, true }, - { 301806, true }, - { 301817, true }, - { 301824, true }, - { 301833, true }, - { 301849, true }, - { 301867, true }, - { 301883, true }, - { 301902, true }, - { 301915, true }, - { 301929, true }, - { 301941, true }, - { 301955, true }, - { 301970, true }, - { 301983, true }, - { 301994, true }, - { 302015, true }, - { 302025, true }, - { 302034, true }, - { 302043, true }, - { 302048, true }, - { 302055, true }, - { 302075, true }, - { 302082, true }, - { 302106, true }, + { 300722, true }, + { 300771, true }, + { 300816, true }, + { 300866, true }, + { 300920, true }, + { 300966, true }, + { 301013, true }, + { 301067, true }, + { 301094, true }, + { 301127, true }, + { 301141, true }, + { 301153, true }, + { 301166, true }, + { 301179, true }, + { 301195, true }, + { 301218, true }, + { 301231, true }, + { 301247, true }, + { 301257, true }, + { 301272, true }, + { 301283, false }, + { 301295, true }, + { 301312, true }, + { 301322, true }, + { 301339, true }, + { 301357, true }, + { 301371, true }, + { 301389, true }, + { 301405, true }, + { 301414, true }, + { 301425, true }, + { 301436, true }, + { 301444, true }, + { 301454, true }, + { 301468, true }, + { 301475, true }, + { 301482, true }, + { 301491, true }, + { 301499, true }, + { 301509, true }, + { 301520, true }, + { 301527, true }, + { 301536, true }, + { 301552, true }, + { 301570, true }, + { 301586, true }, + { 301605, true }, + { 301618, true }, + { 301632, true }, + { 301644, true }, + { 301658, true }, + { 301673, true }, + { 301685, true }, + { 301698, true }, + { 301709, true }, + { 301730, true }, + { 301740, true }, + { 301749, true }, + { 301758, true }, + { 301763, true }, + { 301770, true }, + { 301790, true }, + { 301797, true }, + { 301821, true }, + { 301835, true }, + { 301845, true }, + { 301862, false }, + { 301877, true }, + { 301889, true }, + { 301903, true }, + { 301917, true }, + { 301928, true }, + { 301940, true }, + { 301952, true }, + { 301962, true }, + { 301974, true }, + { 301987, true }, + { 301997, true }, + { 302012, true }, + { 302023, true }, + { 302038, true }, + { 302060, true }, + { 302076, true }, + { 302091, true }, + { 302101, true }, { 302120, true }, - { 302130, true }, - { 302147, false }, - { 302162, true }, - { 302174, true }, - { 302188, true }, - { 302202, true }, - { 302213, true }, + { 302132, true }, + { 302139, true }, + { 302155, true }, + { 302177, true }, + { 302192, true }, + { 302215, true }, { 302225, true }, - { 302237, true }, - { 302247, true }, - { 302259, true }, - { 302272, true }, - { 302282, true }, - { 302297, true }, - { 302308, true }, - { 302323, true }, - { 302345, true }, - { 302361, true }, - { 302376, true }, - { 302386, true }, - { 302405, true }, - { 302417, true }, - { 302424, true }, + { 302232, true }, + { 302243, true }, + { 302251, true }, + { 302265, true }, + { 302275, true }, + { 302287, true }, + { 302303, true }, + { 302313, true }, + { 302320, true }, + { 302327, true }, + { 302339, true }, + { 302350, true }, + { 302360, true }, + { 302372, true }, + { 302382, false }, + { 302402, false }, + { 302425, true }, { 302440, true }, - { 302462, true }, - { 302477, true }, - { 302500, true }, - { 302510, true }, - { 302517, true }, - { 302528, true }, - { 302536, true }, - { 302550, true }, - { 302560, true }, - { 302572, true }, - { 302588, true }, - { 302598, true }, - { 302605, true }, - { 302612, true }, - { 302624, true }, - { 302635, true }, - { 302645, true }, - { 302657, true }, - { 302667, false }, - { 302687, false }, - { 302710, true }, - { 302725, true }, - { 302749, true }, + { 302464, true }, + { 302474, true }, + { 302492, true }, + { 302518, true }, + { 302529, true }, + { 302541, true }, + { 302554, true }, + { 302568, true }, + { 302582, true }, + { 302595, true }, + { 302608, true }, + { 302619, true }, + { 302635, false }, + { 302656, true }, + { 302666, true }, + { 302677, true }, + { 302693, true }, + { 302708, true }, + { 302722, true }, + { 302736, true }, + { 302750, true }, { 302759, true }, - { 302777, true }, - { 302803, true }, + { 302774, true }, + { 302787, true }, + { 302800, true }, { 302814, true }, - { 302826, true }, - { 302839, true }, - { 302853, true }, - { 302867, true }, - { 302880, true }, - { 302893, true }, - { 302904, true }, - { 302920, false }, - { 302941, true }, - { 302951, true }, - { 302962, true }, - { 302978, true }, + { 302829, true }, + { 302843, true }, + { 302858, true }, + { 302874, true }, + { 302888, true }, + { 302903, true }, + { 302917, true }, + { 302933, true }, + { 302947, true }, + { 302961, true }, + { 302979, true }, { 302993, true }, - { 303007, true }, - { 303021, true }, - { 303035, true }, - { 303044, true }, - { 303059, true }, - { 303072, true }, - { 303085, true }, - { 303099, true }, - { 303114, true }, - { 303128, true }, - { 303143, true }, - { 303159, true }, - { 303173, true }, - { 303188, true }, - { 303202, true }, - { 303218, true }, - { 303232, true }, - { 303246, true }, - { 303264, true }, - { 303278, true }, - { 303295, true }, - { 303313, false }, - { 303325, true }, - { 303341, true }, - { 303352, true }, - { 303362, false }, - { 303386, true }, - { 303398, true }, - { 303412, false }, - { 303427, true }, - { 303439, true }, - { 303447, true }, - { 303461, true }, - { 303469, true }, - { 303486, true }, - { 303496, true }, - { 303511, true }, - { 303526, true }, - { 303541, true }, - { 303556, true }, - { 303571, true }, - { 303586, true }, - { 303604, true }, - { 303621, true }, - { 303638, true }, - { 303661, true }, - { 303681, true }, - { 303695, true }, - { 303715, true }, - { 303733, true }, - { 303750, true }, - { 303763, true }, - { 303776, true }, - { 303793, true }, - { 303810, false }, - { 303827, true }, - { 303840, true }, - { 303857, true }, - { 303870, true }, - { 303883, true }, - { 303903, true }, - { 303921, true }, - { 303931, true }, - { 303950, true }, - { 303970, true }, - { 303988, true }, - { 304001, true }, - { 304015, true }, - { 304029, true }, - { 304041, false }, + { 303010, true }, + { 303028, false }, + { 303040, true }, + { 303056, true }, + { 303067, true }, + { 303077, false }, + { 303101, true }, + { 303113, true }, + { 303127, false }, + { 303142, true }, + { 303154, true }, + { 303162, true }, + { 303176, true }, + { 303184, true }, + { 303201, true }, + { 303211, true }, + { 303226, true }, + { 303241, true }, + { 303256, true }, + { 303271, true }, + { 303286, true }, + { 303301, true }, + { 303319, true }, + { 303336, true }, + { 303353, true }, + { 303376, true }, + { 303396, true }, + { 303410, true }, + { 303430, true }, + { 303448, true }, + { 303465, true }, + { 303478, true }, + { 303491, true }, + { 303508, true }, + { 303525, false }, + { 303542, true }, + { 303555, true }, + { 303572, true }, + { 303585, true }, + { 303598, true }, + { 303618, true }, + { 303636, true }, + { 303646, true }, + { 303665, true }, + { 303685, true }, + { 303703, true }, + { 303716, true }, + { 303730, true }, + { 303744, true }, + { 303756, false }, + { 303767, true }, + { 303784, true }, + { 303811, true }, + { 303835, true }, + { 303849, true }, + { 303868, true }, + { 303892, true }, + { 303915, true }, + { 303943, true }, + { 303959, true }, + { 303967, true }, + { 303979, true }, + { 303993, false }, + { 304006, true }, + { 304020, true }, + { 304033, true }, + { 304043, true }, { 304052, true }, - { 304069, true }, - { 304096, true }, - { 304120, true }, - { 304134, true }, - { 304153, true }, - { 304177, true }, - { 304200, true }, - { 304228, true }, - { 304244, true }, - { 304252, true }, - { 304264, true }, - { 304278, true }, - { 304292, true }, - { 304305, true }, - { 304315, true }, - { 304324, true }, - { 304339, true }, - { 304351, true }, - { 304364, true }, - { 304377, true }, - { 304393, true }, - { 304403, true }, - { 304418, true }, + { 304067, true }, + { 304079, true }, + { 304092, true }, + { 304105, true }, + { 304121, true }, + { 304131, true }, + { 304146, true }, + { 304154, true }, + { 304165, true }, + { 304180, true }, + { 304197, true }, + { 304206, true }, + { 304213, true }, + { 304223, true }, + { 304233, true }, + { 304254, true }, + { 304270, true }, + { 304289, true }, + { 304309, true }, + { 304325, true }, + { 304340, true }, + { 304348, true }, + { 304367, true }, + { 304378, true }, + { 304385, true }, + { 304401, true }, + { 304416, true }, { 304426, true }, - { 304437, true }, - { 304452, true }, - { 304469, true }, - { 304478, true }, - { 304485, true }, - { 304495, true }, - { 304505, true }, - { 304526, true }, - { 304545, true }, - { 304565, true }, - { 304581, true }, - { 304596, true }, - { 304604, true }, - { 304623, true }, - { 304634, true }, - { 304641, true }, - { 304657, true }, - { 304672, true }, - { 304682, true }, - { 304690, true }, + { 304434, true }, + { 304450, true }, + { 304463, true }, + { 304474, true }, + { 304489, false }, + { 304509, true }, + { 304524, true }, + { 304546, true }, + { 304556, true }, + { 304569, true }, + { 304584, true }, + { 304597, true }, + { 304608, true }, + { 304618, true }, + { 304630, true }, + { 304654, true }, + { 304667, true }, + { 304680, true }, + { 304692, true }, { 304706, true }, - { 304719, true }, - { 304730, true }, - { 304745, false }, - { 304765, true }, - { 304780, true }, - { 304802, true }, - { 304812, true }, + { 304717, true }, + { 304734, true }, + { 304750, true }, + { 304766, true }, + { 304782, true }, + { 304801, true }, { 304825, true }, - { 304840, true }, - { 304853, true }, - { 304864, true }, - { 304874, true }, - { 304886, true }, - { 304910, true }, - { 304923, true }, - { 304936, true }, - { 304948, true }, - { 304962, true }, + { 304845, true }, + { 304866, true }, + { 304888, true }, + { 304914, true }, + { 304925, true }, + { 304939, true }, + { 304949, true }, + { 304960, true }, { 304973, true }, - { 304990, true }, - { 305006, true }, - { 305022, true }, - { 305038, true }, - { 305057, true }, - { 305081, true }, - { 305101, true }, - { 305122, true }, - { 305148, true }, - { 305159, true }, - { 305173, true }, - { 305183, true }, - { 305194, true }, - { 305207, true }, - { 305215, true }, - { 305222, false }, - { 305229, true }, - { 305237, true }, - { 305255, true }, - { 305266, true }, - { 305280, true }, - { 305295, false }, - { 305304, true }, - { 305322, true }, - { 305336, true }, - { 305354, true }, - { 305373, true }, - { 305385, true }, - { 305397, true }, - { 305424, false }, - { 305433, true }, - { 305446, false }, - { 305469, true }, - { 305480, true }, - { 305487, true }, - { 305494, true }, - { 305505, true }, - { 305518, true }, - { 305534, true }, - { 305547, true }, - { 305563, true }, - { 305575, true }, - { 305593, true }, - { 305603, true }, - { 305620, true }, - { 305635, true }, - { 305646, true }, - { 305657, true }, - { 305675, true }, - { 305689, true }, - { 305701, true }, - { 305710, true }, - { 305720, true }, - { 305732, true }, - { 305747, true }, - { 305759, true }, - { 305770, true }, - { 305783, true }, - { 305799, true }, - { 305815, true }, - { 305834, true }, - { 305853, true }, - { 305870, true }, + { 304981, true }, + { 304988, false }, + { 304995, true }, + { 305003, true }, + { 305021, true }, + { 305032, true }, + { 305046, true }, + { 305061, false }, + { 305070, true }, + { 305088, true }, + { 305102, true }, + { 305120, true }, + { 305139, true }, + { 305151, true }, + { 305163, true }, + { 305190, false }, + { 305199, true }, + { 305212, false }, + { 305235, true }, + { 305246, true }, + { 305253, true }, + { 305260, true }, + { 305271, true }, + { 305284, true }, + { 305300, true }, + { 305313, true }, + { 305329, true }, + { 305341, true }, + { 305359, true }, + { 305369, true }, + { 305386, true }, + { 305401, true }, + { 305412, true }, + { 305423, true }, + { 305441, true }, + { 305455, true }, + { 305467, true }, + { 305476, true }, + { 305486, true }, + { 305498, true }, + { 305513, true }, + { 305525, true }, + { 305536, true }, + { 305549, true }, + { 305565, true }, + { 305581, true }, + { 305600, true }, + { 305619, true }, + { 305636, true }, + { 305663, true }, + { 305680, true }, + { 305695, true }, + { 305705, true }, + { 305725, true }, + { 305744, true }, + { 305756, true }, + { 305775, true }, + { 305783, false }, + { 305798, true }, + { 305805, true }, + { 305818, true }, + { 305835, true }, + { 305850, true }, + { 305862, true }, + { 305877, true }, + { 305886, true }, { 305897, true }, - { 305914, true }, - { 305929, true }, - { 305939, true }, - { 305959, true }, - { 305978, true }, - { 305990, true }, - { 306009, true }, - { 306017, false }, - { 306032, true }, - { 306039, true }, - { 306052, true }, - { 306069, true }, - { 306084, true }, - { 306096, true }, - { 306111, true }, - { 306122, true }, - { 306133, true }, - { 306142, true }, - { 306151, true }, - { 306159, true }, - { 306165, true }, - { 306174, true }, + { 305908, true }, + { 305917, true }, + { 305926, true }, + { 305934, true }, + { 305943, true }, + { 305962, true }, + { 305975, true }, + { 305993, true }, + { 306016, true }, + { 306029, true }, + { 306045, true }, + { 306061, true }, + { 306078, true }, + { 306087, true }, + { 306101, true }, + { 306117, true }, + { 306126, true }, + { 306138, true }, + { 306149, true }, + { 306164, true }, + { 306178, true }, { 306193, true }, - { 306206, true }, - { 306224, true }, - { 306247, true }, - { 306260, true }, - { 306276, true }, - { 306292, true }, - { 306309, true }, - { 306318, true }, - { 306332, true }, - { 306348, true }, - { 306357, true }, - { 306369, true }, - { 306380, true }, - { 306395, true }, - { 306409, true }, - { 306424, true }, + { 306208, true }, + { 306226, true }, + { 306238, true }, + { 306248, true }, + { 306272, true }, + { 306285, true }, + { 306297, true }, + { 306314, true }, + { 306337, true }, + { 306354, true }, + { 306374, true }, + { 306391, true }, + { 306412, true }, + { 306426, true }, { 306439, true }, - { 306457, true }, - { 306469, true }, - { 306479, true }, - { 306503, true }, - { 306516, true }, - { 306528, true }, - { 306545, true }, - { 306568, true }, - { 306585, true }, - { 306605, true }, - { 306622, true }, - { 306643, true }, - { 306657, true }, - { 306670, true }, - { 306686, true }, - { 306698, true }, - { 306712, true }, - { 306729, true }, - { 306748, true }, - { 306758, true }, - { 306780, true }, - { 306795, true }, - { 306809, true }, - { 306824, true }, - { 306837, true }, - { 306846, true }, - { 306857, true }, - { 306870, true }, - { 306881, true }, - { 306899, true }, - { 306913, true }, - { 306923, true }, - { 306938, true }, - { 306963, true }, - { 306975, true }, - { 306993, true }, + { 306455, true }, + { 306467, true }, + { 306481, true }, + { 306498, true }, + { 306517, true }, + { 306527, true }, + { 306549, true }, + { 306564, true }, + { 306578, true }, + { 306593, true }, + { 306606, true }, + { 306615, true }, + { 306626, true }, + { 306639, true }, + { 306650, true }, + { 306668, true }, + { 306682, true }, + { 306692, true }, + { 306707, true }, + { 306732, true }, + { 306744, true }, + { 306762, true }, + { 306776, true }, + { 306801, true }, + { 306816, true }, + { 306838, true }, + { 306861, true }, + { 306882, false }, + { 306895, true }, + { 306907, true }, + { 306921, true }, + { 306936, true }, + { 306945, true }, + { 306957, true }, + { 306967, true }, + { 306981, true }, + { 306994, true }, { 307007, true }, - { 307032, true }, - { 307047, true }, - { 307069, true }, - { 307092, true }, - { 307113, false }, - { 307126, true }, - { 307138, true }, - { 307152, true }, - { 307167, true }, - { 307176, true }, - { 307188, true }, - { 307198, true }, - { 307212, true }, + { 307026, true }, + { 307037, true }, + { 307049, false }, + { 307063, true }, + { 307075, true }, + { 307087, true }, + { 307103, true }, + { 307121, true }, + { 307147, true }, + { 307165, true }, + { 307174, false }, + { 307187, true }, + { 307205, true }, + { 307215, true }, { 307225, true }, - { 307238, true }, - { 307257, true }, - { 307268, true }, - { 307280, false }, - { 307294, true }, - { 307306, true }, - { 307318, true }, - { 307334, true }, - { 307352, true }, - { 307378, true }, - { 307396, true }, - { 307405, false }, - { 307418, true }, - { 307436, true }, - { 307446, true }, - { 307456, true }, - { 307473, true }, - { 307492, true }, - { 307506, true }, - { 307517, true }, - { 307530, true }, - { 307545, true }, - { 307557, true }, - { 307573, true }, - { 307581, true }, - { 307591, true }, - { 307601, true }, - { 307616, true }, - { 307629, true }, - { 307642, true }, - { 307652, true }, - { 307664, true }, - { 307674, true }, - { 307684, true }, - { 307695, true }, - { 307701, true }, - { 307710, true }, - { 307730, true }, - { 307738, false }, - { 307759, true }, - { 307772, true }, - { 307781, true }, - { 307795, true }, - { 307805, true }, - { 307818, true }, - { 307828, true }, - { 307839, true }, - { 307855, true }, - { 307866, false }, - { 307886, true }, - { 307896, true }, - { 307903, true }, - { 307913, true }, - { 307923, true }, - { 307937, true }, + { 307242, true }, + { 307261, true }, + { 307275, true }, + { 307286, true }, + { 307299, true }, + { 307314, true }, + { 307326, true }, + { 307342, true }, + { 307350, true }, + { 307360, true }, + { 307370, true }, + { 307385, true }, + { 307398, true }, + { 307411, true }, + { 307421, true }, + { 307433, true }, + { 307443, true }, + { 307453, true }, + { 307464, true }, + { 307470, true }, + { 307479, true }, + { 307499, true }, + { 307507, false }, + { 307528, true }, + { 307541, true }, + { 307550, true }, + { 307564, true }, + { 307574, true }, + { 307587, true }, + { 307597, true }, + { 307608, true }, + { 307624, true }, + { 307635, false }, + { 307655, true }, + { 307665, true }, + { 307672, true }, + { 307682, true }, + { 307692, true }, + { 307706, true }, + { 307723, true }, + { 307743, true }, + { 307758, true }, + { 307771, true }, + { 307787, true }, + { 307796, true }, + { 307807, true }, + { 307837, true }, + { 307863, true }, + { 307883, true }, + { 307891, true }, + { 307910, true }, + { 307931, true }, + { 307945, true }, { 307954, true }, - { 307974, true }, - { 307989, true }, + { 307969, true }, + { 307984, true }, { 308002, true }, - { 308018, true }, { 308027, true }, - { 308038, true }, - { 308068, true }, - { 308094, true }, - { 308114, true }, - { 308122, true }, - { 308141, true }, - { 308162, true }, - { 308176, true }, - { 308185, true }, - { 308200, true }, - { 308215, true }, + { 308046, true }, + { 308057, true }, + { 308067, true }, + { 308077, true }, + { 308098, true }, + { 308113, true }, + { 308126, true }, + { 308142, true }, + { 308154, true }, + { 308171, true }, + { 308182, true }, + { 308199, true }, + { 308217, true }, { 308233, true }, - { 308258, true }, - { 308277, true }, + { 308253, true }, + { 308275, true }, { 308288, true }, { 308298, true }, - { 308308, true }, - { 308329, true }, - { 308344, true }, - { 308357, true }, - { 308373, true }, - { 308385, true }, - { 308402, true }, - { 308413, true }, - { 308430, true }, - { 308448, true }, - { 308464, true }, - { 308484, true }, - { 308506, true }, - { 308519, true }, - { 308529, true }, - { 308551, true }, - { 308569, true }, + { 308320, true }, + { 308338, true }, + { 308367, true }, + { 308388, true }, + { 308407, true }, + { 308426, true }, + { 308447, true }, + { 308471, true }, + { 308488, true }, + { 308501, false }, + { 308525, true }, + { 308536, true }, + { 308552, true }, + { 308564, true }, + { 308576, true }, { 308598, true }, - { 308619, true }, + { 308608, true }, + { 308626, true }, { 308638, true }, - { 308657, true }, - { 308678, true }, - { 308702, true }, - { 308719, true }, - { 308732, false }, + { 308649, true }, + { 308662, true }, + { 308671, true }, + { 308684, true }, + { 308695, true }, + { 308706, true }, + { 308717, true }, + { 308727, true }, + { 308734, true }, + { 308745, true }, { 308756, true }, - { 308767, true }, - { 308783, true }, + { 308770, true }, + { 308783, false }, { 308795, true }, - { 308807, true }, - { 308829, true }, - { 308839, true }, - { 308857, true }, + { 308815, true }, + { 308828, true }, + { 308838, true }, + { 308859, true }, { 308869, true }, - { 308880, true }, - { 308893, true }, - { 308902, true }, - { 308915, true }, - { 308926, true }, - { 308937, true }, - { 308948, true }, - { 308958, true }, - { 308965, true }, - { 308976, true }, - { 308987, true }, - { 309001, true }, - { 309014, false }, - { 309026, true }, - { 309046, true }, - { 309059, true }, - { 309069, true }, - { 309090, true }, + { 308886, true }, + { 308900, true }, + { 308917, true }, + { 308935, true }, + { 308942, true }, + { 308957, true }, + { 308975, false }, + { 308993, false }, + { 309011, false }, + { 309028, true }, + { 309050, true }, + { 309063, true }, + { 309078, true }, + { 309091, true }, { 309100, true }, - { 309117, true }, - { 309131, true }, - { 309148, true }, - { 309166, true }, - { 309173, true }, - { 309188, true }, - { 309206, false }, - { 309224, false }, - { 309242, false }, - { 309259, true }, - { 309281, true }, - { 309294, true }, - { 309309, true }, - { 309322, true }, - { 309347, true }, - { 309356, true }, - { 309368, false }, - { 309382, true }, - { 309394, true }, - { 309409, true }, + { 309112, false }, + { 309126, true }, + { 309138, true }, + { 309153, true }, + { 309168, true }, + { 309180, true }, + { 309194, true }, + { 309211, true }, + { 309232, true }, + { 309250, false }, + { 309265, true }, + { 309290, true }, + { 309300, true }, + { 309318, false }, + { 309330, true }, + { 309344, true }, + { 309360, true }, + { 309388, true }, + { 309403, true }, + { 309414, true }, { 309424, true }, - { 309436, true }, - { 309450, true }, - { 309467, true }, - { 309488, true }, - { 309506, false }, - { 309521, true }, - { 309546, true }, - { 309556, true }, - { 309574, false }, - { 309586, true }, - { 309600, true }, - { 309616, true }, - { 309644, true }, - { 309659, true }, - { 309670, true }, - { 309680, true }, - { 309703, false }, - { 309721, true }, - { 309736, true }, - { 309748, true }, - { 309761, true }, - { 309790, true }, - { 309814, true }, - { 309832, true }, - { 309855, true }, + { 309447, false }, + { 309465, true }, + { 309480, true }, + { 309492, true }, + { 309505, true }, + { 309534, true }, + { 309558, true }, + { 309576, true }, + { 309599, true }, + { 309609, true }, + { 309628, true }, + { 309637, true }, + { 309647, true }, + { 309662, true }, + { 309673, true }, + { 309697, false }, + { 309712, true }, + { 309730, true }, + { 309745, true }, + { 309763, true }, + { 309777, true }, + { 309792, true }, + { 309805, true }, + { 309817, true }, + { 309840, true }, + { 309854, true }, { 309865, true }, { 309884, true }, - { 309893, true }, - { 309903, true }, - { 309918, true }, - { 309929, true }, - { 309953, false }, - { 309968, true }, - { 309986, true }, - { 310001, true }, - { 310019, true }, - { 310033, true }, - { 310048, true }, - { 310061, true }, - { 310073, true }, - { 310096, true }, - { 310110, true }, - { 310121, true }, - { 310140, true }, - { 310165, true }, - { 310182, true }, - { 310205, true }, - { 310217, true }, + { 309909, true }, + { 309926, true }, + { 309949, true }, + { 309961, true }, + { 309977, true }, + { 309995, true }, + { 310009, true }, + { 310020, true }, + { 310038, true }, + { 310046, true }, + { 310070, false }, + { 310093, true }, + { 310113, false }, + { 310130, true }, + { 310148, true }, + { 310168, true }, + { 310181, true }, + { 310194, true }, + { 310209, true }, + { 310220, true }, { 310233, true }, - { 310251, true }, - { 310265, true }, - { 310276, true }, + { 310250, true }, + { 310261, true }, + { 310272, true }, { 310294, true }, - { 310302, true }, - { 310326, true }, - { 310336, false }, - { 310359, true }, - { 310379, false }, - { 310396, true }, - { 310414, true }, - { 310434, true }, - { 310447, true }, - { 310460, true }, - { 310475, true }, - { 310486, true }, - { 310499, true }, - { 310516, true }, - { 310527, true }, - { 310538, true }, - { 310560, true }, - { 310580, true }, - { 310598, true }, - { 310620, false }, - { 310634, true }, - { 310653, true }, - { 310667, true }, - { 310685, true }, - { 310705, true }, - { 310719, true }, - { 310728, true }, - { 310744, true }, - { 310762, true }, - { 310775, true }, - { 310788, true }, - { 310802, true }, - { 310815, true }, - { 310833, true }, - { 310848, true }, - { 310863, true }, - { 310875, true }, - { 310887, true }, - { 310898, true }, - { 310909, true }, - { 310922, true }, - { 310935, true }, - { 310949, true }, - { 310960, true }, - { 310974, true }, - { 310988, true }, - { 310997, true }, - { 311014, true }, - { 311030, true }, - { 311040, true }, - { 311050, true }, - { 311063, true }, - { 311072, true }, - { 311082, true }, - { 311093, true }, - { 311102, true }, - { 311112, true }, - { 311120, true }, - { 311132, true }, - { 311140, false }, - { 311154, false }, - { 311174, true }, + { 310314, true }, + { 310332, true }, + { 310354, false }, + { 310368, true }, + { 310387, true }, + { 310401, true }, + { 310419, true }, + { 310439, true }, + { 310453, true }, + { 310462, true }, + { 310478, true }, + { 310496, true }, + { 310509, true }, + { 310522, true }, + { 310536, true }, + { 310549, true }, + { 310567, true }, + { 310582, true }, + { 310597, true }, + { 310609, true }, + { 310621, true }, + { 310632, true }, + { 310643, true }, + { 310656, true }, + { 310669, true }, + { 310683, true }, + { 310694, true }, + { 310708, true }, + { 310722, true }, + { 310731, true }, + { 310748, true }, + { 310764, true }, + { 310774, true }, + { 310784, true }, + { 310797, true }, + { 310806, true }, + { 310816, true }, + { 310827, true }, + { 310836, true }, + { 310846, true }, + { 310854, true }, + { 310866, true }, + { 310874, false }, + { 310888, false }, + { 310908, true }, + { 310918, true }, + { 310932, true }, + { 310946, true }, + { 310956, true }, + { 310967, true }, + { 310979, true }, + { 310990, true }, + { 311001, true }, + { 311012, true }, + { 311024, true }, + { 311034, true }, + { 311054, true }, + { 311068, true }, + { 311077, true }, + { 311089, true }, + { 311101, true }, + { 311113, true }, + { 311124, true }, + { 311137, true }, + { 311149, true }, + { 311161, true }, + { 311173, true }, { 311184, true }, - { 311198, true }, - { 311212, true }, - { 311222, true }, - { 311233, true }, - { 311245, true }, - { 311256, true }, - { 311267, true }, - { 311278, true }, - { 311290, true }, - { 311300, true }, + { 311204, true }, + { 311218, true }, + { 311234, true }, + { 311249, true }, + { 311263, true }, + { 311272, true }, + { 311284, true }, + { 311294, true }, + { 311305, true }, { 311320, true }, - { 311334, true }, - { 311343, true }, - { 311355, true }, - { 311367, true }, - { 311379, true }, - { 311390, true }, - { 311403, true }, - { 311415, true }, - { 311427, true }, - { 311439, true }, - { 311450, true }, - { 311470, true }, + { 311337, true }, + { 311352, true }, + { 311374, true }, + { 311386, true }, + { 311393, true }, + { 311408, true }, + { 311423, true }, + { 311436, true }, + { 311448, true }, + { 311459, true }, + { 311469, true }, { 311484, true }, - { 311500, true }, - { 311515, true }, - { 311529, true }, - { 311538, true }, - { 311550, true }, - { 311560, true }, - { 311571, true }, - { 311586, true }, - { 311603, true }, - { 311618, true }, - { 311640, true }, - { 311652, true }, - { 311659, true }, - { 311674, true }, - { 311689, true }, - { 311702, true }, - { 311714, true }, - { 311725, true }, - { 311735, true }, - { 311750, true }, - { 311761, true }, - { 311775, true }, - { 311789, true }, - { 311800, true }, - { 311813, true }, - { 311824, true }, + { 311495, true }, + { 311509, true }, + { 311523, true }, + { 311534, true }, + { 311547, true }, + { 311558, true }, + { 311565, true }, + { 311575, false }, + { 311590, true }, + { 311606, true }, + { 311622, true }, + { 311632, true }, + { 311639, true }, + { 311651, true }, + { 311664, true }, + { 311676, true }, + { 311690, true }, + { 311713, true }, + { 311760, true }, + { 311795, true }, { 311831, true }, - { 311841, false }, - { 311856, true }, - { 311872, true }, - { 311888, true }, - { 311898, true }, - { 311905, true }, - { 311917, true }, - { 311930, true }, - { 311942, true }, - { 311956, true }, - { 311979, true }, - { 312026, true }, - { 312061, true }, - { 312097, true }, - { 312134, true }, + { 311868, true }, + { 311901, true }, + { 311939, true }, + { 311974, true }, + { 312009, true }, + { 312049, true }, + { 312085, true }, + { 312128, true }, + { 312154, true }, { 312167, true }, - { 312205, true }, - { 312240, true }, - { 312275, true }, - { 312315, true }, - { 312351, true }, - { 312394, true }, - { 312420, true }, - { 312433, true }, - { 312442, true }, - { 312464, true }, - { 312474, true }, - { 312484, true }, - { 312511, true }, - { 312534, true }, - { 312544, true }, - { 312553, true }, - { 312560, true }, - { 312576, true }, - { 312585, true }, - { 312602, true }, + { 312176, true }, + { 312198, true }, + { 312208, true }, + { 312218, true }, + { 312245, true }, + { 312268, true }, + { 312278, true }, + { 312287, true }, + { 312294, true }, + { 312310, true }, + { 312319, true }, + { 312336, true }, + { 312353, true }, + { 312365, true }, + { 312378, true }, + { 312391, true }, + { 312404, true }, + { 312418, true }, + { 312445, true }, + { 312458, true }, + { 312465, true }, + { 312477, true }, + { 312489, true }, + { 312500, true }, + { 312510, true }, + { 312519, true }, + { 312536, true }, + { 312552, true }, + { 312563, true }, + { 312575, true }, + { 312587, true }, + { 312597, true }, + { 312610, true }, { 312619, true }, - { 312631, true }, - { 312644, true }, - { 312657, true }, - { 312670, true }, - { 312684, true }, - { 312711, true }, - { 312724, true }, - { 312731, true }, - { 312743, true }, - { 312755, true }, - { 312766, true }, - { 312776, true }, - { 312785, true }, - { 312802, true }, - { 312818, true }, - { 312829, true }, - { 312841, true }, - { 312853, true }, - { 312863, true }, - { 312876, true }, - { 312885, true }, - { 312909, true }, - { 312921, true }, - { 312932, true }, - { 312940, true }, + { 312643, true }, + { 312655, true }, + { 312666, true }, + { 312674, true }, + { 312682, true }, + { 312692, true }, + { 312699, true }, + { 312709, true }, + { 312729, true }, + { 312741, true }, + { 312759, true }, + { 312771, true }, + { 312782, true }, + { 312794, true }, + { 312805, true }, + { 312817, true }, + { 312836, true }, + { 312846, true }, + { 312857, true }, + { 312869, true }, + { 312889, true }, + { 312911, true }, + { 312922, true }, + { 312931, true }, + { 312939, true }, { 312948, true }, - { 312958, true }, - { 312965, true }, - { 312975, true }, - { 312995, true }, - { 313007, true }, - { 313025, true }, - { 313037, true }, - { 313048, true }, - { 313060, true }, + { 312957, true }, + { 312976, true }, + { 312983, true }, + { 312997, true }, + { 313018, true }, + { 313031, true }, + { 313043, true }, { 313071, true }, - { 313083, true }, - { 313102, true }, - { 313112, true }, - { 313123, true }, + { 313095, true }, + { 313110, true }, + { 313122, true }, { 313135, true }, - { 313155, true }, - { 313177, true }, - { 313188, true }, - { 313197, true }, - { 313205, true }, - { 313214, true }, - { 313223, true }, + { 313149, true }, + { 313167, true }, + { 313185, true }, + { 313198, false }, + { 313212, true }, + { 313227, true }, { 313242, true }, - { 313249, true }, - { 313263, true }, - { 313284, true }, - { 313297, true }, - { 313309, true }, + { 313251, true }, + { 313268, true }, + { 313281, true }, + { 313294, true }, + { 313315, true }, + { 313327, true }, { 313337, true }, - { 313361, true }, - { 313376, true }, - { 313388, true }, - { 313401, true }, - { 313415, true }, - { 313433, true }, - { 313451, true }, - { 313464, false }, - { 313478, true }, - { 313493, true }, - { 313508, true }, - { 313517, true }, - { 313534, true }, - { 313547, true }, - { 313560, true }, - { 313581, true }, - { 313593, true }, - { 313603, true }, - { 313617, true }, - { 313625, true }, - { 313643, true }, - { 313658, true }, - { 313674, true }, - { 313690, true }, - { 313700, true }, - { 313711, true }, - { 313721, true }, - { 313734, true }, - { 313750, true }, - { 313761, true }, - { 313773, true }, - { 313784, true }, - { 313797, true }, - { 313818, false }, - { 313832, true }, - { 313849, false }, - { 313865, true }, - { 313881, true }, - { 313893, false }, - { 313912, true }, - { 313922, true }, - { 313940, true }, - { 313955, true }, - { 313977, true }, - { 314000, true }, - { 314011, true }, - { 314021, true }, - { 314031, true }, - { 314048, true }, - { 314063, true }, - { 314073, true }, - { 314089, true }, - { 314108, true }, - { 314123, true }, - { 314139, true }, - { 314156, true }, - { 314176, true }, + { 313351, true }, + { 313359, true }, + { 313377, true }, + { 313392, true }, + { 313408, true }, + { 313424, true }, + { 313434, true }, + { 313445, true }, + { 313455, true }, + { 313468, true }, + { 313484, true }, + { 313495, true }, + { 313507, true }, + { 313518, true }, + { 313531, true }, + { 313552, true }, + { 313566, false }, + { 313580, true }, + { 313597, false }, + { 313613, true }, + { 313629, true }, + { 313641, false }, + { 313660, true }, + { 313670, true }, + { 313688, true }, + { 313703, true }, + { 313725, true }, + { 313748, true }, + { 313759, true }, + { 313769, true }, + { 313779, true }, + { 313796, true }, + { 313811, true }, + { 313821, true }, + { 313837, true }, + { 313856, true }, + { 313871, true }, + { 313887, true }, + { 313904, true }, + { 313924, true }, + { 313941, true }, + { 313953, true }, + { 313968, true }, + { 313982, true }, + { 313997, true }, + { 314016, true }, + { 314032, true }, + { 314041, true }, + { 314057, true }, + { 314074, false }, + { 314086, true }, + { 314098, true }, + { 314110, true }, + { 314119, true }, + { 314129, true }, + { 314146, true }, + { 314164, true }, + { 314175, true }, + { 314183, true }, { 314193, true }, - { 314205, true }, - { 314220, true }, - { 314234, true }, - { 314249, true }, - { 314268, true }, - { 314284, true }, - { 314293, true }, - { 314309, true }, - { 314326, false }, - { 314338, true }, - { 314350, true }, - { 314362, true }, - { 314371, true }, - { 314381, true }, - { 314398, true }, - { 314416, true }, - { 314427, true }, - { 314435, true }, - { 314445, true }, - { 314460, true }, - { 314470, true }, - { 314480, false }, - { 314487, true }, - { 314503, true }, - { 314519, true }, - { 314540, true }, - { 314558, true }, - { 314578, true }, - { 314601, true }, - { 314621, true }, - { 314637, true }, - { 314656, true }, - { 314671, true }, - { 314689, true }, - { 314700, false }, - { 314724, true }, - { 314743, true }, - { 314756, true }, - { 314770, true }, - { 314784, true }, - { 314803, true }, - { 314815, false }, - { 314822, true }, - { 314834, true }, + { 314208, true }, + { 314218, true }, + { 314228, false }, + { 314235, true }, + { 314251, true }, + { 314267, true }, + { 314288, true }, + { 314306, true }, + { 314326, true }, + { 314349, true }, + { 314369, true }, + { 314385, true }, + { 314404, true }, + { 314419, true }, + { 314437, true }, + { 314448, false }, + { 314472, true }, + { 314491, true }, + { 314504, true }, + { 314518, true }, + { 314532, true }, + { 314551, true }, + { 314563, false }, + { 314570, true }, + { 314582, true }, + { 314596, true }, + { 314607, true }, + { 314617, false }, + { 314631, true }, + { 314649, false }, + { 314662, true }, + { 314674, true }, + { 314688, true }, + { 314706, true }, + { 314729, true }, + { 314740, true }, + { 314755, true }, + { 314771, true }, + { 314794, true }, + { 314812, true }, + { 314825, true }, + { 314837, true }, { 314848, true }, { 314859, true }, - { 314869, false }, - { 314883, true }, - { 314901, false }, - { 314914, true }, - { 314926, true }, - { 314940, true }, - { 314958, true }, - { 314981, true }, - { 314992, true }, - { 315007, true }, - { 315023, true }, - { 315046, true }, - { 315064, true }, - { 315077, true }, - { 315089, true }, - { 315100, true }, - { 315111, true }, - { 315136, true }, - { 315151, true }, - { 315162, true }, - { 315195, true }, - { 315221, true }, - { 315255, true }, - { 315278, true }, - { 315291, true }, - { 315304, true }, - { 315320, true }, - { 315337, true }, - { 315354, true }, - { 315371, true }, - { 315385, true }, - { 315397, true }, - { 315409, true }, - { 315425, false }, - { 315445, true }, - { 315458, false }, - { 315476, false }, - { 315499, true }, - { 315519, true }, - { 315535, true }, - { 315549, true }, - { 315570, true }, - { 315581, true }, - { 315596, false }, - { 315609, true }, - { 315624, true }, - { 315641, true }, - { 315655, true }, - { 315668, true }, + { 314884, true }, + { 314899, true }, + { 314910, true }, + { 314943, true }, + { 314969, true }, + { 315003, true }, + { 315026, true }, + { 315039, true }, + { 315052, true }, + { 315068, true }, + { 315085, true }, + { 315102, true }, + { 315119, true }, + { 315133, true }, + { 315145, true }, + { 315157, true }, + { 315173, false }, + { 315193, true }, + { 315206, false }, + { 315224, false }, + { 315247, true }, + { 315267, true }, + { 315283, true }, + { 315297, true }, + { 315318, true }, + { 315329, true }, + { 315344, false }, + { 315357, true }, + { 315372, true }, + { 315389, true }, + { 315403, true }, + { 315416, true }, + { 315431, true }, + { 315443, true }, + { 315455, true }, + { 315471, true }, + { 315486, false }, + { 315508, true }, + { 315528, true }, + { 315540, true }, + { 315561, true }, + { 315578, true }, + { 315597, true }, + { 315611, false }, + { 315623, true }, + { 315639, true }, + { 315657, true }, + { 315669, true }, { 315683, true }, - { 315695, true }, - { 315707, true }, - { 315723, true }, + { 315697, true }, + { 315714, true }, + { 315728, true }, { 315738, false }, - { 315760, true }, - { 315780, true }, - { 315792, true }, - { 315813, true }, - { 315830, true }, - { 315849, true }, - { 315863, false }, - { 315875, true }, - { 315891, true }, - { 315909, true }, - { 315921, true }, - { 315935, true }, - { 315949, true }, - { 315966, true }, - { 315980, true }, - { 315990, false }, - { 316004, true }, - { 316014, true }, - { 316035, true }, - { 316048, true }, - { 316066, true }, - { 316079, true }, - { 316089, true }, - { 316100, true }, - { 316116, true }, - { 316129, true }, - { 316150, true }, - { 316165, true }, - { 316178, true }, - { 316202, true }, - { 316222, true }, - { 316239, true }, - { 316253, true }, - { 316263, true }, - { 316278, true }, - { 316295, true }, - { 316305, true }, - { 316321, true }, - { 316349, true }, - { 316358, true }, - { 316369, true }, - { 316379, true }, + { 315752, true }, + { 315762, true }, + { 315783, true }, + { 315796, true }, + { 315814, true }, + { 315827, true }, + { 315837, true }, + { 315848, true }, + { 315864, true }, + { 315877, true }, + { 315898, true }, + { 315913, true }, + { 315926, true }, + { 315950, true }, + { 315970, true }, + { 315987, true }, + { 316001, true }, + { 316011, true }, + { 316026, true }, + { 316043, true }, + { 316053, true }, + { 316069, true }, + { 316097, true }, + { 316106, true }, + { 316117, true }, + { 316127, true }, + { 316145, true }, + { 316153, true }, + { 316177, true }, + { 316193, true }, + { 316209, true }, + { 316225, true }, + { 316241, true }, + { 316262, true }, + { 316273, true }, + { 316285, true }, + { 316298, true }, + { 316308, true }, + { 316333, true }, + { 316348, true }, + { 316368, true }, + { 316382, true }, { 316397, true }, - { 316405, true }, + { 316407, true }, { 316429, true }, - { 316445, true }, - { 316461, true }, - { 316477, true }, - { 316493, true }, + { 316441, true }, + { 316463, true }, + { 316479, true }, + { 316499, true }, { 316514, true }, - { 316525, true }, + { 316524, true }, { 316537, true }, - { 316550, true }, - { 316560, true }, - { 316585, true }, - { 316600, true }, - { 316620, true }, - { 316634, true }, - { 316649, true }, - { 316659, true }, - { 316681, true }, - { 316693, true }, - { 316715, true }, - { 316731, true }, - { 316751, true }, - { 316766, true }, - { 316776, true }, - { 316789, true }, - { 316807, true }, - { 316822, true }, - { 316838, true }, - { 316854, true }, - { 316870, true }, - { 316894, true }, - { 316905, true }, - { 316920, true }, - { 316929, true }, - { 316940, true }, - { 316948, false }, + { 316555, true }, + { 316570, true }, + { 316586, true }, + { 316602, true }, + { 316618, true }, + { 316642, true }, + { 316653, true }, + { 316668, true }, + { 316677, true }, + { 316688, true }, + { 316696, false }, + { 316706, true }, + { 316718, true }, + { 316735, true }, + { 316747, true }, + { 316772, true }, + { 316799, true }, + { 316815, true }, + { 316831, true }, + { 316848, true }, + { 316869, true }, + { 316882, true }, + { 316901, true }, + { 316913, true }, + { 316925, true }, + { 316939, true }, { 316958, true }, { 316970, true }, - { 316987, true }, - { 316999, true }, - { 317024, true }, - { 317051, true }, - { 317067, true }, - { 317083, true }, - { 317100, true }, - { 317121, true }, - { 317134, true }, - { 317153, true }, - { 317165, true }, - { 317177, true }, - { 317191, true }, - { 317210, true }, - { 317222, true }, - { 317234, true }, - { 317244, true }, - { 317259, true }, - { 317271, true }, - { 317285, true }, - { 317309, true }, - { 317321, true }, - { 317353, true }, - { 317368, true }, - { 317389, true }, - { 317420, true }, - { 317434, true }, - { 317459, true }, - { 317482, true }, - { 317493, true }, - { 317505, false }, - { 317520, true }, - { 317533, true }, - { 317546, true }, - { 317559, true }, - { 317572, true }, - { 317582, true }, - { 317611, true }, - { 317634, true }, - { 317658, true }, - { 317685, true }, - { 317699, true }, - { 317722, true }, - { 317748, true }, - { 317776, true }, - { 317807, true }, - { 317832, true }, - { 317840, true }, - { 317847, true }, - { 317859, true }, - { 317867, true }, - { 317876, true }, - { 317888, true }, - { 317899, true }, - { 317921, true }, - { 317934, true }, - { 317955, true }, - { 317968, true }, + { 316982, true }, + { 316992, true }, + { 317007, true }, + { 317019, true }, + { 317033, true }, + { 317057, true }, + { 317069, true }, + { 317101, true }, + { 317116, true }, + { 317137, true }, + { 317168, true }, + { 317182, true }, + { 317207, true }, + { 317230, true }, + { 317241, true }, + { 317253, false }, + { 317268, true }, + { 317281, true }, + { 317294, true }, + { 317307, true }, + { 317320, true }, + { 317330, true }, + { 317359, true }, + { 317382, true }, + { 317406, true }, + { 317433, true }, + { 317447, true }, + { 317470, true }, + { 317496, true }, + { 317524, true }, + { 317555, true }, + { 317580, true }, + { 317588, true }, + { 317595, true }, + { 317607, true }, + { 317615, true }, + { 317624, true }, + { 317636, true }, + { 317647, true }, + { 317669, true }, + { 317682, true }, + { 317703, true }, + { 317716, true }, + { 317737, true }, + { 317756, true }, + { 317775, true }, + { 317786, true }, + { 317799, true }, + { 317811, true }, + { 317823, true }, + { 317839, true }, + { 317853, true }, + { 317869, false }, + { 317885, true }, + { 317893, true }, + { 317908, true }, + { 317925, true }, + { 317942, false }, + { 317957, true }, + { 317973, true }, { 317989, true }, - { 318008, true }, - { 318027, true }, - { 318038, true }, - { 318051, true }, - { 318063, true }, - { 318075, true }, - { 318091, true }, - { 318105, true }, - { 318121, false }, - { 318137, true }, - { 318145, true }, - { 318160, true }, - { 318177, true }, - { 318194, false }, - { 318209, true }, - { 318225, true }, + { 317999, true }, + { 318011, true }, + { 318030, true }, + { 318044, false }, + { 318053, true }, + { 318065, true }, + { 318080, true }, + { 318093, true }, + { 318111, true }, + { 318122, false }, + { 318134, true }, + { 318157, true }, + { 318172, true }, + { 318185, true }, + { 318202, true }, + { 318224, true }, { 318241, true }, - { 318251, true }, - { 318263, true }, - { 318282, true }, - { 318296, false }, - { 318305, true }, - { 318317, true }, - { 318332, true }, - { 318345, true }, - { 318363, true }, - { 318374, false }, - { 318386, true }, - { 318409, true }, - { 318424, true }, - { 318437, true }, - { 318454, true }, - { 318476, true }, - { 318493, true }, - { 318517, true }, - { 318539, true }, - { 318561, true }, - { 318575, true }, - { 318589, true }, - { 318596, true }, - { 318609, true }, - { 318622, true }, - { 318639, true }, - { 318665, true }, - { 318677, true }, - { 318688, true }, - { 318714, true }, - { 318734, true }, - { 318755, true }, - { 318767, true }, - { 318779, true }, - { 318789, true }, - { 318799, false }, - { 318816, true }, - { 318828, true }, - { 318843, true }, + { 318265, true }, + { 318287, true }, + { 318309, true }, + { 318323, true }, + { 318337, true }, + { 318344, true }, + { 318357, true }, + { 318370, true }, + { 318387, true }, + { 318413, true }, + { 318425, true }, + { 318436, true }, + { 318462, true }, + { 318482, true }, + { 318503, true }, + { 318515, true }, + { 318527, true }, + { 318537, true }, + { 318547, false }, + { 318564, true }, + { 318576, true }, + { 318591, true }, + { 318600, true }, + { 318617, true }, + { 318633, true }, + { 318646, true }, + { 318656, true }, + { 318670, true }, + { 318687, true }, + { 318707, true }, + { 318719, true }, + { 318732, true }, + { 318750, true }, + { 318762, true }, + { 318772, true }, + { 318783, true }, + { 318793, true }, + { 318806, false }, + { 318822, true }, + { 318838, true }, { 318852, true }, - { 318869, true }, - { 318885, true }, - { 318898, true }, - { 318908, true }, - { 318922, true }, - { 318939, true }, - { 318959, true }, - { 318971, true }, - { 318984, true }, + { 318865, false }, + { 318882, true }, + { 318896, true }, + { 318910, true }, + { 318924, true }, + { 318948, true }, + { 318961, true }, + { 318974, true }, + { 318988, true }, { 319002, true }, - { 319014, true }, - { 319024, true }, - { 319035, true }, - { 319045, true }, - { 319058, false }, - { 319074, true }, - { 319090, true }, - { 319104, true }, - { 319117, false }, - { 319134, true }, - { 319148, true }, - { 319162, true }, - { 319176, true }, - { 319200, true }, - { 319213, true }, - { 319226, true }, - { 319240, true }, + { 319017, true }, + { 319033, true }, + { 319048, true }, + { 319063, true }, + { 319081, true }, + { 319092, true }, + { 319115, true }, + { 319127, true }, + { 319139, true }, + { 319151, true }, + { 319171, true }, + { 319184, true }, + { 319203, true }, + { 319217, true }, + { 319236, true }, { 319254, true }, - { 319269, true }, - { 319285, true }, - { 319300, true }, - { 319315, true }, - { 319333, true }, - { 319344, true }, - { 319367, true }, - { 319379, true }, - { 319391, true }, - { 319403, true }, - { 319423, true }, - { 319436, true }, - { 319455, true }, - { 319469, true }, - { 319488, true }, - { 319506, true }, - { 319534, true }, - { 319550, true }, - { 319564, true }, - { 319579, true }, - { 319594, true }, - { 319618, true }, - { 319635, true }, - { 319656, true }, - { 319674, true }, - { 319698, true }, - { 319718, true }, - { 319733, true }, - { 319751, true }, - { 319763, true }, - { 319780, true }, - { 319794, true }, - { 319813, true }, - { 319822, true }, - { 319836, true }, - { 319845, true }, - { 319864, false }, - { 319877, true }, - { 319889, true }, - { 319915, true }, - { 319936, true }, - { 319952, true }, - { 319966, true }, - { 319975, true }, - { 319990, true }, - { 320008, true }, - { 320024, true }, - { 320045, true }, - { 320062, true }, - { 320074, true }, - { 320094, false }, - { 320107, true }, - { 320118, true }, - { 320139, true }, - { 320153, true }, - { 320166, true }, - { 320182, true }, - { 320200, true }, - { 320212, true }, - { 320224, true }, - { 320242, false }, - { 320261, true }, - { 320283, true }, - { 320298, true }, + { 319282, true }, + { 319298, true }, + { 319312, true }, + { 319327, true }, + { 319342, true }, + { 319366, true }, + { 319383, true }, + { 319404, true }, + { 319422, true }, + { 319446, true }, + { 319466, true }, + { 319481, true }, + { 319499, true }, + { 319511, true }, + { 319528, true }, + { 319542, true }, + { 319561, true }, + { 319578, true }, + { 319587, true }, + { 319601, true }, + { 319610, true }, + { 319629, false }, + { 319642, true }, + { 319654, true }, + { 319680, true }, + { 319701, true }, + { 319717, true }, + { 319731, true }, + { 319740, true }, + { 319755, true }, + { 319773, true }, + { 319789, true }, + { 319810, true }, + { 319827, true }, + { 319839, true }, + { 319859, false }, + { 319872, true }, + { 319883, true }, + { 319904, true }, + { 319918, true }, + { 319931, true }, + { 319947, true }, + { 319965, true }, + { 319977, true }, + { 319989, true }, + { 320007, false }, + { 320026, true }, + { 320048, true }, + { 320063, true }, + { 320082, true }, + { 320098, true }, + { 320112, true }, + { 320127, true }, + { 320140, true }, + { 320162, true }, + { 320178, true }, + { 320199, true }, + { 320213, true }, + { 320225, true }, + { 320242, true }, + { 320260, true }, + { 320271, true }, + { 320278, true }, + { 320291, true }, + { 320303, true }, { 320317, true }, - { 320333, true }, - { 320347, true }, - { 320362, true }, - { 320375, true }, - { 320397, true }, - { 320413, true }, - { 320434, true }, - { 320448, true }, - { 320460, true }, - { 320477, true }, - { 320495, true }, - { 320506, true }, - { 320513, true }, - { 320526, true }, - { 320538, true }, - { 320552, true }, - { 320571, true }, - { 320581, true }, - { 320589, true }, - { 320599, true }, + { 320336, true }, + { 320346, true }, + { 320354, true }, + { 320364, true }, + { 320371, true }, + { 320381, true }, + { 320396, true }, + { 320415, true }, + { 320430, true }, + { 320446, true }, + { 320469, false }, + { 320479, true }, + { 320486, true }, + { 320497, false }, + { 320509, true }, + { 320518, true }, + { 320532, true }, + { 320544, true }, + { 320560, true }, + { 320568, true }, + { 320575, true }, + { 320585, true }, + { 320594, true }, { 320606, true }, - { 320616, true }, - { 320631, true }, - { 320650, true }, - { 320665, true }, - { 320681, true }, - { 320704, false }, + { 320617, true }, + { 320636, true }, + { 320646, true }, + { 320659, true }, + { 320667, false }, + { 320679, true }, + { 320692, true }, { 320714, true }, - { 320721, true }, - { 320732, false }, - { 320744, true }, - { 320753, true }, + { 320726, true }, + { 320738, true }, + { 320751, true }, { 320767, true }, - { 320779, true }, - { 320795, true }, - { 320803, true }, - { 320810, true }, - { 320820, true }, - { 320829, true }, - { 320841, true }, - { 320852, true }, - { 320871, true }, - { 320881, true }, - { 320894, true }, - { 320902, false }, - { 320914, true }, - { 320927, true }, - { 320949, true }, - { 320961, true }, - { 320973, true }, - { 320986, true }, - { 321002, true }, - { 321011, false }, - { 321028, true }, + { 320776, false }, + { 320793, true }, + { 320811, true }, + { 320832, true }, + { 320843, true }, + { 320854, true }, + { 320868, true }, + { 320889, true }, + { 320901, true }, + { 320917, true }, + { 320937, true }, + { 320962, true }, + { 320988, true }, + { 321014, true }, + { 321035, true }, { 321046, true }, + { 321056, true }, { 321067, true }, - { 321078, true }, - { 321089, true }, - { 321103, true }, - { 321124, true }, - { 321136, true }, - { 321152, true }, - { 321172, true }, + { 321079, true }, + { 321092, true }, + { 321106, true }, + { 321125, true }, + { 321138, true }, + { 321151, true }, + { 321161, true }, + { 321173, true }, + { 321188, true }, { 321197, true }, - { 321223, true }, - { 321249, true }, - { 321270, true }, - { 321281, true }, - { 321291, true }, - { 321302, true }, - { 321314, true }, - { 321327, true }, - { 321341, true }, - { 321360, true }, - { 321373, true }, - { 321386, true }, - { 321396, true }, - { 321408, true }, - { 321423, true }, - { 321432, true }, - { 321446, true }, - { 321461, true }, - { 321478, true }, - { 321494, true }, - { 321514, true }, - { 321529, true }, - { 321545, true }, - { 321555, true }, - { 321567, true }, - { 321587, true }, - { 321609, true }, - { 321629, true }, + { 321211, true }, + { 321226, true }, + { 321243, true }, + { 321259, true }, + { 321279, true }, + { 321294, true }, + { 321310, true }, + { 321320, true }, + { 321332, true }, + { 321352, true }, + { 321374, true }, + { 321394, true }, + { 321407, true }, + { 321426, true }, + { 321434, true }, + { 321448, true }, + { 321467, true }, + { 321479, true }, + { 321503, false }, + { 321517, true }, + { 321530, true }, + { 321543, true }, + { 321561, true }, + { 321583, true }, + { 321603, true }, + { 321615, true }, + { 321627, true }, { 321642, true }, - { 321661, true }, - { 321669, true }, - { 321683, true }, - { 321702, true }, - { 321714, true }, - { 321738, false }, - { 321752, true }, - { 321765, true }, - { 321778, true }, - { 321796, true }, - { 321818, true }, - { 321838, true }, + { 321663, true }, + { 321688, true }, + { 321713, true }, + { 321729, true }, + { 321746, true }, + { 321772, true }, + { 321800, true }, + { 321821, true }, + { 321834, true }, { 321850, true }, - { 321862, true }, - { 321877, true }, - { 321898, true }, + { 321865, true }, + { 321879, true }, + { 321891, true }, + { 321909, true }, { 321923, true }, - { 321948, true }, - { 321964, true }, - { 321981, true }, - { 322007, true }, - { 322035, true }, + { 321942, true }, + { 321956, true }, + { 321967, true }, + { 321983, true }, + { 321995, true }, + { 322005, true }, + { 322014, true }, + { 322028, true }, + { 322045, true }, { 322056, true }, - { 322069, true }, - { 322085, true }, - { 322100, true }, - { 322114, true }, - { 322126, true }, - { 322144, true }, - { 322158, true }, - { 322172, true }, - { 322183, true }, - { 322199, true }, - { 322211, true }, + { 322073, true }, + { 322086, true }, + { 322097, true }, + { 322105, true }, + { 322117, true }, + { 322134, true }, + { 322145, true }, + { 322157, true }, + { 322166, false }, + { 322178, true }, + { 322197, true }, + { 322210, true }, { 322221, true }, - { 322230, true }, - { 322244, true }, - { 322261, true }, - { 322272, true }, - { 322289, true }, - { 322302, true }, - { 322313, true }, - { 322321, true }, - { 322333, true }, + { 322232, true }, + { 322245, true }, + { 322256, true }, + { 322268, true }, + { 322281, true }, + { 322292, true }, + { 322304, true }, + { 322314, true }, + { 322320, true }, + { 322330, true }, { 322350, true }, - { 322361, true }, - { 322373, true }, - { 322382, false }, - { 322394, true }, - { 322413, true }, - { 322426, true }, - { 322437, true }, - { 322448, true }, - { 322461, true }, + { 322366, true }, + { 322377, true }, + { 322387, true }, + { 322410, true }, + { 322435, true }, + { 322447, true }, + { 322464, true }, { 322472, true }, - { 322484, true }, - { 322497, true }, - { 322508, true }, - { 322520, true }, - { 322530, true }, - { 322536, true }, - { 322546, true }, - { 322566, true }, - { 322582, true }, - { 322593, true }, - { 322603, true }, - { 322626, true }, - { 322651, true }, - { 322663, true }, - { 322680, true }, - { 322688, true }, - { 322696, true }, - { 322710, true }, - { 322722, true }, - { 322734, true }, - { 322745, true }, - { 322760, false }, - { 322773, true }, - { 322786, true }, - { 322797, true }, - { 322808, true }, - { 322816, true }, - { 322827, true }, - { 322836, true }, - { 322852, true }, - { 322862, true }, - { 322876, true }, - { 322886, true }, - { 322900, true }, - { 322907, true }, - { 322917, true }, - { 322930, true }, - { 322947, true }, - { 322957, true }, - { 322966, true }, - { 322974, true }, - { 322986, true }, - { 323002, true }, - { 323017, true }, - { 323027, true }, - { 323052, true }, - { 323064, true }, + { 322480, true }, + { 322494, true }, + { 322506, true }, + { 322518, true }, + { 322529, true }, + { 322544, false }, + { 322557, true }, + { 322570, true }, + { 322581, true }, + { 322592, true }, + { 322600, true }, + { 322611, true }, + { 322620, true }, + { 322636, true }, + { 322646, true }, + { 322660, true }, + { 322670, true }, + { 322684, true }, + { 322691, true }, + { 322701, true }, + { 322714, true }, + { 322724, true }, + { 322733, true }, + { 322741, true }, + { 322753, true }, + { 322769, true }, + { 322784, true }, + { 322794, true }, + { 322819, true }, + { 322831, true }, + { 322839, true }, + { 322851, false }, + { 322862, false }, + { 322880, true }, + { 322892, true }, + { 322904, true }, + { 322916, true }, + { 322931, true }, + { 322949, false }, + { 322962, true }, + { 322977, true }, + { 322991, true }, + { 323005, true }, + { 323022, true }, + { 323039, true }, + { 323054, true }, { 323072, true }, - { 323084, false }, - { 323095, false }, - { 323113, true }, - { 323125, true }, - { 323137, true }, - { 323149, true }, + { 323090, true }, + { 323108, true }, + { 323122, true }, + { 323136, true }, + { 323150, true }, { 323164, true }, - { 323182, false }, - { 323195, true }, - { 323210, true }, - { 323224, true }, - { 323238, true }, - { 323255, true }, - { 323272, true }, - { 323287, true }, - { 323305, true }, - { 323323, true }, - { 323341, true }, - { 323355, true }, - { 323369, true }, - { 323383, true }, - { 323397, true }, - { 323411, false }, - { 323431, false }, + { 323178, false }, + { 323198, false }, + { 323216, false }, + { 323239, false }, + { 323262, false }, + { 323283, false }, + { 323302, true }, + { 323315, true }, + { 323331, false }, + { 323347, false }, + { 323363, true }, + { 323385, true }, + { 323398, false }, + { 323415, false }, + { 323432, true }, { 323449, false }, - { 323472, false }, - { 323495, false }, - { 323516, false }, - { 323535, true }, - { 323548, true }, - { 323564, false }, - { 323580, false }, - { 323596, true }, - { 323618, true }, - { 323631, false }, - { 323648, false }, - { 323665, true }, - { 323682, false }, - { 323699, false }, - { 323713, false }, - { 323732, false }, - { 323743, false }, - { 323755, false }, - { 323767, false }, - { 323786, true }, - { 323804, false }, - { 323818, true }, - { 323834, false }, - { 323851, false }, - { 323868, false }, - { 323883, false }, - { 323899, true }, - { 323920, true }, - { 323938, false }, - { 323957, false }, + { 323466, false }, + { 323480, false }, + { 323499, false }, + { 323510, false }, + { 323522, false }, + { 323534, false }, + { 323553, true }, + { 323571, false }, + { 323585, true }, + { 323601, false }, + { 323618, false }, + { 323635, false }, + { 323650, false }, + { 323666, true }, + { 323687, true }, + { 323705, false }, + { 323724, false }, + { 323742, false }, + { 323762, true }, + { 323778, false }, + { 323793, true }, + { 323808, false }, + { 323832, true }, + { 323839, true }, + { 323858, false }, + { 323876, false }, + { 323891, true }, + { 323911, true }, + { 323932, false }, + { 323956, false }, { 323975, false }, - { 323995, true }, - { 324011, false }, - { 324026, true }, - { 324041, false }, - { 324065, true }, - { 324072, true }, - { 324091, false }, - { 324109, false }, - { 324124, true }, - { 324144, true }, - { 324165, false }, - { 324189, false }, - { 324208, false }, - { 324224, true }, - { 324239, false }, - { 324252, true }, - { 324268, false }, - { 324283, false }, - { 324297, false }, - { 324315, true }, - { 324326, true }, + { 323991, true }, + { 324006, false }, + { 324019, true }, + { 324035, false }, + { 324050, false }, + { 324064, false }, + { 324082, true }, + { 324093, true }, + { 324100, true }, + { 324111, true }, + { 324122, true }, + { 324130, true }, + { 324138, true }, + { 324148, true }, + { 324161, true }, + { 324174, true }, + { 324189, true }, + { 324201, true }, + { 324218, true }, + { 324234, true }, + { 324248, true }, + { 324260, true }, + { 324268, true }, + { 324279, true }, + { 324289, true }, + { 324307, true }, + { 324312, true }, + { 324317, true }, + { 324324, true }, { 324333, true }, - { 324344, true }, - { 324352, true }, - { 324360, true }, - { 324370, true }, - { 324383, true }, - { 324396, true }, - { 324411, true }, - { 324423, true }, - { 324440, true }, - { 324456, true }, - { 324470, true }, - { 324482, true }, - { 324490, true }, - { 324501, true }, - { 324511, true }, - { 324529, true }, - { 324534, true }, - { 324539, true }, - { 324546, true }, - { 324555, true }, - { 324562, true }, - { 324571, true }, - { 324579, true }, - { 324587, true }, - { 324595, true }, - { 324604, true }, - { 324611, true }, - { 324630, true }, - { 324637, true }, - { 324644, true }, - { 324651, true }, - { 324658, true }, - { 324667, true }, - { 324688, true }, - { 324708, true }, - { 324732, true }, - { 324742, true }, - { 324755, true }, - { 324772, true }, - { 324792, true }, - { 324798, true }, + { 324340, true }, + { 324349, true }, + { 324357, true }, + { 324365, true }, + { 324373, true }, + { 324382, true }, + { 324389, true }, + { 324408, true }, + { 324415, true }, + { 324422, true }, + { 324429, true }, + { 324436, true }, + { 324445, true }, + { 324466, true }, + { 324486, true }, + { 324510, true }, + { 324520, true }, + { 324533, true }, + { 324550, true }, + { 324570, true }, + { 324576, true }, + { 324582, true }, + { 324589, true }, + { 324601, true }, + { 324613, true }, + { 324626, true }, + { 324641, true }, + { 324655, true }, + { 324668, true }, + { 324680, true }, + { 324691, true }, + { 324704, false }, + { 324715, true }, + { 324726, true }, + { 324734, false }, + { 324753, true }, + { 324764, true }, + { 324775, true }, + { 324782, true }, + { 324793, true }, { 324804, true }, { 324811, true }, - { 324823, true }, - { 324835, true }, - { 324848, true }, - { 324863, true }, - { 324877, true }, - { 324890, true }, - { 324902, true }, - { 324913, true }, - { 324926, false }, - { 324937, true }, - { 324948, true }, - { 324956, false }, - { 324975, true }, - { 324986, true }, - { 324997, true }, - { 325004, true }, + { 324822, true }, + { 324834, true }, + { 324853, true }, + { 324869, true }, + { 324885, false }, + { 324897, true }, + { 324908, true }, + { 324925, true }, + { 324935, true }, + { 324951, true }, + { 324965, false }, + { 324980, true }, + { 324995, true }, + { 325005, true }, { 325015, true }, - { 325026, true }, - { 325033, true }, - { 325044, true }, - { 325056, true }, - { 325075, true }, - { 325091, true }, - { 325107, false }, - { 325119, true }, - { 325130, true }, - { 325147, true }, - { 325157, true }, - { 325173, true }, - { 325187, false }, - { 325202, true }, - { 325217, true }, - { 325227, true }, - { 325237, true }, - { 325249, true }, - { 325260, false }, + { 325027, true }, + { 325038, false }, + { 325048, true }, + { 325058, true }, + { 325066, true }, + { 325074, true }, + { 325085, true }, + { 325095, false }, + { 325109, true }, + { 325117, true }, + { 325127, true }, + { 325138, true }, + { 325146, true }, + { 325154, false }, + { 325166, true }, + { 325177, true }, + { 325189, true }, + { 325197, true }, + { 325204, true }, + { 325211, true }, + { 325245, true }, { 325270, true }, - { 325280, true }, - { 325288, true }, - { 325296, true }, - { 325307, true }, - { 325317, false }, - { 325331, true }, - { 325339, true }, - { 325349, true }, - { 325360, true }, - { 325368, true }, - { 325376, false }, - { 325388, true }, - { 325399, true }, - { 325411, true }, - { 325419, true }, - { 325426, true }, - { 325433, true }, - { 325467, true }, - { 325492, true }, - { 325514, true }, - { 325532, true }, - { 325558, true }, - { 325584, true }, - { 325600, true }, - { 325630, true }, - { 325642, true }, - { 325661, true }, - { 325685, true }, - { 325706, true }, - { 325732, true }, - { 325765, true }, - { 325788, true }, - { 325807, true }, - { 325835, true }, - { 325855, true }, - { 325877, true }, - { 325895, true }, - { 325913, true }, - { 325940, true }, - { 325965, true }, - { 325990, true }, - { 326014, true }, - { 326042, true }, - { 326082, true }, - { 326112, true }, - { 326137, true }, - { 326152, true }, - { 326163, true }, - { 326194, true }, - { 326209, true }, - { 326220, false }, - { 326241, true }, - { 326265, true }, - { 326283, true }, - { 326309, true }, - { 326327, true }, - { 326364, true }, - { 326396, true }, - { 326416, true }, + { 325292, true }, + { 325310, true }, + { 325336, true }, + { 325362, true }, + { 325378, true }, + { 325408, true }, + { 325420, true }, + { 325439, true }, + { 325463, true }, + { 325484, true }, + { 325510, true }, + { 325543, true }, + { 325566, true }, + { 325585, true }, + { 325613, true }, + { 325633, true }, + { 325655, true }, + { 325673, true }, + { 325691, true }, + { 325718, true }, + { 325743, true }, + { 325768, true }, + { 325796, true }, + { 325836, true }, + { 325866, true }, + { 325891, true }, + { 325906, true }, + { 325917, true }, + { 325948, true }, + { 325963, true }, + { 325974, false }, + { 325995, true }, + { 326019, true }, + { 326037, true }, + { 326063, true }, + { 326081, true }, + { 326118, true }, + { 326150, true }, + { 326170, true }, + { 326198, true }, + { 326221, true }, + { 326249, true }, + { 326264, true }, + { 326291, true }, + { 326311, true }, + { 326332, true }, + { 326346, true }, + { 326360, true }, + { 326377, true }, + { 326399, true }, + { 326424, true }, { 326444, true }, - { 326467, true }, - { 326495, true }, - { 326510, true }, - { 326537, true }, - { 326557, true }, - { 326578, true }, - { 326592, true }, - { 326606, true }, - { 326623, true }, - { 326645, true }, - { 326670, true }, - { 326690, true }, + { 326463, true }, + { 326505, true }, + { 326516, true }, + { 326535, true }, + { 326558, true }, + { 326584, true }, + { 326600, true }, + { 326622, true }, + { 326633, true }, + { 326657, true }, + { 326664, true }, + { 326675, true }, + { 326682, true }, + { 326693, true }, + { 326703, true }, { 326709, true }, - { 326751, true }, - { 326762, true }, - { 326781, true }, + { 326720, true }, + { 326736, true }, + { 326752, true }, + { 326763, true }, + { 326773, true }, + { 326780, true }, + { 326787, true }, { 326804, true }, - { 326830, true }, - { 326846, true }, - { 326868, true }, - { 326879, true }, - { 326903, true }, - { 326910, true }, + { 326817, true }, + { 326824, true }, + { 326839, true }, + { 326858, true }, + { 326872, true }, + { 326881, true }, + { 326887, true }, + { 326901, true }, + { 326911, true }, { 326921, true }, - { 326928, true }, - { 326939, true }, - { 326949, true }, + { 326929, true }, + { 326942, true }, { 326955, true }, - { 326966, true }, - { 326982, true }, - { 326998, true }, - { 327009, true }, - { 327019, true }, - { 327026, true }, - { 327033, true }, - { 327050, true }, - { 327063, true }, + { 326962, true }, + { 326969, true }, + { 326978, true }, + { 326985, true }, + { 326996, true }, + { 327005, true }, + { 327021, true }, + { 327034, true }, + { 327046, true }, + { 327055, false }, + { 327062, true }, { 327070, true }, - { 327085, true }, - { 327104, true }, - { 327118, true }, - { 327127, true }, - { 327133, true }, + { 327081, true }, + { 327091, true }, + { 327103, true }, + { 327113, true }, + { 327128, true }, + { 327138, true }, { 327147, true }, - { 327157, true }, - { 327167, true }, - { 327175, true }, - { 327188, true }, - { 327201, true }, - { 327208, true }, - { 327215, true }, - { 327224, true }, - { 327231, true }, - { 327242, true }, - { 327251, true }, - { 327267, true }, - { 327280, true }, - { 327292, true }, - { 327301, false }, - { 327308, true }, - { 327316, true }, - { 327327, true }, - { 327337, true }, - { 327349, true }, - { 327359, true }, - { 327374, true }, + { 327161, true }, + { 327181, true }, + { 327191, true }, + { 327203, true }, + { 327223, true }, + { 327232, true }, + { 327240, true }, + { 327250, true }, + { 327257, true }, + { 327266, true }, + { 327277, true }, + { 327288, true }, + { 327299, true }, + { 327313, true }, + { 327322, true }, + { 327338, true }, + { 327345, true }, + { 327355, true }, + { 327367, true }, + { 327377, false }, { 327384, true }, { 327393, true }, - { 327407, true }, - { 327427, true }, - { 327437, true }, - { 327449, true }, - { 327469, true }, - { 327478, true }, - { 327486, true }, - { 327496, true }, - { 327503, true }, - { 327512, true }, - { 327523, true }, - { 327543, true }, - { 327554, true }, - { 327565, true }, - { 327579, true }, - { 327588, true }, - { 327604, true }, - { 327611, true }, - { 327621, true }, - { 327633, true }, - { 327643, false }, - { 327650, true }, - { 327659, true }, - { 327667, true }, - { 327679, false }, - { 327690, true }, - { 327700, false }, - { 327712, true }, - { 327726, true }, - { 327741, true }, - { 327754, true }, - { 327770, true }, - { 327782, true }, - { 327795, false }, - { 327805, true }, - { 327818, true }, - { 327840, true }, - { 327852, true }, - { 327868, true }, - { 327876, true }, - { 327885, true }, - { 327897, true }, - { 327907, true }, - { 327916, false }, - { 327924, true }, - { 327932, true }, - { 327942, true }, - { 327952, true }, - { 327961, true }, - { 327970, true }, - { 327982, true }, + { 327401, true }, + { 327413, false }, + { 327424, true }, + { 327434, false }, + { 327446, true }, + { 327460, true }, + { 327475, true }, + { 327488, true }, + { 327504, true }, + { 327516, true }, + { 327529, false }, + { 327539, true }, + { 327552, true }, + { 327574, true }, + { 327586, true }, + { 327602, true }, + { 327610, true }, + { 327619, true }, + { 327631, true }, + { 327641, true }, + { 327650, false }, + { 327658, true }, + { 327666, true }, + { 327676, true }, + { 327686, true }, + { 327695, true }, + { 327704, true }, + { 327716, true }, + { 327734, true }, + { 327746, true }, + { 327757, true }, + { 327772, true }, + { 327787, true }, + { 327803, false }, + { 327818, false }, + { 327831, true }, + { 327845, true }, + { 327855, false }, + { 327864, true }, + { 327871, true }, + { 327882, true }, + { 327895, true }, + { 327911, true }, + { 327918, true }, + { 327928, true }, + { 327936, true }, + { 327949, true }, + { 327960, true }, + { 327971, true }, + { 327985, true }, { 328000, true }, { 328012, true }, { 328023, true }, - { 328038, true }, - { 328053, true }, - { 328069, false }, - { 328084, false }, - { 328097, true }, - { 328111, true }, - { 328121, false }, - { 328130, true }, - { 328137, true }, - { 328148, true }, - { 328161, true }, + { 328033, true }, + { 328043, true }, + { 328054, true }, + { 328076, true }, + { 328091, true }, + { 328098, true }, + { 328109, true }, + { 328117, true }, + { 328127, true }, + { 328140, true }, + { 328147, true }, + { 328165, true }, { 328177, true }, - { 328184, true }, - { 328194, true }, + { 328193, false }, { 328202, true }, - { 328215, true }, - { 328226, true }, - { 328237, true }, - { 328251, true }, - { 328266, true }, - { 328278, true }, - { 328289, true }, + { 328216, true }, + { 328232, true }, + { 328249, true }, + { 328268, true }, + { 328286, true }, { 328299, true }, - { 328309, true }, - { 328320, true }, - { 328342, true }, - { 328357, true }, - { 328364, true }, - { 328375, true }, - { 328383, true }, - { 328393, true }, - { 328406, true }, - { 328413, true }, - { 328431, true }, - { 328443, true }, - { 328459, false }, - { 328468, true }, - { 328482, true }, + { 328316, true }, + { 328328, true }, + { 328339, true }, + { 328352, true }, + { 328363, true }, + { 328375, false }, + { 328390, true }, + { 328401, true }, + { 328411, true }, + { 328421, true }, + { 328433, true }, + { 328444, true }, + { 328464, false }, + { 328474, true }, { 328498, true }, - { 328515, true }, - { 328534, true }, - { 328552, true }, - { 328565, true }, - { 328582, true }, - { 328594, true }, - { 328605, true }, - { 328618, true }, - { 328629, true }, - { 328641, false }, - { 328656, true }, + { 328509, true }, + { 328519, true }, + { 328536, true }, + { 328547, true }, + { 328567, true }, + { 328579, true }, + { 328592, true }, + { 328609, true }, + { 328624, true }, + { 328637, true }, + { 328651, true }, { 328667, true }, - { 328677, true }, - { 328687, true }, + { 328684, true }, { 328699, true }, - { 328710, true }, - { 328730, false }, - { 328740, true }, - { 328764, true }, - { 328775, true }, + { 328714, true }, + { 328726, true }, + { 328738, true }, + { 328747, true }, + { 328761, true }, + { 328774, true }, { 328785, true }, - { 328802, true }, - { 328813, true }, - { 328833, true }, - { 328845, true }, - { 328858, true }, - { 328875, true }, - { 328890, true }, - { 328903, true }, - { 328917, true }, - { 328933, true }, - { 328950, true }, + { 328795, true }, + { 328808, true }, + { 328826, true }, + { 328839, true }, + { 328854, true }, + { 328867, true }, + { 328880, true }, + { 328895, true }, + { 328907, true }, + { 328916, true }, + { 328927, true }, + { 328949, true }, { 328965, true }, - { 328980, true }, - { 328992, true }, - { 329004, true }, - { 329015, true }, - { 329024, true }, - { 329038, true }, - { 329051, true }, - { 329062, true }, - { 329072, true }, - { 329085, true }, - { 329103, true }, - { 329116, true }, - { 329131, true }, - { 329144, true }, - { 329157, true }, - { 329172, true }, - { 329184, true }, - { 329193, true }, - { 329204, true }, - { 329226, true }, - { 329242, true }, + { 328974, true }, + { 328982, true }, + { 328990, true }, + { 329003, true }, + { 329016, true }, + { 329028, true }, + { 329042, true }, + { 329050, true }, + { 329065, true }, + { 329075, true }, + { 329086, true }, + { 329102, true }, + { 329110, true }, + { 329123, true }, + { 329133, true }, + { 329143, true }, + { 329156, true }, + { 329166, true }, + { 329176, true }, + { 329186, true }, + { 329197, true }, + { 329207, true }, + { 329217, true }, + { 329227, true }, + { 329238, true }, { 329251, true }, - { 329259, true }, - { 329267, true }, - { 329280, true }, - { 329293, true }, - { 329305, true }, + { 329263, true }, + { 329274, true }, + { 329285, true }, + { 329297, true }, + { 329308, true }, { 329319, true }, - { 329327, true }, - { 329342, true }, - { 329352, true }, - { 329363, true }, - { 329379, true }, + { 329332, true }, + { 329340, true }, + { 329349, true }, + { 329359, true }, + { 329369, true }, + { 329378, true }, { 329387, true }, - { 329400, true }, - { 329410, true }, - { 329420, true }, - { 329433, true }, - { 329443, true }, - { 329453, true }, - { 329463, true }, + { 329402, true }, + { 329421, true }, + { 329434, true }, + { 329452, true }, + { 329465, true }, { 329474, true }, - { 329484, true }, - { 329494, true }, - { 329504, true }, - { 329515, true }, - { 329528, true }, - { 329540, true }, - { 329551, true }, - { 329562, true }, - { 329574, true }, - { 329585, true }, - { 329596, true }, - { 329609, true }, - { 329617, true }, - { 329626, true }, + { 329497, true }, + { 329508, true }, + { 329522, true }, + { 329534, true }, + { 329552, true }, + { 329565, true }, + { 329581, true }, + { 329589, true }, + { 329603, true }, + { 329613, true }, + { 329620, true }, + { 329628, true }, { 329636, true }, - { 329646, true }, - { 329655, true }, - { 329664, true }, - { 329679, true }, - { 329698, true }, - { 329711, true }, - { 329729, true }, - { 329742, true }, - { 329751, true }, - { 329774, true }, - { 329785, true }, - { 329799, true }, - { 329811, true }, - { 329829, true }, + { 329650, true }, + { 329666, true }, + { 329676, true }, + { 329694, true }, + { 329703, true }, + { 329712, true }, + { 329735, true }, + { 329748, true }, + { 329753, true }, + { 329763, true }, + { 329770, true }, + { 329777, true }, + { 329784, true }, + { 329796, false }, + { 329815, true }, + { 329826, true }, { 329842, true }, - { 329858, true }, - { 329866, true }, - { 329880, true }, - { 329890, true }, - { 329897, true }, - { 329905, true }, - { 329913, true }, - { 329927, true }, + { 329857, true }, + { 329873, true }, + { 329888, true }, + { 329899, true }, + { 329912, true }, + { 329925, true }, + { 329933, true }, { 329943, true }, { 329953, true }, - { 329971, true }, - { 329980, true }, - { 329989, true }, - { 330012, true }, - { 330025, true }, - { 330030, true }, - { 330040, true }, - { 330047, true }, - { 330054, true }, - { 330061, true }, - { 330073, false }, - { 330092, true }, - { 330103, true }, - { 330119, true }, - { 330134, true }, - { 330150, true }, - { 330165, true }, - { 330176, true }, + { 329968, true }, + { 329982, true }, + { 330010, true }, + { 330021, true }, + { 330034, true }, + { 330046, true }, + { 330059, true }, + { 330067, true }, + { 330076, true }, + { 330086, true }, + { 330099, true }, + { 330111, true }, + { 330141, true }, + { 330152, true }, + { 330170, true }, + { 330181, true }, { 330189, true }, - { 330202, true }, - { 330212, true }, - { 330222, true }, - { 330237, true }, - { 330251, true }, - { 330279, true }, - { 330290, true }, - { 330303, true }, - { 330315, true }, - { 330328, true }, - { 330336, true }, - { 330345, true }, - { 330355, true }, - { 330368, true }, - { 330380, true }, - { 330410, true }, - { 330421, true }, - { 330439, true }, - { 330450, true }, - { 330458, true }, - { 330482, true }, - { 330492, true }, - { 330504, true }, - { 330521, true }, + { 330213, true }, + { 330223, true }, + { 330235, true }, + { 330252, true }, + { 330264, true }, + { 330275, true }, + { 330287, true }, + { 330300, false }, + { 330307, true }, + { 330325, true }, + { 330332, true }, + { 330341, true }, + { 330352, true }, + { 330364, true }, + { 330375, true }, + { 330382, true }, + { 330390, true }, + { 330406, true }, + { 330425, true }, + { 330436, true }, + { 330446, true }, + { 330455, true }, + { 330473, true }, + { 330499, true }, + { 330508, true }, { 330533, true }, - { 330544, true }, - { 330556, true }, - { 330569, false }, - { 330576, true }, - { 330594, true }, - { 330601, true }, - { 330610, true }, - { 330621, true }, - { 330633, true }, - { 330644, true }, - { 330651, true }, - { 330659, true }, - { 330675, true }, - { 330694, true }, - { 330705, true }, - { 330715, true }, - { 330724, true }, - { 330742, true }, - { 330768, true }, - { 330777, true }, - { 330802, true }, - { 330829, true }, - { 330849, false }, - { 330860, true }, - { 330873, true }, - { 330895, true }, - { 330906, true }, - { 330917, true }, - { 330929, true }, - { 330942, true }, - { 330955, true }, - { 330970, true }, - { 330988, true }, - { 331001, true }, - { 331016, true }, - { 331032, true }, - { 331050, true }, - { 331063, true }, + { 330560, true }, + { 330580, false }, + { 330591, true }, + { 330604, true }, + { 330626, true }, + { 330637, true }, + { 330648, true }, + { 330660, true }, + { 330673, true }, + { 330686, true }, + { 330701, true }, + { 330719, true }, + { 330732, true }, + { 330747, true }, + { 330763, true }, + { 330781, true }, + { 330794, true }, + { 330808, true }, + { 330818, true }, + { 330830, true }, + { 330838, true }, + { 330850, true }, + { 330870, true }, + { 330882, true }, + { 330892, true }, + { 330905, true }, + { 330915, true }, + { 330926, true }, + { 330939, true }, + { 330951, true }, + { 330963, true }, + { 330977, true }, + { 330987, false }, + { 330997, true }, + { 331010, true }, + { 331021, true }, + { 331036, true }, + { 331049, true }, + { 331060, true }, + { 331067, true }, { 331077, true }, - { 331087, true }, - { 331099, true }, - { 331107, true }, - { 331119, true }, - { 331139, true }, - { 331151, true }, - { 331161, true }, - { 331174, true }, - { 331184, true }, - { 331195, true }, - { 331208, true }, - { 331220, true }, - { 331232, true }, + { 331084, true }, + { 331098, true }, + { 331108, true }, + { 331126, true }, + { 331138, true }, + { 331150, true }, + { 331166, true }, + { 331179, true }, + { 331194, true }, + { 331207, true }, + { 331219, true }, + { 331233, true }, { 331246, true }, - { 331256, false }, - { 331266, true }, - { 331279, true }, - { 331290, true }, - { 331305, true }, - { 331318, true }, + { 331253, true }, + { 331264, false }, + { 331277, true }, + { 331289, true }, + { 331298, true }, + { 331310, true }, { 331329, true }, - { 331336, true }, - { 331346, true }, - { 331353, true }, - { 331367, true }, - { 331377, true }, - { 331395, true }, - { 331407, true }, - { 331419, true }, - { 331435, true }, - { 331448, true }, - { 331463, true }, - { 331476, true }, - { 331488, true }, - { 331502, true }, + { 331358, true }, + { 331366, true }, + { 331374, true }, + { 331389, true }, + { 331410, true }, + { 331421, true }, + { 331429, true }, + { 331440, true }, + { 331457, true }, + { 331471, true }, + { 331485, true }, + { 331496, false }, + { 331508, true }, { 331515, true }, - { 331522, true }, - { 331533, false }, - { 331546, true }, - { 331558, true }, - { 331567, true }, - { 331579, true }, - { 331598, true }, - { 331627, true }, - { 331635, true }, - { 331643, true }, - { 331658, false }, - { 331666, true }, - { 331687, true }, - { 331698, true }, - { 331706, true }, - { 331717, true }, + { 331534, true }, + { 331552, true }, + { 331563, true }, + { 331575, true }, + { 331584, true }, + { 331594, true }, + { 331609, true }, + { 331625, true }, + { 331640, true }, + { 331652, true }, + { 331660, true }, + { 331667, true }, + { 331677, true }, + { 331692, true }, + { 331704, true }, + { 331716, false }, + { 331723, true }, { 331734, true }, - { 331748, true }, - { 331762, true }, - { 331773, false }, - { 331785, true }, + { 331747, true }, + { 331757, true }, + { 331781, true }, { 331792, true }, - { 331811, true }, - { 331829, true }, - { 331840, true }, - { 331852, true }, - { 331861, true }, - { 331871, true }, - { 331886, true }, - { 331902, true }, - { 331917, true }, - { 331929, true }, - { 331937, true }, - { 331944, true }, - { 331954, true }, - { 331969, true }, - { 331981, true }, - { 331993, false }, - { 332000, true }, - { 332011, true }, - { 332024, true }, - { 332034, true }, - { 332058, true }, - { 332069, true }, - { 332080, true }, - { 332091, true }, - { 332102, true }, - { 332113, true }, + { 331803, true }, + { 331814, true }, + { 331825, true }, + { 331836, true }, + { 331851, true }, + { 331863, true }, + { 331887, true }, + { 331905, true }, + { 331920, true }, + { 331931, true }, + { 331942, true }, + { 331957, true }, + { 331967, true }, + { 331983, true }, + { 331992, true }, + { 332003, true }, + { 332025, true }, + { 332036, true }, + { 332060, true }, + { 332075, true }, + { 332087, true }, + { 332099, true }, + { 332110, true }, + { 332120, true }, { 332128, true }, - { 332140, true }, - { 332164, true }, - { 332182, true }, + { 332147, true }, + { 332158, true }, + { 332168, true }, + { 332178, true }, + { 332189, true }, { 332197, true }, - { 332208, true }, - { 332219, true }, - { 332234, true }, - { 332244, true }, - { 332260, true }, - { 332269, true }, - { 332280, true }, - { 332302, true }, - { 332313, true }, - { 332337, true }, - { 332352, true }, - { 332364, true }, - { 332376, true }, - { 332387, true }, - { 332397, true }, - { 332405, true }, - { 332424, true }, - { 332435, true }, - { 332445, true }, - { 332455, true }, - { 332466, true }, - { 332474, true }, - { 332488, false }, - { 332495, true }, - { 332502, true }, - { 332514, true }, - { 332529, true }, - { 332538, true }, - { 332547, true }, - { 332561, true }, - { 332572, true }, - { 332590, true }, - { 332600, true }, - { 332608, true }, - { 332621, true }, - { 332635, true }, - { 332656, true }, - { 332670, true }, - { 332680, true }, - { 332687, true }, - { 332698, true }, - { 332708, true }, - { 332718, true }, - { 332728, true }, - { 332739, true }, - { 332747, true }, - { 332756, true }, - { 332776, true }, - { 332799, true }, - { 332807, true }, - { 332820, true }, - { 332833, false }, - { 332840, true }, - { 332853, true }, - { 332865, true }, - { 332875, true }, - { 332884, true }, - { 332896, true }, - { 332906, true }, - { 332916, true }, - { 332924, true }, - { 332941, true }, - { 332951, true }, - { 332960, true }, - { 332967, true }, - { 332977, true }, + { 332211, false }, + { 332218, true }, + { 332225, true }, + { 332237, true }, + { 332252, true }, + { 332261, true }, + { 332270, true }, + { 332284, true }, + { 332294, true }, + { 332305, true }, + { 332323, true }, + { 332331, true }, + { 332344, true }, + { 332358, true }, + { 332379, true }, + { 332393, true }, + { 332403, true }, + { 332410, true }, + { 332421, true }, + { 332431, true }, + { 332441, true }, + { 332451, true }, + { 332462, true }, + { 332470, true }, + { 332479, true }, + { 332499, true }, + { 332522, true }, + { 332530, true }, + { 332543, true }, + { 332556, false }, + { 332563, true }, + { 332576, true }, + { 332588, true }, + { 332598, true }, + { 332607, true }, + { 332619, true }, + { 332629, true }, + { 332639, true }, + { 332647, true }, + { 332664, true }, + { 332674, true }, + { 332683, true }, + { 332690, true }, + { 332700, true }, }; From cd09b990076a042af27a021fe1fa97320be8da59 Mon Sep 17 00:00:00 2001 From: ffxbld Date: Tue, 6 Jun 2017 08:39:25 -0700 Subject: [PATCH 61/71] No bug, Automated HPKP preload list update from host bld-linux64-spot-307 - a=hpkp-update --- security/manager/ssl/StaticHPKPins.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/security/manager/ssl/StaticHPKPins.h b/security/manager/ssl/StaticHPKPins.h index 289482d8c454..8cb91fb0ffc7 100644 --- a/security/manager/ssl/StaticHPKPins.h +++ b/security/manager/ssl/StaticHPKPins.h @@ -1161,4 +1161,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = { static const int32_t kUnknownId = -1; -static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1505144199893000); +static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1505230501973000); From 2e836194b018c2f3ea5a08e6abf8bb07b76a780d Mon Sep 17 00:00:00 2001 From: Mason Chang Date: Tue, 6 Jun 2017 09:05:31 -0700 Subject: [PATCH 62/71] Bug 1359527 Part 2 Add D2D fuzzing for GPU Luminance. r=jrmuizel --- layout/reftests/w3c-css/submitted/masking/reftest.list | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layout/reftests/w3c-css/submitted/masking/reftest.list b/layout/reftests/w3c-css/submitted/masking/reftest.list index c101e3f97bcc..41118dd9dee1 100644 --- a/layout/reftests/w3c-css/submitted/masking/reftest.list +++ b/layout/reftests/w3c-css/submitted/masking/reftest.list @@ -14,7 +14,7 @@ fuzzy-if(skiaContent,1,30000) == mask-mode-a.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-b.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-c.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-d.html mask-mode-ref.html -fuzzy-if(skiaContent,1,30000) == mask-mode-to-mask-type.html mask-mode-to-mask-type-ref.html +fuzzy-if(skiaContent,1,30000) fuzzy-if(d2d,1,30000) == mask-mode-to-mask-type.html mask-mode-to-mask-type-ref.html # mask-image test cases == mask-image-1a.html mask-image-1-ref.html @@ -27,8 +27,8 @@ fuzzy-if(skiaContent||winWidget,1,20000) == mask-image-2.html mask-image-2-ref.h fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3c.html mask-image-3-ref.html fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3d.html mask-image-3-ref.html == mask-image-3e.html mask-image-3-ref.html -fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) == mask-image-3f.html mask-image-3-ref.html -fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) == mask-image-3g.html mask-image-3-ref.html +fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) == mask-image-3f.html mask-image-3-ref.html +fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) == mask-image-3g.html mask-image-3-ref.html pref(layout.css.clip-path-shapes.enabled,true) fuzzy-if(winWidget,1,3) fuzzy-if(skiaContent,2,12) == mask-image-3h.html mask-image-3-ref.html fuzzy-if(skiaContent,71,203) == mask-image-3i.html mask-image-3-ref.html == mask-image-4a.html blank.html From e82e58aff92c05f072f7fba87be63648195a6388 Mon Sep 17 00:00:00 2001 From: Mark Banner Date: Tue, 6 Jun 2017 12:45:29 +0100 Subject: [PATCH 63/71] Bug 1370507 - browser_all_files_referenced.js should be able to handle template strings. r=florian MozReview-Commit-ID: FQZjG1i0ddk --- .../test/static/browser_all_files_referenced.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/browser/base/content/test/static/browser_all_files_referenced.js b/browser/base/content/test/static/browser_all_files_referenced.js index 4c7dc665060e..cbd55cddcb0d 100644 --- a/browser/base/content/test/static/browser_all_files_referenced.js +++ b/browser/base/content/test/static/browser_all_files_referenced.js @@ -1,6 +1,10 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ +// Note to run this test similar to try server, you need to run: +// ./mach package +// ./mach mochitest --appname dist + // Slow on asan builds. requestLongerTimeout(5); @@ -324,7 +328,7 @@ function parseCodeFile(fileUri) { let baseUri; for (let line of data.split("\n")) { let urls = - line.match(/["']chrome:\/\/[a-zA-Z0-9 -]+\/(content|skin|locale)\/[^"' ]*["']/g); + line.match(/["'`]chrome:\/\/[a-zA-Z0-9 -]+\/(content|skin|locale)\/[^"'` ]*["'`]/g); if (!urls) { urls = line.match(/["']resource:\/\/[^"']+["']/g); if (urls && isDevtools && @@ -388,8 +392,14 @@ function parseCodeFile(fileUri) { // Remove quotes. url = url.slice(1, -1); // Remove ? or \ trailing characters. - if (url.endsWith("?") || url.endsWith("\\")) + if (url.endsWith("\\")) { url = url.slice(0, -1); + } + + let pos = url.indexOf("?"); + if (pos != -1) { + url = url.slice(0, pos); + } // Make urls like chrome://browser/skin/ point to an actual file, // and remove the ref if any. From 394af562be6c34c2fe31ee6517fc3e36db3b8d15 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Mon, 5 Jun 2017 16:58:52 -0400 Subject: [PATCH 64/71] Bug 1370448 - Start poll watchdog timer off of a runnable from the main thread in order to avoid a false positive detected deadlock; r=dragana --- netwerk/base/nsSocketTransportService2.cpp | 25 +++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/netwerk/base/nsSocketTransportService2.cpp b/netwerk/base/nsSocketTransportService2.cpp index 7a91b4c4fbbe..cb628479657e 100644 --- a/netwerk/base/nsSocketTransportService2.cpp +++ b/netwerk/base/nsSocketTransportService2.cpp @@ -1611,17 +1611,22 @@ nsSocketTransportService::GetSocketConnections(nsTArray *data) void nsSocketTransportService::StartPollWatchdog() { - MutexAutoLock lock(mLock); + // Start off the timer from a runnable off of the main thread in order to + // avoid a deadlock, see bug 1370448. + RefPtr self(this); + NS_DispatchToMainThread(NS_NewRunnableFunction([self] { + MutexAutoLock lock(self->mLock); - // Poll can hang sometimes. If we are in shutdown, we are going to start a - // watchdog. If we do not exit poll within REPAIR_POLLABLE_EVENT_TIME - // signal a pollable event again. - MOZ_ASSERT(gIOService->IsNetTearingDown()); - if (mPolling && !mPollRepairTimer) { - mPollRepairTimer = do_CreateInstance(NS_TIMER_CONTRACTID); - mPollRepairTimer->Init(this, REPAIR_POLLABLE_EVENT_TIME, - nsITimer::TYPE_REPEATING_SLACK); - } + // Poll can hang sometimes. If we are in shutdown, we are going to start a + // watchdog. If we do not exit poll within REPAIR_POLLABLE_EVENT_TIME + // signal a pollable event again. + MOZ_ASSERT(gIOService->IsNetTearingDown()); + if (self->mPolling && !self->mPollRepairTimer) { + self->mPollRepairTimer = do_CreateInstance(NS_TIMER_CONTRACTID); + self->mPollRepairTimer->Init(self, REPAIR_POLLABLE_EVENT_TIME, + nsITimer::TYPE_REPEATING_SLACK); + } + })); } void From 19d6dc61bbc4bb2d110026debf2ef74e983fd982 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 2 Jun 2017 20:40:12 -0400 Subject: [PATCH 65/71] Bug 1368286 - Take the idle queue into account in nsThread::HasPendingEvents(); r=smaug --- xpcom/threads/nsThread.cpp | 72 +++++++++++++++++++++++++++++++------- xpcom/threads/nsThread.h | 6 ++++ 2 files changed, 66 insertions(+), 12 deletions(-) diff --git a/xpcom/threads/nsThread.cpp b/xpcom/threads/nsThread.cpp index 2c5a18651a85..7939a9c9b17e 100644 --- a/xpcom/threads/nsThread.cpp +++ b/xpcom/threads/nsThread.cpp @@ -644,6 +644,7 @@ nsThread::nsThread(MainThreadFlag aMainThread, uint32_t aStackSize) , mIsMainThread(aMainThread) , mLastUnlabeledRunnable(TimeStamp::Now()) , mCanInvokeJS(false) + , mHasPendingEventsPromisedIdleEvent(false) { } @@ -1037,6 +1038,43 @@ nsThread::Shutdown() return NS_OK; } +TimeStamp +nsThread::GetIdleDeadline() +{ + TimeStamp idleDeadline; + { + // Releasing the lock temporarily since getting the idle period + // might need to lock the timer thread. Unlocking here might make + // us receive an event on the main queue, but we've committed to + // run an idle event anyhow. + MutexAutoUnlock unlock(mLock); + mIdlePeriod->GetIdlePeriodHint(&idleDeadline); + } + + // If HasPendingEvents() has been called and it has returned true because of + // pending idle events, there is a risk that we may decide here that we aren't + // idle and return null, in which case HasPendingEvents() has effectively + // lied. Since we can't go back and fix the past, we have to adjust what we + // do here and forcefully pick the idle queue task here. Note that this means + // that we are choosing to run a task from the idle queue when we would + // normally decide that we aren't in an idle period, but this can only happen + // if we fall out of the idle period in between the call to HasPendingEvents() + // and here, which should hopefully be quite rare. We are effectively + // choosing to prioritize the sanity of our API semantics over the optimal + // scheduling. + if (!mHasPendingEventsPromisedIdleEvent && + (!idleDeadline || idleDeadline < TimeStamp::Now())) { + return TimeStamp(); + } + if (mHasPendingEventsPromisedIdleEvent && !idleDeadline) { + // If HasPendingEvents() has been called and it has returned true, but we're no + // longer in the idle period, we must return a valid timestamp to pretend that + // we are still in the idle period. + return TimeStamp::Now(); + } + return idleDeadline; +} + NS_IMETHODIMP nsThread::HasPendingEvents(bool* aResult) { @@ -1046,7 +1084,21 @@ nsThread::HasPendingEvents(bool* aResult) { MutexAutoLock lock(mLock); - *aResult = mEvents->HasPendingEvent(lock); + mHasPendingEventsPromisedIdleEvent = false; + bool hasPendingEvent = mEvents->HasPendingEvent(lock); + bool hasPendingIdleEvent = false; + if (!hasPendingEvent) { + // Note that GetIdleDeadline() checks mHasPendingEventsPromisedIdleEvent, + // but that's OK since we set it to false in the beginning of this method! + TimeStamp idleDeadline = GetIdleDeadline(); + + // Only examine the idle queue if we are in an idle period. + if (idleDeadline) { + hasPendingIdleEvent = mIdleEvents.HasPendingEvent(lock); + mHasPendingEventsPromisedIdleEvent = hasPendingIdleEvent; + } + } + *aResult = hasPendingEvent || hasPendingIdleEvent; } return NS_OK; } @@ -1154,21 +1206,13 @@ nsThread::GetIdleEvent(nsIRunnable** aEvent, MutexAutoLock& aProofOfLock) MOZ_ASSERT(aEvent); if (!mIdleEvents.HasPendingEvent(aProofOfLock)) { + MOZ_ASSERT(!mHasPendingEventsPromisedIdleEvent); aEvent = nullptr; return; } - TimeStamp idleDeadline; - { - // Releasing the lock temporarily since getting the idle period - // might need to lock the timer thread. Unlocking here might make - // us receive an event on the main queue, but we've committed to - // run an idle event anyhow. - MutexAutoUnlock unlock(mLock); - mIdlePeriod->GetIdlePeriodHint(&idleDeadline); - } - - if (!idleDeadline || idleDeadline < TimeStamp::Now()) { + TimeStamp idleDeadline = GetIdleDeadline(); + if (!idleDeadline) { aEvent = nullptr; return; } @@ -1191,6 +1235,10 @@ nsThread::GetEvent(bool aWait, nsIRunnable** aEvent, MOZ_ASSERT(PR_GetCurrentThread() == mThread); MOZ_ASSERT(aEvent); + MakeScopeExit([&] { + mHasPendingEventsPromisedIdleEvent = false; + }); + // We'll try to get an event to execute in three stages. // [1] First we just try to get it from the regular queue without waiting. mEvents->GetEvent(false, aEvent, aPriority, aProofOfLock); diff --git a/xpcom/threads/nsThread.h b/xpcom/threads/nsThread.h index 0a0ff4827cff..e83b6a53f8f3 100644 --- a/xpcom/threads/nsThread.h +++ b/xpcom/threads/nsThread.h @@ -96,6 +96,8 @@ public: private: void DoMainThreadSpecificProcessing(bool aReallyWait); + // Returns a null TimeStamp if we're not in the idle period. + mozilla::TimeStamp GetIdleDeadline(); void GetIdleEvent(nsIRunnable** aEvent, mozilla::MutexAutoLock& aProofOfLock); void GetEvent(bool aWait, nsIRunnable** aEvent, unsigned short* aPriority, @@ -278,6 +280,10 @@ protected: // Set to true if this thread creates a JSRuntime. bool mCanInvokeJS; + // Set to true if HasPendingEvents() has been called and returned true because + // of a pending idle event. This is used to remember to return that idle + // event from GetIdleEvent() to ensure that HasPendingEvents() never lies. + bool mHasPendingEventsPromisedIdleEvent; }; #if defined(XP_UNIX) && !defined(ANDROID) && !defined(DEBUG) && HAVE_UALARM \ From 1545d39a00dc9044f3cc7d84c6e15bbc4a6ab596 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Tue, 6 Jun 2017 18:39:50 +0200 Subject: [PATCH 66/71] Backed out changeset eb0fe335fbe5 (bug 1359527) --- layout/reftests/w3c-css/submitted/masking/reftest.list | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layout/reftests/w3c-css/submitted/masking/reftest.list b/layout/reftests/w3c-css/submitted/masking/reftest.list index 41118dd9dee1..c101e3f97bcc 100644 --- a/layout/reftests/w3c-css/submitted/masking/reftest.list +++ b/layout/reftests/w3c-css/submitted/masking/reftest.list @@ -14,7 +14,7 @@ fuzzy-if(skiaContent,1,30000) == mask-mode-a.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-b.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-c.html mask-mode-ref.html fuzzy-if(skiaContent,1,30000) == mask-mode-d.html mask-mode-ref.html -fuzzy-if(skiaContent,1,30000) fuzzy-if(d2d,1,30000) == mask-mode-to-mask-type.html mask-mode-to-mask-type-ref.html +fuzzy-if(skiaContent,1,30000) == mask-mode-to-mask-type.html mask-mode-to-mask-type-ref.html # mask-image test cases == mask-image-1a.html mask-image-1-ref.html @@ -27,8 +27,8 @@ fuzzy-if(skiaContent||winWidget,1,20000) == mask-image-2.html mask-image-2-ref.h fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3c.html mask-image-3-ref.html fuzzy-if(skiaContent||winWidget,1,43) == mask-image-3d.html mask-image-3-ref.html == mask-image-3e.html mask-image-3-ref.html -fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) == mask-image-3f.html mask-image-3-ref.html -fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) fuzzy-if(d2d,255,1) == mask-image-3g.html mask-image-3-ref.html +fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) == mask-image-3f.html mask-image-3-ref.html +fuzzy-if(skiaContent||winWidget,50,85) fuzzy-if(webrender,1,126) == mask-image-3g.html mask-image-3-ref.html pref(layout.css.clip-path-shapes.enabled,true) fuzzy-if(winWidget,1,3) fuzzy-if(skiaContent,2,12) == mask-image-3h.html mask-image-3-ref.html fuzzy-if(skiaContent,71,203) == mask-image-3i.html mask-image-3-ref.html == mask-image-4a.html blank.html From ff1767bcb661ae64389a246ce9e870ccd800d978 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Tue, 6 Jun 2017 18:40:32 +0200 Subject: [PATCH 67/71] Backed out changeset f09499d7310c (bug 1359527) for Android bustage while processing gfx/2d/moz.build. r=backout --- gfx/2d/2D.h | 5 - gfx/2d/DrawTarget.cpp | 208 ------------------------------ gfx/2d/DrawTargetD2D1.cpp | 81 ++---------- gfx/2d/DrawTargetD2D1.h | 6 - gfx/2d/Types.h | 6 - gfx/2d/moz.build | 2 - layout/svg/moz.build | 4 + layout/svg/nsSVGMaskFrame.cpp | 198 +++++++++++++++++++++++++--- layout/svg/nsSVGMaskFrame.h | 15 +++ layout/svg/nsSVGMaskFrameNEON.cpp | 73 +++++++++++ layout/svg/nsSVGMaskFrameNEON.h | 19 +++ 11 files changed, 300 insertions(+), 317 deletions(-) create mode 100644 layout/svg/nsSVGMaskFrameNEON.cpp create mode 100644 layout/svg/nsSVGMaskFrameNEON.h diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h index 6676c9ee96ea..b12c3cd14c88 100644 --- a/gfx/2d/2D.h +++ b/gfx/2d/2D.h @@ -894,11 +894,6 @@ public: * normally return the same SourceSurface object. */ virtual already_AddRefed Snapshot() = 0; - - // Snapshots the contents and returns an alpha mask - // based on the RGB values. - virtual already_AddRefed IntoLuminanceSource(LuminanceType aLuminanceType, - float aOpacity); virtual IntSize GetSize() = 0; /** diff --git a/gfx/2d/DrawTarget.cpp b/gfx/2d/DrawTarget.cpp index 388097d9320b..4f89d05e8b64 100644 --- a/gfx/2d/DrawTarget.cpp +++ b/gfx/2d/DrawTarget.cpp @@ -9,172 +9,9 @@ #include "DrawTargetCapture.h" -#ifdef BUILD_ARM_NEON -#include "mozilla/arm.h" -#include "LuminanceNEON.h" -#endif - namespace mozilla { namespace gfx { -/** - * Byte offsets of channels in a native packed gfxColor or cairo image surface. - */ -#ifdef IS_BIG_ENDIAN -#define GFX_ARGB32_OFFSET_A 0 -#define GFX_ARGB32_OFFSET_R 1 -#define GFX_ARGB32_OFFSET_G 2 -#define GFX_ARGB32_OFFSET_B 3 -#else -#define GFX_ARGB32_OFFSET_A 3 -#define GFX_ARGB32_OFFSET_R 2 -#define GFX_ARGB32_OFFSET_G 1 -#define GFX_ARGB32_OFFSET_B 0 -#endif - -// c = n / 255 -// c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4)) * 255 + 0.5 -static const uint8_t gsRGBToLinearRGBMap[256] = { - 0, 0, 0, 0, 0, 0, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 5, 5, 5, - 5, 6, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 8, 9, 9, 9, 10, - 10, 10, 11, 11, 12, 12, 12, 13, - 13, 13, 14, 14, 15, 15, 16, 16, - 17, 17, 17, 18, 18, 19, 19, 20, - 20, 21, 22, 22, 23, 23, 24, 24, - 25, 25, 26, 27, 27, 28, 29, 29, - 30, 30, 31, 32, 32, 33, 34, 35, - 35, 36, 37, 37, 38, 39, 40, 41, - 41, 42, 43, 44, 45, 45, 46, 47, - 48, 49, 50, 51, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 76, 77, 78, 79, - 80, 81, 82, 84, 85, 86, 87, 88, - 90, 91, 92, 93, 95, 96, 97, 99, -100, 101, 103, 104, 105, 107, 108, 109, -111, 112, 114, 115, 116, 118, 119, 121, -122, 124, 125, 127, 128, 130, 131, 133, -134, 136, 138, 139, 141, 142, 144, 146, -147, 149, 151, 152, 154, 156, 157, 159, -161, 163, 164, 166, 168, 170, 171, 173, -175, 177, 179, 181, 183, 184, 186, 188, -190, 192, 194, 196, 198, 200, 202, 204, -206, 208, 210, 212, 214, 216, 218, 220, -222, 224, 226, 229, 231, 233, 235, 237, -239, 242, 244, 246, 248, 250, 253, 255 -}; - -static void -ComputesRGBLuminanceMask(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const IntSize &aSize, - float aOpacity) -{ -#ifdef BUILD_ARM_NEON - if (mozilla::supports_neon()) { - ComputesRGBLuminanceMask_NEON(aSourceData, aSourceStride, - aDestData, aDestStride, - aSize, aOpacity); - return; - } -#endif - - int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity - int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity - int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 - int32_t sourceOffset = aSourceStride - 4 * aSize.width; - const uint8_t *sourcePixel = aSourceData; - int32_t destOffset = aDestStride - aSize.width; - uint8_t *destPixel = aDestData; - - for (int32_t y = 0; y < aSize.height; y++) { - for (int32_t x = 0; x < aSize.width; x++) { - uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; - - if (a) { - *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R] + - greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + - blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; - } else { - *destPixel = 0; - } - sourcePixel += 4; - destPixel++; - } - sourcePixel += sourceOffset; - destPixel += destOffset; - } -} - -static void -ComputeLinearRGBLuminanceMask(const uint8_t *aSourceData, - int32_t aSourceStride, - uint8_t *aDestData, - int32_t aDestStride, - const IntSize &aSize, - float aOpacity) -{ - int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity - int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity - int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 - int32_t sourceOffset = aSourceStride - 4 * aSize.width; - const uint8_t *sourcePixel = aSourceData; - int32_t destOffset = aDestStride - aSize.width; - uint8_t *destPixel = aDestData; - - for (int32_t y = 0; y < aSize.height; y++) { - for (int32_t x = 0; x < aSize.width; x++) { - uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; - - // unpremultiply - if (a) { - if (a == 255) { - /* sRGB -> linearRGB -> intensity */ - *destPixel = - static_cast - ((gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_R]] * - redFactor + - gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_G]] * - greenFactor + - gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_B]] * - blueFactor) >> 8); - } else { - uint8_t tempPixel[4]; - tempPixel[GFX_ARGB32_OFFSET_B] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_B]) / a; - tempPixel[GFX_ARGB32_OFFSET_G] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_G]) / a; - tempPixel[GFX_ARGB32_OFFSET_R] = - (255 * sourcePixel[GFX_ARGB32_OFFSET_R]) / a; - - /* sRGB -> linearRGB -> intensity */ - *destPixel = - static_cast - (((gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_R]] * - redFactor + - gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_G]] * - greenFactor + - gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_B]] * - blueFactor) >> 8) * (a / 255.0f)); - } - } else { - *destPixel = 0; - } - sourcePixel += 4; - destPixel++; - } - sourcePixel += sourceOffset; - destPixel += destOffset; - } -} - already_AddRefed DrawTarget::CreateCaptureDT(const IntSize& aSize) { @@ -227,51 +64,6 @@ DrawTarget::StrokeGlyphs(ScaledFont* aFont, Stroke(path, aPattern, aStrokeOptions, aOptions); } -already_AddRefed -DrawTarget::IntoLuminanceSource(LuminanceType aMaskType, float aOpacity) -{ - RefPtr surface = Snapshot(); - IntSize size = surface->GetSize(); - - RefPtr maskSurface = surface->GetDataSurface(); - DataSourceSurface::MappedSurface map; - if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) { - return nullptr; - } - - // Create alpha channel mask for output - RefPtr destMaskSurface = - Factory::CreateDataSourceSurface(size, SurfaceFormat::A8); - if (!destMaskSurface) { - return nullptr; - } - DataSourceSurface::MappedSurface destMap; - if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) { - return nullptr; - } - - switch (aMaskType) { - case LuminanceType::LUMINANCE: - { - ComputesRGBLuminanceMask(map.mData, map.mStride, - destMap.mData, destMap.mStride, - size, aOpacity); - break; - } - case LuminanceType::LINEARRGB: - { - ComputeLinearRGBLuminanceMask(map.mData, map.mStride, - destMap.mData, destMap.mStride, - size, aOpacity); - break; - } - } - - maskSurface->Unmap(); - destMaskSurface->Unmap(); - - return destMaskSurface.forget(); -} } // namespace gfx } // namespace mozilla diff --git a/gfx/2d/DrawTargetD2D1.cpp b/gfx/2d/DrawTargetD2D1.cpp index 5dc7b14f646f..4b0f147b80cb 100644 --- a/gfx/2d/DrawTargetD2D1.cpp +++ b/gfx/2d/DrawTargetD2D1.cpp @@ -99,38 +99,6 @@ DrawTargetD2D1::Snapshot() return snapshot.forget(); } -void -DrawTargetD2D1::EnsureLuminanceEffect() -{ - if (mLuminanceEffect.get()) { - return; - } - - HRESULT hr = mDC->CreateEffect(CLSID_D2D1LuminanceToAlpha, - getter_AddRefs(mLuminanceEffect)); - if (FAILED(hr)) { - gfxWarning() << "Failed to create luminance effect. Code: " << hexa(hr); - } -} - -already_AddRefed -DrawTargetD2D1::IntoLuminanceSource(LuminanceType aLuminanceType, float aOpacity) -{ - //return DrawTarget::IntoLuminanceSource(aLuminanceType, aOpacity); - if (aLuminanceType != LuminanceType::LUMINANCE) { - return DrawTarget::IntoLuminanceSource(aLuminanceType, aOpacity); - } - - // Create the luminance effect - EnsureLuminanceEffect(); - mLuminanceEffect->SetInput(0, mBitmap); - - RefPtr luminanceOutput; - mLuminanceEffect->GetOutput(getter_AddRefs(luminanceOutput)); - - return MakeAndAddRef(luminanceOutput, mDC, SurfaceFormat::A8, mSize); -} - // Command lists are kept around by device contexts until EndDraw is called, // this can cause issues with memory usage (see bug 1238328). EndDraw/BeginDraw // are expensive though, especially relatively when little work is done, so @@ -380,48 +348,20 @@ DrawTargetD2D1::MaskSurface(const Pattern &aSource, PrepareForDrawing(aOptions.mCompositionOp, aSource); - IntSize size = IntSize::Truncate(aMask->GetSize().width, aMask->GetSize().height); - Rect dest = Rect(aOffset.x, aOffset.y, Float(size.width), Float(size.height)); - - HRESULT hr = image->QueryInterface((ID2D1Bitmap**)getter_AddRefs(bitmap)); - if (!bitmap || FAILED(hr)) { - // D2D says if we have an actual ID2D1Image and not a bitmap underlying the object, - // we can't query for a bitmap. Instead, Push/PopLayer - gfxWarning() << "FillOpacityMask only works with Bitmap source surfaces. Falling back to push/pop layer"; - - RefPtr source = CreateBrushForPattern(aSource, aOptions.mAlpha); - RefPtr maskBrush; - hr = mDC->CreateImageBrush(image, - D2D1::ImageBrushProperties(D2D1::RectF(0, 0, size.width, size.height)), - D2D1::BrushProperties(1.0f, D2D1::IdentityMatrix()), - getter_AddRefs(maskBrush)); - MOZ_ASSERT(SUCCEEDED(hr)); - - mDC->PushLayer(D2D1::LayerParameters1(D2D1::InfiniteRect(), nullptr, - D2D1_ANTIALIAS_MODE_PER_PRIMITIVE, - D2D1::IdentityMatrix(), - 1.0f, maskBrush, D2D1_LAYER_OPTIONS1_NONE), - nullptr); - - mDC->FillRectangle(D2DRect(dest), source); - mDC->PopLayer(); - - FinalizeDrawing(aOptions.mCompositionOp, aSource); - return; - } else { - // If this is a data source surface, we might have created a partial bitmap - // for this surface and only uploaded part of the mask. In that case, - // we have to fixup our sizes here. - size.width = bitmap->GetSize().width; - size.height = bitmap->GetSize().height; - dest.width = size.width; - dest.height = size.height; - } - // FillOpacityMask only works if the antialias mode is MODE_ALIASED mDC->SetAntialiasMode(D2D1_ANTIALIAS_MODE_ALIASED); + image->QueryInterface((ID2D1Bitmap**)getter_AddRefs(bitmap)); + if (!bitmap) { + gfxWarning() << "FillOpacityMask only works with Bitmap source surfaces."; + return; + } + + IntSize size = IntSize::Truncate(bitmap->GetSize().width, bitmap->GetSize().height); + Rect maskRect = Rect(0.f, 0.f, Float(size.width), Float(size.height)); + + Rect dest = Rect(aOffset.x, aOffset.y, Float(size.width), Float(size.height)); RefPtr brush = CreateBrushForPattern(aSource, aOptions.mAlpha); mDC->FillOpacityMask(bitmap, brush, D2D1_OPACITY_MASK_CONTENT_GRAPHICS, D2DRect(dest), D2DRect(maskRect)); @@ -1931,6 +1871,7 @@ DrawTargetD2D1::GetImageForSurface(SourceSurface *aSurface, Matrix &aSourceTrans bool aUserSpace) { RefPtr image; + switch (aSurface->GetType()) { case SurfaceType::D2D1_1_IMAGE: { diff --git a/gfx/2d/DrawTargetD2D1.h b/gfx/2d/DrawTargetD2D1.h index 8154461213cd..68de9b332036 100644 --- a/gfx/2d/DrawTargetD2D1.h +++ b/gfx/2d/DrawTargetD2D1.h @@ -36,8 +36,6 @@ public: virtual DrawTargetType GetType() const override { return DrawTargetType::HARDWARE_RASTER; } virtual BackendType GetBackendType() const override { return BackendType::DIRECT2D1_1; } virtual already_AddRefed Snapshot() override; - virtual already_AddRefed IntoLuminanceSource(LuminanceType aLuminanceType, - float aOpacity) override; virtual IntSize GetSize() override { return mSize; } virtual void Flush() override; @@ -297,10 +295,6 @@ private: static IDWriteFactory *mDWriteFactory; // This value is uesed to verify if the DrawTarget is created by a stale device. uint32_t mDeviceSeq; - - // List of effects we use - void EnsureLuminanceEffect(); - RefPtr mLuminanceEffect; }; } diff --git a/gfx/2d/Types.h b/gfx/2d/Types.h index 036c6ae13b67..28d203bb0562 100644 --- a/gfx/2d/Types.h +++ b/gfx/2d/Types.h @@ -278,12 +278,6 @@ enum class SamplingBounds : int8_t { BOUNDED }; -// Moz2d version for SVG mask types -enum class LuminanceType : int8_t { - LUMINANCE, - LINEARRGB, -}; - /* Color is stored in non-premultiplied form */ struct Color { diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build index 6cf2f65e4f6c..dd46590aa96e 100644 --- a/gfx/2d/moz.build +++ b/gfx/2d/moz.build @@ -220,11 +220,9 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']: SOURCES += [ 'BlurNEON.cpp', - 'LuminanceNEON.cpp', 'SwizzleNEON.cpp', ] SOURCES['BlurNEON.cpp'].flags += CONFIG['NEON_FLAGS'] - SOURCES['LuminanceNEON.cpp'].flags += CONFIG['NEON_FLAGS'] SOURCES['SwizzleNEON.cpp'].flags += CONFIG['NEON_FLAGS'] include('/ipc/chromium/chromium-config.mozbuild') diff --git a/layout/svg/moz.build b/layout/svg/moz.build index f64577dcdb66..60e0c2d0c94a 100644 --- a/layout/svg/moz.build +++ b/layout/svg/moz.build @@ -66,6 +66,10 @@ UNIFIED_SOURCES += [ 'SVGViewFrame.cpp', ] +if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['BUILD_ARM_NEON']: + SOURCES += ['nsSVGMaskFrameNEON.cpp'] + SOURCES['nsSVGMaskFrameNEON.cpp'].flags += CONFIG['NEON_FLAGS'] + FINAL_LIBRARY = 'xul' LOCAL_INCLUDES += [ '../../widget', diff --git a/layout/svg/nsSVGMaskFrame.cpp b/layout/svg/nsSVGMaskFrame.cpp index dc31e18523fc..12f201b454be 100644 --- a/layout/svg/nsSVGMaskFrame.cpp +++ b/layout/svg/nsSVGMaskFrame.cpp @@ -14,28 +14,162 @@ #include "mozilla/RefPtr.h" #include "nsSVGEffects.h" #include "mozilla/dom/SVGMaskElement.h" +#ifdef BUILD_ARM_NEON +#include "mozilla/arm.h" +#include "nsSVGMaskFrameNEON.h" +#endif using namespace mozilla; using namespace mozilla::dom; using namespace mozilla::gfx; using namespace mozilla::image; -static LuminanceType -GetLuminanceType(uint8_t aNSMaskType) +// c = n / 255 +// c <= 0.04045 ? c / 12.92 : pow((c + 0.055) / 1.055, 2.4)) * 255 + 0.5 +static const uint8_t gsRGBToLinearRGBMap[256] = { + 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 3, 3, 3, + 4, 4, 4, 4, 4, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, + 8, 8, 8, 8, 9, 9, 9, 10, + 10, 10, 11, 11, 12, 12, 12, 13, + 13, 13, 14, 14, 15, 15, 16, 16, + 17, 17, 17, 18, 18, 19, 19, 20, + 20, 21, 22, 22, 23, 23, 24, 24, + 25, 25, 26, 27, 27, 28, 29, 29, + 30, 30, 31, 32, 32, 33, 34, 35, + 35, 36, 37, 37, 38, 39, 40, 41, + 41, 42, 43, 44, 45, 45, 46, 47, + 48, 49, 50, 51, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 76, 77, 78, 79, + 80, 81, 82, 84, 85, 86, 87, 88, + 90, 91, 92, 93, 95, 96, 97, 99, +100, 101, 103, 104, 105, 107, 108, 109, +111, 112, 114, 115, 116, 118, 119, 121, +122, 124, 125, 127, 128, 130, 131, 133, +134, 136, 138, 139, 141, 142, 144, 146, +147, 149, 151, 152, 154, 156, 157, 159, +161, 163, 164, 166, 168, 170, 171, 173, +175, 177, 179, 181, 183, 184, 186, 188, +190, 192, 194, 196, 198, 200, 202, 204, +206, 208, 210, 212, 214, 216, 218, 220, +222, 224, 226, 229, 231, 233, 235, 237, +239, 242, 244, 246, 248, 250, 253, 255 +}; + +static void +ComputesRGBLuminanceMask(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const IntSize &aSize, + float aOpacity) { - switch (aNSMaskType) { - case NS_STYLE_MASK_TYPE_LUMINANCE: - return LuminanceType::LUMINANCE; - case NS_STYLE_COLOR_INTERPOLATION_LINEARRGB: - return LuminanceType::LINEARRGB; - default: - { - NS_WARNING("Unknown SVG mask type, defaulting to luminance"); - return LuminanceType::LUMINANCE; +#ifdef BUILD_ARM_NEON + if (mozilla::supports_neon()) { + ComputesRGBLuminanceMask_NEON(aSourceData, aSourceStride, + aDestData, aDestStride, + aSize, aOpacity); + return; + } +#endif + + int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity + int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity + int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 + int32_t sourceOffset = aSourceStride - 4 * aSize.width; + const uint8_t *sourcePixel = aSourceData; + int32_t destOffset = aDestStride - aSize.width; + uint8_t *destPixel = aDestData; + + for (int32_t y = 0; y < aSize.height; y++) { + for (int32_t x = 0; x < aSize.width; x++) { + uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; + + if (a) { + *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R] + + greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + + blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; + } else { + *destPixel = 0; + } + sourcePixel += 4; + destPixel++; } + sourcePixel += sourceOffset; + destPixel += destOffset; } } +static void +ComputeLinearRGBLuminanceMask(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const IntSize &aSize, + float aOpacity) +{ + int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity + int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity + int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 + int32_t sourceOffset = aSourceStride - 4 * aSize.width; + const uint8_t *sourcePixel = aSourceData; + int32_t destOffset = aDestStride - aSize.width; + uint8_t *destPixel = aDestData; + + for (int32_t y = 0; y < aSize.height; y++) { + for (int32_t x = 0; x < aSize.width; x++) { + uint8_t a = sourcePixel[GFX_ARGB32_OFFSET_A]; + + // unpremultiply + if (a) { + if (a == 255) { + /* sRGB -> linearRGB -> intensity */ + *destPixel = + static_cast + ((gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_R]] * + redFactor + + gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_G]] * + greenFactor + + gsRGBToLinearRGBMap[sourcePixel[GFX_ARGB32_OFFSET_B]] * + blueFactor) >> 8); + } else { + uint8_t tempPixel[4]; + tempPixel[GFX_ARGB32_OFFSET_B] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_B]) / a; + tempPixel[GFX_ARGB32_OFFSET_G] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_G]) / a; + tempPixel[GFX_ARGB32_OFFSET_R] = + (255 * sourcePixel[GFX_ARGB32_OFFSET_R]) / a; + + /* sRGB -> linearRGB -> intensity */ + *destPixel = + static_cast + (((gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_R]] * + redFactor + + gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_G]] * + greenFactor + + gsRGBToLinearRGBMap[tempPixel[GFX_ARGB32_OFFSET_B]] * + blueFactor) >> 8) * (a / 255.0f)); + } + } else { + *destPixel = 0; + } + sourcePixel += 4; + destPixel++; + } + sourcePixel += sourceOffset; + destPixel += destOffset; + } +} + +//---------------------------------------------------------------------- +// Implementation + nsIFrame* NS_NewSVGMaskFrame(nsIPresShell* aPresShell, nsStyleContext* aContext) { @@ -124,20 +258,44 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams) nsSVGUtils::PaintFrameWithEffects(kid, *tmpCtx, m, aParams.imgParams); } - if (StyleSVG()->mColorInterpolation == - NS_STYLE_COLOR_INTERPOLATION_LINEARRGB) { - maskType = NS_STYLE_COLOR_INTERPOLATION_LINEARRGB; - } - RefPtr surface; if (maskType == NS_STYLE_MASK_TYPE_LUMINANCE) { - RefPtr maskSnapshot = - maskDT->IntoLuminanceSource(GetLuminanceType(maskType), - aParams.opacity); + RefPtr maskSnapshot = maskDT->Snapshot(); if (!maskSnapshot) { return nullptr; } - surface = maskSnapshot.forget(); + + RefPtr maskSurface = maskSnapshot->GetDataSurface(); + DataSourceSurface::MappedSurface map; + if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) { + return nullptr; + } + + // Create alpha channel mask for output + RefPtr destMaskSurface = + Factory::CreateDataSourceSurface(maskSurfaceSize, SurfaceFormat::A8); + if (!destMaskSurface) { + return nullptr; + } + DataSourceSurface::MappedSurface destMap; + if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) { + return nullptr; + } + + if (StyleSVG()->mColorInterpolation == + NS_STYLE_COLOR_INTERPOLATION_LINEARRGB) { + ComputeLinearRGBLuminanceMask(map.mData, map.mStride, + destMap.mData, destMap.mStride, + maskSurfaceSize, aParams.opacity); + } else { + ComputesRGBLuminanceMask(map.mData, map.mStride, + destMap.mData, destMap.mStride, + maskSurfaceSize, aParams.opacity); + } + + maskSurface->Unmap(); + destMaskSurface->Unmap(); + surface = destMaskSurface.forget(); } else { maskDT->SetTransform(Matrix()); maskDT->FillRect(Rect(0, 0, maskSurfaceSize.width, maskSurfaceSize.height), ColorPattern(Color(1.0f, 1.0f, 1.0f, aParams.opacity)), DrawOptions(1, CompositionOp::OP_IN)); diff --git a/layout/svg/nsSVGMaskFrame.h b/layout/svg/nsSVGMaskFrame.h index bc937cb38633..b8ccfda754c2 100644 --- a/layout/svg/nsSVGMaskFrame.h +++ b/layout/svg/nsSVGMaskFrame.h @@ -16,6 +16,21 @@ class gfxContext; +/** + * Byte offsets of channels in a native packed gfxColor or cairo image surface. + */ +#ifdef IS_BIG_ENDIAN +#define GFX_ARGB32_OFFSET_A 0 +#define GFX_ARGB32_OFFSET_R 1 +#define GFX_ARGB32_OFFSET_G 2 +#define GFX_ARGB32_OFFSET_B 3 +#else +#define GFX_ARGB32_OFFSET_A 3 +#define GFX_ARGB32_OFFSET_R 2 +#define GFX_ARGB32_OFFSET_G 1 +#define GFX_ARGB32_OFFSET_B 0 +#endif + class nsSVGMaskFrame final : public nsSVGContainerFrame { friend nsIFrame* diff --git a/layout/svg/nsSVGMaskFrameNEON.cpp b/layout/svg/nsSVGMaskFrameNEON.cpp new file mode 100644 index 000000000000..f690b8164dea --- /dev/null +++ b/layout/svg/nsSVGMaskFrameNEON.cpp @@ -0,0 +1,73 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsSVGMaskFrameNEON.h" +#include "nsSVGMaskFrame.h" +#include + +using namespace mozilla::gfx; + +void +ComputesRGBLuminanceMask_NEON(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const IntSize &aSize, + float aOpacity) +{ + int32_t redFactor = 55 * aOpacity; // 255 * 0.2125 * opacity + int32_t greenFactor = 183 * aOpacity; // 255 * 0.7154 * opacity + int32_t blueFactor = 18 * aOpacity; // 255 * 0.0721 + const uint8_t *sourcePixel = aSourceData; + int32_t sourceOffset = aSourceStride - 4 * aSize.width; + uint8_t *destPixel = aDestData; + int32_t destOffset = aDestStride - aSize.width; + + sourcePixel = aSourceData; + int32_t remainderWidth = aSize.width % 8; + int32_t roundedWidth = aSize.width - remainderWidth; + uint16x8_t temp; + uint8x8_t gray; + uint8x8_t redVector = vdup_n_u8(redFactor); + uint8x8_t greenVector = vdup_n_u8(greenFactor); + uint8x8_t blueVector = vdup_n_u8(blueFactor); + uint8x8_t fullBitVector = vdup_n_u8(255); + uint8x8_t oneVector = vdup_n_u8(1); + for (int32_t y = 0; y < aSize.height; y++) { + // Calculate luminance by neon with 8 pixels per loop + for (int32_t x = 0; x < roundedWidth; x += 8) { + uint8x8x4_t argb = vld4_u8(sourcePixel); + temp = vmull_u8(argb.val[GFX_ARGB32_OFFSET_R], redVector); // temp = red * redFactor + temp = vmlal_u8(temp, argb.val[GFX_ARGB32_OFFSET_G], greenVector); // temp += green * greenFactor + temp = vmlal_u8(temp, argb.val[GFX_ARGB32_OFFSET_B], blueVector); // temp += blue * blueFactor + gray = vshrn_n_u16(temp, 8); // gray = temp >> 8 + + // Check alpha value + uint8x8_t alphaVector = vtst_u8(argb.val[GFX_ARGB32_OFFSET_A], fullBitVector); + gray = vmul_u8(gray, vand_u8(alphaVector, oneVector)); + + // Put the result to the 8 pixels + vst1_u8(destPixel, gray); + sourcePixel += 8 * 4; + destPixel += 8; + } + + // Calculate the rest pixels of the line by cpu + for (int32_t x = 0; x < remainderWidth; x++) { + if (sourcePixel[GFX_ARGB32_OFFSET_A] > 0) { + *destPixel = (redFactor * sourcePixel[GFX_ARGB32_OFFSET_R]+ + greenFactor * sourcePixel[GFX_ARGB32_OFFSET_G] + + blueFactor * sourcePixel[GFX_ARGB32_OFFSET_B]) >> 8; + } else { + *destPixel = 0; + } + sourcePixel += 4; + destPixel++; + } + sourcePixel += sourceOffset; + destPixel += destOffset; + } +} + diff --git a/layout/svg/nsSVGMaskFrameNEON.h b/layout/svg/nsSVGMaskFrameNEON.h new file mode 100644 index 000000000000..1da901ba7f41 --- /dev/null +++ b/layout/svg/nsSVGMaskFrameNEON.h @@ -0,0 +1,19 @@ +/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* this source code form is subject to the terms of the mozilla public + * license, v. 2.0. if a copy of the mpl was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef __NS_SVGMASKFRAMENEON_H__ +#define __NS_SVGMASKFRAMENEON_H__ + +#include "mozilla/gfx/Point.h" + +void +ComputesRGBLuminanceMask_NEON(const uint8_t *aSourceData, + int32_t aSourceStride, + uint8_t *aDestData, + int32_t aDestStride, + const mozilla::gfx::IntSize &aSize, + float aOpacity); + +#endif /* __NS_SVGMASKFRAMENEON_H__ */ From 3491e1213bdabb5eccda757f1ddb700260b7e27c Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Mon, 5 Jun 2017 11:25:34 -0700 Subject: [PATCH 68/71] Bug 1294075 - Disable marionette accessibility test on headless. --- .../harness/marionette_harness/tests/unit/unit-tests.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.ini b/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.ini index 3aa10486b108..2ec015aa16eb 100644 --- a/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.ini +++ b/testing/marionette/harness/marionette_harness/tests/unit/unit-tests.ini @@ -4,6 +4,7 @@ [test_session.py] [test_capabilities.py] [test_accessibility.py] +skip-if = headless # Bug 1294075 and 1341493 [test_expectedfail.py] expected = fail [test_click.py] From 37582b662f5be5dbd672520b5b2122d9e592c566 Mon Sep 17 00:00:00 2001 From: Gregory Szorc Date: Tue, 6 Jun 2017 11:09:58 -0700 Subject: [PATCH 69/71] Bug 1370539 - Fix logic error around skipping package metrics; r=nalexander, a=RyanVM b227363d66bb added a config item and code for disabling package metrics, which don't work everywhere. The previous logic was faulty. MozReview-Commit-ID: BGxWgmWxXyH Pushing on a CLOSED TREE --HG-- extra : amend_source : 99ca472e4c0fca306deec4038e9c7cbfe5412b0a --- testing/mozharness/mozharness/mozilla/building/buildbase.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing/mozharness/mozharness/mozilla/building/buildbase.py b/testing/mozharness/mozharness/mozilla/building/buildbase.py index cc77e40a9e82..f620559be221 100755 --- a/testing/mozharness/mozharness/mozilla/building/buildbase.py +++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py @@ -2033,7 +2033,7 @@ or run without that action (ie: --no-{action})" "suites": [], } - if not c.get('debug_build') or c.get('disable_package_metrics'): + if not c.get('debug_build') and not c.get('disable_package_metrics'): perfherder_data['suites'].extend(self._get_package_metrics()) # Extract compiler warnings count. From 6ccfb3e58fa0ecb7cb4ed207727ab0cdd81546be Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Tue, 6 Jun 2017 13:04:39 -0700 Subject: [PATCH 70/71] Backed out 2 changesets (bug 1360581) for failures in test_workerupdatefoundevent.html a=backout CLOSED TREE Backed out changeset d1c5998858a3 (bug 1360581) Backed out changeset 4d81e7dfd020 (bug 1360581) MozReview-Commit-ID: L0a89WRiv2R --- netwerk/base/nsChannelClassifier.cpp | 450 ++++++------------------ netwerk/base/nsChannelClassifier.h | 18 +- netwerk/protocol/http/HttpBaseChannel.h | 2 +- netwerk/protocol/http/nsHttpChannel.cpp | 51 ++- netwerk/protocol/http/nsHttpChannel.h | 14 - 5 files changed, 142 insertions(+), 393 deletions(-) diff --git a/netwerk/base/nsChannelClassifier.cpp b/netwerk/base/nsChannelClassifier.cpp index 8e8d7ce998bf..f6163364c69a 100644 --- a/netwerk/base/nsChannelClassifier.cpp +++ b/netwerk/base/nsChannelClassifier.cpp @@ -56,7 +56,6 @@ static LazyLogModule gChannelClassifierLog("nsChannelClassifier"); #define URLCLASSIFIER_SKIP_HOSTNAMES "urlclassifier.skipHostnames" #define URLCLASSIFIER_TRACKING_WHITELIST "urlclassifier.trackingWhitelistTable" -#define URLCLASSIFIER_TRACKING_TABLE "urlclassifier.trackingTable" // Put CachedPrefs in anonymous namespace to avoid any collision from outside of // this file. @@ -80,8 +79,6 @@ public: void SetTrackingWhiteList(const nsACString& aList) { mTrackingWhitelist = aList; } nsCString GetSkipHostnames() { return mSkipHostnames; } void SetSkipHostnames(const nsACString& aHostnames) { mSkipHostnames = aHostnames; } - void SetTrackingBlackList(const nsACString& aList) { mTrackingBlacklist = aList; } - nsCString GetTrackingBlackList() { return mTrackingBlacklist; } private: friend class StaticAutoPtr; @@ -100,7 +97,6 @@ private: nsCString mTrackingWhitelist; nsCString mSkipHostnames; - nsCString mTrackingBlacklist; static StaticAutoPtr sInstance; }; @@ -124,9 +120,6 @@ CachedPrefs::OnPrefsChange(const char* aPref, void* aClosure) } else if (!strcmp(aPref, URLCLASSIFIER_TRACKING_WHITELIST)) { nsCString trackingWhitelist = Preferences::GetCString(URLCLASSIFIER_TRACKING_WHITELIST); prefs->SetTrackingWhiteList(trackingWhitelist); - } else if (!strcmp(aPref, URLCLASSIFIER_TRACKING_TABLE)) { - nsCString trackingBlacklist = Preferences::GetCString(URLCLASSIFIER_TRACKING_TABLE); - prefs->SetTrackingBlackList(trackingBlacklist); } } @@ -143,8 +136,6 @@ CachedPrefs::Init() URLCLASSIFIER_SKIP_HOSTNAMES, this); Preferences::RegisterCallbackAndCall(CachedPrefs::OnPrefsChange, URLCLASSIFIER_TRACKING_WHITELIST, this); - Preferences::RegisterCallbackAndCall(CachedPrefs::OnPrefsChange, - URLCLASSIFIER_TRACKING_TABLE, this); } @@ -175,36 +166,6 @@ CachedPrefs::~CachedPrefs() } } // anonymous namespace -static void -SetIsTrackingResourceHelper(nsIChannel* aChannel) -{ - MOZ_ASSERT(aChannel); - - nsCOMPtr parentChannel; - NS_QueryNotificationCallbacks(aChannel, parentChannel); - if (parentChannel) { - // This channel is a parent-process proxy for a child process - // request. We should notify the child process as well. - parentChannel->NotifyTrackingResource(); - } - - RefPtr httpChannel = do_QueryObject(aChannel); - if (httpChannel) { - httpChannel->SetIsTrackingResource(); - } -} - -static void -LowerPriorityHelper(nsIChannel* aChannel) -{ - MOZ_ASSERT(aChannel); - - nsCOMPtr p = do_QueryInterface(aChannel); - if (p) { - p->SetPriority(nsISupportsPriority::PRIORITY_LOWEST); - } -} - NS_IMPL_ISUPPORTS(nsChannelClassifier, nsIURIClassifierCallback, nsIObserver) @@ -221,11 +182,6 @@ nsChannelClassifier::nsChannelClassifier(nsIChannel *aChannel) nsresult nsChannelClassifier::ShouldEnableTrackingProtection(bool *result) { - if (mTrackingProtectionEnabled) { - *result = mTrackingProtectionEnabled.value(); - return NS_OK; - } - nsresult rv = ShouldEnableTrackingProtectionInternal(mChannel, result); mTrackingProtectionEnabled = Some(*result); return rv; @@ -540,8 +496,11 @@ nsChannelClassifier::StartInternal() bool expectCallback; bool trackingProtectionEnabled = false; - rv = ShouldEnableTrackingProtection(&trackingProtectionEnabled); - NS_ENSURE_SUCCESS(rv, rv); + if (mTrackingProtectionEnabled.isNothing()) { + (void)ShouldEnableTrackingProtection(&trackingProtectionEnabled); + } else { + trackingProtectionEnabled = mTrackingProtectionEnabled.value(); + } if (LOG_ENABLED()) { nsCOMPtr principalURI; @@ -553,7 +512,8 @@ nsChannelClassifier::StartInternal() // The classify is running in parent process, no need to give a valid event // target rv = uriClassifier->Classify(principal, nullptr, - trackingProtectionEnabled, + CachedPrefs::GetInstance()->IsAnnotateChannelEnabled() || + trackingProtectionEnabled, this, &expectCallback); if (NS_FAILED(rv)) { return rv; @@ -810,68 +770,29 @@ nsChannelClassifier::SetBlockedContent(nsIChannel *channel, namespace { -// The purpose of this class is only for implementing all nsISupports methods. -// This is a workaround for template derived class. -class URIClassifierCallbackBase : public nsIURIClassifierCallback { +class IsTrackerWhitelistedCallback final : public nsIURIClassifierCallback { public: - URIClassifierCallbackBase() = default; - - NS_DECL_THREADSAFE_ISUPPORTS - -protected: - virtual ~URIClassifierCallbackBase() = default; -}; - -NS_IMPL_ISUPPORTS(URIClassifierCallbackBase, nsIURIClassifierCallback) - -// A template class for reusing the code. -// OnClassifyCompleteInternal will be called to pass the result. -template -class IsTrackerWhitelistedCallback final : public URIClassifierCallbackBase { -public: - explicit IsTrackerWhitelistedCallback(T* aClosure, + explicit IsTrackerWhitelistedCallback(nsChannelClassifier* aClosure, const nsACString& aList, const nsACString& aProvider, const nsACString& aPrefix, - nsIURI* aWhitelistURI) + const nsACString& aWhitelistEntry) : mClosure(aClosure) - , mWhitelistURI(aWhitelistURI) + , mWhitelistEntry(aWhitelistEntry) , mList(aList) , mProvider(aProvider) , mPrefix(aPrefix) { } - NS_IMETHOD OnClassifyComplete(nsresult /*aErrorCode*/, - const nsACString& aLists, // Only this matters. - const nsACString& /*aProvider*/, - const nsACString& /*aPrefix*/) override - { - nsresult rv; - if (aLists.IsEmpty()) { - if (LOG_ENABLED()) { - MOZ_ASSERT(mWhitelistURI); - - LOG(("nsChannelClassifier[%p]: %s is not in the whitelist", - mClosure.get(), mWhitelistURI->GetSpecOrDefault().get())); - } - rv = NS_ERROR_TRACKING_URI; - } else { - LOG(("nsChannelClassifier[%p]:OnClassifyComplete tracker found " - "in whitelist so we won't block it", mClosure.get())); - rv = NS_OK; - } - - rv = mClosure->OnClassifyCompleteInternal(rv, mList, mProvider, mPrefix); - mClosure = nullptr; - return rv; - } + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIURICLASSIFIERCALLBACK private: ~IsTrackerWhitelistedCallback() = default; - RefPtr mClosure; - nsCOMPtr mWhitelistURI; + RefPtr mClosure; + nsCString mWhitelistEntry; // The following 3 values are for forwarding the callback. nsCString mList; @@ -879,192 +800,36 @@ private: nsCString mPrefix; }; -// This class is designed to get the results of checking blacklist and whitelist. -// 1. The result of local blacklist will be sent back via -// OnClassifyComplete, which is called by nsIURIClassifier service. -// 2. The result of local whitelist is got via OnClassifyCompleteInternal, -// which is called by IsTrackerWhitelistedCallback::OnClassifyComplete. -class IsTrackerBlacklistedCallback final : public nsIURIClassifierCallback { -public: - explicit IsTrackerBlacklistedCallback(nsChannelClassifier* aChannelClassifier, - nsIURIClassifierCallback* aCallback) - : mChannelClassifier(aChannelClassifier) - , mChannelCallback(aCallback) - { - } +NS_IMPL_ISUPPORTS(IsTrackerWhitelistedCallback, nsIURIClassifierCallback) - NS_DECL_THREADSAFE_ISUPPORTS - NS_DECL_NSIURICLASSIFIERCALLBACK - - nsresult OnClassifyCompleteInternal(nsresult aErrorCode, - const nsACString& aList, - const nsACString& aProvider, - const nsACString& aPrefix); - -private: - ~IsTrackerBlacklistedCallback() = default; - - RefPtr mChannelClassifier; - nsCOMPtr mChannelCallback; -}; - -NS_IMPL_ISUPPORTS(IsTrackerBlacklistedCallback, nsIURIClassifierCallback) /*virtual*/ nsresult -IsTrackerBlacklistedCallback::OnClassifyComplete(nsresult aErrorCode, - const nsACString& aLists, - const nsACString& aProvider, - const nsACString& aPrefix) +IsTrackerWhitelistedCallback::OnClassifyComplete(nsresult /*aErrorCode*/, + const nsACString& aLists, // Only this matters. + const nsACString& /*aProvider*/, + const nsACString& /*aPrefix*/) { - nsresult status = aLists.IsEmpty() ? NS_OK : NS_ERROR_TRACKING_URI; - bool tpEnabled = false; - mChannelClassifier->ShouldEnableTrackingProtection(&tpEnabled); - - LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete " - " status=0x%" PRIx32 ", tpEnabled=%d", - mChannelClassifier.get(), static_cast(status), tpEnabled)); - - // If this is not in local blacklist or tracking protection is enabled, - // directly send the status back. - // The whitelist will be checked at nsChannelClassifier::OnClassifyComplete - // when tracking protection is enabled, so we can just return here. - if (NS_SUCCEEDED(status) || tpEnabled) { - return mChannelCallback->OnClassifyComplete( - status, aLists, aProvider, aPrefix); + nsresult rv; + if (aLists.IsEmpty()) { + LOG(("nsChannelClassifier[%p]: %s is not in the whitelist", + mClosure.get(), mWhitelistEntry.get())); + rv = NS_ERROR_TRACKING_URI; + } else { + LOG(("nsChannelClassifier[%p]:OnClassifyComplete tracker found " + "in whitelist so we won't block it", mClosure.get())); + rv = NS_OK; } - nsCOMPtr channel = mChannelClassifier->GetChannel(); - if (LOG_ENABLED()) { - nsCOMPtr uri; - channel->GetURI(getter_AddRefs(uri)); - LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete channel [%p] " - "uri=%s, is in blacklist. Start checking whitelist.", - mChannelClassifier.get(), channel.get(), - uri->GetSpecOrDefault().get())); - } - - nsCOMPtr whitelistURI = mChannelClassifier->CreateWhiteListURI(); - nsCOMPtr callback = - new IsTrackerWhitelistedCallback( - this, aLists, aProvider, aPrefix, whitelistURI); - - // If IsTrackerWhitelisted has failed, it means the uri is not in whitelist. - if (NS_FAILED(mChannelClassifier->IsTrackerWhitelisted(whitelistURI, callback))) { - LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyComplete channel [%p] " - "IsTrackerWhitelisted has failed.", - mChannelClassifier.get(), channel.get())); - - MOZ_ASSERT(CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()); - - SetIsTrackingResourceHelper(channel); - if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { - LowerPriorityHelper(channel); - } - - // We don't want to disable speculative connection when tracking protection - // is disabled. So, change the status to NS_OK. - status = NS_OK; - - return mChannelCallback->OnClassifyComplete( - status, aLists, aProvider, aPrefix); - } - - // OnClassifyCompleteInternal() will be called once we know - // if the tracker is whitelisted. - return NS_OK; -} - -nsresult -IsTrackerBlacklistedCallback::OnClassifyCompleteInternal(nsresult aErrorCode, - const nsACString& aLists, - const nsACString& aProvider, - const nsACString& aPrefix) -{ - LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyCompleteInternal" - " status=0x%" PRIx32, - mChannelClassifier.get(), static_cast(aErrorCode))); - - if (NS_SUCCEEDED(aErrorCode)) { - return mChannelCallback->OnClassifyComplete( - aErrorCode, aLists, aProvider, aPrefix); - } - - MOZ_ASSERT(CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()); - MOZ_ASSERT(aErrorCode == NS_ERROR_TRACKING_URI); - - nsCOMPtr channel = mChannelClassifier->GetChannel(); - if (LOG_ENABLED()) { - nsCOMPtr uri; - channel->GetURI(getter_AddRefs(uri)); - LOG(("IsTrackerBlacklistedCallback[%p]:OnClassifyCompleteInternal " - "channel [%p] uri=%s, is not in whitelist", - mChannelClassifier.get(), channel.get(), - uri->GetSpecOrDefault().get())); - } - - SetIsTrackingResourceHelper(channel); - if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { - LowerPriorityHelper(channel); - } - - return mChannelCallback->OnClassifyComplete( - NS_OK, aLists, aProvider, aPrefix); + return mClosure->OnClassifyCompleteInternal(rv, mList, mProvider, mPrefix); } } // end of unnamed namespace/ -already_AddRefed -nsChannelClassifier::CreateWhiteListURI() const -{ - nsresult rv; - nsCOMPtr chan = do_QueryInterface(mChannel, &rv); - if (!chan) { - return nullptr; - } - - nsCOMPtr topWinURI; - rv = chan->GetTopWindowURI(getter_AddRefs(topWinURI)); - NS_ENSURE_SUCCESS(rv, nullptr); - if (!topWinURI) { - LOG(("nsChannelClassifier[%p]: No window URI", this)); - return nullptr; - } - - nsCOMPtr securityManager = - do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); - NS_ENSURE_SUCCESS(rv, nullptr); - nsCOMPtr chanPrincipal; - rv = securityManager->GetChannelURIPrincipal(mChannel, - getter_AddRefs(chanPrincipal)); - if (NS_FAILED(rv)) { - return nullptr; - } - - // Craft a whitelist URL like "toplevel.page/?resource=third.party.domain" - nsAutoCString pageHostname, resourceDomain; - rv = topWinURI->GetHost(pageHostname); - NS_ENSURE_SUCCESS(rv, nullptr); - rv = chanPrincipal->GetBaseDomain(resourceDomain); - NS_ENSURE_SUCCESS(rv, nullptr); - nsAutoCString whitelistEntry = NS_LITERAL_CSTRING("http://") + - pageHostname + NS_LITERAL_CSTRING("/?resource=") + resourceDomain; - LOG(("nsChannelClassifier[%p]: Looking for %s in the whitelist", - this, whitelistEntry.get())); - - nsCOMPtr whitelistURI; - rv = NS_NewURI(getter_AddRefs(whitelistURI), whitelistEntry); - - return NS_SUCCEEDED(rv) ? whitelistURI.forget() : nullptr; -} - nsresult -nsChannelClassifier::IsTrackerWhitelisted(nsIURI* aWhiteListURI, - nsIURIClassifierCallback *aCallback) +nsChannelClassifier::IsTrackerWhitelisted(const nsACString& aList, + const nsACString& aProvider, + const nsACString& aPrefix) { - if (!aCallback || !aWhiteListURI) { - return NS_ERROR_INVALID_ARG; - } - nsresult rv; nsCOMPtr uriClassifier = do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv); @@ -1077,7 +842,45 @@ nsChannelClassifier::IsTrackerWhitelisted(nsIURI* aWhiteListURI, return NS_ERROR_TRACKING_URI; } - return uriClassifier->AsyncClassifyLocalWithTables(aWhiteListURI, trackingWhitelist, aCallback); + nsCOMPtr chan = do_QueryInterface(mChannel, &rv); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr topWinURI; + rv = chan->GetTopWindowURI(getter_AddRefs(topWinURI)); + NS_ENSURE_SUCCESS(rv, rv); + if (!topWinURI) { + LOG(("nsChannelClassifier[%p]: No window URI", this)); + return NS_ERROR_TRACKING_URI; + } + + nsCOMPtr securityManager = + do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &rv); + NS_ENSURE_SUCCESS(rv, rv); + nsCOMPtr chanPrincipal; + rv = securityManager->GetChannelURIPrincipal(mChannel, + getter_AddRefs(chanPrincipal)); + NS_ENSURE_SUCCESS(rv, rv); + + // Craft a whitelist URL like "toplevel.page/?resource=third.party.domain" + nsAutoCString pageHostname, resourceDomain; + rv = topWinURI->GetHost(pageHostname); + NS_ENSURE_SUCCESS(rv, rv); + rv = chanPrincipal->GetBaseDomain(resourceDomain); + NS_ENSURE_SUCCESS(rv, rv); + nsAutoCString whitelistEntry = NS_LITERAL_CSTRING("http://") + + pageHostname + NS_LITERAL_CSTRING("/?resource=") + resourceDomain; + LOG(("nsChannelClassifier[%p]: Looking for %s in the whitelist", + this, whitelistEntry.get())); + + nsCOMPtr whitelistURI; + rv = NS_NewURI(getter_AddRefs(whitelistURI), whitelistEntry); + NS_ENSURE_SUCCESS(rv, rv); + + RefPtr cb = + new IsTrackerWhitelistedCallback(this, aList, aProvider, aPrefix, + whitelistEntry); + + return uriClassifier->AsyncClassifyLocalWithTables(whitelistURI, trackingWhitelist, cb); } NS_IMETHODIMP @@ -1089,17 +892,11 @@ nsChannelClassifier::OnClassifyComplete(nsresult aErrorCode, // Should only be called in the parent process. MOZ_ASSERT(XRE_IsParentProcess()); - if (aErrorCode == NS_ERROR_TRACKING_URI) { - nsCOMPtr whitelistURI = CreateWhiteListURI(); - nsCOMPtr callback = - new IsTrackerWhitelistedCallback( - this, aList, aProvider, aPrefix, whitelistURI); - if (whitelistURI && - NS_SUCCEEDED(IsTrackerWhitelisted(whitelistURI, callback))) { - // OnClassifyCompleteInternal() will be called once we know - // if the tracker is whitelisted. - return NS_OK; - } + if (aErrorCode == NS_ERROR_TRACKING_URI && + NS_SUCCEEDED(IsTrackerWhitelisted(aList, aProvider, aPrefix))) { + // OnClassifyCompleteInternal() will be called once we know + // if the tracker is whitelisted. + return NS_OK; } return OnClassifyCompleteInternal(aErrorCode, aList, aProvider, aPrefix); @@ -1120,6 +917,43 @@ nsChannelClassifier::OnClassifyCompleteInternal(nsresult aErrorCode, } MarkEntryClassified(aErrorCode); + // The value of |mTrackingProtectionEnabled| should be assigned at + // |ShouldEnableTrackingProtection| before. + MOZ_ASSERT(mTrackingProtectionEnabled, "Should contain a value."); + + if (aErrorCode == NS_ERROR_TRACKING_URI && + !mTrackingProtectionEnabled.valueOr(false)) { + if (CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()) { + nsCOMPtr parentChannel; + NS_QueryNotificationCallbacks(mChannel, parentChannel); + if (parentChannel) { + // This channel is a parent-process proxy for a child process + // request. We should notify the child process as well. + parentChannel->NotifyTrackingResource(); + } + RefPtr httpChannel = do_QueryObject(mChannel); + if (httpChannel) { + httpChannel->SetIsTrackingResource(); + } + } + + if (CachedPrefs::GetInstance()->IsLowerNetworkPriority()) { + if (LOG_ENABLED()) { + nsCOMPtr uri; + mChannel->GetURI(getter_AddRefs(uri)); + LOG(("nsChannelClassifier[%p]: lower the priority of channel %p" + ", since %s is a tracker", this, mChannel.get(), + uri->GetSpecOrDefault().get())); + } + nsCOMPtr p = do_QueryInterface(mChannel); + if (p) { + p->SetPriority(nsISupportsPriority::PRIORITY_LOWEST); + } + } + + aErrorCode = NS_OK; + } + if (NS_FAILED(aErrorCode)) { if (LOG_ENABLED()) { nsCOMPtr uri; @@ -1148,61 +982,6 @@ nsChannelClassifier::OnClassifyCompleteInternal(nsresult aErrorCode, return NS_OK; } -nsresult -nsChannelClassifier::CheckIsTrackerWithLocalTable(nsIURIClassifierCallback* aCallback) -{ - nsresult rv; - - if (!aCallback) { - return NS_ERROR_INVALID_ARG; - } - - bool trackingProtectionEnabled = false; - rv = ShouldEnableTrackingProtection(&trackingProtectionEnabled); - if (NS_FAILED(rv)) { - return rv; - } - - if (!trackingProtectionEnabled && - !CachedPrefs::GetInstance()->IsAnnotateChannelEnabled()) { - return NS_ERROR_FAILURE; - } - - nsCOMPtr uriClassifier = - do_GetService(NS_URICLASSIFIERSERVICE_CONTRACTID, &rv); - if (NS_FAILED(rv)) { - return rv; - } - - nsCOMPtr uri; - rv = mChannel->GetURI(getter_AddRefs(uri)); - if (NS_FAILED(rv) || !uri) { - return rv; - } - - nsCString trackingBlacklist = - CachedPrefs::GetInstance()->GetTrackingBlackList(); - if (trackingBlacklist.IsEmpty()) { - LOG(("nsChannelClassifier[%p]:CheckIsTrackerWithLocalTable blacklist is empty", - this)); - return NS_ERROR_FAILURE; - } - - nsCOMPtr callback = - new IsTrackerBlacklistedCallback(this, aCallback); - - return uriClassifier->AsyncClassifyLocalWithTables(uri, - trackingBlacklist, - callback); -} - -already_AddRefed -nsChannelClassifier::GetChannel() -{ - nsCOMPtr channel = mChannel; - return channel.forget(); -} - void nsChannelClassifier::AddShutdownObserver() { @@ -1235,7 +1014,6 @@ nsChannelClassifier::Observe(nsISupports *aSubject, const char *aTopic, mSuspendedChannel = false; mChannel->Cancel(NS_ERROR_ABORT); mChannel->Resume(); - mChannel = nullptr; } RemoveShutdownObserver(); diff --git a/netwerk/base/nsChannelClassifier.h b/netwerk/base/nsChannelClassifier.h index 1d0caee5a533..221c6d7e5005 100644 --- a/netwerk/base/nsChannelClassifier.h +++ b/netwerk/base/nsChannelClassifier.h @@ -34,10 +34,6 @@ public: // Whether or not tracking protection should be enabled on this channel. nsresult ShouldEnableTrackingProtection(bool *result); - // Helper function to check a tracking URI against the whitelist - nsresult IsTrackerWhitelisted(nsIURI* aWhiteListURI, - nsIURIClassifierCallback* aCallback); - // Called once we actually classified an URI. (An additional whitelist // check will be done if the classifier reports the URI is a tracker.) nsresult OnClassifyCompleteInternal(nsresult aErrorCode, @@ -45,16 +41,6 @@ public: const nsACString& aProvider, const nsACString& aPrefix); - // Check a tracking URI against the local blacklist and whitelist. - // Returning NS_OK means the check will be processed - // and the caller should wait for the result. - nsresult CheckIsTrackerWithLocalTable(nsIURIClassifierCallback* aCallback); - - // Helper function to create a whitelist URL. - already_AddRefed CreateWhiteListURI() const; - - already_AddRefed GetChannel(); - private: // True if the channel is on the allow list. bool mIsAllowListed; @@ -71,6 +57,10 @@ private: // Start is called. Returns NS_OK if and only if we will get a callback // from the classifier service. nsresult StartInternal(); + // Helper function to check a tracking URI against the whitelist + nsresult IsTrackerWhitelisted(const nsACString& aList, + const nsACString& aProvider, + const nsACString& aPrefix); // Helper function to check a URI against the hostname whitelist bool IsHostnameWhitelisted(nsIURI *aUri, const nsACString &aWhitelisted); // Checks that the channel was loaded by the URI currently loaded in aDoc diff --git a/netwerk/protocol/http/HttpBaseChannel.h b/netwerk/protocol/http/HttpBaseChannel.h index bdfc8b7624db..6761083a13e6 100644 --- a/netwerk/protocol/http/HttpBaseChannel.h +++ b/netwerk/protocol/http/HttpBaseChannel.h @@ -375,7 +375,7 @@ protected: virtual void DoNotifyListenerCleanup() = 0; // drop reference to listener, its callbacks, and the progress sink - virtual void ReleaseListeners(); + void ReleaseListeners(); // This is fired only when a cookie is created due to the presence of // Set-Cookie header in the response header of any network request. diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp index bca5daed060b..a9d65607ec0c 100644 --- a/netwerk/protocol/http/nsHttpChannel.cpp +++ b/netwerk/protocol/http/nsHttpChannel.cpp @@ -756,13 +756,6 @@ nsHttpChannel::DoNotifyListenerCleanup() CleanRedirectCacheChainIfNecessary(); } -void -nsHttpChannel::ReleaseListeners() -{ - HttpBaseChannel::ReleaseListeners(); - mChannelClassifier = nullptr; -} - void nsHttpChannel::HandleAsyncRedirect() { @@ -6094,31 +6087,18 @@ private: NS_IMPL_ISUPPORTS(InitLocalBlockListXpcCallback, nsIURIClassifierCallback) /*virtual*/ nsresult -InitLocalBlockListXpcCallback::OnClassifyComplete(nsresult aErrorCode, // Only this matters. - const nsACString& /*aLists*/, +InitLocalBlockListXpcCallback::OnClassifyComplete(nsresult /*aErrorCode*/, + const nsACString& aLists, // Only this matters. const nsACString& /*aProvider*/, const nsACString& /*aPrefix*/) { - bool localBlockList = aErrorCode == NS_ERROR_TRACKING_URI; + bool localBlockList = !aLists.IsEmpty(); mCallback(localBlockList); return NS_OK; } } // end of unnamed namespace/ -already_AddRefed -nsHttpChannel::GetOrCreateChannelClassifier() -{ - if (!mChannelClassifier) { - mChannelClassifier = new nsChannelClassifier(this); - LOG(("nsHttpChannel [%p] created nsChannelClassifier [%p]\n", - this, mChannelClassifier.get())); - } - - RefPtr classifier = mChannelClassifier; - return classifier.forget(); -} - bool nsHttpChannel::InitLocalBlockList(const InitLocalBlockListCallback& aCallback) { @@ -6129,17 +6109,33 @@ nsHttpChannel::InitLocalBlockList(const InitLocalBlockListCallback& aCallback) } // Check to see if this principal exists on local blocklists. - RefPtr channelClassifier = - GetOrCreateChannelClassifier(); + nsCOMPtr classifier(services::GetURIClassifier()); + RefPtr channelClassifier = new nsChannelClassifier(this); + bool tpEnabled = false; + channelClassifier->ShouldEnableTrackingProtection(&tpEnabled); + if (!classifier || !tpEnabled) { + return false; + } // We skip speculative connections by setting mLocalBlocklist only // when tracking protection is enabled. Though we could do this for // both phishing and malware, it is not necessary for correctness, // since no network events will be received while the // nsChannelClassifier is in progress. See bug 1122691. + nsCOMPtr uri; + nsresult rv = GetURI(getter_AddRefs(uri)); + if (NS_FAILED(rv) || !uri) { + return false; + } + + nsAutoCString tables; + Preferences::GetCString("urlclassifier.trackingTable", &tables); + nsTArray results; + RefPtr xpcCallback = new InitLocalBlockListXpcCallback(aCallback); - if (NS_FAILED(channelClassifier->CheckIsTrackerWithLocalTable(xpcCallback))) { + rv = classifier->AsyncClassifyLocalWithTables(uri, tables, xpcCallback); + if (NS_FAILED(rv)) { return false; } @@ -6480,8 +6476,7 @@ nsHttpChannel::BeginConnectActual() // been called, after optionally cancelling the channel once we have a // remote verdict. We call a concrete class instead of an nsI* that might // be overridden. - RefPtr channelClassifier = - GetOrCreateChannelClassifier(); + RefPtr channelClassifier = new nsChannelClassifier(this); LOG(("nsHttpChannel::Starting nsChannelClassifier %p [this=%p]", channelClassifier.get(), this)); channelClassifier->Start(); diff --git a/netwerk/protocol/http/nsHttpChannel.h b/netwerk/protocol/http/nsHttpChannel.h index 45e1ec030ee8..1e382a7c17ab 100644 --- a/netwerk/protocol/http/nsHttpChannel.h +++ b/netwerk/protocol/http/nsHttpChannel.h @@ -40,7 +40,6 @@ class nsISSLStatus; namespace mozilla { namespace net { -class nsChannelClassifier; class Http2PushedStream; class HttpChannelSecurityWarningReporter @@ -507,8 +506,6 @@ private: void SetDoNotTrack(); - already_AddRefed GetOrCreateChannelClassifier(); - private: // this section is for main-thread-only object // all the references need to be proxy released on main thread. @@ -519,13 +516,6 @@ private: nsCOMPtr mRedirectChannel; nsCOMPtr mPreflightChannel; - // nsChannelClassifier checks this channel's URI against - // the URI classifier service. - // nsChannelClassifier will be invoked twice in InitLocalBlockList() and - // BeginConnectActual(), so save the nsChannelClassifier here to keep the - // state of whether tracking protection is enabled or not. - RefPtr mChannelClassifier; - // Proxy release all members above on main thread. void ReleaseMainThreadOnlyReferences(); @@ -712,10 +702,6 @@ private: protected: virtual void DoNotifyListenerCleanup() override; - // Override ReleaseListeners() because mChannelClassifier only exists - // in nsHttpChannel and it will be released in ReleaseListeners(). - virtual void ReleaseListeners() override; - private: // cache telemetry bool mDidReval; }; From 6cb217315aa3611910c198c525ec3317fdfa39e7 Mon Sep 17 00:00:00 2001 From: Ryan VanderMeulen Date: Tue, 6 Jun 2017 18:06:42 -0400 Subject: [PATCH 71/71] Backed out 12 changesets (bug 1366502) for causing intermittent QuantumRender debug crashtest crashes on a CLOSED TREE. Backed out changeset 42350bacb0bc (bug 1366502) Backed out changeset 7f98b7f60e58 (bug 1366502) Backed out changeset 265e39153027 (bug 1366502) Backed out changeset cf598918bb1b (bug 1366502) Backed out changeset e2f21ee861e5 (bug 1366502) Backed out changeset f7fcc15d8f90 (bug 1366502) Backed out changeset 22408b6a1ad1 (bug 1366502) Backed out changeset 8846dac9ee35 (bug 1366502) Backed out changeset d5225d81b832 (bug 1366502) Backed out changeset 82f5a21b53a6 (bug 1366502) Backed out changeset 2b20aebef47d (bug 1366502) Backed out changeset 95f4d82e3d79 (bug 1366502) --- dom/media/test/reftest/reftest.list | 4 +- gfx/layers/composite/TextureHost.cpp | 82 +++---------- gfx/layers/composite/TextureHost.h | 33 ----- gfx/layers/d3d11/TextureD3D11.cpp | 34 ------ gfx/layers/d3d11/TextureD3D11.h | 18 --- .../opengl/MacIOSurfaceTextureHostOGL.cpp | 83 +------------ .../opengl/MacIOSurfaceTextureHostOGL.h | 9 -- gfx/layers/wr/WebRenderCompositableHolder.cpp | 96 +++++++++++++-- gfx/layers/wr/WebRenderCompositableHolder.h | 7 ++ gfx/layers/wr/WebRenderImageLayer.cpp | 14 +-- gfx/layers/wr/WebRenderImageLayer.h | 2 +- gfx/layers/wr/WebRenderTextureHost.cpp | 34 +----- gfx/layers/wr/WebRenderTextureHost.h | 9 -- .../RenderBufferTextureHost.cpp | 115 +++++++----------- .../RenderBufferTextureHost.h | 10 +- gfx/webrender_bindings/RenderTextureHost.cpp | 2 - gfx/webrender_bindings/RenderThread.cpp | 33 +---- gfx/webrender_bindings/RenderThread.h | 7 +- gfx/webrender_bindings/src/bindings.rs | 8 +- layout/reftests/webm-video/reftest.list | 20 +-- 20 files changed, 182 insertions(+), 438 deletions(-) diff --git a/dom/media/test/reftest/reftest.list b/dom/media/test/reftest/reftest.list index 74236c3aaff5..ac57f5843509 100644 --- a/dom/media/test/reftest/reftest.list +++ b/dom/media/test/reftest/reftest.list @@ -1,2 +1,2 @@ -skip-if(Android) fuzzy-if(OSX,22,49977) skip-if(winWidget) fuzzy-if(webrender,70,600) HTTP(..) == short.mp4.firstframe.html short.mp4.firstframe-ref.html -skip-if(Android) fuzzy-if(OSX,23,51392) fuzzy-if(winWidget,59,76797) fuzzy-if(webrender,60,1800) HTTP(..) == short.mp4.lastframe.html short.mp4.lastframe-ref.html +skip-if(Android) fuzzy-if(OSX,22,49977) skip-if(winWidget) HTTP(..) == short.mp4.firstframe.html short.mp4.firstframe-ref.html +skip-if(Android) fuzzy-if(OSX,23,51392) fuzzy-if(winWidget,59,76797) HTTP(..) == short.mp4.lastframe.html short.mp4.lastframe-ref.html diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index 50cc479b297e..b6ba6bd4898d 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -556,81 +556,31 @@ BufferTextureHost::Unlock() mLocked = false; } -void -BufferTextureHost::GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) -{ - MOZ_ASSERT(aImageKeys.IsEmpty()); - - if (GetFormat() != gfx::SurfaceFormat::YUV) { - // 1 image key - aImageKeys.AppendElement(aImageKeyAllocator()); - MOZ_ASSERT(aImageKeys.Length() == 1); - } else { - // 3 image key - aImageKeys.AppendElement(aImageKeyAllocator()); - aImageKeys.AppendElement(aImageKeyAllocator()); - aImageKeys.AppendElement(aImageKeyAllocator()); - MOZ_ASSERT(aImageKeys.Length() == 3); - } -} - void BufferTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) { - if (GetFormat() != gfx::SurfaceFormat::YUV) { - MOZ_ASSERT(aImageKeys.length() == 1); + MOZ_ASSERT(aImageKeys.length() == 1); + // XXX handling YUV + gfx::SurfaceFormat wrFormat = + (GetFormat() == gfx::SurfaceFormat::YUV) ? gfx::SurfaceFormat::B8G8R8A8 + : GetFormat(); + gfx::SurfaceFormat format = GetFormat(); + uint32_t wrStride = 0; - wr::ImageDescriptor descriptor(GetSize(), - ImageDataSerializer::ComputeRGBStride(GetFormat(), GetSize().width), - GetFormat()); - aAPI->AddExternalImageBuffer(aImageKeys[0], descriptor, aExtID); + if (format == gfx::SurfaceFormat::YUV) { + // XXX this stride is used until yuv image rendering by webrender is used. + // Software converted RGB buffers strides are aliened to 16 + wrStride = gfx::GetAlignedStride<16>(GetSize().width, BytesPerPixel(gfx::SurfaceFormat::B8G8R8A8)); } else { - MOZ_ASSERT(aImageKeys.length() == 3); - - const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); - wr::ImageDescriptor yDescriptor(desc.ySize(), desc.ySize().width, gfx::SurfaceFormat::A8); - wr::ImageDescriptor cbcrDescriptor(desc.cbCrSize(), desc.cbCrSize().width, gfx::SurfaceFormat::A8); - aAPI->AddExternalImage(aImageKeys[0], - yDescriptor, - aExtID, - WrExternalImageBufferType::ExternalBuffer, - 0); - aAPI->AddExternalImage(aImageKeys[1], - cbcrDescriptor, - aExtID, - WrExternalImageBufferType::ExternalBuffer, - 1); - aAPI->AddExternalImage(aImageKeys[2], - cbcrDescriptor, - aExtID, - WrExternalImageBufferType::ExternalBuffer, - 2); + wrStride = ImageDataSerializer::ComputeRGBStride(format, GetSize().width); } -} -void -BufferTextureHost::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) -{ - if (GetFormat() != gfx::SurfaceFormat::YUV) { - MOZ_ASSERT(aImageKeys.length() == 1); - aBuilder.PushImage(aBounds, aClip, aFilter, aImageKeys[0]); - } else { - MOZ_ASSERT(aImageKeys.length() == 3); - aBuilder.PushYCbCrPlanarImage(aBounds, - aClip, - aImageKeys[0], - aImageKeys[1], - aImageKeys[2], - WrYuvColorSpace::Rec601, - aFilter); - } + wr::ImageDescriptor descriptor(GetSize(), wrStride, wrFormat); + aAPI->AddExternalImageBuffer(aImageKeys[0], + descriptor, + aExtID); } void diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 9f60e77620cc..cfd08a15cb28 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -6,7 +6,6 @@ #ifndef MOZILLA_GFX_TEXTUREHOST_H #define MOZILLA_GFX_TEXTUREHOST_H -#include #include // for size_t #include // for uint64_t, uint32_t, uint8_t #include "gfxTypes.h" @@ -39,7 +38,6 @@ class Shmem; } // namespace ipc namespace wr { -class DisplayListBuilder; class WebRenderAPI; } @@ -598,18 +596,6 @@ public: virtual MacIOSurfaceTextureHostOGL* AsMacIOSurfaceTextureHost() { return nullptr; } virtual WebRenderTextureHost* AsWebRenderTextureHost() { return nullptr; } - // Create all necessary image keys for this textureHost rendering. - // @param aImageKeys - [out] The set of ImageKeys used for this textureHost - // composing. - // @param aImageKeyAllocator - [in] The function which is used for creating - // the new ImageKey. - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) - { - MOZ_ASSERT(aImageKeys.IsEmpty()); - MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this TextureHost type."); - } - // Add all necessary textureHost informations to WebrenderAPI. Then, WR could // use these informations to compose this textureHost. virtual void AddWRImage(wr::WebRenderAPI* aAPI, @@ -619,16 +605,6 @@ public: MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this TextureHost type."); } - // Put all necessary WR commands into DisplayListBuilder for this textureHost rendering. - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aKeys) - { - MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this TextureHost type."); - } - protected: void ReadUnlock(); @@ -716,19 +692,10 @@ public: const BufferDescriptor& GetBufferDescriptor() const { return mDescriptor; } - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) override; - virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) override; - protected: bool Upload(nsIntRegion *aRegion = nullptr); bool MaybeUpload(nsIntRegion *aRegion = nullptr); diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index 3398af76e793..d4cc385a7fbe 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -863,13 +863,6 @@ DXGITextureHostD3D11::BindTextureSource(CompositableTextureSourceRef& aTexture) return !!aTexture; } -void -DXGITextureHostD3D11::GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) -{ - MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this DXGITextureHostD3D11 type."); -} - void DXGITextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -878,16 +871,6 @@ DXGITextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this DXGITextureHostD3D11 type."); } -void -DXGITextureHostD3D11::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) -{ - MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this DXGITextureHostD3D11 type."); -} - DXGIYCbCrTextureHostD3D11::DXGIYCbCrTextureHostD3D11(TextureFlags aFlags, const SurfaceDescriptorDXGIYCbCr& aDescriptor) : TextureHost(aFlags) @@ -1021,13 +1004,6 @@ DXGIYCbCrTextureHostD3D11::BindTextureSource(CompositableTextureSourceRef& aText return !!aTexture; } -void -DXGIYCbCrTextureHostD3D11::GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) -{ - MOZ_ASSERT_UNREACHABLE("No GetWRImageKeys() implementation for this DXGIYCbCrTextureHostD3D11 type."); -} - void DXGIYCbCrTextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -1036,16 +1012,6 @@ DXGIYCbCrTextureHostD3D11::AddWRImage(wr::WebRenderAPI* aAPI, MOZ_ASSERT_UNREACHABLE("No AddWRImage() implementation for this DXGIYCbCrTextureHostD3D11 type."); } -void -DXGIYCbCrTextureHostD3D11::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) -{ - MOZ_ASSERT_UNREACHABLE("No PushExternalImage() implementation for this DXGIYCbCrTextureHostD3D11 type."); -} - bool DataTextureSourceD3D11::Update(DataSourceSurface* aSurface, nsIntRegion* aDestRegion, diff --git a/gfx/layers/d3d11/TextureD3D11.h b/gfx/layers/d3d11/TextureD3D11.h index f9e2e661bc36..1322884e128a 100644 --- a/gfx/layers/d3d11/TextureD3D11.h +++ b/gfx/layers/d3d11/TextureD3D11.h @@ -322,19 +322,10 @@ public: return nullptr; } - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) override; - virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) override; - protected: bool LockInternal(); void UnlockInternal(); @@ -380,19 +371,10 @@ public: return nullptr; } - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) override; - virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) override; - protected: RefPtr GetDevice(); diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp index 7ca9bc89ebe6..eba8f08f0485 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp +++ b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.cpp @@ -114,41 +114,6 @@ MacIOSurfaceTextureHostOGL::gl() const return mProvider ? mProvider->GetGLContext() : nullptr; } -void -MacIOSurfaceTextureHostOGL::GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) -{ - MOZ_ASSERT(aImageKeys.IsEmpty()); - - switch (GetFormat()) { - case gfx::SurfaceFormat::R8G8B8X8: - case gfx::SurfaceFormat::R8G8B8A8: - case gfx::SurfaceFormat::B8G8R8A8: - case gfx::SurfaceFormat::B8G8R8X8: { - // 1 image key - aImageKeys.AppendElement(aImageKeyAllocator()); - MOZ_ASSERT(aImageKeys.Length() == 1); - break; - } - case gfx::SurfaceFormat::YUV422: { - // 1 image key - aImageKeys.AppendElement(aImageKeyAllocator()); - MOZ_ASSERT(aImageKeys.Length() == 1); - break; - } - case gfx::SurfaceFormat::NV12: { - // 2 image key - aImageKeys.AppendElement(aImageKeyAllocator()); - aImageKeys.AppendElement(aImageKeyAllocator()); - MOZ_ASSERT(aImageKeys.Length() == 2); - break; - } - default: { - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - } - } -} - void MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -158,9 +123,7 @@ MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, switch (GetFormat()) { case gfx::SurfaceFormat::R8G8B8X8: - case gfx::SurfaceFormat::R8G8B8A8: - case gfx::SurfaceFormat::B8G8R8A8: - case gfx::SurfaceFormat::B8G8R8X8: { + case gfx::SurfaceFormat::R8G8B8A8: { MOZ_ASSERT(aImageKeys.length() == 1); MOZ_ASSERT(mSurface->GetPlaneCount() == 0); wr::ImageDescriptor descriptor(GetSize(), GetFormat()); @@ -211,49 +174,5 @@ MacIOSurfaceTextureHostOGL::AddWRImage(wr::WebRenderAPI* aAPI, } } -void -MacIOSurfaceTextureHostOGL::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) -{ - switch (GetFormat()) { - case gfx::SurfaceFormat::R8G8B8X8: - case gfx::SurfaceFormat::R8G8B8A8: - case gfx::SurfaceFormat::B8G8R8A8: - case gfx::SurfaceFormat::B8G8R8X8: { - MOZ_ASSERT(aImageKeys.length() == 1); - MOZ_ASSERT(mSurface->GetPlaneCount() == 0); - aBuilder.PushImage(aBounds, aClip, aFilter, aImageKeys[0]); - break; - } - case gfx::SurfaceFormat::YUV422: { - MOZ_ASSERT(aImageKeys.length() == 1); - MOZ_ASSERT(mSurface->GetPlaneCount() == 0); - aBuilder.PushYCbCrInterleavedImage(aBounds, - aClip, - aImageKeys[0], - WrYuvColorSpace::Rec601, - aFilter); - break; - } - case gfx::SurfaceFormat::NV12: { - MOZ_ASSERT(aImageKeys.length() == 2); - MOZ_ASSERT(mSurface->GetPlaneCount() == 2); - aBuilder.PushNV12Image(aBounds, - aClip, - aImageKeys[0], - aImageKeys[1], - WrYuvColorSpace::Rec601, - aFilter); - break; - } - default: { - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - } - } -} - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h index 6050e1d00964..38364cf74f3a 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h +++ b/gfx/layers/opengl/MacIOSurfaceTextureHostOGL.h @@ -62,19 +62,10 @@ public: return mSurface; } - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) override; - virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) override; - protected: GLTextureSource* CreateTextureSourceForPlane(size_t aPlane); diff --git a/gfx/layers/wr/WebRenderCompositableHolder.cpp b/gfx/layers/wr/WebRenderCompositableHolder.cpp index 182b6171f6f5..850a6d107527 100644 --- a/gfx/layers/wr/WebRenderCompositableHolder.cpp +++ b/gfx/layers/wr/WebRenderCompositableHolder.cpp @@ -12,6 +12,9 @@ #include "mozilla/webrender/WebRenderAPI.h" namespace mozilla { + +using namespace gfx; + namespace layers { WebRenderCompositableHolder::AsyncImagePipelineHolder::AsyncImagePipelineHolder() @@ -154,6 +157,45 @@ WebRenderCompositableHolder::UpdateAsyncImagePipeline(const wr::PipelineId& aPip holder->mMixBlendMode = aMixBlendMode; } +void +WebRenderCompositableHolder::GetImageKeys(nsTArray& aKeys, size_t aChannelNumber) +{ + MOZ_ASSERT(aChannelNumber > 0); + for (size_t i = 0; i < aChannelNumber; ++i) { + wr::ImageKey key = GetImageKey(); + aKeys.AppendElement(key); + } +} + +void +WebRenderCompositableHolder::GetImageKeysForExternalImage(nsTArray& aKeys) +{ + MOZ_ASSERT(aKeys.IsEmpty()); + + // XXX (Jerry): Remove the hardcode image format setting. +#if defined(XP_WIN) + // Use libyuv to convert the buffer to rgba format. So, use 1 image key here. + GetImageKeys(aKeys, 1); +#elif defined(XP_MACOSX) + if (gfxVars::CanUseHardwareVideoDecoding()) { + // Use the hardware MacIOSurface with YCbCr interleaved format. It uses 1 + // image key. + GetImageKeys(aKeys, 1); + } else { + // Use libyuv. + GetImageKeys(aKeys, 1); + } +#elif defined(MOZ_WIDGET_GTK) + // Use libyuv. + GetImageKeys(aKeys, 1); +#elif defined(ANDROID) + // Use libyuv. + GetImageKeys(aKeys, 1); +#endif + + MOZ_ASSERT(!aKeys.IsEmpty()); +} + bool WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, TextureHost* aTexture, nsTArray& aKeys) { @@ -163,23 +205,23 @@ WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, T WebRenderTextureHost* wrTexture = aTexture->AsWebRenderTextureHost(); if (wrTexture) { - wrTexture->GetWRImageKeys(aKeys, std::bind(&WebRenderCompositableHolder::GetImageKey, this)); + GetImageKeysForExternalImage(aKeys); MOZ_ASSERT(!aKeys.IsEmpty()); Range keys(&aKeys[0], aKeys.Length()); wrTexture->AddWRImage(aApi, keys, wrTexture->GetExternalImageKey()); return true; } else { - RefPtr dSurf = aTexture->GetAsSurface(); + RefPtr dSurf = aTexture->GetAsSurface(); if (!dSurf) { NS_ERROR("TextureHost does not return DataSourceSurface"); return false; } - gfx::DataSourceSurface::MappedSurface map; + DataSourceSurface::MappedSurface map; if (!dSurf->Map(gfx::DataSourceSurface::MapType::READ, &map)) { NS_ERROR("DataSourceSurface failed to map"); return false; } - gfx::IntSize size = dSurf->GetSize(); + IntSize size = dSurf->GetSize(); wr::ImageDescriptor descriptor(size, map.mStride, dSurf->GetFormat()); auto slice = Range(map.mData, size.height * map.mStride); @@ -191,6 +233,41 @@ WebRenderCompositableHolder::GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, T return false; } +void +WebRenderCompositableHolder::PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + nsTArray& aKeys) +{ + // XXX (Jerry): Remove the hardcode image format setting. The format of + // textureClient could change from time to time. So, we just set the most + // usable format here. +#if defined(XP_WIN) + // Use libyuv to convert the buffer to rgba format. + MOZ_ASSERT(aKeys.Length() == 1); + aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); +#elif defined(XP_MACOSX) + if (gfx::gfxVars::CanUseHardwareVideoDecoding()) { + // Use the hardware MacIOSurface with YCbCr interleaved format. + MOZ_ASSERT(aKeys.Length() == 1); + aBuilder.PushYCbCrInterleavedImage(aBounds, aClip, aKeys[0], WrYuvColorSpace::Rec601, aFilter); + } else { + // Use libyuv to convert the buffer to rgba format. + MOZ_ASSERT(aKeys.Length() == 1); + aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); + } +#elif defined(MOZ_WIDGET_GTK) + // Use libyuv to convert the buffer to rgba format. + MOZ_ASSERT(aKeys.Length() == 1); + aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); +#elif defined(ANDROID) + // Use libyuv to convert the buffer to rgba format. + MOZ_ASSERT(aKeys.Length() == 1); + aBuilder.PushImage(aBounds, aClip, aFilter, aKeys[0]); +#endif +} + bool WebRenderCompositableHolder::UpdateImageKeys(wr::WebRenderAPI* aApi, bool& aUseExternalImage, @@ -289,12 +366,11 @@ WebRenderCompositableHolder::ApplyAsyncImages(wr::WebRenderAPI* aApi) if (useExternalImage) { MOZ_ASSERT(holder->mCurrentTexture->AsWebRenderTextureHost()); - Range range_keys(&keys[0], keys.Length()); - holder->mCurrentTexture->PushExternalImage(builder, - wr::ToWrRect(rect), - clip, - holder->mFilter, - range_keys); + PushExternalImage(builder, + wr::ToWrRect(rect), + clip, + holder->mFilter, + keys); HoldExternalImage(pipelineId, epoch, holder->mCurrentTexture->AsWebRenderTextureHost()); } else { MOZ_ASSERT(keys.Length() == 1); diff --git a/gfx/layers/wr/WebRenderCompositableHolder.h b/gfx/layers/wr/WebRenderCompositableHolder.h index 848c7daa59fd..7d437bc3993c 100644 --- a/gfx/layers/wr/WebRenderCompositableHolder.h +++ b/gfx/layers/wr/WebRenderCompositableHolder.h @@ -93,7 +93,14 @@ private: key.mHandle = GetNextResourceId(); return key; } + void GetImageKeys(nsTArray& aKeys, size_t aChannelNumber); + void GetImageKeysForExternalImage(nsTArray& aKeys); bool GetImageKeyForTextureHost(wr::WebRenderAPI* aApi, TextureHost* aTexture, nsTArray& aKeys); + void PushExternalImage(wr::DisplayListBuilder& aBuilder, + const WrRect& aBounds, + const WrClipRegionToken aClip, + wr::ImageRendering aFilter, + nsTArray& aKeys); struct ForwardingTextureHost { ForwardingTextureHost(const wr::Epoch& aEpoch, TextureHost* aTexture) diff --git a/gfx/layers/wr/WebRenderImageLayer.cpp b/gfx/layers/wr/WebRenderImageLayer.cpp index 18f1e0fcb394..a8c158798027 100644 --- a/gfx/layers/wr/WebRenderImageLayer.cpp +++ b/gfx/layers/wr/WebRenderImageLayer.cpp @@ -24,7 +24,7 @@ using namespace gfx; WebRenderImageLayer::WebRenderImageLayer(WebRenderLayerManager* aLayerManager) : ImageLayer(aLayerManager, static_cast(this)) - , mImageClientContainerType(CompositableType::UNKNOWN) + , mImageClientTypeContainer(CompositableType::UNKNOWN) { MOZ_COUNT_CTOR(WebRenderImageLayer); } @@ -48,20 +48,20 @@ WebRenderImageLayer::~WebRenderImageLayer() CompositableType WebRenderImageLayer::GetImageClientType() { - if (mImageClientContainerType != CompositableType::UNKNOWN) { - return mImageClientContainerType; + if (mImageClientTypeContainer != CompositableType::UNKNOWN) { + return mImageClientTypeContainer; } if (mContainer->IsAsync()) { - mImageClientContainerType = CompositableType::IMAGE_BRIDGE; - return mImageClientContainerType; + mImageClientTypeContainer = CompositableType::IMAGE_BRIDGE; + return mImageClientTypeContainer; } AutoLockImage autoLock(mContainer); - mImageClientContainerType = autoLock.HasImage() + mImageClientTypeContainer = autoLock.HasImage() ? CompositableType::IMAGE : CompositableType::UNKNOWN; - return mImageClientContainerType; + return mImageClientTypeContainer; } already_AddRefed diff --git a/gfx/layers/wr/WebRenderImageLayer.h b/gfx/layers/wr/WebRenderImageLayer.h index 343cea9d9f2d..5dfa51238447 100644 --- a/gfx/layers/wr/WebRenderImageLayer.h +++ b/gfx/layers/wr/WebRenderImageLayer.h @@ -43,7 +43,7 @@ protected: wr::MaybeExternalImageId mExternalImageId; Maybe mKey; RefPtr mImageClient; - CompositableType mImageClientContainerType; + CompositableType mImageClientTypeContainer; Maybe mPipelineId; }; diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp index 4826bbec9412..21401d98ccfb 100644 --- a/gfx/layers/wr/WebRenderTextureHost.cpp +++ b/gfx/layers/wr/WebRenderTextureHost.cpp @@ -27,15 +27,6 @@ WebRenderTextureHost::WebRenderTextureHost(const SurfaceDescriptor& aDesc, , mExternalImageId(aExternalImageId) , mIsWrappingNativeHandle(false) { - // The wrapped textureHost will be used in WebRender, and the WebRender could - // run at another thread. It's hard to control the life-time when gecko - // receives PTextureParent destroy message. It's possible that textureHost is - // still used by WebRender. So, we only accept the textureHost without - // DEALLOCATE_CLIENT flag here. If the buffer deallocation is controlled by - // parent, we could do something to make sure the wrapped textureHost is not - // used by WebRender and then release it. - MOZ_ASSERT(!(aFlags & TextureFlags::DEALLOCATE_CLIENT)); - MOZ_COUNT_CTOR(WebRenderTextureHost); mWrappedTextureHost = aTexture; @@ -76,7 +67,7 @@ WebRenderTextureHost::CreateRenderTextureHost(const layers::SurfaceDescriptor& a gfxCriticalError() << "No WR implement for texture type:" << aDesc.type(); } - wr::RenderThread::Get()->RegisterExternalImage(wr::AsUint64(mExternalImageId), texture.forget()); + wr::RenderThread::Get()->RegisterExternalImage(wr::AsUint64(mExternalImageId), texture); } bool @@ -165,14 +156,6 @@ WebRenderTextureHost::GetRGBStride() return ImageDataSerializer::ComputeRGBStride(format, GetSize().width); } -void -WebRenderTextureHost::GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) -{ - MOZ_ASSERT(aImageKeys.IsEmpty()); - mWrappedTextureHost->GetWRImageKeys(aImageKeys, aImageKeyAllocator); -} - void WebRenderTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, @@ -184,20 +167,5 @@ WebRenderTextureHost::AddWRImage(wr::WebRenderAPI* aAPI, mWrappedTextureHost->AddWRImage(aAPI, aImageKeys, aExtID); } -void -WebRenderTextureHost::PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) -{ - MOZ_ASSERT(aImageKeys.length() > 0); - mWrappedTextureHost->PushExternalImage(aBuilder, - aBounds, - aClip, - aFilter, - aImageKeys); -} - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/wr/WebRenderTextureHost.h b/gfx/layers/wr/WebRenderTextureHost.h index 1e153e0cf390..bd1762ef8dff 100644 --- a/gfx/layers/wr/WebRenderTextureHost.h +++ b/gfx/layers/wr/WebRenderTextureHost.h @@ -65,19 +65,10 @@ public: bool IsWrappingNativeHandle() { return mIsWrappingNativeHandle; } - virtual void GetWRImageKeys(nsTArray& aImageKeys, - const std::function& aImageKeyAllocator) override; - virtual void AddWRImage(wr::WebRenderAPI* aAPI, Range& aImageKeys, const wr::ExternalImageId& aExtID) override; - virtual void PushExternalImage(wr::DisplayListBuilder& aBuilder, - const WrRect& aBounds, - const WrClipRegionToken aClip, - wr::ImageRendering aFilter, - Range& aImageKeys) override; - protected: void CreateRenderTextureHost(const SurfaceDescriptor& aDesc, TextureHost* aTexture); diff --git a/gfx/webrender_bindings/RenderBufferTextureHost.cpp b/gfx/webrender_bindings/RenderBufferTextureHost.cpp index e118add30404..6310a60d8b07 100644 --- a/gfx/webrender_bindings/RenderBufferTextureHost.cpp +++ b/gfx/webrender_bindings/RenderBufferTextureHost.cpp @@ -43,100 +43,67 @@ RenderBufferTextureHost::~RenderBufferTextureHost() MOZ_COUNT_DTOR_INHERITED(RenderBufferTextureHost, RenderTextureHost); } +already_AddRefed +RenderBufferTextureHost::GetAsSurface() +{ + RefPtr result; + if (mFormat == gfx::SurfaceFormat::YUV) { + result = layers::ImageDataSerializer::DataSourceSurfaceFromYCbCrDescriptor( + GetBuffer(), mDescriptor.get_YCbCrDescriptor()); + if (NS_WARN_IF(!result)) { + return nullptr; + } + } else { + result = + gfx::Factory::CreateWrappingDataSourceSurface(GetBuffer(), + layers::ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()), + mSize, mFormat); + } + return result.forget(); +} + bool RenderBufferTextureHost::Lock() { - if (!mLocked) { - if (mFormat != gfx::SurfaceFormat::YUV) { - mSurface = gfx::Factory::CreateWrappingDataSourceSurface(GetBuffer(), - layers::ImageDataSerializer::GetRGBStride(mDescriptor.get_RGBDescriptor()), - mSize, - mFormat); - if (NS_WARN_IF(!mSurface)) { - return false; - } - if (NS_WARN_IF(!mSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mMap))) { - mSurface = nullptr; - return false; - } - } else { - const layers::YCbCrDescriptor& desc = mDescriptor.get_YCbCrDescriptor(); + MOZ_ASSERT(!mLocked); - mYSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetYChannel(GetBuffer(), desc), - desc.ySize().width, - desc.ySize(), - gfx::SurfaceFormat::A8); - mCbSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetCbChannel(GetBuffer(), desc), - desc.cbCrSize().width, - desc.cbCrSize(), - gfx::SurfaceFormat::A8); - mCrSurface = gfx::Factory::CreateWrappingDataSourceSurface(layers::ImageDataSerializer::GetCrChannel(GetBuffer(), desc), - desc.cbCrSize().width, - desc.cbCrSize(), - gfx::SurfaceFormat::A8); - if (NS_WARN_IF(!mYSurface || !mCbSurface || !mCrSurface)) { - mYSurface = mCbSurface = mCrSurface = nullptr; - return false; - } - if (NS_WARN_IF(!mYSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mYMap) || - !mCbSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mCbMap) || - !mCrSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mCrMap))) { - mYSurface = mCbSurface = mCrSurface = nullptr; - return false; - } + // XXX temporal workaround for YUV handling + if (!mSurface) { + mSurface = GetAsSurface(); + if (!mSurface) { + return false; } - mLocked = true; } + if (NS_WARN_IF(!mSurface->Map(gfx::DataSourceSurface::MapType::READ_WRITE, &mMap))) { + mSurface = nullptr; + return false; + } + + mLocked = true; return true; } void RenderBufferTextureHost::Unlock() { - if (mLocked) { - if (mSurface) { - mSurface->Unmap(); - mSurface = nullptr; - } else if (mYSurface) { - mYSurface->Unmap(); - mCbSurface->Unmap(); - mCrSurface->Unmap(); - mYSurface = mCbSurface = mCrSurface = nullptr; - } - mLocked = false; + MOZ_ASSERT(mLocked); + mLocked = false; + if (mSurface) { + mSurface->Unmap(); } + mSurface = nullptr; } RenderBufferTextureHost::RenderBufferData RenderBufferTextureHost::GetBufferDataForRender(uint8_t aChannelIndex) { - MOZ_ASSERT(mFormat != gfx::SurfaceFormat::YUV || aChannelIndex < 3); - MOZ_ASSERT(mFormat == gfx::SurfaceFormat::YUV || aChannelIndex < 1); + // TODO: handle multiple channel bufferTextureHost(e.g. yuv textureHost) + MOZ_ASSERT(aChannelIndex < 1); + MOZ_ASSERT(mLocked); - - if (mFormat != gfx::SurfaceFormat::YUV) { - MOZ_ASSERT(mSurface); - - return RenderBufferData(mMap.mData, mMap.mStride * mSurface->GetSize().height); - } else { - MOZ_ASSERT(mYSurface && mCbSurface && mCrSurface); - - switch (aChannelIndex) { - case 0: - return RenderBufferData(mYMap.mData, mYMap.mStride * mYSurface->GetSize().height); - break; - case 1: - return RenderBufferData(mCbMap.mData, mCbMap.mStride * mCbSurface->GetSize().height); - break; - case 2: - return RenderBufferData(mCrMap.mData, mCrMap.mStride * mCrSurface->GetSize().height); - break; - default: - MOZ_ASSERT_UNREACHABLE("unexpected to be called"); - return RenderBufferData(nullptr, 0); - } - } + MOZ_ASSERT(mSurface); + return RenderBufferData(mMap.mData, mMap.mStride * mSurface->GetSize().height); } } // namespace wr diff --git a/gfx/webrender_bindings/RenderBufferTextureHost.h b/gfx/webrender_bindings/RenderBufferTextureHost.h index a2d91a7549c6..eb68b7a443d1 100644 --- a/gfx/webrender_bindings/RenderBufferTextureHost.h +++ b/gfx/webrender_bindings/RenderBufferTextureHost.h @@ -42,6 +42,7 @@ public: private: virtual ~RenderBufferTextureHost(); + already_AddRefed GetAsSurface(); uint8_t* GetBuffer() const { return mBuffer; @@ -51,17 +52,8 @@ private: layers::BufferDescriptor mDescriptor; gfx::IntSize mSize; gfx::SurfaceFormat mFormat; - RefPtr mSurface; gfx::DataSourceSurface::MappedSurface mMap; - - RefPtr mYSurface; - RefPtr mCbSurface; - RefPtr mCrSurface; - gfx::DataSourceSurface::MappedSurface mYMap; - gfx::DataSourceSurface::MappedSurface mCbMap; - gfx::DataSourceSurface::MappedSurface mCrMap; - bool mLocked; }; diff --git a/gfx/webrender_bindings/RenderTextureHost.cpp b/gfx/webrender_bindings/RenderTextureHost.cpp index 17e624d46bd8..97073080e2f2 100644 --- a/gfx/webrender_bindings/RenderTextureHost.cpp +++ b/gfx/webrender_bindings/RenderTextureHost.cpp @@ -4,7 +4,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "RenderTextureHost.h" -#include "RenderThread.h" namespace mozilla { namespace wr { @@ -16,7 +15,6 @@ RenderTextureHost::RenderTextureHost() RenderTextureHost::~RenderTextureHost() { - MOZ_ASSERT(RenderThread::IsInRenderThread()); MOZ_COUNT_DTOR(RenderTextureHost); } diff --git a/gfx/webrender_bindings/RenderThread.cpp b/gfx/webrender_bindings/RenderThread.cpp index a41c6b8c9959..6b1d5031a7c2 100644 --- a/gfx/webrender_bindings/RenderThread.cpp +++ b/gfx/webrender_bindings/RenderThread.cpp @@ -275,13 +275,11 @@ RenderThread::DecPendingFrameCount(wr::WindowId aWindowId) } void -RenderThread::RegisterExternalImage(uint64_t aExternalImageId, already_AddRefed aTexture) +RenderThread::RegisterExternalImage(uint64_t aExternalImageId, RenderTextureHost* aTexture) { MutexAutoLock lock(mRenderTextureMapLock); - - MOZ_ASSERT(!mRenderTextures.Get(aExternalImageId).get()); - RefPtr texture(aTexture); - mRenderTextures.Put(aExternalImageId, Move(texture)); + MOZ_ASSERT(!mRenderTextures.Get(aExternalImageId)); + mRenderTextures.Put(aExternalImageId, aTexture); } void @@ -289,35 +287,12 @@ RenderThread::UnregisterExternalImage(uint64_t aExternalImageId) { MutexAutoLock lock(mRenderTextureMapLock); MOZ_ASSERT(mRenderTextures.Get(aExternalImageId).get()); - if (!IsInRenderThread()) { - // The RenderTextureHost should be released in render thread. So, post the - // deletion task here. - // The shmem and raw buffer are owned by compositor ipc channel. It's - // possible that RenderTextureHost is still exist after the shmem/raw buffer - // deletion. Then the buffer in RenderTextureHost becomes invalid. It's fine - // for this situation. Gecko will only release the buffer if WR doesn't need - // it. So, no one will access the invalid buffer in RenderTextureHost. - RefPtr texture = mRenderTextures.Get(aExternalImageId); - mRenderTextures.Remove(aExternalImageId); - Loop()->PostTask(NewRunnableMethod>( - this, &RenderThread::DeferredRenderTextureHostDestroy, Move(texture) - )); - } else { - mRenderTextures.Remove(aExternalImageId); - } -} - -void -RenderThread::DeferredRenderTextureHostDestroy(RefPtr) -{ - // Do nothing. Just decrease the ref-count of RenderTextureHost. + mRenderTextures.Remove(aExternalImageId); } RenderTextureHost* RenderThread::GetRenderTexture(WrExternalImageId aExternalImageId) { - MOZ_ASSERT(IsInRenderThread()); - MutexAutoLock lock(mRenderTextureMapLock); MOZ_ASSERT(mRenderTextures.Get(aExternalImageId.mHandle).get()); return mRenderTextures.Get(aExternalImageId.mHandle).get(); diff --git a/gfx/webrender_bindings/RenderThread.h b/gfx/webrender_bindings/RenderThread.h index 718b291f050d..fb4f031abbe8 100644 --- a/gfx/webrender_bindings/RenderThread.h +++ b/gfx/webrender_bindings/RenderThread.h @@ -105,13 +105,10 @@ public: void Pause(wr::WindowId aWindowId); bool Resume(wr::WindowId aWindowId); - /// Can be called from any thread. - void RegisterExternalImage(uint64_t aExternalImageId, already_AddRefed aTexture); + void RegisterExternalImage(uint64_t aExternalImageId, RenderTextureHost* aTexture); - /// Can be called from any thread. void UnregisterExternalImage(uint64_t aExternalImageId); - /// Can only be called from the render thread. RenderTextureHost* GetRenderTexture(WrExternalImageId aExternalImageId); /// Can be called from any thread. @@ -124,8 +121,6 @@ public: private: explicit RenderThread(base::Thread* aThread); - void DeferredRenderTextureHostDestroy(RefPtr aTexture); - ~RenderThread(); base::Thread* const mThread; diff --git a/gfx/webrender_bindings/src/bindings.rs b/gfx/webrender_bindings/src/bindings.rs index a39681de7a7b..170299134d0b 100644 --- a/gfx/webrender_bindings/src/bindings.rs +++ b/gfx/webrender_bindings/src/bindings.rs @@ -1403,7 +1403,7 @@ pub extern "C" fn wr_dp_push_image(state: &mut WrState, tile_spacing: WrSize, image_rendering: WrImageRendering, key: WrImageKey) { - assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); + assert!(unsafe { !is_in_render_thread() }); state.frame_builder .dl_builder @@ -1425,7 +1425,7 @@ pub extern "C" fn wr_dp_push_yuv_planar_image(state: &mut WrState, image_key_2: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); + assert!(unsafe { is_in_main_thread() }); state.frame_builder .dl_builder @@ -1445,7 +1445,7 @@ pub extern "C" fn wr_dp_push_yuv_NV12_image(state: &mut WrState, image_key_1: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); + assert!(unsafe { is_in_main_thread() }); state.frame_builder .dl_builder @@ -1464,7 +1464,7 @@ pub extern "C" fn wr_dp_push_yuv_interleaved_image(state: &mut WrState, image_key_0: WrImageKey, color_space: WrYuvColorSpace, image_rendering: WrImageRendering) { - assert!(unsafe { is_in_main_thread() || is_in_compositor_thread() }); + assert!(unsafe { is_in_main_thread() }); state.frame_builder .dl_builder diff --git a/layout/reftests/webm-video/reftest.list b/layout/reftests/webm-video/reftest.list index c374ddfde6eb..438a6c7ceb4c 100644 --- a/layout/reftests/webm-video/reftest.list +++ b/layout/reftests/webm-video/reftest.list @@ -41,15 +41,15 @@ random-if(winWidget) random-if(cocoaWidget) skip-if(Android) == bug686957.html b # wouldn't be fair of us to make a W3C testsuite implicitly depend on any # particular (non-spec-mandated) video codec. default-preferences test-pref(gfx.ycbcr.accurate-conversion,true) -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-001.html object-fit-contain-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-002.html object-fit-contain-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-001.html object-fit-cover-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-002.html object-fit-cover-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-001.html object-fit-fill-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-002.html object-fit-fill-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-001.html object-fit-none-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-002.html object-fit-none-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-001.html object-fit-scale-down-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures -fails-if(layersGPUAccelerated) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-002.html object-fit-scale-down-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-001.html object-fit-contain-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-contain-webm-002.html object-fit-contain-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-001.html object-fit-cover-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-cover-webm-002.html object-fit-cover-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-001.html object-fit-fill-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-fill-webm-002.html object-fit-fill-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-001.html object-fit-none-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-none-webm-002.html object-fit-none-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-001.html object-fit-scale-down-webm-001-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures +fails-if(layersGPUAccelerated&&!webrender) fails-if(webrender&&browserIsRemote) skip-if(Android) fails-if(styloVsGecko) == object-fit-scale-down-webm-002.html object-fit-scale-down-webm-002-ref.html # Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures fails-if(layersGPUAccelerated) skip-if(Android) fails fails-if(styloVsGecko) skip-if(webrender) == object-position-webm-001.html object-position-webm-001-ref.html # Bug 1098417 for across-the-board failure, Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures, Bug 1358055 for webrender failures fails-if(layersGPUAccelerated) skip-if(Android) fails fails-if(styloVsGecko) skip-if(webrender) == object-position-webm-002.html object-position-webm-002-ref.html # Bug 1098417 for across-the-board failure, Bug 1083516 for layersGPUAccelerated failures, Bug 1084564 for Android failures, Bug 1358055 for webrender failures